/*
Theme Name: Geo Conference
Theme URI:
Author: Geoparque UNESCO
Description: Plataforma de gestão para a 12ª Conferência Internacional de Geoparques Mundiais da UNESCO
Version: 1.0.0
License: GNU General Public License v2 or later
Text Domain: geo
*/

@import url('https://fonts.googleapis.com/css2?family=Montserrat+Alternates:ital,wght@0,400;0,500;0,600;0,700;1,400&family=PT+Serif:wght@400;700&display=swap');

/* === VARIÁVEIS === */
:root {
    /* Cor de marca */
    --geo-primaria:             #673701;
    --geo-primaria-hover:       #4d2901;
    --geo-primaria-tint:        rgba(103, 55, 1, 0.07);
    --geo-secundaria:           #405439;
    --geo-secundaria-hover:     #33432d;
    --geo-secundaria-tint:      rgba(64, 84, 57, 0.08);
    --geo-acento:               #c4900a;

    /* Feedback semântico */
    --geo-erro:                 #dc2626;
    --geo-erro-tint:            rgba(220, 38, 38, 0.06);
    --geo-sucesso:              #16a34a;
    --geo-sucesso-tint:         rgba(22, 163, 74, 0.07);
    --geo-aviso:                #d97706;
    --geo-aviso-tint:           rgba(217, 119, 6, 0.08);

    /* Texto */
    --geo-texto:                #1c1917;
    --geo-texto-sec:            #44403c;
    --geo-texto-leve:           #78716c;
    --geo-texto-muito-leve:     #a8a29e;

    /* Superfícies */
    --geo-fundo:                #f3ede9;
    --geo-sup-1:                #ffffff;
    --geo-sup-2:                #faf7f4;
    --geo-branco:               #ffffff;

    /* Bordas */
    --geo-borda:                #e7ddd8;
    --geo-borda-forte:          #c9b8b0;

    /* Escala de raios */
    --geo-raio-xs:              4px;
    --geo-raio-sm:              6px;
    --geo-raio:                 10px;
    --geo-raio-lg:              14px;
    --geo-raio-xl:              20px;
    --geo-raio-full:            9999px;

    /* Elevação (inspirado no Apple HIG — multicamada) */
    --geo-sombra-xs:            0 1px 2px rgba(0, 0, 0, 0.05);
    --geo-sombra-sm:            0 1px 3px rgba(0, 0, 0, 0.06), 0 1px 2px rgba(0, 0, 0, 0.04);
    --geo-sombra:               0 4px 6px -1px rgba(0, 0, 0, 0.07), 0 2px 4px -1px rgba(0, 0, 0, 0.04);
    --geo-sombra-md:            0 10px 15px -3px rgba(0, 0, 0, 0.08), 0 4px 6px -2px rgba(0, 0, 0, 0.04);
    --geo-sombra-lg:            0 20px 25px -5px rgba(0, 0, 0, 0.10), 0 10px 10px -5px rgba(0, 0, 0, 0.04);

    /* Transições precisas (não usar "all" — causa reflows desnecessários) */
    --geo-transicao:            background-color 0.2s ease, border-color 0.2s ease,
                                color 0.2s ease, box-shadow 0.2s ease,
                                transform 0.2s ease, opacity 0.2s ease;
    --geo-transicao-rpd:        background-color 0.15s ease, border-color 0.15s ease, color 0.15s ease;
}

/* === BASE === */
*, *::before, *::after { box-sizing: border-box; }

body {
    font-family: 'Montserrat Alternates', Helvetica, Arial, Lucida, sans-serif;
    color: var(--geo-texto);
    background: var(--geo-fundo);
    line-height: 1.65;
    margin: 0;
    min-height: 100vh;
    display: flex;
    flex-direction: column;
    align-items: stretch;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
}

h1, h2, h3, h4, h5, h6 {
    font-family: 'PT Serif', Georgia, 'Times New Roman', serif;
    line-height: 1.3;
}

/* === LAYOUT DE INSCRIÇÃO === */
.geo-inscricao-wrap {
    width: 100%;
    max-width: 1200px;
    margin: 44px auto;
    padding: 0 20px 68px;
    box-sizing: border-box;
}

.geo-inscricao-wrap h1 {
    color: var(--geo-primaria);
    margin-bottom: 6px;
}

.geo-subtitulo {
    color: var(--geo-texto-leve);
    margin-bottom: 36px;
}

/* === SECÇÕES === */
.geo-seccao {
    width: 100%;
    box-sizing: border-box;
    background: var(--geo-branco);
    border-radius: var(--geo-raio);
    box-shadow: var(--geo-sombra-sm);
    border: 1px solid var(--geo-borda);
    padding: 28px 32px;
    margin-bottom: 20px;
}

.geo-seccao h2 {
    color: var(--geo-primaria);
    font-size: 1.1rem;
    margin: 0 0 22px;
    padding-bottom: 14px;
    border-bottom: 1px solid var(--geo-borda);
}

/* === CAMPOS === */
.geo-campo {
    margin-bottom: 20px;
}

.geo-campo label {
    display: block;
    font-weight: 600;
    font-size: 0.875rem;
    margin-bottom: 7px;
    color: var(--geo-texto-sec);
}

.geo-campo label .obrig {
    color: var(--geo-erro);
    margin-left: 2px;
}

.geo-campo input[type="text"],
.geo-campo input[type="email"],
.geo-campo input[type="tel"],
.geo-campo input[type="number"],
.geo-campo input[type="date"],
.geo-campo input[type="time"],
.geo-campo input[type="datetime-local"],
.geo-campo input[type="password"],
.geo-campo input[type="url"],
.geo-campo select,
.geo-campo textarea {
    width: 100%;
    padding: 11px 14px;
    border: 1.5px solid var(--geo-borda);
    border-radius: var(--geo-raio);
    font-size: 0.9375rem;
    font-family: inherit;
    color: var(--geo-texto);
    background: var(--geo-branco);
    transition: border-color 0.2s ease, box-shadow 0.2s ease;
    -webkit-appearance: none;
}

/* Selects: seta (o -webkit-appearance:none acima remove a nativa) */
.geo-campo select,
select.geo-bo-input,
select.geo-bo-select {
    -webkit-appearance: none;
    appearance: none;
    padding-right: 40px;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1.5l5 5 5-5' fill='none' stroke='%23673701' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: right 14px center;
    background-size: 12px 8px;
    cursor: pointer;
}

/* Datas/horas: mesma altura e aspecto dos restantes campos (Safari/iOS) */
.geo-campo input[type="date"],
.geo-campo input[type="time"],
.geo-campo input[type="datetime-local"] {
    min-height: 46px;
    line-height: 1.4;
    text-align: left;
}
.geo-campo input[type="date"]::-webkit-date-and-time-value,
.geo-campo input[type="time"]::-webkit-date-and-time-value,
.geo-campo input[type="datetime-local"]::-webkit-date-and-time-value {
    text-align: left;
}
.geo-campo input[type="date"]::-webkit-calendar-picker-indicator,
.geo-campo input[type="time"]::-webkit-calendar-picker-indicator,
.geo-campo input[type="datetime-local"]::-webkit-calendar-picker-indicator {
    cursor: pointer;
    opacity: .65;
}

.geo-campo input:focus,
.geo-campo select:focus,
.geo-campo textarea:focus {
    outline: none;
    border-color: var(--geo-primaria);
    box-shadow: 0 0 0 3px rgba(103, 55, 1, 0.15);
}

.geo-campo input.campo-erro,
.geo-campo select.campo-erro,
.geo-campo textarea.campo-erro {
    border-color: var(--geo-erro);
    box-shadow: 0 0 0 3px var(--geo-erro-tint);
}

.geo-erro-campo {
    color: var(--geo-erro);
    font-size: 0.8rem;
    margin-top: 5px;
    display: none;
}

.geo-erro-campo.visivel { display: block; }

.geo-grelha-2 {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 18px;
}

@media (max-width: 600px) {
    .geo-grelha-2 { grid-template-columns: 1fr; }
    .geo-seccao { padding: 20px; }
}

/* === UPLOAD === */
.geo-upload-label {
    display: block;
    border: 2px dashed var(--geo-borda);
    border-radius: var(--geo-raio);
    padding: 20px;
    text-align: center;
    cursor: pointer;
    background: var(--geo-sup-2);
    transition: border-color 0.2s ease, background-color 0.2s ease, color 0.2s ease;
    font-size: 0.875rem;
    color: var(--geo-texto-leve);
}

.geo-upload-label:hover,
.geo-upload-label.activo {
    border-color: var(--geo-secundaria);
    background: var(--geo-secundaria-tint);
    color: var(--geo-secundaria);
}

.geo-upload-label strong { color: var(--geo-secundaria); }
.geo-upload-label input[type="file"] { display: none; }

.geo-upload-nome {
    font-size: 0.82rem;
    color: var(--geo-sucesso);
    margin-top: 6px;
    font-weight: 600;
    display: none;
}

/* === TIPOS DE INSCRIÇÃO === */
.geo-tipos-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
    gap: 12px;
}

.geo-tipo-card {
    border: 1.5px solid var(--geo-borda);
    border-radius: var(--geo-raio);
    padding: 18px 16px;
    cursor: pointer;
    transition: border-color 0.2s ease, background-color 0.2s ease, box-shadow 0.2s ease;
    position: relative;
    user-select: none;
    background: var(--geo-branco);
}

.geo-tipo-card:hover {
    border-color: var(--geo-secundaria);
    box-shadow: var(--geo-sombra-xs);
}

.geo-tipo-card.sel {
    border-color: var(--geo-primaria);
    background: var(--geo-primaria-tint);
    box-shadow: var(--geo-sombra-xs);
}

.geo-tipo-card input[type="radio"] {
    position: absolute;
    opacity: 0;
    width: 0;
}

.geo-tipo-titulo {
    font-weight: 700;
    color: var(--geo-primaria);
    margin-bottom: 5px;
    font-size: 0.9375rem;
}

.geo-tipo-desc {
    font-size: 0.8125rem;
    color: var(--geo-texto-leve);
    line-height: 1.45;
}

.geo-tipo-indicador {
    position: absolute;
    top: 14px;
    right: 14px;
    width: 18px;
    height: 18px;
    border-radius: 50%;
    border: 1.5px solid var(--geo-borda-forte);
    transition: background-color 0.2s ease, border-color 0.2s ease;
    background: var(--geo-branco);
}

.geo-tipo-card.sel .geo-tipo-indicador {
    background: var(--geo-primaria);
    border-color: var(--geo-primaria);
}

.geo-tipo-card.sel .geo-tipo-indicador::after {
    content: '';
    position: absolute;
    top: 2px;
    left: 4px;
    width: 5px;
    height: 9px;
    border: 2px solid #fff;
    border-top: none;
    border-left: none;
    transform: rotate(45deg);
}

/* === GRID DE TIPOS DE INSCRIÇÃO (formulário de registo) === */
.geo-tipo-inscricao-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
    gap: 12px;
    margin-bottom: 8px;
}

.geo-tipo-inscricao-grid .geo-tipo-card {
    display: block;
    margin: 0;
}

.geo-tipo-inscricao-grid .geo-tipo-card input[type="radio"] {
    position: absolute;
    opacity: 0;
    width: 0;
    height: 0;
}

.geo-tipo-card-inner {
    display: flex;
    flex-direction: column;
    gap: 6px;
}

.geo-tipo-card-titulo {
    font-weight: 700;
    font-size: 0.9375rem;
    color: var(--geo-texto);
}

.geo-tipo-card-desc {
    font-size: 0.8125rem;
    color: var(--geo-texto-leve);
    line-height: 1.45;
}

.geo-tipo-card.seleccionado {
    border-color: var(--geo-primaria);
    background: var(--geo-primaria-tint);
    box-shadow: var(--geo-sombra-xs);
}

.geo-tipo-card.seleccionado .geo-tipo-card-titulo {
    color: var(--geo-primaria);
}

.geo-tipo-card--compacto {
    padding: 12px 14px;
}

.geo-tipo-card--compacto .geo-tipo-card-titulo {
    font-size: 0.875rem;
}

/* === CARD DE GRUPO "INDIVIDUAL" COM SUB-OPÇÕES (Individual / Press / Volunteer) === */
.geo-tipo-card--grupo {
    cursor: default;
}

.geo-tipo-subopcoes {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    margin-top: 12px;
}

.geo-tipo-subcard {
    flex: 1 1 auto;
    display: flex;
    align-items: center;
    justify-content: center;
    text-align: center;
    padding: 8px 12px;
    border: 1.5px solid var(--geo-borda);
    border-radius: var(--geo-raio);
    background: var(--geo-branco);
    font-size: 0.8125rem;
    font-weight: 600;
    color: var(--geo-texto-leve);
    cursor: pointer;
    user-select: none;
    transition: border-color 0.2s ease, background-color 0.2s ease, color 0.2s ease;
}

.geo-tipo-subcard input[type="radio"] {
    position: absolute;
    opacity: 0;
    width: 0;
    height: 0;
}

.geo-tipo-subcard:hover {
    border-color: var(--geo-secundaria);
}

.geo-tipo-subcard.seleccionado {
    border-color: var(--geo-primaria);
    background: var(--geo-primaria-tint);
    color: var(--geo-primaria);
}

/* Grelha de meios de transporte */
.geo-transporte-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(130px, 1fr));
    gap: 12px;
}

.geo-tipo-card--transporte {
    padding: 16px 12px;
}

.geo-tipo-card--transporte .geo-tipo-card-inner {
    flex-direction: column;
    align-items: center;
    gap: 8px;
    text-align: center;
}

.geo-transporte-icone {
    display: flex;
    align-items: center;
    justify-content: center;
    color: var(--geo-texto-leve);
    transition: color .15s;
}

.geo-tipo-card--transporte:has(input:checked) .geo-transporte-icone,
.geo-tipo-card--transporte.seleccionado .geo-transporte-icone {
    color: var(--geo-primaria);
}

.geo-tipo-card--transporte .geo-tipo-card-titulo {
    font-size: 0.85rem;
}

/* === SECÇÕES CONDICIONAIS === */
.geo-condicional {
    display: none;
    margin-top: 20px;
    padding: 20px;
    background: var(--geo-secundaria-tint);
    border-left: 3px solid var(--geo-secundaria);
    border-radius: 0 var(--geo-raio) var(--geo-raio) 0;
    animation: geo-fade-in 0.25s ease;
}

.geo-condicional.activo { display: block; }

@keyframes geo-fade-in {
    from { opacity: 0; transform: translateY(-6px); }
    to   { opacity: 1; transform: translateY(0); }
}

/* === TARIFA === */
.geo-tarifa-bloco {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 16px 20px;
    border-radius: var(--geo-raio);
    margin-bottom: 20px;
    transition: background-color 0.2s ease, border-color 0.2s ease;
}

.geo-tarifa-bloco.normal {
    background: var(--geo-sucesso-tint);
    border: 1.5px solid rgba(22, 163, 74, 0.3);
}

.geo-tarifa-bloco.reduzida {
    background: var(--geo-aviso-tint);
    border: 1.5px solid rgba(217, 119, 6, 0.3);
}

.geo-tarifa-etiqueta {
    font-size: 0.875rem;
    font-weight: 600;
}

.geo-tarifa-bloco.normal .geo-tarifa-etiqueta   { color: #166534; }
.geo-tarifa-bloco.reduzida .geo-tarifa-etiqueta { color: #92400e; }

.geo-tarifa-valor {
    font-size: 1.4rem;
    font-weight: 700;
}

.geo-tarifa-bloco.normal .geo-tarifa-valor   { color: var(--geo-sucesso); }
.geo-tarifa-bloco.reduzida .geo-tarifa-valor { color: var(--geo-acento); }

/* === CHECKBOXES DE PARTICIPAÇÃO === */
.geo-check-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 10px;
}

@media (max-width: 600px) { .geo-check-grid { grid-template-columns: 1fr; } }

.geo-check-item {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 11px 14px;
    border: 1.5px solid var(--geo-borda);
    border-radius: var(--geo-raio);
    cursor: pointer;
    transition: border-color 0.2s ease, background-color 0.2s ease;
    font-size: 0.875rem;
    background: var(--geo-branco);
}

.geo-check-item:hover { border-color: var(--geo-secundaria); }

.geo-check-item input[type="checkbox"] {
    width: 16px;
    height: 16px;
    flex-shrink: 0;
    cursor: pointer;
    accent-color: var(--geo-primaria);
}

.geo-check-item label {
    margin: 0;
    font-weight: 400;
    cursor: pointer;
}

/* === MÉTODOS DE PAGAMENTO === */
.geo-pagamento-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(130px, 1fr));
    gap: 12px;
    margin-bottom: 20px;
}

.geo-pagamento-card {
    border: 1.5px solid var(--geo-borda);
    border-radius: var(--geo-raio);
    padding: 16px 12px;
    text-align: center;
    cursor: pointer;
    transition: border-color 0.2s ease, background-color 0.2s ease, box-shadow 0.2s ease;
    position: relative;
    user-select: none;
    background: var(--geo-branco);
}

.geo-pagamento-card:hover {
    border-color: var(--geo-secundaria);
    box-shadow: var(--geo-sombra-xs);
}

.geo-pagamento-card.sel {
    border-color: var(--geo-primaria);
    background: var(--geo-primaria-tint);
    box-shadow: var(--geo-sombra-xs);
}

.geo-pagamento-card input[type="radio"] { position: absolute; opacity: 0; }
.geo-pagamento-card .geo-pag-nome { font-weight: 600; font-size: 0.875rem; color: var(--geo-texto); }
.geo-pagamento-card .geo-pag-desc { font-size: 0.75rem; color: var(--geo-texto-leve); margin-top: 4px; }

/* === RGPD === */
.geo-rgpd-bloco {
    background: var(--geo-secundaria-tint);
    border: 1.5px solid rgba(64, 84, 57, 0.25);
    border-radius: var(--geo-raio);
    padding: 16px 20px;
}

.geo-rgpd-bloco label {
    display: flex;
    align-items: flex-start;
    gap: 10px;
    font-weight: 400;
    font-size: 0.875rem;
    cursor: pointer;
    line-height: 1.5;
}

.geo-rgpd-bloco input[type="checkbox"] {
    flex-shrink: 0;
    margin-top: 3px;
    width: 16px;
    height: 16px;
    accent-color: var(--geo-primaria);
}

/* === BOTÃO SUBMIT === */
.geo-btn-submit {
    width: 100%;
    padding: 13px 20px;
    background: var(--geo-primaria);
    color: #fff;
    border: none;
    border-radius: var(--geo-raio);
    font-size: 1rem;
    font-weight: 600;
    font-family: inherit;
    cursor: pointer;
    transition: background-color 0.2s ease, box-shadow 0.2s ease, transform 0.2s ease;
    margin-top: 8px;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 10px;
    letter-spacing: 0.01em;
}

.geo-btn-submit:hover:not(:disabled) {
    background: var(--geo-primaria-hover);
    box-shadow: 0 4px 14px rgba(103, 55, 1, 0.35);
    transform: translateY(-1px);
}

.geo-btn-submit:active:not(:disabled) {
    transform: translateY(0);
    box-shadow: 0 2px 6px rgba(103, 55, 1, 0.25);
}

.geo-btn-submit:focus-visible {
    outline: 3px solid var(--geo-primaria);
    outline-offset: 2px;
}

.geo-btn-submit:disabled { opacity: 0.55; cursor: not-allowed; }

.geo-spinner {
    width: 18px;
    height: 18px;
    border: 2px solid rgba(255, 255, 255, 0.35);
    border-top-color: #fff;
    border-radius: 50%;
    animation: geo-spin 0.7s linear infinite;
    display: none;
}

.geo-btn-submit.carregando .geo-spinner { display: inline-block; }
.geo-btn-submit.carregando .geo-btn-texto { opacity: 0.7; }

@keyframes geo-spin { to { transform: rotate(360deg); } }

/* === MENSAGENS DE FEEDBACK === */
.geo-alerta {
    padding: 13px 16px;
    border-radius: var(--geo-raio);
    margin-bottom: 16px;
    font-size: 0.875rem;
    display: none;
    line-height: 1.5;
}

.geo-alerta.activo { display: flex; align-items: flex-start; gap: 10px; }

.geo-alerta.sucesso {
    background: var(--geo-sucesso-tint);
    border: 1.5px solid rgba(22, 163, 74, 0.3);
    color: #166534;
}

.geo-alerta.erro {
    background: var(--geo-erro-tint);
    border: 1.5px solid rgba(220, 38, 38, 0.3);
    color: #991b1b;
}

.geo-alerta.info {
    background: var(--geo-secundaria-tint);
    border: 1.5px solid rgba(64, 84, 57, 0.3);
    color: #166534;
}

/* === ECRÃ DE SUCESSO === */
.geo-sucesso-wrap {
    text-align: center;
    padding: 52px 20px;
    display: none;
}

.geo-sucesso-wrap.activo { display: block; }

.geo-sucesso-icone {
    width: 76px;
    height: 76px;
    background: var(--geo-sucesso);
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    margin: 0 auto 24px;
    font-size: 2rem;
    color: #fff;
    box-shadow: 0 4px 16px rgba(22, 163, 74, 0.3);
}

.geo-sucesso-wrap h2 { color: var(--geo-sucesso); }
.geo-sucesso-wrap p  { color: var(--geo-texto-leve); max-width: 480px; margin: 0 auto; }

/* === FATURA PRO-FORMA === */
.geo-proforma-dados {
    margin-top: 16px;
    padding: 16px;
    background: var(--geo-sup-2);
    border-radius: var(--geo-raio);
    border: 1px solid var(--geo-borda);
}

/* =================================================================
   BACKOFFICE DE GESTÃO
   ================================================================= */

/* ---- Alerta inline (backoffice) ---- */
.geo-alerta-inline {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 12px 16px;
    margin: 16px 0 0;
    background: #fef3c7;
    border: 1px solid #f59e0b;
    border-radius: var(--geo-raio);
    color: #78350f;
    font-size: .875rem;
    font-weight: 500;
    flex-wrap: wrap;
}

.geo-alerta-fixo-texto { flex: 1; }

.geo-alerta-fixo-link {
    color: #92400e;
    font-weight: 700;
    text-decoration: underline;
    white-space: nowrap;
}
.geo-alerta-fixo-link:hover { color: #78350f; }

.geo-alerta-fixo-fechar {
    background: none;
    border: none;
    font-size: 1.2rem;
    line-height: 1;
    cursor: pointer;
    color: #92400e;
    padding: 0 4px;
    opacity: .7;
    flex-shrink: 0;
}
.geo-alerta-fixo-fechar:hover { opacity: 1; }

.geo-bo-wrap {
    width: 100%;
    max-width: 1200px;
    margin-left: auto;
    margin-right: auto;
    padding: 32px 24px 0px;
    box-sizing: border-box;
}

/* Detalhe de registo / abstract / workshop */
.geo-detalhe-wrap {
    width: 100%;
    max-width: 1200px;
    margin-left: auto;
    margin-right: auto;
    padding: 0;
    box-sizing: border-box;
}

.geo-detalhe-cabecalho {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    flex-wrap: wrap;
    gap: 12px;
    margin-bottom: 24px;
    padding-bottom: 20px;
    border-bottom: 1px solid var(--geo-borda);
}

.geo-detalhe-seccao {
    width: 100%;
    margin-bottom: 32px;
    padding-bottom: 24px;
    border-bottom: 1px solid var(--geo-borda);
}

.geo-detalhe-seccao:last-child {
    border-bottom: none;
    margin-bottom: 0;
}

.geo-detalhe-seccao-titulo {
    font-size: 1em;
    font-weight: 600;
    color: var(--geo-primaria);
    margin: 0 0 16px;
    text-transform: uppercase;
    letter-spacing: .04em;
    font-size: .8em;
}

.geo-detalhe-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
    gap: 16px 24px;
    width: 100%;
}

.geo-detalhe-campo strong {
    display: block;
    font-size: .75em;
    text-transform: uppercase;
    letter-spacing: .04em;
    color: var(--geo-texto-leve, #64748b);
    margin-bottom: 4px;
}

.geo-detalhe-campo p,
.geo-detalhe-campo a {
    margin: 0;
    font-size: .95em;
    word-break: break-word;
}

/* Cabeçalho */
.geo-bo-header {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    flex-wrap: wrap;
    gap: 12px;
    margin-bottom: 28px;
    padding-bottom: 20px;
    border-bottom: 1px solid var(--geo-borda);
}

.geo-bo-titulo {
    color: var(--geo-primaria);
    margin: 0 0 4px;
    font-size: 1.5rem;
}

.geo-bo-subtitulo {
    color: var(--geo-texto-leve);
    margin: 0;
    font-size: 0.875rem;
}

.geo-bo-utilizador-info {
    display: flex;
    align-items: center;
    gap: 14px;
    font-size: 0.875rem;
    color: var(--geo-texto-leve);
    white-space: nowrap;
}

.geo-bo-logout-link {
    color: var(--geo-erro);
    text-decoration: none;
    font-weight: 600;
    font-size: 0.875rem;
    transition: color 0.15s ease;
}

.geo-bo-logout-link:hover { color: #991b1b; text-decoration: underline; }

/* Navegação horizontal entre secções do backoffice */
.geo-bo-nav-seccoes {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
    margin-bottom: 28px;
}

.geo-bo-nav-link {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 8px 16px;
    background: var(--geo-branco);
    border: 1.5px solid var(--geo-borda);
    border-radius: var(--geo-raio-full);
    color: var(--geo-texto-sec);
    font-size: 0.875rem;
    font-weight: 500;
    text-decoration: none;
    cursor: pointer;
    transition: border-color 0.2s ease, color 0.2s ease, background-color 0.2s ease;
}

.geo-bo-nav-link:hover {
    border-color: var(--geo-primaria);
    color: var(--geo-primaria);
    text-decoration: none;
}

.geo-bo-nav-link.activo {
    background: var(--geo-primaria);
    border-color: var(--geo-primaria);
    color: #fff;
    pointer-events: none;
    box-shadow: 0 2px 8px rgba(103, 55, 1, 0.28);
}

.geo-bo-nav-badge {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 18px;
    height: 18px;
    padding: 0 5px;
    background: var(--geo-acento);
    color: #fff;
    border-radius: var(--geo-raio-full);
    font-size: 0.7rem;
    font-weight: 700;
    line-height: 1;
}

.geo-bo-nav-link.activo .geo-bo-nav-badge {
    background: rgba(255, 255, 255, 0.35);
}

@media (max-width: 600px) {
    .geo-bo-nav-link { padding: 7px 12px; font-size: 0.82rem; }
}

/* Dropdown de navegação */
.geo-bo-nav-dropdown {
    position: relative;
}

.geo-bo-nav-dropdown-btn {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 8px 16px;
    background: var(--geo-branco);
    border: 1.5px solid var(--geo-borda);
    border-radius: var(--geo-raio-full);
    color: var(--geo-texto-sec);
    font-size: 0.875rem;
    font-weight: 500;
    cursor: pointer;
    transition: border-color 0.2s ease, color 0.2s ease;
    white-space: nowrap;
}

/* Remove triângulo nativo do <summary> */
.geo-bo-nav-dropdown > summary { list-style: none; }
.geo-bo-nav-dropdown > summary::-webkit-details-marker { display: none; }

.geo-bo-nav-dropdown-btn::after {
    content: '▾';
    font-size: 0.72em;
    opacity: 0.6;
    margin-left: 2px;
}

.geo-bo-nav-dropdown-btn:hover,
.geo-bo-nav-dropdown[open] .geo-bo-nav-dropdown-btn {
    border-color: var(--geo-primaria);
    color: var(--geo-primaria);
}

.geo-bo-nav-dropdown[open] .geo-bo-nav-dropdown-btn {
    border-radius: var(--geo-raio-full);
}

.geo-bo-nav-dropdown-menu {
    display: none;
    position: absolute;
    top: 100%;
    left: 0;
    z-index: 500;
    background: var(--geo-branco);
    border: 1.5px solid var(--geo-borda);
    border-top: none;
    border-radius: 0 var(--geo-raio-sm) var(--geo-raio-sm) var(--geo-raio-sm);
    box-shadow: var(--geo-sombra-md);
    min-width: 210px;
    overflow: hidden;
}

.geo-bo-nav-dropdown[open] .geo-bo-nav-dropdown-menu {
    display: block;
}

.geo-bo-nav-dropdown-item {
    display: block;
    padding: 10px 16px;
    color: var(--geo-texto-sec);
    font-size: 0.875rem;
    text-decoration: none;
    transition: background-color 0.15s ease, color 0.15s ease;
    white-space: nowrap;
}

.geo-bo-nav-dropdown-item:hover {
    background: var(--geo-fundo);
    color: var(--geo-primaria);
    text-decoration: none;
}

.geo-bo-nav-dropdown-item.activo {
    background: var(--geo-primaria-tint);
    color: var(--geo-primaria);
    font-weight: 600;
}

/* Cards de estatísticas */
.geo-bo-stats-grid {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 14px;
    margin-bottom: 28px;
}

@media (max-width: 700px) {
    .geo-bo-stats-grid { grid-template-columns: repeat(2, 1fr); }
}

.geo-bo-stat-card {
    background: var(--geo-branco);
    border: 1.5px solid var(--geo-borda);
    border-radius: var(--geo-raio);
    padding: 20px 16px;
    text-align: center;
    text-decoration: none;
    transition: border-color 0.2s ease, box-shadow 0.2s ease, transform 0.2s ease;
    display: block;
}

.geo-bo-stat-card:hover {
    border-color: var(--geo-borda-forte);
    transform: translateY(-2px);
    box-shadow: var(--geo-sombra);
}

.geo-bo-stat-card.activo { border-width: 2px; }

.geo-bo-stat-card.pendente.activo  { border-color: var(--geo-aviso);  background: var(--geo-aviso-tint); }
.geo-bo-stat-card.aprovado.activo  { border-color: var(--geo-sucesso); background: var(--geo-sucesso-tint); }
.geo-bo-stat-card.rejeitado.activo { border-color: var(--geo-erro);   background: var(--geo-erro-tint); }
.geo-bo-stat-card.activo:not(.pendente):not(.aprovado):not(.rejeitado) {
    border-color: var(--geo-primaria);
    background: var(--geo-primaria-tint);
}

.geo-bo-stat-num {
    display: block;
    font-size: 2.1rem;
    font-weight: 700;
    color: var(--geo-primaria);
    line-height: 1;
    margin-bottom: 8px;
}

.geo-bo-stat-card.pendente  .geo-bo-stat-num { color: var(--geo-acento); }
.geo-bo-stat-card.aprovado  .geo-bo-stat-num { color: var(--geo-sucesso); }
.geo-bo-stat-card.rejeitado .geo-bo-stat-num { color: var(--geo-erro); }

.geo-bo-stat-label {
    font-size: 0.78rem;
    font-weight: 600;
    color: var(--geo-texto-leve);
    text-transform: uppercase;
    letter-spacing: 0.05em;
}

/* Barra de pesquisa */
.geo-bo-barra-pesquisa { margin-bottom: 20px; }

.geo-bo-pesquisa-inner {
    display: flex;
    gap: 10px;
    flex-wrap: wrap;
    align-items: center;
}

.geo-bo-input-pesquisa {
    flex: 1;
    min-width: 220px;
    padding: 10px 14px;
    border: 1.5px solid var(--geo-borda);
    border-radius: var(--geo-raio);
    font-size: 0.9rem;
    font-family: inherit;
    color: var(--geo-texto);
    background: var(--geo-branco);
    transition: border-color 0.2s ease, box-shadow 0.2s ease;
}

.geo-bo-input-pesquisa:focus {
    outline: none;
    border-color: var(--geo-primaria);
    box-shadow: 0 0 0 3px rgba(103, 55, 1, 0.15);
}

.geo-bo-btn-pesquisa {
    padding: 10px 20px;
    background: var(--geo-primaria);
    color: #fff;
    border: none;
    border-radius: var(--geo-raio);
    font-size: 0.875rem;
    font-weight: 600;
    font-family: inherit;
    cursor: pointer;
    transition: background-color 0.2s ease, box-shadow 0.2s ease;
}

.geo-bo-btn-pesquisa:hover {
    background: var(--geo-primaria-hover);
    box-shadow: 0 2px 8px rgba(103, 55, 1, 0.3);
}

.geo-bo-btn-limpar {
    color: var(--geo-texto-leve);
    text-decoration: none;
    font-size: 0.875rem;
    padding: 4px 8px;
    transition: color 0.15s ease;
}

.geo-bo-btn-limpar:hover { color: var(--geo-erro); }

/* Tabela */
.geo-bo-tabela-container {
    background: var(--geo-branco);
    border-radius: var(--geo-raio);
    box-shadow: var(--geo-sombra-sm);
    border: 1px solid var(--geo-borda);
    overflow-x: auto;
    margin-bottom: 24px;
}

.geo-bo-tabela {
    width: 100%;
    border-collapse: collapse;
    font-size: 0.875rem;
}

.geo-bo-tabela thead tr {
    background: var(--geo-sup-2);
    border-bottom: 1px solid var(--geo-borda);
}

.geo-bo-tabela th {
    padding: 13px 16px;
    text-align: left;
    font-weight: 700;
    font-size: 0.75rem;
    color: var(--geo-texto-leve);
    text-transform: uppercase;
    letter-spacing: 0.06em;
    white-space: nowrap;
}

.geo-bo-tabela tbody tr {
    border-bottom: 1px solid var(--geo-fundo);
    transition: background-color 0.15s ease;
}

.geo-bo-tabela tbody tr:hover { background: rgba(103, 55, 1, 0.035); }
.geo-bo-tabela tbody tr:last-child { border-bottom: none; }

.geo-bo-tabela td {
    padding: 13px 16px;
    vertical-align: middle;
    color: var(--geo-texto);
}

.geo-bo-td-id    { color: var(--geo-texto-muito-leve); font-size: 0.78rem; width: 40px; }
.geo-bo-td-mono  { font-family: ui-monospace, 'SF Mono', monospace; font-size: 0.9rem; }
.geo-bo-td-data  { white-space: nowrap; color: var(--geo-texto-leve); font-size: 0.82rem; }
.geo-bo-td-email a { color: var(--geo-secundaria); text-decoration: none; }
.geo-bo-td-email a:hover { text-decoration: underline; }

/* Estados */
.geo-bo-estado {
    display: inline-flex;
    align-items: center;
    padding: 3px 10px;
    border-radius: var(--geo-raio-full);
    font-size: 0.72rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    white-space: nowrap;
}

.geo-bo-estado--pendente  { background: var(--geo-aviso-tint);  color: #92400e;  border: 1px solid rgba(217, 119, 6, 0.25); }
.geo-bo-estado--aprovado  { background: var(--geo-sucesso-tint); color: #166534;  border: 1px solid rgba(22, 163, 74, 0.25); }
.geo-bo-estado--rejeitado { background: var(--geo-erro-tint);   color: #991b1b;  border: 1px solid rgba(220, 38, 38, 0.25); }

/* Botões de ação */
.geo-bo-td-acoes { white-space: nowrap; }

.geo-bo-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 7px 14px;
    border: none;
    border-radius: var(--geo-raio-sm);
    font-size: 0.8rem;
    font-weight: 600;
    font-family: inherit;
    cursor: pointer;
    transition: background-color 0.2s ease, color 0.2s ease, border-color 0.2s ease, box-shadow 0.2s ease;
    margin-right: 6px;
    white-space: nowrap;
    text-decoration: none;
    gap: 4px;
}

.geo-bo-btn:last-child { margin-right: 0; }

.geo-bo-btn--aprovar {
    background: var(--geo-sucesso-tint);
    color: #166534;
    border: 1px solid rgba(22, 163, 74, 0.3);
}

.geo-bo-btn--aprovar:hover:not(:disabled) {
    background: var(--geo-sucesso);
    color: #fff;
    border-color: var(--geo-sucesso);
    box-shadow: 0 2px 8px rgba(22, 163, 74, 0.3);
}

.geo-bo-btn--rejeitar {
    background: var(--geo-erro-tint);
    color: #991b1b;
    border: 1px solid rgba(220, 38, 38, 0.25);
}

.geo-bo-btn--rejeitar:hover:not(:disabled) {
    background: var(--geo-erro);
    color: #fff;
    border-color: var(--geo-erro);
    box-shadow: 0 2px 8px rgba(220, 38, 38, 0.3);
}

.geo-bo-btn--cancelar {
    background: var(--geo-sup-2);
    color: var(--geo-texto-sec);
    border: 1px solid var(--geo-borda);
}

.geo-bo-btn--cancelar:hover { background: var(--geo-borda); }

.geo-bo-btn:disabled {
    opacity: 0.5;
    cursor: not-allowed;
}

.geo-bo-info-acao {
    font-size: 0.8rem;
    color: var(--geo-texto-leve);
}

/* Notas de rejeição */
.geo-bo-tr-notas td {
    background: rgba(220, 38, 38, 0.025);
    color: var(--geo-texto-leve);
    font-size: 0.82rem;
    padding: 8px 16px;
    border-top: none;
}

/* Animação de feedback após aprovação/rejeição */
.geo-bo-tr-destaque {
    animation: geo-bo-destaque 2s ease;
}

@keyframes geo-bo-destaque {
    0%   { background: rgba(103, 55, 1, 0.1); }
    100% { background: transparent; }
}

/* Estado vazio */
.geo-bo-vazio {
    background: var(--geo-branco);
    border-radius: var(--geo-raio);
    box-shadow: var(--geo-sombra-sm);
    border: 1px solid var(--geo-borda);
    padding: 60px 48px;
    text-align: center;
    color: var(--geo-texto-leve);
}

.geo-bo-vazio::before {
    content: '—';
    display: block;
    font-size: 2rem;
    color: var(--geo-texto-muito-leve);
    margin-bottom: 12px;
    font-family: 'PT Serif', Georgia, serif;
    line-height: 1;
}

/* Paginação */
.geo-bo-paginacao {
    display: flex;
    justify-content: center;
    align-items: center;
    gap: 4px;
    flex-wrap: wrap;
}

.geo-bo-pag-num,
.geo-bo-pag-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 36px;
    height: 36px;
    padding: 0 10px;
    border: 1.5px solid var(--geo-borda);
    border-radius: var(--geo-raio);
    text-decoration: none;
    font-size: 0.875rem;
    color: var(--geo-texto-sec);
    background: var(--geo-branco);
    transition: border-color 0.2s ease, color 0.2s ease, background-color 0.2s ease;
}

.geo-bo-pag-num:hover,
.geo-bo-pag-btn:hover   { border-color: var(--geo-primaria); color: var(--geo-primaria); }
.geo-bo-pag-num.activo  { background: var(--geo-primaria); color: #fff; border-color: var(--geo-primaria); font-weight: 700; }

/* =================================================================
   MODAL
   ================================================================= */

.geo-modal {
    position: fixed;
    inset: 0;
    z-index: 9999;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 20px;
}

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

.geo-modal-overlay {
    position: absolute;
    inset: 0;
    background: rgba(0, 0, 0, 0.45);
    backdrop-filter: blur(4px);
    -webkit-backdrop-filter: blur(4px);
}

.geo-modal-caixa {
    position: relative;
    background: var(--geo-branco);
    border-radius: var(--geo-raio-lg);
    box-shadow: var(--geo-sombra-lg);
    padding: 32px;
    width: 100%;
    max-width: 480px;
    animation: geo-modal-entrar 0.22s cubic-bezier(0.34, 1.56, 0.64, 1);
}

@keyframes geo-modal-entrar {
    from { opacity: 0; transform: scale(0.94) translateY(-8px); }
    to   { opacity: 1; transform: scale(1) translateY(0); }
}

.geo-modal-acoes {
    display: flex;
    gap: 10px;
    margin-top: 24px;
    flex-wrap: wrap;
}

.geo-modal-acoes .geo-bo-btn {
    flex: 1;
    justify-content: center;
    padding: 10px;
    font-size: 0.9rem;
}

body.geo-modal-aberto { overflow: hidden; }

/* Cabeçalho de modal (título + botão fechar) */
.geo-modal-cabecalho {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 12px;
    margin-bottom: 20px;
    width: 100%;
}

.geo-modal-titulo {
    margin: 0;
    font-size: 1.1rem;
    font-weight: 700;
    color: var(--geo-primaria);
    line-height: 1.3;
}

.geo-modal-fechar {
    flex-shrink: 0;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 32px;
    height: 32px;
    border: none;
    border-radius: var(--geo-raio-sm);
    background: var(--geo-sup-2);
    color: var(--geo-texto-sec);
    font-size: 1.2rem;
    line-height: 1;
    cursor: pointer;
    transition: background 0.15s ease, color 0.15s ease;
    font-family: inherit;
}

.geo-modal-fechar:hover {
    background: var(--geo-borda);
    color: var(--geo-texto);
}

/* Responsividade do backoffice */
@media (max-width: 900px) {
    .geo-bo-tabela td:nth-child(6),
    .geo-bo-tabela th:nth-child(6) { display: none; } /* Telefone */
}

@media (max-width: 700px) {
    .geo-bo-tabela td:nth-child(4),
    .geo-bo-tabela th:nth-child(4) { display: none; } /* Empresa */
}

/* =================================================================
   BACKOFFICE — LISTAS (partilhado pelas páginas individuais de listas)
   ================================================================= */

.geo-bo-lista-seccao {
    background: var(--geo-branco);
    border: 1px solid var(--geo-borda);
    border-radius: var(--geo-raio);
    padding: 28px 30px;
    margin: 24px auto;
    max-width: 1100px;
    box-shadow: var(--geo-sombra-sm);
}

.geo-bo-lista-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 20px;
}

.geo-bo-lista-titulo {
    font-size: 1.15rem;
    font-weight: 700;
    color: var(--geo-texto);
    margin: 0;
    font-family: 'PT Serif', Georgia, serif;
}

.geo-bo-form-adicionar {
    background: var(--geo-sup-2);
    border: 1px solid var(--geo-borda);
    border-radius: var(--geo-raio);
    padding: 20px 24px;
    margin-bottom: 20px;
}

.geo-bo-form-linha {
    display: flex;
    gap: 16px;
    flex-wrap: wrap;
}

.geo-bo-campo-grupo {
    flex: 1;
    min-width: 200px;
    display: flex;
    flex-direction: column;
    gap: 6px;
}

.geo-bo-campo-pais {
    max-width: 140px;
    flex: 0 0 140px;
}

.geo-bo-label {
    font-size: 0.875rem;
    font-weight: 600;
    color: var(--geo-texto-sec);
}

.geo-bo-input {
    padding: 9px 12px;
    border: 1.5px solid var(--geo-borda);
    border-radius: var(--geo-raio-sm);
    font-size: 0.9rem;
    font-family: inherit;
    color: var(--geo-texto);
    width: 100%;
    box-sizing: border-box;
    background: var(--geo-branco);
    transition: border-color 0.2s ease, box-shadow 0.2s ease;
}

.geo-bo-select {
    padding: 9px 40px 9px 12px;
    border: 1.5px solid var(--geo-borda);
    border-radius: var(--geo-raio-sm);
    font-size: 0.9rem;
    font-family: inherit;
    color: var(--geo-texto);
    min-width: 160px;
    max-width: 100%;
    box-sizing: border-box;
    background-color: var(--geo-branco);
    transition: border-color 0.2s ease, box-shadow 0.2s ease;
}

.geo-bo-select:focus,
.geo-bo-input:focus {
    outline: none;
    border-color: var(--geo-primaria);
    box-shadow: 0 0 0 3px rgba(103, 55, 1, 0.15);
}

.geo-bo-erro {
    font-size: 0.78rem;
    color: var(--geo-erro);
    min-height: 1.1em;
}

.geo-bo-form-acoes {
    display: flex;
    gap: 10px;
    margin-top: 16px;
}

/* Botões de variante (listas e voluntários) */
.geo-bo-btn-primario {
    background: var(--geo-primaria);
    color: #fff;
    border: none;
}

.geo-bo-btn-primario:hover:not(:disabled) {
    background: var(--geo-primaria-hover);
    box-shadow: 0 2px 8px rgba(103, 55, 1, 0.3);
}

.geo-bo-btn-secundario {
    background: var(--geo-sup-2);
    color: var(--geo-texto-sec);
    border: 1.5px solid var(--geo-borda);
}

.geo-bo-btn-secundario:hover:not(:disabled) {
    background: var(--geo-fundo);
    border-color: var(--geo-borda-forte);
}

.geo-bo-btn-perigo {
    background: var(--geo-erro);
    color: #fff;
    padding: 6px 12px;
    font-size: 0.8rem;
    border: none;
}

.geo-bo-btn-perigo:hover:not(:disabled) {
    background: #b91c1c;
    box-shadow: 0 2px 8px rgba(220, 38, 38, 0.3);
}

.geo-bo-btn-toggle {
    padding: 6px 12px;
    font-size: 0.8rem;
}

.geo-bo-btn-toggle.activo {
    background: var(--geo-sucesso);
    color: #fff;
    border: none;
}

.geo-bo-btn-toggle.inactivo {
    background: #9ca3af;
    color: #fff;
    border: none;
}

.geo-bo-btn-toggle.activo:hover  { background: var(--geo-secundaria-hover); }
.geo-bo-btn-toggle.inactivo:hover { background: #6b7280; }

.geo-bo-btn-editar {
    background: #2563eb;
    color: #fff;
    border: none;
}

.geo-bo-btn-editar:hover:not(:disabled) {
    background: #1d4ed8;
    box-shadow: 0 2px 8px rgba(37, 99, 235, 0.3);
}

.geo-bo-tabela-wrap {
    overflow-x: auto;
}

.geo-bo-acoes-celula {
    display: flex;
    gap: 6px;
    align-items: center;
    flex-wrap: wrap;
}

.geo-bo-badge {
    display: inline-flex;
    align-items: center;
    padding: 3px 10px;
    border-radius: var(--geo-raio-full);
    font-size: 0.75rem;
    font-weight: 600;
    white-space: nowrap;
    letter-spacing: 0.02em;
}

.geo-bo-badge-activo {
    background: var(--geo-sucesso-tint);
    color: #166534;
    border: 1px solid rgba(22, 163, 74, 0.25);
}

.geo-bo-badge-inactivo {
    background: #f4f4f5;
    color: #71717a;
    border: 1px solid #e4e4e7;
}

.geo-bo-a-carregar {
    text-align: center;
    color: var(--geo-texto-muito-leve);
    padding: 32px 0 !important;
    font-style: italic;
}

.geo-bo-mensagem {
    max-width: 1100px;
    margin: 16px auto;
    padding: 13px 18px;
    border-radius: var(--geo-raio);
    font-size: 0.9rem;
    font-weight: 500;
}

.geo-bo-mensagem.sucesso {
    background: var(--geo-sucesso-tint);
    color: #166534;
    border: 1.5px solid rgba(22, 163, 74, 0.3);
}

.geo-bo-mensagem.erro {
    background: var(--geo-erro-tint);
    color: #991b1b;
    border: 1.5px solid rgba(220, 38, 38, 0.3);
}

/* Dropdown de Listas aberto por defeito nas páginas de lista */
.geo-bo-nav-dropdown[open] .geo-bo-nav-dropdown-menu {
    display: block;
}

.geo-bo-nav-dropdown-btn--activo {
    border-color: var(--geo-primaria);
    color: var(--geo-primaria);
    font-weight: 600;
}

/* Grid de países (página Países c/ Tarifa Reduzida) */
.geo-paises-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
    gap: 4px 12px;
    max-height: 500px;
    overflow-y: auto;
    border: 1px solid var(--geo-borda);
    border-radius: var(--geo-raio);
    padding: 16px;
    margin-top: 4px;
    background: var(--geo-sup-2);
}

.geo-pais-item {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 5px 8px;
    border-radius: var(--geo-raio-xs);
    cursor: pointer;
    font-size: 0.875rem;
    transition: background-color 0.15s ease;
}

.geo-pais-item:hover { background: var(--geo-fundo); }
.geo-pais-item input { cursor: pointer; flex-shrink: 0; accent-color: var(--geo-primaria); }
.geo-pais-codigo {
    font-family: ui-monospace, 'SF Mono', monospace;
    font-size: 0.78rem;
    color: var(--geo-texto-muito-leve);
    min-width: 28px;
}

@media (max-width: 600px) {
    .geo-bo-lista-header {
        flex-direction: column;
        align-items: flex-start;
        gap: 12px;
    }
    .geo-bo-campo-pais {
        max-width: 100%;
        flex: 1;
    }
}

/* =================================================================
   ÁREA DO PARTICIPANTE
   ================================================================= */

.geo-pa-wrap {
    width: 100%;
    max-width: 1200px;
    margin-left: auto;
    margin-right: auto;
    padding: 32px 24px 68px;
    box-sizing: border-box;
}

/* Cabeçalho */
.geo-pa-header {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    flex-wrap: wrap;
    gap: 12px;
    margin-bottom: 24px;
    padding-bottom: 20px;
    border-bottom: 1px solid var(--geo-borda);
}

.geo-pa-titulo {
    color: var(--geo-primaria);
    margin: 0 0 4px;
    font-size: 1.5rem;
}

.geo-pa-subtitulo {
    color: var(--geo-texto-leve);
    margin: 0;
    font-size: 0.875rem;
}

.geo-pa-logout {
    color: var(--geo-erro);
    text-decoration: none;
    font-weight: 600;
    font-size: 0.875rem;
    white-space: nowrap;
    padding: 8px 0;
    transition: color 0.15s ease;
}

.geo-pa-logout:hover { color: #991b1b; text-decoration: underline; }

/* Navegação por tabs */
.geo-pa-nav {
    display: flex;
    flex-wrap: wrap;
    gap: 4px;
    margin-bottom: 24px;
    background: var(--geo-branco);
    border: 1px solid var(--geo-borda);
    border-radius: var(--geo-raio);
    padding: 5px;
    box-shadow: var(--geo-sombra-xs);
}

.geo-pa-tab {
    padding: 8px 16px;
    background: transparent;
    border: none;
    border-radius: var(--geo-raio-sm);
    font-size: 0.875rem;
    font-weight: 500;
    font-family: inherit;
    color: var(--geo-texto-leve);
    cursor: pointer;
    transition: background-color 0.2s ease, color 0.2s ease;
    white-space: nowrap;
}

.geo-pa-tab:hover {
    background: var(--geo-fundo);
    color: var(--geo-texto-sec);
}

.geo-pa-tab.activo {
    background: var(--geo-primaria);
    color: #fff;
    font-weight: 600;
    box-shadow: 0 1px 4px rgba(103, 55, 1, 0.3);
}

/* Secções (estendem .geo-seccao) */
.geo-pa-seccao {
    display: none;
    width: 100%;
    box-sizing: border-box;
}
.geo-pa-seccao h3 {
    color: var(--geo-primaria);
    font-size: 1rem;
    margin: 0 0 16px;
}

.geo-pa-separador {
    border: none;
    border-top: 1px solid var(--geo-borda);
    margin: 32px 0;
}

/* Cards de abstract / filme */
.geo-pa-lista { display: flex; flex-direction: column; gap: 12px; margin-bottom: 8px; }

.geo-pa-card {
    border: 1px solid var(--geo-borda);
    border-radius: var(--geo-raio);
    padding: 18px 20px;
    background: var(--geo-sup-2);
    transition: box-shadow 0.2s ease;
}

.geo-pa-card:hover { box-shadow: var(--geo-sombra-xs); }

.geo-pa-card--pendente  { border-left: 3px solid var(--geo-acento); }
.geo-pa-card--aprovado  { border-left: 3px solid var(--geo-sucesso); }
.geo-pa-card--rejeitado { border-left: 3px solid var(--geo-erro); }

.geo-pa-card-header {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 12px;
    margin-bottom: 10px;
    flex-wrap: wrap;
}

.geo-pa-card-titulo {
    margin: 0;
    font-size: 0.9375rem;
    color: var(--geo-primaria);
    flex: 1;
}

.geo-pa-card-meta {
    margin: 0 0 6px;
    font-size: 0.875rem;
    color: var(--geo-texto);
}

.geo-pa-card-data {
    margin: 8px 0 0;
    font-size: 0.8rem;
    color: var(--geo-texto-leve);
}

.geo-pa-notas-admin {
    margin-top: 10px;
    padding: 10px 14px;
    background: var(--geo-erro-tint);
    border-left: 3px solid var(--geo-erro);
    border-radius: 0 var(--geo-raio) var(--geo-raio) 0;
    font-size: 0.875rem;
    color: var(--geo-texto);
}

/* Contadores de caracteres */
.geo-campo-contador {
    display: block;
    font-size: 0.78rem;
    color: var(--geo-texto-leve);
    text-align: right;
    margin-top: 4px;
    font-variant-numeric: tabular-nums;
}

.geo-campo-contador.excedido { color: var(--geo-erro); font-weight: 700; }

/* Nota de campo */
.geo-campo-nota {
    font-weight: 400;
    font-size: 0.8rem;
    color: var(--geo-texto-leve);
    margin-left: 6px;
}

/* Grelha de filmes para votação */
.geo-filmes-grelha {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
    gap: 16px;
}

.geo-filme-card {
    border: 1px solid var(--geo-borda);
    border-radius: var(--geo-raio);
    padding: 18px;
    background: var(--geo-branco);
    display: flex;
    flex-direction: column;
    gap: 10px;
    transition: box-shadow 0.2s ease, border-color 0.2s ease, transform 0.2s ease;
}

.geo-filme-card:hover {
    box-shadow: var(--geo-sombra);
    border-color: var(--geo-borda-forte);
    transform: translateY(-2px);
}

.geo-filme-card.votado {
    border-color: var(--geo-sucesso);
    background: var(--geo-sucesso-tint);
}

.geo-filme-titulo {
    margin: 0;
    font-size: 0.9375rem;
    color: var(--geo-primaria);
}

.geo-filme-descricao {
    margin: 0;
    font-size: 0.85rem;
    color: var(--geo-texto-leve);
    flex: 1;
    line-height: 1.55;
}

.geo-filme-link {
    font-size: 0.85rem;
    font-weight: 600;
    color: var(--geo-secundaria);
    text-decoration: none;
    transition: color 0.15s ease;
}

.geo-filme-link:hover { color: var(--geo-secundaria-hover); text-decoration: underline; }

.geo-btn-votar { width: 100%; justify-content: center; margin-top: 4px; }

/* Thumbnail do YouTube nos cards de filme */
.geo-filme-thumb-link {
    display: block;
    border-radius: var(--geo-raio) var(--geo-raio) 0 0;
    overflow: hidden;
    margin: -18px -18px 12px;
}

.geo-filme-thumb {
    display: block;
    width: 100%;
    height: auto;
    aspect-ratio: 16 / 9;
    object-fit: cover;
    transition: transform 0.3s ease;
}

.geo-filme-thumb-link:hover .geo-filme-thumb {
    transform: scale(1.03);
}

/* Thumbnail nos resultados da votação */
.geo-resultado-thumb-link {
    display: block;
    border-radius: var(--geo-raio-sm);
    overflow: hidden;
    margin-bottom: 10px;
}

.geo-resultado-thumb {
    display: block;
    width: 120px;
    height: auto;
    border-radius: var(--geo-raio-sm);
}

/* Resultados da votação */
.geo-resultados-votacao { max-width: 640px; }

.geo-resultados-meu-voto {
    background: var(--geo-secundaria-tint);
    border-left: 3px solid var(--geo-secundaria);
    padding: 12px 16px;
    border-radius: 0 var(--geo-raio) var(--geo-raio) 0;
    margin-bottom: 16px;
    font-size: 0.9375rem;
}

.geo-resultados-total {
    color: var(--geo-texto-leve);
    margin-bottom: 20px;
    font-size: 0.875rem;
}

.geo-resultados-lista {
    list-style: none;
    padding: 0;
    margin: 0;
    display: flex;
    flex-direction: column;
    gap: 10px;
}

.geo-resultado-item {
    padding: 14px 16px;
    border: 1px solid var(--geo-borda);
    border-radius: var(--geo-raio);
    background: var(--geo-branco);
    transition: box-shadow 0.2s ease;
}

.geo-resultado-item:hover { box-shadow: var(--geo-sombra-xs); }

.geo-resultado-item--meu-voto {
    border-color: var(--geo-secundaria);
    background: var(--geo-secundaria-tint);
}

.geo-resultado-cabecalho {
    display: flex;
    align-items: center;
    gap: 8px;
    margin-bottom: 10px;
    flex-wrap: wrap;
}

.geo-resultado-pos {
    color: var(--geo-texto-muito-leve);
    font-size: 0.85rem;
    min-width: 1.4em;
    font-variant-numeric: tabular-nums;
}

.geo-resultado-nome {
    font-weight: 600;
    flex: 1;
    font-size: 0.9375rem;
}

.geo-resultado-badge {
    font-size: 0.7rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    background: var(--geo-secundaria);
    color: #fff;
    padding: 3px 10px;
    border-radius: var(--geo-raio-full);
}

.geo-resultado-votos {
    font-size: 0.85rem;
    color: var(--geo-texto-leve);
    white-space: nowrap;
    font-variant-numeric: tabular-nums;
}

.geo-resultado-barra-wrap {
    height: 6px;
    background: var(--geo-borda);
    border-radius: var(--geo-raio-full);
    overflow: hidden;
    margin-bottom: 5px;
}

.geo-resultado-barra {
    height: 100%;
    background: var(--geo-secundaria);
    border-radius: var(--geo-raio-full);
    transition: width 0.6s cubic-bezier(0.4, 0, 0.2, 1);
}

.geo-resultado-pct {
    font-size: 0.78rem;
    color: var(--geo-texto-leve);
    font-variant-numeric: tabular-nums;
}

/* Vencedor destacado nos resultados (só depois do encerramento) */
.geo-resultado-item--vencedor {
    border-color: var(--geo-acento);
    background: rgba(196, 144, 10, 0.06);
    position: relative;
}

.geo-resultado-coroa {
    position: absolute;
    top: -10px;
    right: 14px;
    font-size: 1.1rem;
    line-height: 1;
}

.geo-resultado-badge--vencedor {
    background: var(--geo-acento);
}

.geo-resultado-item--vencedor .geo-resultado-barra {
    background: var(--geo-acento);
}

/* Painel compacto enquanto a votação está aberta (sem contagens/ranking) */
.geo-resultados-votacao--aberta .geo-resultados-meu-voto {
    display: flex;
    align-items: center;
    gap: 8px;
}

.geo-resultados-icone {
    color: var(--geo-secundaria);
    font-weight: 700;
}

.geo-resultados-nota {
    font-size: 0.85rem;
    color: var(--geo-texto-leve);
}

/* Obrigar a assistir ao vídeo antes de votar */
.geo-filme-aviso-video {
    margin: 0;
    font-size: 0.78rem;
    color: var(--geo-aviso);
    font-weight: 600;
}

.geo-filme-card.assistido .geo-filme-aviso-video {
    color: var(--geo-sucesso);
}

.geo-btn-votar:disabled {
    opacity: 0.55;
    cursor: not-allowed;
}

/* Responsividade */
@media (max-width: 600px) {
    .geo-pa-nav { gap: 3px; padding: 4px; }
    .geo-pa-tab { padding: 7px 12px; font-size: 0.82rem; }
    .geo-filmes-grelha { grid-template-columns: 1fr; }
}

/* ================================================================
   PÁGINA DE LOGIN
   ================================================================ */

.geo-login-pagina {
    min-height: 100vh;
    display: flex;
    align-items: center;
    justify-content: center;
    background: var(--geo-fundo);
    padding: 20px;
}

.geo-login-caixa {
    background: var(--geo-branco);
    border-radius: var(--geo-raio-lg);
    box-shadow: var(--geo-sombra-md);
    border: 1px solid var(--geo-borda);
    padding: 44px 40px;
    width: 100%;
    max-width: 420px;
}

.geo-login-cabecalho {
    text-align: center;
    margin-bottom: 32px;
}

.geo-login-cabecalho h1 {
    font-size: 1.5rem;
    color: var(--geo-primaria);
    margin: 0 0 8px;
    font-weight: 700;
}

.geo-login-cabecalho p {
    color: var(--geo-texto-leve);
    font-size: 0.9rem;
    margin: 0;
}

.geo-campo-password .geo-input-wrapper {
    position: relative;
    display: flex;
    align-items: center;
}

.geo-campo-password .geo-input-wrapper input {
    padding-right: 44px;
}

.geo-toggle-password {
    position: absolute;
    right: 10px;
    background: none;
    border: none;
    cursor: pointer;
    padding: 4px;
    color: var(--geo-texto-leve);
    line-height: 1;
    display: flex;
    align-items: center;
    transition: color 0.15s ease;
}

.geo-toggle-password:hover {
    color: var(--geo-primaria);
}

.geo-campo-checkbox label {
    display: flex;
    align-items: center;
    gap: 8px;
    font-size: 0.9rem;
    color: var(--geo-texto);
    cursor: pointer;
}

.geo-campo-checkbox input[type="checkbox"] {
    width: auto;
    cursor: pointer;
    accent-color: var(--geo-primaria);
}

/* Linha com "Remember me" à esquerda e "Forgot your password?" à direita */
.geo-login-opcoes {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    margin-bottom: 18px;
    flex-wrap: wrap;
}

.geo-login-opcoes .geo-campo-checkbox {
    margin: 0;
}

.geo-link-esqueci {
    font-size: 0.85rem;
    color: var(--geo-secundaria);
    text-decoration: none;
    font-weight: 500;
    transition: color 0.15s ease;
}

.geo-link-esqueci:hover {
    color: var(--geo-secundaria-hover);
    text-decoration: underline;
}

.geo-login-rodape {
    text-align: center;
    margin-top: 20px;
    font-size: 0.85rem;
    color: var(--geo-texto-leve);
}

.geo-login-rodape a {
    color: var(--geo-secundaria);
    text-decoration: none;
    font-weight: 500;
    transition: color 0.15s ease;
}

.geo-login-rodape a:hover {
    color: var(--geo-secundaria-hover);
    text-decoration: underline;
}

@media (max-width: 480px) {
    .geo-login-caixa { padding: 28px 20px; }
}

/* ================================================================
   BACKOFFICE — DETALHE EXPANSÍVEL + BOTÃO VER
   ================================================================ */

.geo-bo-btn--ver {
    background: var(--geo-sup-2);
    color: var(--geo-primaria);
    border: 1.5px solid var(--geo-borda);
    padding: 6px 14px;
    border-radius: var(--geo-raio-sm);
    font-size: 0.85rem;
    font-weight: 600;
    cursor: pointer;
    transition: background-color 0.2s ease, color 0.2s ease, border-color 0.2s ease;
    white-space: nowrap;
}

.geo-bo-btn--ver:hover {
    background: var(--geo-primaria);
    color: #fff;
    border-color: var(--geo-primaria);
}

.geo-bo-tr-detalhe > td {
    padding: 0 !important;
    background: #faf5f2;
    border-top: none !important;
}

.geo-bo-detalhe-inner {
    padding: 24px 28px;
    border-top: 2px solid var(--geo-secundaria);
    border-bottom: 1px solid var(--geo-borda);
}

.geo-bo-detalhe-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
    gap: 16px 24px;
    margin-bottom: 20px;
}

.geo-bo-detalhe-grid > div strong {
    display: block;
    font-size: 0.75rem;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    color: var(--geo-texto-muito-leve);
    margin-bottom: 4px;
}

.geo-bo-detalhe-grid > div p {
    margin: 0;
    font-size: 0.9rem;
    color: var(--geo-texto);
    word-break: break-word;
}

.geo-bo-detalhe-notas {
    background: var(--geo-erro-tint);
    border: 1px solid rgba(220, 38, 38, 0.2);
    border-radius: var(--geo-raio);
    padding: 14px 18px;
    margin-bottom: 20px;
}

.geo-bo-detalhe-notas strong {
    display: block;
    font-size: 0.75rem;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    color: var(--geo-erro);
    margin-bottom: 6px;
}

.geo-bo-detalhe-notas p {
    margin: 0;
    font-size: 0.9rem;
    color: var(--geo-texto);
}

.geo-bo-detalhe-acoes {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
    padding-top: 16px;
    border-top: 1px solid var(--geo-borda);
}

/* ================================================================
   VOLUNTÁRIOS — Prefixo telefone +351
   ================================================================ */

.geo-tel-grupo {
    display: flex;
    align-items: stretch;
    border: 1.5px solid var(--geo-borda);
    border-radius: var(--geo-raio-sm);
    overflow: hidden;
    transition: border-color 0.2s ease, box-shadow 0.2s ease;
}

.geo-tel-grupo:focus-within {
    border-color: var(--geo-primaria);
    box-shadow: 0 0 0 3px rgba(103, 55, 1, 0.15);
}

.geo-tel-prefixo {
    display: flex;
    align-items: center;
    padding: 9px 12px;
    background: var(--geo-sup-2);
    border-right: 1.5px solid var(--geo-borda);
    color: var(--geo-texto-leve);
    font-size: 0.9rem;
    font-weight: 600;
    white-space: nowrap;
    user-select: none;
}

.geo-tel-input {
    border: none !important;
    border-radius: 0 !important;
    box-shadow: none !important;
    flex: 1;
    min-width: 0;
    padding: 9px 12px;
    font-size: 0.9rem;
    font-family: inherit;
    color: var(--geo-texto);
    background: var(--geo-branco);
}

.geo-tel-input:focus {
    outline: none;
    box-shadow: none !important;
}


/* ================================================================
   WORKSHOPS — Área do Participante
   ================================================================ */

.geo-ws-lista {
    display: flex;
    flex-direction: column;
    gap: 16px;
}

.geo-ws-card {
    display: flex;
    align-items: flex-start;
    gap: 20px;
    background: var(--geo-sup-1);
    border: 1.5px solid var(--geo-borda);
    border-radius: var(--geo-raio);
    padding: 20px;
    box-shadow: var(--geo-sombra-xs);
    transition: border-color 0.2s ease;
}

.geo-ws-card.inscrito {
    border-color: var(--geo-secundaria);
    background: var(--geo-secundaria-tint);
}

.geo-ws-card-info { flex: 1; }

.geo-ws-card-titulo {
    margin: 0 0 4px;
    font-size: 1.05rem;
    color: var(--geo-texto);
}

.geo-ws-card-formador {
    margin: 0 0 4px;
    font-size: 0.875rem;
    color: var(--geo-texto-sec);
}

.geo-ws-card-horario {
    margin: 0 0 6px;
    font-size: 0.85rem;
    color: var(--geo-texto-leve);
}

.geo-ws-card-descricao {
    margin: 6px 0 0;
    font-size: 0.875rem;
    color: var(--geo-texto-sec);
    line-height: 1.5;
}

.geo-ws-card-vagas {
    margin: 8px 0 0;
    font-size: 0.82rem;
    color: var(--geo-texto-muito-leve);
}

.geo-ws-card-acoes {
    display: flex;
    flex-direction: column;
    align-items: flex-end;
    gap: 8px;
    flex-shrink: 0;
}

.geo-ws-badge-inscrito {
    display: inline-block;
    background: var(--geo-secundaria);
    color: #fff;
    font-size: 0.78rem;
    font-weight: 600;
    padding: 3px 10px;
    border-radius: var(--geo-raio-full);
}

.geo-ws-badge-lotado {
    display: inline-block;
    background: var(--geo-texto-muito-leve);
    color: #fff;
    font-size: 0.78rem;
    font-weight: 600;
    padding: 3px 10px;
    border-radius: var(--geo-raio-full);
}

.geo-pa-btn {
    padding: 8px 16px;
    border: none;
    border-radius: var(--geo-raio-sm);
    font-size: 0.875rem;
    font-weight: 600;
    cursor: pointer;
    transition: var(--geo-transicao-rpd);
    white-space: nowrap;
}

.geo-pa-btn--inscrever,
.geo-pa-btn--adicionar {
    background: var(--geo-primaria);
    color: #fff;
}

.geo-pa-btn--inscrever:hover,
.geo-pa-btn--adicionar:hover {
    background: var(--geo-primaria-hover);
}

.geo-pa-btn--cancelar,
.geo-pa-btn--remover {
    background: var(--geo-sup-2);
    color: var(--geo-texto-sec);
    border: 1.5px solid var(--geo-borda);
}

.geo-pa-btn--cancelar:hover,
.geo-pa-btn--remover:hover {
    border-color: var(--geo-erro);
    color: var(--geo-erro);
}

.geo-pa-btn:disabled {
    opacity: 0.6;
    cursor: not-allowed;
}

/* ================================================================
   AGENDA — Área do Participante (grelha dia × sala × hora)
   Partilhada pela tab Agenda e pela selecção de participação na tab Tickets.
   ================================================================ */

.geo-pa-grelha-dias {
    display: flex;
    gap: 8px;
    flex-wrap: wrap;
    margin-bottom: 16px;
    border-bottom: 2px solid var(--geo-borda);
}

.geo-pa-grelha-dia-tab {
    appearance: none;
    border: 1.5px solid var(--geo-borda);
    border-bottom: none;
    background: var(--geo-fundo);
    padding: 8px 16px;
    border-radius: var(--geo-raio) var(--geo-raio) 0 0;
    cursor: pointer;
    font-weight: 600;
    font-size: 0.85rem;
    color: var(--geo-texto-leve);
    margin-bottom: -2px;
}

.geo-pa-grelha-dia-tab small {
    display: block;
    font-weight: 400;
    font-size: 0.72rem;
    color: var(--geo-texto-leve);
}

.geo-pa-grelha-dia-tab.activo {
    background: #fff;
    color: var(--geo-primaria);
    border-color: var(--geo-borda);
    border-bottom: 2px solid #fff;
}

.geo-pa-grelha-dia-painel { display: none; }
.geo-pa-grelha-dia-painel.activo { display: block; }

.geo-pa-horaria-scroll {
    overflow-x: auto;
    border: 1px solid var(--geo-borda);
    border-radius: var(--geo-raio);
}

.geo-pa-horaria {
    border-collapse: collapse;
    width: 100%;
}

.geo-pa-horaria th,
.geo-pa-horaria td {
    border: 1px solid var(--geo-borda);
    vertical-align: top;
    padding: 8px;
}

.geo-pa-horaria thead th {
    background: var(--geo-fundo);
    text-align: left;
}

.geo-pa-horaria-hcol {
    background: var(--geo-fundo);
    font-weight: 700;
    font-size: 0.8rem;
    white-space: nowrap;
    position: sticky;
    left: 0;
    z-index: 1;
    min-width: 72px;
    text-align: left;
}

.geo-pa-horaria tbody .geo-pa-horaria-hcol { color: var(--geo-primaria); }
.geo-pa-horaria td { min-width: 200px; }
.geo-pa-horaria-vazia { background: var(--geo-fundo); }
.geo-pa-horaria-sala { font-weight: 700; font-size: 0.85rem; color: var(--geo-texto); }
.geo-pa-horaria-tema { font-size: 0.72rem; color: var(--geo-secundaria); margin-top: 1px; }
.geo-pa-horaria-vazio { padding: 28px; text-align: center; color: var(--geo-texto-leve); }
.geo-pa-horaria td .geo-pa-ev-card { margin-bottom: 8px; }
.geo-pa-horaria td .geo-pa-ev-card:last-child { margin-bottom: 0; }

.geo-pa-ev-card {
    border: 1.5px solid var(--geo-borda);
    border-radius: var(--geo-raio);
    background: var(--geo-sup-1);
    padding: 10px 12px;
    transition: border-color 0.2s ease, background 0.2s ease;
}

.geo-pa-ev-card.na-agenda {
    border-color: var(--geo-secundaria);
    background: var(--geo-secundaria-tint);
}

.geo-pa-ev-topo {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 6px;
    margin-bottom: 4px;
}

.geo-pa-ev-tipo {
    font-size: 0.68rem;
    font-weight: 700;
    letter-spacing: 0.04em;
    text-transform: uppercase;
    padding: 2px 8px;
    border-radius: var(--geo-raio-full);
    white-space: nowrap;
}

.geo-pa-ev-tipo--workshop   { background: var(--geo-primaria-tint); color: var(--geo-primaria); }
.geo-pa-ev-tipo--sessao     { background: rgba(64, 84, 57, 0.12); color: #3a8050; }
.geo-pa-ev-tipo--reuniao_eb { background: rgba(196, 144, 10, 0.10); color: var(--geo-acento); }
.geo-pa-ev-tipo--iniciativa { background: rgba(194, 65, 12, 0.10); color: #b45309; }
.geo-pa-ev-tipo--evento     { background: rgba(13, 110, 253, 0.10); color: #0d6efd; }

.geo-pa-ev-hora { font-size: 0.72rem; font-weight: 600; color: var(--geo-texto-leve); white-space: nowrap; }
.geo-pa-ev-titulo { font-size: 0.88rem; font-weight: 600; color: var(--geo-texto); line-height: 1.25; margin-bottom: 2px; }
.geo-pa-ev-sub { font-size: 0.76rem; color: var(--geo-texto-leve); margin-bottom: 8px; }

.geo-pa-ev-vagas {
    font-size: 0.72rem;
    font-weight: 600;
    color: var(--geo-secundaria);
    margin-bottom: 6px;
}

.geo-pa-ev-vagas--esgotado { color: #b02a37; }

.geo-pa-ev-card .geo-pa-btn:disabled {
    opacity: 0.6;
    cursor: not-allowed;
}

.geo-pa-ev-card .geo-pa-btn {
    width: 100%;
    text-align: center;
    margin-top: 6px;
}

@media (max-width: 600px) {
    .geo-ws-card {
        flex-direction: column;
    }
    .geo-ws-card-acoes {
        align-items: flex-start;
    }
}

/* ================================================================
   TOM SELECT — override para harmonizar com o tema
   ================================================================ */

.ts-wrapper.single .ts-control {
    border: 1.5px solid var(--geo-borda);
    border-radius: var(--geo-raio);
    padding: 9px 36px 9px 12px;
    font-size: 0.9rem;
    font-family: inherit;
    color: var(--geo-texto);
    background: var(--geo-branco);
    box-shadow: none;
    cursor: pointer;
    transition: border-color 0.2s ease, box-shadow 0.2s ease;
}

.ts-wrapper.single.input-active .ts-control,
.ts-wrapper.single .ts-control:focus {
    border-color: var(--geo-primaria);
    box-shadow: 0 0 0 3px rgba(103, 55, 1, 0.15);
    outline: none;
}

.ts-dropdown {
    border: 1.5px solid var(--geo-borda);
    border-radius: var(--geo-raio);
    box-shadow: var(--geo-sombra-md);
    font-size: 0.9rem;
    font-family: inherit;
}

.ts-dropdown .option {
    padding: 8px 12px;
    color: var(--geo-texto);
}

.ts-dropdown .option.active,
.ts-dropdown .option:hover {
    background: var(--geo-primaria-tint);
    color: var(--geo-primaria);
}

.ts-dropdown .option.selected {
    background: var(--geo-primaria);
    color: #fff;
}

.ts-wrapper .ts-control input {
    font-size: 0.9rem;
    font-family: inherit;
    color: var(--geo-texto);
}

/* ================================================================
   HEADER DO SITE
   ================================================================ */

.geo-site-header {
    background: #ffffff;
    box-shadow: 0 1px 4px rgba(0, 0, 0, 0.08);
    position: sticky;
    top: 0;
    z-index: 500;
}

.geo-site-header-inner {
    max-width: 1200px;
    margin: 0 auto;
    padding: 16px 24px;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
}

.geo-site-header-user {
    display: flex;
    align-items: center;
    gap: 14px;
    flex-shrink: 0;
}

.geo-site-header-username {
    font-size: 0.875rem;
    color: var(--geo-texto-leve);
    white-space: nowrap;
}

.geo-site-header-sair {
    font-size: 0.875rem;
    font-weight: 600;
    color: var(--geo-erro);
    text-decoration: none;
    white-space: nowrap;
    transition: color 0.15s ease;
}

.geo-site-header-link {
    font-size: 0.875rem;
    font-weight: 600;
    color: var(--geo-primaria);
    text-decoration: none;
    white-space: nowrap;
}
.geo-site-header-link:hover { text-decoration: underline; }

.geo-site-header-sair:hover {
    color: #991b1b;
    text-decoration: underline;
}

.geo-site-logo-link {
    display: inline-flex;
    align-items: center;
    text-decoration: none;
}

.geo-site-logo,
/* Especificidade extra: o WooCommerce (.woocommerce-page img { height:auto })
   anulava a altura nas páginas de carrinho/checkout/encomenda recebida */
.geo-site-header img.geo-site-logo {
    height: 80px;
    width: auto;
    max-width: 100%;
    display: block;
}

/* Na página de login o header desaparece — o logo mostra-se dentro do card */
body.page-template-page-login .geo-site-header { display: none; }

.geo-login-logo {
    text-align: center;
    margin-bottom: 20px;
}
.geo-login-logo img {
    height: 74px;
    width: auto;
    display: inline-block;
}

/* Em páginas de backoffice, reduz a altura do logo */
.geo-bo-wrap ~ .geo-site-header .geo-site-logo,
body:has(.geo-bo-wrap) .geo-site-logo {
    height: 80px;
}

/* ================================================================
   FOOTER DO SITE
   ================================================================ */

.geo-site-footer {
    /* Full-bleed: ocupa sempre a largura total da janela, mesmo que
       herde/esteja dentro de um contexto com max-width (ex: backoffice).
       Nas páginas onde já é full-width, os cálculos dão 0 → sem efeito. */
    width: 100vw;
    max-width: 100vw;
    margin-top: auto;
    margin-left: calc(50% - 50vw);
    margin-right: calc(50% - 50vw);
    flex-shrink: 0;
}

/* Impede que os 100vw do footer criem uma barra de scroll horizontal
   (a largura da scrollbar vertical). 'clip' não quebra o header sticky. */
html { overflow-x: clip; }

.geo-footer-bar-img {
    width: 100%;
    line-height: 0;
    font-size: 0;
}

.geo-footer-bar {
    width: 100%;
    display: block;
    height: auto;
}

/* ---- Área verde principal ---- */
.geo-footer-main {
    background: #405439;
    margin-top: -1px; /* cola ao fundo da faixa sem deixar gap */
    color: #fff;
    padding: 8px 24px 40px;
}
.geo-footer-inner {
    max-width: 1200px;
    margin: 0 auto;
}

.geo-footer-logos-top {
    text-align: center;
    padding: 24px 0 40px;
}
.geo-footer-logos {
    display: inline-block;
    width: 100%;
    max-width: 480px;
    height: auto;
}

/* ---- Colunas ---- */
.geo-footer-cols {
    display: grid;
    grid-template-columns: 2fr 1fr 1fr;
    gap: 40px;
    padding-bottom: 36px;
    border-bottom: 1px solid rgba(255,255,255,.15);
}
.geo-footer-titulo {
    font-size: 1.25rem;
    line-height: 1.3;
    margin: 0 0 12px;
    color: #fff;
    font-weight: 700;
}
.geo-footer-desc {
    font-size: .9rem;
    line-height: 1.6;
    color: rgba(255,255,255,.8);
    margin: 0 0 20px;
    max-width: 460px;
}
.geo-footer-contact {
    list-style: none;
    margin: 0 0 20px;
    padding: 0;
}
.geo-footer-contact li {
    display: flex;
    align-items: center;
    gap: 10px;
    margin: 9px 0;
    font-size: .9rem;
    color: rgba(255,255,255,.9);
}
.geo-footer-contact svg { flex: 0 0 auto; opacity: .85; }
.geo-footer-contact a { color: rgba(255,255,255,.9); text-decoration: none; }
.geo-footer-contact a:hover { color: #fff; text-decoration: underline; }

.geo-footer-social { display: flex; gap: 10px; }
.geo-footer-social a {
    width: 34px; height: 34px;
    display: inline-flex; align-items: center; justify-content: center;
    border: 1px solid rgba(255,255,255,.5);
    border-radius: 6px;
    color: #fff;
    transition: background .15s ease, border-color .15s ease;
}
.geo-footer-social a:hover { background: rgba(255,255,255,.12); border-color: #fff; }

.geo-footer-col-titulo {
    font-size: 1.05rem;
    font-weight: 700;
    color: #fff;
    margin: 0 0 14px;
}
.geo-footer-col ul { list-style: none; margin: 0; padding: 0; }
.geo-footer-col li { margin: 10px 0; }
.geo-footer-col li a {
    color: rgba(255,255,255,.82);
    text-decoration: none;
    font-size: .92rem;
    transition: color .15s ease;
}
.geo-footer-col li a:hover { color: #fff; text-decoration: underline; }

/* ---- Botões ---- */
.geo-footer-botoes {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: 20px;
    padding: 36px 0;
}
.geo-footer-btn {
    display: inline-block;
    padding: 13px 30px;
    border-radius: 6px;
    font-weight: 600;
    font-size: .92rem;
    text-decoration: none;
    text-align: center;
    transition: filter .15s ease;
}
.geo-footer-btn:hover { filter: brightness(1.1); }
.geo-footer-btn--castanho { background: #673701; color: #fff; }
.geo-footer-btn--ambar    { background: #D09C2B; color: #3a2a06; }

/* ---- Barra inferior ---- */
.geo-footer-bottom {
    display: flex;
    flex-wrap: wrap;
    justify-content: space-between;
    align-items: center;
    gap: 12px;
    padding-top: 24px;
    border-top: 1px solid rgba(255,255,255,.15);
    font-size: .82rem;
    color: rgba(255,255,255,.75);
}
.geo-footer-copy { margin: 0; max-width: 620px; }
.geo-footer-legal { margin: 0; text-align: right; }
.geo-footer-legal a { color: rgba(255,255,255,.75); text-decoration: none; }
.geo-footer-legal a:hover { color: #fff; text-decoration: underline; }

.geo-footer-credits {
    text-align: center;
    font-size: .8rem;
    color: rgba(255,255,255,.6);
    margin: 20px 0 0;
}
.geo-footer-credits a { color: rgba(255,255,255,.75); text-decoration: none; }
.geo-footer-credits a:hover { color: #fff; text-decoration: underline; }

@media (max-width: 860px) {
    .geo-footer-cols { grid-template-columns: 1fr 1fr; gap: 28px; }
    .geo-footer-col--info { grid-column: 1 / -1; }
    .geo-footer-bottom { flex-direction: column; align-items: flex-start; }
    .geo-footer-legal { text-align: left; }
}
@media (max-width: 520px) {
    .geo-footer-cols { grid-template-columns: 1fr; }
    .geo-footer-botoes { flex-direction: column; }
    .geo-footer-btn { width: 100%; }
}

/* Conteúdo principal cresce para empurrar o footer para baixo */
.geo-site-header + *,
.geo-bo-wrap,
.geo-inscricao-wrap,
.geo-pa-wrap,
.geo-conteudo {
    flex: 1;
}

/* ===== PAGAMENTO — WooCommerce flow ===== */

.geo-pagamento-estado {
    padding: 24px;
    border-radius: 8px;
    background: var(--geo-fundo-suave, #f7f8fa);
    margin-bottom: 24px;
}

.geo-pagamento-estado--pago {
    border-left: 4px solid #22c55e;
}

.geo-pagamento-estado--aguarda {
    border-left: 4px solid #f59e0b;
}

.geo-pagamento-estado .geo-badge {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 4px 12px;
    border-radius: 999px;
    font-size: .8em;
    font-weight: 600;
    margin-bottom: 8px;
}

.geo-pagamento-estado--pago .geo-badge {
    background: #dcfce7;
    color: #15803d;
}

.geo-pagamento-estado--aguarda .geo-badge {
    background: #fef3c7;
    color: #92400e;
}

.geo-pagamento-link {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    margin-top: 10px;
    font-size: .9em;
    color: var(--geo-primaria);
    text-decoration: none;
}

.geo-pagamento-link:hover {
    text-decoration: underline;
}

/* CTA — estado pendente */

.geo-pagamento-cta {
    padding: 24px;
    border-radius: 8px;
    background: var(--geo-fundo-suave, #f7f8fa);
}

.geo-pagamento-cta h3 {
    margin: 0 0 16px;
    font-size: 1.1em;
}

.geo-pagamento-bilhete-card {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
    padding: 16px;
    border: 1px solid var(--geo-borda, #e2e8f0);
    border-radius: 8px;
    background: #fff;
    margin-bottom: 16px;
    flex-wrap: wrap;
}

.geo-pagamento-bilhete-info {
    display: flex;
    flex-direction: column;
    gap: 4px;
}

.geo-pagamento-bilhete-info strong {
    font-size: 1em;
}

.geo-badge-early-bird {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    padding: 2px 10px;
    border-radius: 999px;
    font-size: .75em;
    font-weight: 700;
    background: #fef9c3;
    color: #78350f;
    border: 1px solid #fde68a;
}

.geo-early-bird-aviso {
    font-size: .8em;
    color: var(--geo-texto-leve, #64748b);
    margin-top: 2px;
}

.geo-pagamento-bilhete-preco {
    font-size: 1.5em;
    font-weight: 700;
    color: var(--geo-primaria);
    white-space: nowrap;
}

#geo-pagamento-erro {
    color: #dc2626;
    font-size: .9em;
    margin-top: 8px;
    padding: 8px 12px;
    background: #fee2e2;
    border-radius: 4px;
}

#geo-btn-checkout {
    margin-top: 16px;
}

#geo-btn-checkout.carregando {
    opacity: .7;
    cursor: wait;
}

/* Área do participante — tabs bloqueadas por pagamento */

.geo-pagamento-locked {
    text-align: center;
    padding: 48px 24px;
    background: var(--geo-fundo-suave, #f7f8fa);
    border-radius: 8px;
    border: 1px dashed var(--geo-borda, #e2e8f0);
}

.geo-pagamento-locked-icon {
    font-size: 2.5rem;
    margin-bottom: 12px;
}

.geo-pagamento-locked h3 {
    margin: 0 0 8px;
    font-size: 1.1em;
    color: var(--geo-texto, #1e293b);
}

.geo-pagamento-locked p {
    margin: 0;
    color: var(--geo-texto-leve, #64748b);
    max-width: 420px;
    margin-inline: auto;
    line-height: 1.6;
}

/* WooCommerce — layout */

.woocommerce-page .entry-content,
.woocommerce-checkout .entry-content,
.woocommerce-cart .entry-content,
.woocommerce-order-received .entry-content,
.wc-block-checkout,
.wc-block-cart,
.wp-block-woocommerce-checkout,
.wp-block-woocommerce-cart,
.woocommerce-page .woocommerce,
.woocommerce-order-received .woocommerce {
    max-width: 1200px;
    margin-left: auto;
    margin-right: auto;
    padding-left: 24px;
    padding-right: 24px;
    box-sizing: border-box;
}

/* O checkout.css/cart.css dos blocos WooCommerce (carregados depois do tema)
   repõem margin:0 — especificidade extra para manter o bloco centrado */
.geo-conteudo .wp-block-woocommerce-checkout,
.geo-conteudo .wp-block-woocommerce-cart {
    margin-left: auto;
    margin-right: auto;
}

/* WooCommerce thank-you customisation */

.geo-wc-thankyou {
    padding: 24px;
    border-radius: 8px;
    background: #f0fdf4;
    border-left: 4px solid #22c55e;
    margin-bottom: 24px;
}

.geo-wc-thankyou h3 {
    margin: 0 0 8px;
    color: #15803d;
}

.geo-wc-thankyou p {
    margin: 0 0 12px;
}

.geo-wc-thankyou a {
    color: var(--geo-primaria);
}

/* ================================================================
   BILHETE COM QR (área do participante)
   ================================================================ */
.geo-ticket {
    display: flex;
    gap: 24px;
    align-items: center;
    flex-wrap: wrap;
    background: #fff;
    border: 1px solid var(--geo-borda);
    border-radius: 12px;
    padding: 24px;
    margin: 20px 0;
    box-shadow: var(--geo-sombra-sm);
}
.geo-ticket-info { flex: 1 1 240px; display: flex; flex-direction: column; gap: 4px; }
.geo-ticket-etiqueta {
    font-size: .72rem; text-transform: uppercase; letter-spacing: .08em;
    color: var(--geo-primaria); font-weight: 700;
}
.geo-ticket-nome { font-size: 1.25rem; color: var(--geo-texto); }
.geo-ticket-org { color: var(--geo-texto-leve); font-size: .92rem; }
.geo-ticket-tipo {
    display: inline-block; align-self: flex-start; margin-top: 4px;
    background: var(--geo-primaria-tint); color: var(--geo-primaria);
    font-size: .8rem; font-weight: 600; padding: 3px 10px; border-radius: 999px;
}
.geo-ticket-nota { color: var(--geo-texto-leve); font-size: .85rem; margin: 10px 0 12px; }
.geo-ticket-qr {
    flex: 0 0 auto; width: 200px; height: 200px;
    display: flex; align-items: center; justify-content: center;
    background: #fff; padding: 8px; border-radius: 8px; border: 1px solid var(--geo-borda);
}
.geo-ticket-qr img, .geo-ticket-qr canvas { display: block; }
.geo-btn-secundario {
    align-self: flex-start; background: none; border: 1px solid var(--geo-borda-forte);
    color: var(--geo-texto); padding: 8px 16px; border-radius: 6px; cursor: pointer;
    font-size: .88rem; font-weight: 500; transition: background .15s ease;
}
.geo-btn-secundario:hover { background: var(--geo-fundo); }

/* ================================================================
   PÁGINA DE CHECK-IN (aberta pelo QR — só staff)
   ================================================================ */
.geo-checkin-pagina { max-width: 520px; margin: 40px auto; padding: 0 16px; }
.geo-checkin-caixa {
    background: #fff; border: 1px solid var(--geo-borda); border-radius: 14px;
    padding: 32px; box-shadow: var(--geo-sombra);
}
.geo-checkin-cabecalho { text-align: center; }
.geo-checkin-cabecalho h1 { margin: 0 0 8px; font-size: 1.4rem; }
.geo-checkin-cabecalho p { color: var(--geo-texto-leve); margin: 0 0 20px; }
.geo-checkin-topo { display: flex; gap: 16px; align-items: center; margin-bottom: 18px; }
.geo-checkin-avatar {
    flex: 0 0 64px; width: 64px; height: 64px; border-radius: 50%;
    background: var(--geo-primaria); color: #fff; font-weight: 700; font-size: 1.4rem;
    display: flex; align-items: center; justify-content: center;
}
.geo-checkin-nome { margin: 0; font-size: 1.35rem; }
.geo-checkin-org { margin: 2px 0; color: var(--geo-texto-leve); font-size: .92rem; }
.geo-checkin-tipo {
    display: inline-block; margin-top: 4px; background: var(--geo-primaria-tint);
    color: var(--geo-primaria); font-size: .8rem; font-weight: 600;
    padding: 3px 10px; border-radius: 999px;
}
.geo-checkin-estado {
    text-align: center; font-weight: 600; padding: 10px; border-radius: 8px; margin: 4px 0 22px;
}
.geo-checkin-estado--pago     { background: var(--geo-secundaria-tint); color: var(--geo-secundaria-hover); }
.geo-checkin-estado--aguarda  { background: #fdf3e6; color: #b26a00; }
.geo-checkin-estado--pendente { background: #fdf0ef; color: #c0392b; }
.geo-checkin-seccao { margin-bottom: 18px; }
.geo-checkin-seccao h2 {
    font-size: .78rem; text-transform: uppercase; letter-spacing: .08em;
    color: var(--geo-texto-leve); margin: 0 0 8px; border-bottom: 1px solid var(--geo-borda); padding-bottom: 6px;
}
.geo-checkin-lista { list-style: none; margin: 0; padding: 0; }
.geo-checkin-lista li {
    padding: 7px 0 7px 22px; position: relative; font-size: .95rem;
    border-bottom: 1px solid var(--geo-borda);
}
.geo-checkin-lista li::before { content: "✓"; position: absolute; left: 0; color: var(--geo-secundaria); font-weight: 700; }
.geo-checkin-lista li:last-child { border-bottom: none; }
.geo-checkin-vazio { color: var(--geo-texto-leve); font-size: .9rem; font-style: italic; margin: 0; }

/* Impressão: só o bilhete */
@media print {
    body * { visibility: hidden; }
    #geo-ticket, #geo-ticket * { visibility: visible; }
    #geo-ticket { position: absolute; left: 0; top: 0; width: 100%; border: none; box-shadow: none; }
    #geo-ticket-print { display: none; }
}

/* ================================================================
   LIMITES DE INSCRIÇÃO (workshops por dia / visitas "durante")
   Atingido o limite, os restantes cartões perdem o botão de inscrição
   e mostram uma nota. Classe .limite-atingido aplicada via JS.
   ================================================================ */
.geo-limite-nota { display: none; font-size: .78rem; color: var(--geo-texto-leve); font-style: italic; }
.limite-atingido .geo-limite-nota { display: block; }
.geo-pa-ev-card.limite-atingido .geo-agenda-btn-toggle,
.geo-ws-card.limite-atingido .geo-ws-btn-inscrever,
.geo-pa-visita-card.limite-atingido .geo-visit-inscrever,
.geo-pa-visita-card.limite-atingido .geo-visit-checkout { display: none; }
.geo-pa-ev-card.limite-atingido { opacity: .7; }
.geo-pa-ev-card .geo-limite-nota { margin-top: 6px; }

/* Título do abstract na lista (botão com aspeto de link) */
.geo-ab-btn-expandir {
    -webkit-appearance: none;
    appearance: none;
    background: none;
    border: none;
    padding: 0;
    font: inherit;
    font-weight: 600;
    color: var(--geo-primaria);
    text-align: left;
    cursor: pointer;
}
.geo-ab-btn-expandir:hover,
.geo-ab-btn-expandir:focus-visible {
    text-decoration: underline;
}

