/**
 * Pixfeed Advanced Fields Validator - Styles
 * Version sécurisée - Styles limités aux formulaires d'adresse uniquement
 * Location: /modules/advancedfieldsvalidator/views/css/afv.css
 */

/* =================================================================
   IMPORTANT: Tous les sélecteurs sont scopés aux formulaires
   pour éviter d'affecter le header ou d'autres parties du site
   ================================================================= */

/* Indicateurs de validation TVA - Limités aux formulaires */
form .afv-indicator,
.address-form .afv-indicator,
.checkout-form .afv-indicator {
    font-size: 12px;
    margin-top: 5px;
    padding: 4px 10px;
    border-radius: 4px;
    font-weight: 500;
    display: inline-block;
    transition: all 0.3s ease;
}

form .afv-indicator.success,
.address-form .afv-indicator.success { 
    background: #d4edda; 
    color: #155724; 
    border: 1px solid #c3e6cb;
}

form .afv-indicator.error,
.address-form .afv-indicator.error { 
    background: #f8d7da; 
    color: #721c24; 
    border: 1px solid #f5c6cb;
}

form .afv-indicator.warning,
.address-form .afv-indicator.warning { 
    background: #fff3cd; 
    color: #856404; 
    border: 1px solid #ffeaa7;
}

form .afv-indicator.checking,
.address-form .afv-indicator.checking { 
    background: #e2e3e5; 
    color: #383d41; 
    border: 1px solid #d1ecf1;
    position: relative;
    padding-left: 25px;
}

form .afv-indicator.checking::before,
.address-form .afv-indicator.checking::before {
    content: "";
    position: absolute;
    left: 8px;
    top: 50%;
    transform: translateY(-50%);
    width: 12px;
    height: 12px;
    border: 2px solid #383d41;
    border-radius: 50%;
    border-top-color: transparent;
    animation: afv-spin 0.8s linear infinite;
}

@keyframes afv-spin {
    to { transform: translateY(-50%) rotate(360deg); }
}

/* Badge type client - Limité aux formulaires */
form .afv-customer-badge,
.address-form .afv-customer-badge,
.checkout-form .afv-customer-badge {
    padding: 10px 20px;
    border-radius: 8px;
    margin: 15px 0;
    font-weight: bold;
    text-align: center;
    font-size: 14px;
    transition: all 0.3s ease;
    box-shadow: 0 2px 4px rgba(0,0,0,0.1);
}

form .afv-customer-badge.b2b,
.address-form .afv-customer-badge.b2b { 
    background: #e3f2fd; 
    color: #1565c0; 
    border: 2px solid #1976d2; 
}

form .afv-customer-badge.b2c,
.address-form .afv-customer-badge.b2c { 
    background: #f3e5f5; 
    color: #6a1b9a; 
    border: 2px solid #7b1fa2; 
}

/* Sélecteur de communes - Limité au container parent */
.afv-city-suggestions {
    position: absolute;
    background: white;
    border: 1px solid #ddd;
    border-radius: 4px;
    box-shadow: 0 2px 8px rgba(0,0,0,0.1);
    max-height: 200px;
    overflow-y: auto;
    z-index: 1000;
    width: 100%;
    margin-top: 2px;
}

.afv-city-suggestions .afv-city-option {
    padding: 8px 12px;
    cursor: pointer;
    transition: background-color 0.2s;
}

.afv-city-suggestions .afv-city-option:hover {
    background-color: #f0f0f0;
}

.afv-city-suggestions .afv-city-option.selected {
    background-color: #e3f2fd;
}

/* Masquer les champs - TRÈS IMPORTANT: limité aux formulaires */
form .afv-hidden-field,
form .afv-hidden-field + label,
form .form-group.afv-hidden-field,
.address-form .afv-hidden-field,
.checkout-form .afv-hidden-field {
    display: none !important;
}

/* Styles pour champs améliorés - Limités aux formulaires */
form input[name="vat_number"]:not(:placeholder-shown),
.address-form input[name="vat_number"]:not(:placeholder-shown) {
    text-transform: uppercase;
}

form input.afv-required,
form input[required].afv-processed,
.address-form input.afv-required {
    border-left: 3px solid #28a745;
}

/* Messages d'aide - Limités aux formulaires */
form .afv-help-text,
.address-form .afv-help-text,
.checkout-form .afv-help-text {
    font-size: 12px;
    color: #6c757d;
    margin-top: 3px;
    font-style: italic;
    display: block;
}

/* Étoile obligatoire - Limitée aux formulaires */
form label sup.required,
.address-form label sup.required {
    color: #dc3545;
    font-weight: normal;
    margin-left: 2px;
}

/* Animation fade in */
@keyframes afvFadeIn {
    from { 
        opacity: 0; 
        transform: translateY(-10px); 
    }
    to { 
        opacity: 1; 
        transform: translateY(0); 
    }
}

form .afv-fade-in,
.address-form .afv-fade-in {
    animation: afvFadeIn 0.3s ease;
}

/* Styles spécifiques PrestaShop 8 */
form[name="address"] .form-group.afv-hidden-field,
form[action*="address"] .form-group.afv-hidden-field,
.js-address-form .form-group.afv-hidden-field {
    display: none !important;
}

/* Amélioration visuelle des champs obligatoires - Limité aux formulaires */
form .form-group:has(input.afv-required) label::after,
.address-form .form-group:has(input.afv-required) label::after {
    content: " *";
    color: #dc3545;
}

/* Fix pour les champs phone avec indicateur pays */
form .form-group:has(.iti__flag-container) input.afv-required,
.address-form .form-group:has(.iti__flag-container) input.afv-required {
    padding-left: 52px !important; /* Espace pour le drapeau */
    border-left: 3px solid #28a745;
}

/* Responsive - Limité aux éléments AFV */
@media (max-width: 768px) {
    form .afv-customer-badge,
    .address-form .afv-customer-badge {
        font-size: 13px;
        padding: 8px 15px;
    }
    
    form .afv-indicator,
    .address-form .afv-indicator {
        font-size: 11px;
        padding: 3px 8px;
    }
    
    .afv-city-suggestions {
        max-height: 150px;
    }
}

/* Styles pour le mode debug (si activé) */
body.afv-debug form {
    position: relative;
}

body.afv-debug form::before {
    content: "AFV Active";
    position: absolute;
    top: -20px;
    right: 0;
    background: #007bff;
    color: white;
    font-size: 10px;
    padding: 2px 6px;
    border-radius: 3px;
    z-index: 9999;
}

/* Fix pour éviter les conflits avec d'autres modules */
form .afv-indicator:not(.checking):not(.success):not(.error):not(.warning) {
    display: none !important;
}

/* S'assurer que les styles AFV ont la priorité dans les formulaires */
form[data-afv-processed="true"] input[name="alias"],
form[data-afv-processed="true"] .form-group:has(input[name="alias"]) {
    display: none !important;
}

/* Protection supplémentaire contre les effets de bord */
:not(form) .afv-indicator,
:not(form) .afv-customer-badge,
:not(form) .afv-help-text {
    /* Ces classes ne doivent pas exister en dehors des formulaires */
    display: none !important;
}