/* =================================================================== */
/* ============== ESTILOS GERAIS PARA FORMULÁRIOS DINÂMICOS ============ */
/* =================================================================== */

.form-wrapper {
    margin-top: 40px;
}

.page-content-section {
    padding: 150px 0;
}

.form-group {
    margin-bottom: 1.5rem;
}

/* --- LABELS E TÍTULOS --- */

.form-group label {
    display: block;
    margin-bottom: 0.5rem;
    font-weight: bold;
}

/* Estrela vermelha para campos obrigatórios */
.required-star {
    color: #dc3545;
    /* Vermelho de erro */
    margin-left: 4px;
    font-weight: bold;
}

/* Título de Secção (Barra Azul) */
.form-section-title {
    background-color: var(--azul-mais-escuro, #3a7fa8);
    /* Usa a variável CSS, com fallback */
    color: white;
    padding: 10px 15px;
    text-transform: uppercase;
    font-size: 1.1em;
    border-radius: 4px;
    margin-top: 2rem;
    margin-bottom: 1.5rem;
}

/* Descrições e Subtítulos (para o campo Escala) */
.form-field-description {
    font-size: 0.9em;
    color: #6c757d;
    /* Cinza subtil */
    margin-bottom: 10px;
}

.form-field-subtitle {
    font-weight: normal;
    margin-bottom: 10px;
}

/* Título para o campo 'info' (com borda) */
.form-info-block label {
    font-weight: bold;
    margin-bottom: 10px;
    display: block;
    border-bottom: 2px solid var(--azul-mais-escuro, #3a7fa8);
    padding-bottom: 5px;
}

/* --- CAMPOS DE INPUT --- */

.form-group input[type="text"],
.form-group input[type="email"],
.form-group input[type="tel"],
.form-group input[type="file"],
.form-group textarea {
    width: 100%;
    padding: 10px;
    border: 1px solid var(--azul-mais-escuro, #ced4da);
    border-radius: 4px;
    background-color: #f8f9fa;
}

/* --- GRUPOS DE OPÇÕES (RADIO & CHECKBOX) --- */

.radio-group,
.checkbox-group {
    padding-top: 10px;
    display: flex;
    flex-wrap: wrap;
    /* Garante a responsividade */
    align-items: center;
    gap: 20px;
}

/* Labels dentro dos grupos de opções não devem ter estilos de título */
.radio-group label,
.checkbox-group label {
    font-weight: normal;
    margin-bottom: 0;
    border-bottom: none;
    padding-bottom: 0;
}

.scale-group {
    justify-content: space-around;
    border: 1px solid #ddd;
    border-radius: 5px;
    padding: 15px;
}

/* --- VALIDAÇÃO E MENSAGENS --- */

.form-group input.is-invalid,
.form-group textarea.is-invalid {
    border-color: #dc3545;
}

.error-message {
    color: #dc3545;
    font-size: 0.875em;
    margin-top: 0.25rem;
    display: block;
}

.alert {
    padding: 1rem;
    margin-bottom: 1rem;
    border: 1px solid transparent;
    border-radius: 0.25rem;
}

.alert-success {
    color: #0f5132;
    background-color: #d1e7dd;
    border-color: #badbcc;
}

.alert-danger {
    color: #842029;
    background-color: #f8d7da;
    border-color: #f5c2c7;
}

/* --- BOTÃO DE SUBMISSÃO --- */

.form-actions {
    text-align: right;
    margin-top: 20px;
}

@media (max-width: 991px) {
    .form-actions {
        display: flex !important;
        justify-content: center !important;
        text-align: center !important;
        width: 100% !important;
    }
}


.submit-button {
    background-color: var(--primary-blue);
    color: white;
    padding: 12px 30px;
    border: none;
    border-radius: 5px;
    font-size: 16px;
    cursor: pointer;
    transition: background-color 0.3s;
}

.submit-button:hover {
    background-color: var(--azul-mais-escuro);
}

/* Container para a checkbox com input e a sua mensagem de erro */
.checkbox-with-input-wrapper {
    display: flex;
    /* Alinha a checkbox e a label na mesma linha */
    align-items: center;
    /* Alinha verticalmente */
    flex-wrap: wrap;
    /* Permite que a mensagem de erro quebre a linha */
}

/* A label que contém o texto e o input */
.checkbox-with-input-wrapper .form-check-label {
    margin-left: 0.5rem;
    /* Espaço depois da checkbox */
    white-space: nowrap;
    /* A regra mágica: impede que o conteúdo da label quebre */

    /* Reset de estilos */
    border-bottom: none;
    padding-bottom: 0;
    font-weight: normal;
}

/* O input de texto embutido */
.inline-text-input {
    width: 150px;
    margin: 0 0.3rem;
    /* Pequeno espaço antes e depois */
    vertical-align: middle;
    /* Alinha o input com o texto adjacente */
    padding: 2px 5px;
    font-size: 0.9em;
    border: 1px solid #ccc;
    border-radius: 3px;
    background-color: #f8f9fa;
}

.inline-text-input.is-invalid {
    border-color: #dc3545;
}

/* Mensagem de erro */
.checkbox-with-input-wrapper .error-message {
    width: 100%;
    /* Ocupa a linha toda abaixo */
    margin-left: 1.5rem;
    /* Alinha com o início do texto */
    margin-top: 0.25rem;
}

.table-main-label {
    font-weight: bold;
    font-size: 1.2em;
    margin-bottom: 1rem;
    display: block;
}

.dynamic-table-wrapper {
    overflow-x: auto;
    /* Para responsividade em ecrãs pequenos */
}

.dynamic-table {
    width: 100%;
    border-collapse: collapse;
    margin-bottom: 1rem;
}

.dynamic-table th,
.dynamic-table td {
    border: 1px solid #ccc;
    padding: 8px;
    text-align: center;
    vertical-align: middle;
}

.dynamic-table th {
    background-color: #f2f2f2;
    font-weight: bold;
}

.dynamic-table td input[type="text"] {
    width: 100%;
    border: 1px solid #ddd;
    padding: 5px;
    box-sizing: border-box;
    /* Garante que o padding não quebre o layout */
}

.add-row-btn {
    background-color: #e9ecef;
    color: #495057;
    border: 1px solid #ced4da;
    padding: 10px 20px;
    cursor: pointer;
    border-radius: 4px;
    transition: background-color 0.2s;
}

.add-row-btn:hover {
    background-color: #d3d9df;
}

.table-description {
    font-size: 0.9em;
    color: #6c757d;
    margin-top: 1rem;
}

#campos-container .card.campo .card-header .card-tools .btn-tool,
#blocos-container .card.bloco .card-header .card-tools .btn-tool {
    color: rgb(0 0 0 / 70%) !important;
}

/* 
 * Efeito Hover para ambos
 */
#campos-container .card.campo .card-header .card-tools .btn-tool:hover,
#blocos-container .card.bloco .card-header .card-tools .btn-tool:hover {
    color: rgb(0 0 0 / 90%) !important;
}

/* 
 * Exceção para o ícone de remover em ambos
 */
#campos-container .card.campo .card-header .card-tools .btn-tool .fa-trash,
#blocos-container .card.bloco .card-header .card-tools .btn-tool .fa-trash {
    color: #dc3545 !important;
}

/* 
 * Efeito Hover para o ícone de remover em ambos
 */
#campos-container .card.campo .card-header .card-tools .btn-tool:hover .fa-trash,
#blocos-container .card.bloco .card-header .card-tools .btn-tool:hover .fa-trash {
    color: #c82333 !important;
}

/* =================================================================== */
/* GALERIA DE IMAGENS (CENTRADA RIGOROSAMENTE)
/* =================================================================== */

.form-galeria-section {
    margin-top: 60px;
    padding-top: 20px;
    width: 100%;
    text-align: center;
    /* Garante que textos soltos ficam ao centro */
}

/* Título */
.form-galeria-section h3 {
    font-size: 1.8rem;
    font-weight: 700;
    color: var(--azul-mais-escuro, #004b87);
    text-align: center;
    margin-bottom: 40px;
    text-transform: uppercase;

    /* Adicione estas duas linhas para preparar o terreno para a borda */
    position: relative;
    padding-bottom: 15px;
}

/* Este bloco cria a linha idêntica à primeira */
.form-galeria-section h3::after {
    content: "";
    position: absolute;
    bottom: 0;
    left: 50%;
    transform: translateX(-50%);
    /* Centraliza a linha */
    width: 60px;
    /* Largura da linha */
    height: 4px;
    /* Grossura da linha */
    background-color: var(--azul-mais-escuro, #004b87);
    /* Mesma cor do título */
}

/* Contentor das Imagens */
.galeria-grid2 {
    display: flex !important;
    justify-content: center;
    /* OBRIGATÓRIO: Centra os itens na horizontal */
    align-items: center;
    /* Alinha verticalmente se houver alturas diferentes */
    flex-wrap: wrap;
    /* Permite quebra de linha */
    gap: 30px;
    /* Espaço entre as imagens */
    width: 100%;
    margin: 0 auto;
    /* Centra o próprio contentor se tiver largura definida */
}

/* Item Individual da Galeria */
.galeria-item {
    display: block;
    position: relative;
    border-radius: 12px;
    overflow: hidden;
    box-shadow: 0 4px 15px rgba(0, 0, 0, 0.1);
    background: #fff;
    cursor: pointer;

    /* --- TAMANHO DAS IMAGENS --- */
    /* Isto é crucial para elas não ficarem esticadas à esquerda */
    width: 350px;
    max-width: 100%;
    /* Para não quebrar em telemóveis */
    flex: 0 0 auto;
    /* Impede que o item estique ou encolha estranhamente */
}

/* Ícone de Lupa/Pesquisa */
.galeria-item::after {
    content: '\f002';
    font-family: 'Font Awesome 6 Free';
    font-weight: 900;
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%) scale(1.5);
    color: white;
    font-size: 2rem;
    opacity: 0;
    transition: all 0.3s ease;
    text-shadow: 0 0 10px rgba(0, 0, 0, 0.5);
    pointer-events: none;
    z-index: 2;
}

.galeria-item:hover::after {
    opacity: 1;
    transform: translate(-50%, -50%) scale(1);
}

/* A Imagem em si */
.galeria-item img {
    width: 100%;
    height: 300px;
    /* Altura fixa */
    object-fit: cover;
    display: block;
    transition: transform 0.5s ease, filter 0.5s ease;
}

/* Efeito Hover na Imagem */
.galeria-item:hover img {
    transform: scale(1.1);
    filter: brightness(0.7);
}

/* --- RESPONSIVIDADE --- */
@media (max-width: 576px) {
    .galeria-item {
        width: 100%;
        /* Em telemóvel ocupa tudo */
    }

    .galeria-item img {
        height: 250px;
        /* Imagem um pouco mais baixa em mobile */
    }
}

.page-intro-text {
    width: 100%; /* Ocupa todo o espaço do container */
    margin-bottom: 40px;
    font-size: 1.2rem;
    line-height: 1.6;
}

.page-intro-text p {
    margin-bottom: 1.5em;
}

/* MODO NORMAL: Texto corrido de um lado ao outro */
.page-intro-text.intro-normal {
    text-align: justify; 
    column-count: 1; /* Força apenas uma coluna */
}

/* MODO COLUNAS: Apenas em ecrãs grandes (Desktop) */
@media (min-width: 992px) {
    .page-intro-text.intro-colunas {
        column-count: 2;
        column-gap: 50px; /* Espaço entre as duas colunas */
        text-align: justify;
        /* Faz com que o texto flua naturalmente entre as duas colunas */
    }
}

/* Em telemóveis, as colunas passam automaticamente a uma só */
@media (max-width: 991px) {
    .page-intro-text.intro-colunas {
        column-count: 1;
    }
}