/*
 * Devis Peinture Pro — Feuille de styles
 * Toutes les classes sont préfixées .dp- pour éviter les conflits.
 * Les variables CSS héritent des couleurs Elementor si définies.
 */

/* ── Variables ────────────────────────────────────────────────────────────── */
.dp-form-wrapper {
    --dp-accent:      var(--e-global-color-accent,    #006039);
    --dp-accent-light:rgba(0, 96, 57, 0.07);
    --dp-text:        var(--e-global-color-text,      #1e1e1e);
    --dp-secondary:   var(--e-global-color-secondary, #545859);
    --dp-bg:          #ffffff;
    --dp-border:      #e2e2e2;
    --dp-radius:      12px;
    --dp-radius-sm:   8px;
    --dp-shadow:      0 2px 12px rgba(0,0,0,0.07);
    --dp-shadow-card: 0 4px 20px rgba(0,0,0,0.10);
    --dp-transition:  0.2s ease;
    --dp-font:        inherit;

    font-family: var(--dp-font);
    color:       var(--dp-text);
    max-width:   740px;
    margin:      0 auto;
    padding:     0;
    box-sizing:  border-box;
}

.dp-form-wrapper *,
.dp-form-wrapper *::before,
.dp-form-wrapper *::after {
    box-sizing: border-box;
}

/* ── Accessibilité : éléments visuellement cachés ────────────────────────── */
.dp-sr-only {
    position: absolute;
    width:    1px;
    height:   1px;
    padding:  0;
    margin:  -1px;
    overflow: hidden;
    clip:     rect(0,0,0,0);
    border:   0;
}

/* ── En-tête / barre de progression ─────────────────────────────────────── */
.dp-header {
    margin-bottom: 32px;
}

.dp-progress-track {
    height:           5px;
    background:       var(--dp-border);
    border-radius:    10px;
    overflow:         hidden;
    margin-bottom:    12px;
}

.dp-progress-fill {
    height:           100%;
    background:       var(--dp-accent);
    border-radius:    10px;
    transition:       width 0.45s cubic-bezier(0.4, 0, 0.2, 1);
    min-width:        5%;
}

.dp-progress-meta {
    display:        flex;
    justify-content:space-between;
    align-items:    center;
}

.dp-step-counter {
    font-size:   13px;
    color:       var(--dp-secondary);
    font-weight: 500;
}

.dp-step-name {
    font-size:   13px;
    font-weight: 600;
    color:       var(--dp-accent);
}

/* ── Étapes du formulaire ────────────────────────────────────────────────── */
.dp-step {
    display: none;
}

.dp-step.active {
    display:        block;
    animation-name: dpStepIn;
    animation-duration: 0.3s;
    animation-fill-mode: both;
    animation-timing-function: ease;
}

.dp-step.dp-going-back.active {
    animation-name: dpStepInBack;
}

@keyframes dpStepIn {
    from { opacity: 0; transform: translateX(24px); }
    to   { opacity: 1; transform: translateX(0); }
}

@keyframes dpStepInBack {
    from { opacity: 0; transform: translateX(-24px); }
    to   { opacity: 1; transform: translateX(0); }
}

/* ── En-tête de chaque étape ─────────────────────────────────────────────── */
.dp-step-header {
    margin-bottom: 28px;
}

.dp-step-title {
    font-size:     22px;
    font-weight:   700;
    color:         var(--dp-text);
    margin:        0 0 8px;
    line-height:   1.3;
}

.dp-step-intro {
    font-size:   15px;
    color:       var(--dp-secondary);
    margin:      0;
    line-height: 1.6;
}

/* ── Sous-titres de groupes de champs ────────────────────────────────────── */
.dp-sub-label {
    font-size:     13px;
    font-weight:   700;
    color:         var(--dp-secondary);
    text-transform:uppercase;
    letter-spacing:0.06em;
    margin:        0 0 12px;
}

.dp-sub-label--mt {
    margin-top: 28px;
}

/* ── Cartes de sélection (radio visuelles) ───────────────────────────────── */
.dp-cards {
    display: grid;
    gap:     12px;
}

.dp-cards--4 {
    grid-template-columns: repeat(2, 1fr);
}

.dp-cards--3 {
    grid-template-columns: repeat(3, 1fr);
}

.dp-card {
    display:        flex !important;
    flex-direction: column !important;
    align-items:    center !important;
    text-align:     center !important;
    padding:        20px 16px !important;
    background:     var(--dp-bg) !important;
    border:         2px solid var(--dp-border) !important;
    border-radius:  var(--dp-radius) !important;
    cursor:         pointer !important;
    transition:     border-color var(--dp-transition),
                    background   var(--dp-transition),
                    box-shadow   var(--dp-transition),
                    transform    var(--dp-transition);
    user-select:    none;
    -webkit-user-select: none;
    text-decoration: none !important;
    box-shadow:     none !important;
}

.dp-card:hover {
    border-color: var(--dp-accent) !important;
    box-shadow:   var(--dp-shadow) !important;
    transform:    translateY(-2px) !important;
    background:   var(--dp-bg) !important;
    color:        var(--dp-text) !important;
}

.dp-card.selected {
    border-color: var(--dp-accent) !important;
    background:   var(--dp-accent-light) !important;
    box-shadow:   0 0 0 1px var(--dp-accent) !important;
}

.dp-card-icon {
    font-size:     28px !important;
    margin-bottom: 10px !important;
    line-height:   1 !important;
}

.dp-card-label {
    font-size:     14px !important;
    font-weight:   700 !important;
    color:         var(--dp-text) !important;
    line-height:   1.3 !important;
    margin-bottom: 4px !important;
}

.dp-card-desc {
    font-size:   12px !important;
    color:       var(--dp-secondary) !important;
    line-height: 1.4 !important;
}

/* ── Chips de sélection (checkbox / radio visuelles) ─────────────────────── */
.dp-chips {
    display:   flex;
    flex-wrap: wrap;
    gap:       8px;
    margin-bottom: 4px;
}

.dp-chips--compact {
    gap: 6px;
}

.dp-chip {
    display:        inline-flex !important;
    align-items:    center !important;
    gap:            6px !important;
    padding:        9px 16px !important;
    background:     var(--dp-bg) !important;
    border:         2px solid var(--dp-border) !important;
    border-radius:  50px !important;
    cursor:         pointer !important;
    font-size:      14px !important;
    font-weight:    500 !important;
    color:          var(--dp-text) !important;
    transition:     border-color var(--dp-transition),
                    background   var(--dp-transition),
                    color        var(--dp-transition);
    user-select:    none;
    -webkit-user-select: none;
    text-decoration: none !important;
    line-height:    1.4 !important;
    margin:         0 !important;
}

.dp-chip:hover {
    border-color: var(--dp-accent) !important;
    color:        var(--dp-text) !important;
    background:   var(--dp-bg) !important;
}

.dp-chip.selected {
    background:   var(--dp-accent) !important;
    border-color: var(--dp-accent) !important;
    color:        #ffffff !important;
}

/* Les chips désactivées (filtrage conditionnel étape 2) */
.dp-chip.dp-hidden {
    display: none !important;
}

/* ── Groupes de champs texte ─────────────────────────────────────────────── */
.dp-field-block {
    margin-bottom: 24px;
}

.dp-field-row {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 16px;
    margin-bottom: 0;
}

.dp-field-group {
    margin-bottom: 20px;
}

.dp-field-group--small {
    max-width: 160px;
}

.dp-field-group--narrow {
    max-width: 240px;
}

.dp-label {
    display:       block;
    font-size:     14px;
    font-weight:   600;
    color:         var(--dp-text);
    margin-bottom: 7px;
}

.dp-optional {
    font-weight: 400;
    color:       var(--dp-secondary);
    font-size:   12px;
}

.dp-required {
    color:      var(--dp-accent);
    margin-left:2px;
}

.dp-input {
    display:       block !important;
    width:         100% !important;
    padding:       11px 14px !important;
    font-size:     15px !important;
    font-family:   inherit !important;
    color:         var(--dp-text) !important;
    background:    var(--dp-bg) !important;
    border:        2px solid var(--dp-border) !important;
    border-radius: var(--dp-radius-sm) !important;
    transition:    border-color var(--dp-transition), box-shadow var(--dp-transition);
    outline:       none !important;
    -webkit-appearance: none;
    box-shadow:    none !important;
    margin:        0 !important;
}

.dp-input:focus {
    border-color: var(--dp-accent) !important;
    box-shadow:   0 0 0 3px rgba(0,96,57,0.12) !important;
    outline:      none !important;
}

.dp-input.dp-field-error {
    border-color: #d32f2f !important;
    box-shadow:   0 0 0 3px rgba(211,47,47,0.10) !important;
}

/* ── Textarea ────────────────────────────────────────────────────────────── */
.dp-textarea {
    display:       block !important;
    width:         100% !important;
    padding:       13px 14px !important;
    font-size:     15px !important;
    font-family:   inherit !important;
    color:         var(--dp-text) !important;
    background:    var(--dp-bg) !important;
    border:        2px solid var(--dp-border) !important;
    border-radius: var(--dp-radius-sm) !important;
    transition:    border-color var(--dp-transition), box-shadow var(--dp-transition);
    outline:       none !important;
    resize:        vertical !important;
    min-height:    160px !important;
    line-height:   1.65 !important;
    box-shadow:    none !important;
    margin:        0 !important;
}

.dp-textarea:focus {
    border-color: var(--dp-accent) !important;
    box-shadow:   0 0 0 3px rgba(0,96,57,0.12) !important;
    outline:      none !important;
}

.dp-textarea-footer {
    display:         flex;
    justify-content: space-between;
    align-items:     flex-start;
    gap:             12px;
    margin-top:      8px;
}

.dp-char-count {
    font-size:  12px;
    color:      var(--dp-secondary);
    white-space:nowrap;
    flex-shrink:0;
}

/* ── Séparateur "ou" ────────────────────────────────────────────────────── */
.dp-field-or {
    display:     flex;
    align-items: center;
    gap:         12px;
    margin:      20px 0;
    color:       var(--dp-secondary);
    font-size:   13px;
}

.dp-field-or::before,
.dp-field-or::after {
    content:    '';
    flex:       1;
    height:     1px;
    background: var(--dp-border);
}

/* ── Indice sous les champs ──────────────────────────────────────────────── */
.dp-field-hint {
    font-size:   12px;
    color:       var(--dp-secondary);
    margin:      6px 0 0;
    line-height: 1.5;
}

/* ── RGPD ────────────────────────────────────────────────────────────────── */
.dp-rgpd {
    margin-top: 24px;
    padding:    16px;
    background: #f8f8f8;
    border-radius: var(--dp-radius-sm);
}

.dp-checkbox-label {
    display:    flex;
    align-items:flex-start;
    gap:        10px;
    font-size:  13px;
    color:      var(--dp-secondary);
    line-height:1.6;
    cursor:     pointer;
}

.dp-checkbox {
    flex-shrink: 0;
    width:       18px;
    height:      18px;
    margin-top:  2px;
    accent-color:var(--dp-accent);
    cursor:      pointer;
}

/* ── Navigation (boutons) ────────────────────────────────────────────────── */
.dp-navigation {
    display:         flex;
    justify-content: space-between;
    align-items:     center;
    margin-top:      32px;
    padding-top:     24px;
    border-top:      1px solid var(--dp-border);
    gap:             12px;
}

/* Scoper sous .dp-form-wrapper pour avoir plus de spécificité qu'Elementor,
   en plus des !important en dernier recours. */
.dp-form-wrapper .dp-btn {
    display:         inline-flex !important;
    align-items:     center !important;
    gap:             8px !important;
    padding:         13px 26px !important;
    font-size:       15px !important;
    font-family:     inherit !important;
    font-weight:     600 !important;
    border-radius:   var(--dp-radius-sm) !important;
    border:          2px solid transparent !important;
    cursor:          pointer !important;
    transition:      background    var(--dp-transition),
                     border-color  var(--dp-transition),
                     color         var(--dp-transition),
                     box-shadow    var(--dp-transition),
                     transform     var(--dp-transition);
    text-decoration: none !important;
    outline:         none !important;
    white-space:     nowrap !important;
    line-height:     1 !important;
    letter-spacing:  normal !important;
    text-transform:  none !important;
    box-shadow:      none !important;
}

.dp-form-wrapper .dp-btn:focus-visible {
    box-shadow: 0 0 0 3px rgba(0,96,57,0.25) !important;
}

.dp-form-wrapper .dp-btn--primary {
    background:   var(--dp-accent) !important;
    color:        #ffffff !important;
    border-color: var(--dp-accent) !important;
    margin-left:  auto !important;
}

.dp-form-wrapper .dp-btn--primary:hover,
.dp-form-wrapper .dp-btn--primary:focus {
    background:   #004d2e !important;
    border-color: #004d2e !important;
    color:        #ffffff !important;
    transform:    translateY(-1px) !important;
    box-shadow:   0 4px 14px rgba(0,96,57,0.30) !important;
}

.dp-form-wrapper .dp-btn--primary:active {
    transform: translateY(0) !important;
}

.dp-form-wrapper .dp-btn--ghost {
    background:   transparent !important;
    color:        var(--dp-secondary) !important;
    border-color: var(--dp-border) !important;
}

.dp-form-wrapper .dp-btn--ghost:hover,
.dp-form-wrapper .dp-btn--ghost:focus {
    border-color: var(--dp-accent) !important;
    color:        var(--dp-accent) !important;
    background:   transparent !important;
}

.dp-form-wrapper .dp-btn--submit {
    padding-left:  30px !important;
    padding-right: 30px !important;
}

.dp-form-wrapper .dp-btn:disabled {
    opacity:    0.6 !important;
    cursor:     not-allowed !important;
    transform:  none !important;
    box-shadow: none !important;
}

/* Spinner dans le bouton lors de l'envoi */
.dp-btn .dp-spinner {
    width:        18px;
    height:       18px;
    border:       2px solid rgba(255,255,255,0.4);
    border-top-color: #fff;
    border-radius:50%;
    animation:    dpSpin 0.7s linear infinite;
    flex-shrink:  0;
}

@keyframes dpSpin {
    to { transform: rotate(360deg); }
}

/* ── Masquage des boutons (priorité sur display:flex !important) ─────────── */
.dp-form-wrapper .dp-btn.dp-btn--hidden {
    display:        none !important;
    visibility:     hidden !important;
    pointer-events: none !important;
}

/* ── Révélation progressive des questions dans une étape ─────────────────── */
.dp-question {
    margin-top: 28px;
}

.dp-question:first-child {
    margin-top: 0;
}

.dp-question-label {
    font-size:     16px;
    font-weight:   600;
    color:         var(--dp-text);
    margin:        0 0 14px;
    line-height:   1.4;
}

/* Question en attente de révélation */
.dp-question--pending {
    display: none !important;
}

/* Question révélée avec animation */
.dp-question--revealed {
    animation: dpRevealQuestion 0.4s cubic-bezier(0.4, 0, 0.2, 1) both;
}

@keyframes dpRevealQuestion {
    from {
        opacity:   0;
        transform: translateY(14px);
    }
    to {
        opacity:   1;
        transform: translateY(0);
    }
}

/* Séparateur visuel entre questions révélées */
.dp-question--revealed + .dp-question--revealed,
.dp-question + .dp-question--revealed {
    padding-top:  24px;
    border-top:   1px solid var(--dp-border);
}

/* ── Messages d'erreur ───────────────────────────────────────────────────── */
.dp-error-msg {
    display:       flex;
    align-items:   flex-start;
    gap:           8px;
    margin-top:    10px;
    padding:       10px 14px;
    background:    #fff5f5;
    border:        1px solid #fca5a5;
    border-radius: var(--dp-radius-sm);
    font-size:     13px;
    color:         #b91c1c;
    line-height:   1.5;
}

.dp-global-error {
    margin-top:    20px;
    padding:       14px 18px;
    background:    #fff5f5;
    border:        1px solid #fca5a5;
    border-radius: var(--dp-radius-sm);
    font-size:     14px;
    color:         #b91c1c;
    line-height:   1.6;
}

/* ── Récapitulatif (étape 9) ─────────────────────────────────────────────── */
.dp-summary {
    display:       flex;
    flex-direction:column;
    gap:           10px;
}

.dp-summary-section {
    border:        1px solid var(--dp-border);
    border-radius: var(--dp-radius-sm);
    overflow:      hidden;
}

.dp-summary-section-head {
    display:         flex;
    justify-content: space-between;
    align-items:     center;
    padding:         12px 16px;
    background:      #fafafa;
    border-bottom:   1px solid var(--dp-border);
}

.dp-summary-section-title {
    font-size:     12px;
    font-weight:   700;
    color:         var(--dp-secondary);
    text-transform:uppercase;
    letter-spacing:0.06em;
}

.dp-summary-edit {
    font-size:      12px;
    color:          var(--dp-accent);
    cursor:         pointer;
    text-decoration:underline;
    background:     none;
    border:         none;
    padding:        0;
    font-family:    inherit;
}

.dp-summary-edit:hover {
    color: #004d2e;
}

.dp-summary-section-body {
    padding: 12px 16px;
}

.dp-summary-row {
    display:    flex;
    align-items:flex-start;
    gap:        8px;
    font-size:  14px;
    padding:    5px 0;
    border-bottom:1px solid #f4f4f4;
}

.dp-summary-row:last-child {
    border-bottom: none;
}

.dp-summary-key {
    width:    160px;
    flex-shrink:0;
    color:    var(--dp-secondary);
    font-size:13px;
}

.dp-summary-val {
    font-weight: 600;
    color:       var(--dp-text);
    line-height: 1.5;
}

.dp-summary-description {
    font-size:   14px;
    color:       var(--dp-text);
    line-height: 1.7;
    padding:     4px 0;
    font-style:  italic;
}

/* ── Écran de succès ─────────────────────────────────────────────────────── */
.dp-success-screen {
    padding:    32px 0;
    text-align: center;
}

/* Style du message de confirmation par défaut (si pas de shortcode Elementor) */
.dp-confirm-default {
    padding:    40px 24px;
    text-align: center;
}

.dp-confirm-default svg {
    margin-bottom: 20px;
}

.dp-confirm-default h3 {
    font-size:     24px;
    font-weight:   700;
    margin:        0 0 12px;
    color:         var(--dp-text);
}

.dp-confirm-default p {
    font-size:   16px;
    color:       var(--dp-secondary);
    line-height: 1.7;
    max-width:   420px;
    margin:      0 auto;
}

/* ── Responsive mobile ───────────────────────────────────────────────────── */
@media (max-width: 600px) {

    .dp-step-title {
        font-size: 19px;
    }

    .dp-cards--4 {
        grid-template-columns: 1fr 1fr;
    }

    .dp-cards--3 {
        grid-template-columns: 1fr 1fr;
    }

    .dp-field-row {
        grid-template-columns: 1fr;
    }

    .dp-field-group--small {
        max-width: 100%;
    }

    .dp-field-group--narrow {
        max-width: 100%;
    }

    .dp-btn {
        padding: 12px 18px;
        font-size: 14px;
    }

    .dp-navigation {
        flex-wrap: wrap;
    }

    .dp-btn--primary {
        margin-left: 0;
        width: 100%;
        justify-content: center;
        order: -1;
    }

    .dp-summary-key {
        width: 130px;
    }
}

@media (max-width: 400px) {

    .dp-cards--4 {
        grid-template-columns: 1fr;
    }

    .dp-cards--3 {
        grid-template-columns: 1fr;
    }
}
