/* =========================================================
   CEFOSMET - JETFORMBUILDER LAYOUT (MOBILE FIRST - PROD V4)
   ========================================================= */

/* =========================================================
   1. STRUTTURA BASE E MOBILE (Default per smartphone)
   ========================================================= */

/* Griglie impostate nativamente a 1 colonna per smartphone */
.jfb-grid,
.jfb-repeater-grid {
    display: grid !important;
    grid-template-columns: minmax(0, 1fr) !important;
    gap: 16px !important;
    width: 100% !important;
    max-width: none !important;
    margin-bottom: 24px !important;
}

/* Su mobile ogni riga occupa l'intero spazio disponibile (100%) */
.jfb-grid .jet-form-builder-row,
.jfb-repeater-grid .jet-form-builder-row,
.jfb-grid .wp-block-heading,
.jfb-repeater-grid .wp-block-heading,
.jfb-grid p,
.jfb-repeater-grid p {
    grid-column: 1 / -1 !important;
    width: 100% !important;
    margin: 0 !important;
    align-self: end !important;
}

.jet-form-builder__label { margin-bottom: 8px !important; }
.jet-form-builder__label-text { font-size: 16px !important; line-height: 1.25 !important; color: #303741 !important; }

/* Normalizzazione Box-Model per Input e Select standard (Altezza mobile: 52px) */
.jfb-grid input.jet-form-builder__field:not([type="checkbox"]):not([type="radio"]),
.jfb-grid select.jet-form-builder__field,
.jfb-repeater-grid input.jet-form-builder__field:not([type="checkbox"]):not([type="radio"]),
.jfb-repeater-grid select.jet-form-builder__field {
    width: 100% !important;
    max-width: 100% !important;
    min-width: 0 !important;
    height: 52px !important;
    min-height: 52px !important;
    max-height: 52px !important;
    padding: 0 14px !important; /* Il padding verticale a 0 azzera i conflitti di shifting del testo */
    line-height: 52px !important; /* Centratura verticale matematica del font */
    border: 1px solid #777 !important;
    border-radius: 0 !important;
    background-color: #ffffff !important;
    color: #1f2933 !important;
    font-size: 16px !important;
    box-sizing: border-box !important;
    box-shadow: none !important;
}

/* ANTI DOPPIA FRECCIA SELECT: Elimina le frecce in background del tema o di Elementor */
.jfb-grid select.jet-form-builder__field,
.jfb-repeater-grid select.jet-form-builder__field {
    appearance: none !important;
    -webkit-appearance: none !important;
    -moz-appearance: none !important;
    background-image: none !important; 
    background-color: #ffffff !important;
    padding-right: 48px !important;
    cursor: pointer !important;
}

/* Bilanciamento specifico per l'altezza del campo Data nei motori Webkit (Chrome/Safari/Opera) */
.jfb-grid input[type="date"].jet-form-builder__field,
.jfb-repeater-grid input[type="date"].jet-form-builder__field {
    appearance: none !important;
    -webkit-appearance: none !important;
}
.jfb-grid input[type="date"].jet-form-builder__field::-webkit-date-and-time-value,
.jfb-repeater-grid input[type="date"].jet-form-builder__field::-webkit-date-and-time-value {
    line-height: 52px !important;
    height: 52px !important;
    display: inline-block !important;
    margin: 0 !important;
    padding: 0 !important;
}

/* Le Textarea mantengono i margini interni perché si estendono dinamicamente */
.jfb-grid textarea.jet-form-builder__field,
.jfb-repeater-grid textarea.jet-form-builder__field {
    width: 100% !important;
    max-width: 100% !important;
    min-height: 120px !important;
    height: auto !important;
    padding: 12px 14px !important;
    line-height: 1.5 !important;
    border: 1px solid #777 !important;
    border-radius: 0 !important;
    background-color: #ffffff !important;
    color: #1f2933 !important;
    font-size: 16px !important;
    box-sizing: border-box !important;
}

/* Freccia customizzazione grafica della Select (L'unica che deve rimanere) */
.field-type-select-field .jet-form-builder__field-wrap { position: relative !important; }
.field-type-select-field .jet-form-builder__field-wrap::after {
    content: ""; position: absolute; right: 18px; top: 50%; width: 9px; height: 9px;
    border-right: 2px solid #1f2933; border-bottom: 2px solid #1f2933; transform: translateY(-65%) rotate(45deg); pointer-events: none; z-index: 3;
}

input.jet-form-builder__field:focus, select.jet-form-builder__field:focus, textarea.jet-form-builder__field:focus { outline: none !important; border-color: #00477f !important; box-shadow: 0 0 0 1px #00477f !important; }

/* REPEATER STRUTTURA CARD (Mobile) */
.jet-form-builder-repeater, .jet-form-builder-repeater__items, .jet-form-builder-row.field-type-repeater-field { width: 100% !important; max-width: 100% !important; display: block !important; }
.jet-form-builder-repeater__row {
    position: relative !important; display: block !important; width: 100% !important;
    border: 1px solid #e5e5e5 !important; padding: 50px 15px 20px 15px !important; margin-bottom: 24px !important; background: #fff !important; border-radius: 8px !important; box-sizing: border-box !important;
}
.jet-form-builder-repeater__row-fields { width: 100% !important; display: block !important; box-sizing: border-box !important; }

.jet-form-builder-repeater__row-remove { position: absolute !important; top: 12px !important; right: 12px !important; width: 32px !important; height: 32px !important; margin: 0 !important; z-index: 10 !important; background: transparent !important; border: none !important; padding: 0 !important; }
.jet-form-builder-repeater__remove { width: 100% !important; height: 100% !important; display: flex !important; align-items: center !important; justify-content: center !important; background: #f68b1f !important; color: #ffffff !important; border: 0 !important; border-radius: 4px !important; font-size: 16px !important; cursor: pointer !important; padding: 0 !important; margin: 0 !important; }
.jet-form-builder-repeater__actions { width: 100% !important; margin-top: 12px !important; cursor: pointer !important; }
.jet-form-builder-repeater__new, .jet-form-builder__action-button { color: #ffffff !important; }

/* CARICA FILE (Allineamento per evitare clipping del testo del pulsante) */
.jfb-grid .field-type-media-field input[type="file"].jet-form-builder__field,
.jfb-repeater-grid .field-type-media-field input[type="file"].jet-form-builder__field {
    height: 52px !important; min-height: 52px !important; max-height: 52px !important;
    line-height: 52px !important; padding: 0 10px !important; box-sizing: border-box !important; display: block !important; background: #ffffff !important;
}
.jfb-grid .field-type-media-field input[type="file"]::file-selector-button,
.jfb-grid .field-type-media-field input[type="file"]::-webkit-file-upload-button,
.jfb-repeater-grid .field-type-media-field input[type="file"]::file-selector-button,
.jfb-repeater-grid .field-type-media-field input[type="file"]::-webkit-file-upload-button {
    height: 32px !important; line-height: 30px !important; margin-top: 9px !important;
    padding: 0 12px !important; border: 1px solid #777 !important; background: #f5f5f5 !important; color: #1f2933 !important; cursor: pointer !important; float: left !important; box-sizing: border-box !important;
}
.field-type-media-field .jet-form-builder-file-upload__message { margin-top: 6px !important; font-size: 13px !important; clear: both !important; }
.field-type-media-field .jet-form-builder-file-upload__file { margin-top: 8px !important; padding: 10px 12px !important; border: 1px solid #ddd !important; background: #fafafa !important; border-radius: 4px !important;}
.field-type-media-field .jet-form-builder-file-upload__loader, .field-type-media-field .jet-form-builder-file-upload__files:empty { display: none !important; }

/* IL TUO FIX PER LA PRIVACY (Sempre attivo) */
.jet-form-builder__field-wrap.checkradio-wrap span { display: block !important; }
.field-type-checkbox-field .jet-form-builder__field-label.for-checkbox>span::before { margin-right: 12px !important; }


/* =========================================================
   2. DESKTOP GRID SYSTEM (Attivo solo per schermi >= 768px)
   ========================================================= */

@media (min-width: 768px) {
    /* Inizializzazione delle griglie parallele a 12 colonne */
    .jfb-grid,
    .jfb-repeater-grid {
        grid-template-columns: repeat(12, minmax(0, 1fr)) !important;
        row-gap: 16px !important;
        column-gap: 18px !important;
    }

    /* Reset delle larghezze fisse ereditate dal mobile per consentire l'allineamento grid */
    .jfb-grid .jet-form-builder-row:not(.field-type-repeater-field),
    .jfb-repeater-grid .jet-form-builder-row {
        width: auto !important;
        grid-column: auto !important;
    }

    /* Struttura Card Desktop */
    .jet-form-builder-repeater__row { padding: 28px 76px 28px 28px !important; }
    .jet-form-builder-repeater__row-remove { top: 28px !important; right: 28px !important; width: 36px !important; height: 36px !important; }
    .jet-form-builder-repeater__remove { font-size: 18px !important; }

    /* Passaggio ad altezza Desktop a 56px per Input, Select e Date */
    .jfb-grid input.jet-form-builder__field:not([type="checkbox"]):not([type="radio"]),
    .jfb-grid select.jet-form-builder__field,
    .jfb-repeater-grid input.jet-form-builder__field:not([type="checkbox"]):not([type="radio"]),
    .jfb-repeater-grid select.jet-form-builder__field { 
        height: 56px !important; min-height: 56px !important; max-height: 56px !important; line-height: 56px !important; padding: 0 14px !important;
    }

    .jfb-grid input[type="date"].jet-form-builder__field::-webkit-date-and-time-value,
    .jfb-repeater-grid input[type="date"].jet-form-builder__field::-webkit-date-and-time-value {
        height: 56px !important; line-height: 56px !important;
    }

    /* Bilanciamento File Upload per Desktop (56px) */
    .jfb-grid .field-type-media-field input[type="file"].jet-form-builder__field,
    .jfb-repeater-grid .field-type-media-field input[type="file"].jet-form-builder__field {
        height: 56px !important; min-height: 56px !important; max-height: 56px !important; line-height: 56px !important;
    }
    .jfb-grid .field-type-media-field input[type="file"]::file-selector-button,
    .jfb-grid .field-type-media-field input[type="file"]::-webkit-file-upload-button,
    .jfb-repeater-grid .field-type-media-field input[type="file"]::file-selector-button,
    .jfb-repeater-grid .field-type-media-field input[type="file"]::-webkit-file-upload-button {
        margin-top: 11px !important; height: 34px !important; line-height: 32px !important;
    }

    /* Griglia Servizi Extra disposta su 2 colonne */
    .jfb-checkbox-grid .jet-form-builder__fields-group { grid-template-columns: repeat(2, minmax(0, 1fr)) !important; gap: 10px 24px !important; }

    /* =========================================================
       SISTEMA COLONNE DESKTOP CON ESCLUSIONE RIGIDA REPEATER
       Usa :not(.field-type-repeater-field) per impedire alle colonne 
       dei sotto-campi di schiacciare il box dei partecipanti.
       ========================================================= */
    .jfb-grid .jet-form-builder-row:not(.field-type-repeater-field):has(.jfb-col-12) { grid-column: span 12 !important; }
    .jfb-grid .jet-form-builder-row:not(.field-type-repeater-field):has(.jfb-col-10) { grid-column: span 10 !important; }
    .jfb-grid .jet-form-builder-row:not(.field-type-repeater-field):has(.jfb-col-9)  { grid-column: span 9  !important; }
    .jfb-grid .jet-form-builder-row:not(.field-type-repeater-field):has(.jfb-col-8)  { grid-column: span 8  !important; }
    .jfb-grid .jet-form-builder-row:not(.field-type-repeater-field):has(.jfb-col-7)  { grid-column: span 7  !important; }
    .jfb-grid .jet-form-builder-row:not(.field-type-repeater-field):has(.jfb-col-6)  { grid-column: span 6  !important; }
    .jfb-grid .jet-form-builder-row:not(.field-type-repeater-field):has(.jfb-col-5)  { grid-column: span 5  !important; }
    .jfb-grid .jet-form-builder-row:not(.field-type-repeater-field):has(.jfb-col-4)  { grid-column: span 4  !important; }
    .jfb-grid .jet-form-builder-row:not(.field-type-repeater-field):has(.jfb-col-3)  { grid-column: span 3  !important; }
    .jfb-grid .jet-form-builder-row:not(.field-type-repeater-field):has(.jfb-col-2)  { grid-column: span 2  !important; }

    /* Mappatura Colonne Specifica Interna al Box Partecipanti (Non risente di blocchi esterni) */
    .jfb-repeater-grid .jet-form-builder-row:has(.jfb-col-12) { grid-column: span 12 !important; }
    .jfb-repeater-grid .jet-form-builder-row:has(.jfb-col-10) { grid-column: span 10 !important; }
    .jfb-repeater-grid .jet-form-builder-row:has(.jfb-col-9)  { grid-column: span 9  !important; }
    .jfb-repeater-grid .jet-form-builder-row:has(.jfb-col-8)  { grid-column: span 8  !important; }
    .jfb-repeater-grid .jet-form-builder-row:has(.jfb-col-7)  { grid-column: span 7  !important; }
    .jfb-repeater-grid .jet-form-builder-row:has(.jfb-col-6)  { grid-column: span 6  !important; }
    .jfb-repeater-grid .jet-form-builder-row:has(.jfb-col-5)  { grid-column: span 5  !important; }
    .jfb-repeater-grid .jet-form-builder-row:has(.jfb-col-4)  { grid-column: span 4  !important; }
    .jfb-repeater-grid .jet-form-builder-row:has(.jfb-col-3)  { grid-column: span 3  !important; }
    .jfb-repeater-grid .jet-form-builder-row:has(.jfb-col-2)  { grid-column: span 2  !important; }

    /* =========================================================
       IL BLOCCO DI CHIUSURA ANCORATO (Massima priorità logica)
       Forza il macro blocco repeater ad occupare 12 colonne piene.
       ========================================================= */
    body .jfb-grid .jet-form-builder-row.field-type-repeater-field,
    body .jfb-grid div.field-type-repeater-field {
        grid-column: span 12 !important;
        width: 100% !important;
    }
}

/* =========================================================
   3. VALIDAZIONE E STATI DI ERRORE (Campi Obbligatori)
   ========================================================= */

/* Colora il bordo e lo sfondo di rosso per i campi non compilati o formattati male */
.jfb-grid .field-has-error input.jet-form-builder__field:not([type="checkbox"]):not([type="radio"]),
.jfb-grid .field-has-error select.jet-form-builder__field,
.jfb-grid .field-has-error textarea.jet-form-builder__field,
.jfb-repeater-grid .field-has-error input.jet-form-builder__field:not([type="checkbox"]):not([type="radio"]),
.jfb-repeater-grid .field-has-error select.jet-form-builder__field {
    border-color: #e63946 !important;
    background-color: #fff5f5 !important;
}

/* Mantiene l'evidenziazione rossa attiva anche quando l'utente clicca dentro il campo per correggerlo */
.jfb-grid .field-has-error input.jet-form-builder__field:focus,
.jfb-grid .field-has-error select.jet-form-builder__field:focus,
.jfb-grid .field-has-error textarea.jet-form-builder__field:focus,
.jfb-repeater-grid .field-has-error input.jet-form-builder__field:focus,
.jfb-repeater-grid .field-has-error select.jet-form-builder__field:focus {
    border-color: #e63946 !important;
    box-shadow: 0 0 0 1px #e63946 !important;
}

/* Stile grafico del testo di errore nativo di JetFormBuilder sotto ciascun campo */
.jfb-grid .jet-form-builder__field-error,
.jfb-repeater-grid .jet-form-builder__field-error {
    color: #e63946 !important;
    font-size: 13px !important;
    margin-top: 6px !important;
    font-weight: bold !important;
    display: block !important;
    line-height: 1.3 !important;
}

/* =========================================================
   FIX ACCORDION DENTRO GRIGLIA JETFORMBUILDER
   ========================================================= */

/* L'accordion deve occupare sempre tutta la larghezza della griglia */
.jfb-grid > .wp-block-accordion {
    grid-column: 1 / -1 !important;
    width: 100% !important;
    max-width: 100% !important;
    display: block !important;
    box-sizing: border-box !important;
    margin-bottom: 24px !important;
}

/* Elementi interni accordion a larghezza piena */
.jfb-grid > .wp-block-accordion .wp-block-accordion-item,
.jfb-grid > .wp-block-accordion .wp-block-accordion-heading,
.jfb-grid > .wp-block-accordion .wp-block-accordion-panel {
    width: 100% !important;
    max-width: 100% !important;
    box-sizing: border-box !important;
}

/* Bottone accordion */
.jfb-grid > .wp-block-accordion .wp-block-accordion-heading__toggle {
    width: auto !important;
    max-width: 100% !important;
    display: flex !important;
    align-items: center !important;
    justify-content: space-between !important;
    box-sizing: border-box !important;
}

.jfb-grid > .wp-block-accordion .wp-block-accordion-heading__toggle:hover .wp-block-accordion-heading__toggle-title {
    text-decoration: none;
}

/* La griglia interna dentro il pannello accordion deve comportarsi come una normale jfb-grid */
.jfb-grid > .wp-block-accordion .wp-block-accordion-panel .jfb-grid {
    width: 100% !important;
    max-width: none !important;
    margin-bottom: 0 !important;
}