/**
 * Styles de base pour le bloc de personnalisation sur la page produit.
 * Conçu pour s'adapter aux thèmes WordPress/WooCommerce courants.
 * Les styles sont volontairement légers pour hériter du thème actif.
 */

/* ==========================================================================
   Conteneur principal
   ========================================================================== */

.ypc-customizations {
    margin: 1.5rem 0;
    padding: 1.25rem 1.5rem;
    border: 1px solid #e0e0e0;
    border-radius: 8px;
    background-color: #fafafa;
    box-sizing: border-box;
    max-width: 100%;
    overflow: hidden;
    word-wrap: break-word;
    overflow-wrap: break-word;
}

.ypc-customizations h4 {
    margin-top: 0;
    margin-bottom: 0.5rem;
    font-size: 1.15rem;
    font-weight: 600;
    color: inherit;
}

.ypc-customizations__intro {
    margin: 0 0 1rem;
    font-size: 0.9rem;
    color: #666;
}

/* ==========================================================================
   Groupe de personnalisation
   ========================================================================== */

.ypc-customizations__group {
    margin-bottom: 1rem;
}

.ypc-customizations__group:last-child {
    margin-bottom: 0;
}

.ypc-customizations__group-title {
    font-size: 1rem;
    font-weight: 600;
    margin: 0 0 0.75rem;
    padding-bottom: 0.5rem;
    border-bottom: 1px solid #e0e0e0;
    color: inherit;
}

.ypc-customizations__group-type {
    font-weight: 400;
    color: #888;
}

/* ==========================================================================
   Liste des éléments
   ========================================================================== */

.ypc-customizations__list {
    list-style: none;
    margin: 0;
    padding: 0;
}

.ypc-customizations__item {
    display: block;
    padding: 0.75rem 0;
    border-top: 1px solid #eee;
}

.ypc-customizations__item:first-child {
    border-top: none;
    padding-top: 0;
}

.ypc-customizations__field {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
    max-width: 100%;
    box-sizing: border-box;
    overflow: hidden;
    min-width: 0;
}

.ypc-customizations__label {
    display: block;
    font-size: 0.95rem;
    font-weight: 600;
    color: inherit;
}

/* Indicateur de champ obligatoire */
.ypc-required {
    color: #c00;
    font-weight: 700;
}

/* ==========================================================================
   Champs de formulaire
   ========================================================================== */

/* Variables CSS pour la standardisation des couleurs (hérite du thème) */
.ypc-customizations {
    --ypc-input-bg: #fff;
    --ypc-input-color: inherit;
    --ypc-input-border: #ddd;
    --ypc-input-border-focus: #0073aa;
    --ypc-input-placeholder: #999;
    --ypc-input-radius: 4px;
    --ypc-input-padding: 10px 14px;
}

/* Style de base unifié pour TOUS les inputs */
.ypc-input-text,
.ypc-input-float,
.ypc-input-date,
.ypc-input-time,
.ypc-select {
    width: 100%;
    max-width: 320px;
    padding: var(--ypc-input-padding);
    border: 1px solid var(--ypc-input-border);
    border-radius: var(--ypc-input-radius);
    font-size: inherit;
    font-family: inherit;
    line-height: 1.4;
    background-color: var(--ypc-input-bg);
    color: var(--ypc-input-color);
    transition: border-color 0.2s ease, box-shadow 0.2s ease;
    box-sizing: border-box;
    -webkit-appearance: none;
    -moz-appearance: none;
    appearance: none;
}

/* Spécifique au champ float */
.ypc-input-float {
    max-width: 200px;
    min-width: 120px;
    -moz-appearance: textfield;
}

/* Masquer les spinners sur webkit (Chrome, Safari, Edge) */
.ypc-input-float::-webkit-outer-spin-button,
.ypc-input-float::-webkit-inner-spin-button {
    -webkit-appearance: none;
    margin: 0;
}

/* Uniformiser l'apparence des inputs date et time sur tous les navigateurs */
.ypc-input-date::-webkit-calendar-picker-indicator,
.ypc-input-time::-webkit-calendar-picker-indicator {
    cursor: pointer;
    opacity: 0.6;
    transition: opacity 0.2s ease;
}

.ypc-input-date::-webkit-calendar-picker-indicator:hover,
.ypc-input-time::-webkit-calendar-picker-indicator:hover {
    opacity: 1;
}

/* États focus uniformes */
.ypc-input-text:focus,
.ypc-input-float:focus,
.ypc-input-date:focus,
.ypc-input-time:focus,
.ypc-select:focus {
    outline: none;
    border-color: var(--ypc-input-border-focus);
    box-shadow: 0 0 0 2px rgba(0, 115, 170, 0.1);
}

/* Placeholders uniformes */
.ypc-input-text::placeholder,
.ypc-input-float::placeholder,
.ypc-input-date::placeholder,
.ypc-input-time::placeholder {
    color: var(--ypc-input-placeholder);
}

/* Conteneur pour champ float avec unité */
.ypc-float-wrapper {
    display: flex;
    align-items: center;
    gap: 10px;
    flex-wrap: nowrap;
}

/* Champ float avec unité */
.ypc-customizations__field .ypc-unit {
    display: inline-block;
    margin-left: 8px;
    color: #666;
    font-size: 0.9em;
    white-space: nowrap;
    flex-shrink: 0;
}

/* Aide sous les champs */
.ypc-customizations__help {
    display: block;
    font-size: 0.8rem;
    color: #888;
    margin-top: 0.25rem;
}

/* ==========================================================================
   Boutons radio avec images
   ========================================================================== */

.ypc-radio-group {
    display: flex;
    flex-direction: column;
    gap: 8px;
    max-width: 100%;
    overflow: hidden;
}

.ypc-radio-option {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 10px 14px;
    border: 1px solid #e0e0e0;
    border-radius: 6px;
    background: #fff;
    cursor: pointer;
    transition: border-color 0.2s ease, background-color 0.2s ease;
    max-width: 100%;
    box-sizing: border-box;
    overflow: hidden;
}

.ypc-radio-option:hover {
    border-color: #ccc;
    background-color: #f9f9f9;
}

.ypc-radio-option input[type="radio"] {
    margin: 0;
    flex-shrink: 0;
}

.ypc-radio-option input[type="radio"]:checked + .ypc-radio-image + .ypc-radio-label,
.ypc-radio-option input[type="radio"]:checked + .ypc-radio-label {
    font-weight: 600;
}

.ypc-radio-option:has(input[type="radio"]:checked) {
    border-color: #0073aa;
    background-color: #f0f7fc;
}

.ypc-radio-image {
    width: 48px;
    height: 48px;
    border-radius: 4px;
    object-fit: cover;
    flex-shrink: 0;
}

.ypc-radio-label {
    font-size: 0.95rem;
    color: inherit;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    min-width: 0;
    flex: 1;
}

/* ==========================================================================
   Liste déroulante
   ========================================================================== */

.ypc-select {
    appearance: none;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%23666' d='M6 8L1 3h10z'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: right 12px center;
    padding-right: 36px;
    cursor: pointer;
}

/* ==========================================================================
   États vides / erreurs
   ========================================================================== */

.ypc-empty {
    text-align: center;
    padding: 2rem;
    color: #888;
    font-style: italic;
}

/* ==========================================================================
   Système de layout en colonnes
   ========================================================================== */

/* Layout 2 colonnes */
.ypc-customizations__list--2cols {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 1rem;
    max-width: 100%;
    overflow: hidden;
}

.ypc-customizations__list--2cols .ypc-customizations__item {
    border-top: none;
    padding: 0;
    margin: 0;
    min-width: 0;
    overflow: hidden;
}

/* Layout 3 colonnes */
.ypc-customizations__list--3cols {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 1rem;
    max-width: 100%;
    overflow: hidden;
}

.ypc-customizations__list--3cols .ypc-customizations__item {
    border-top: none;
    padding: 0;
    margin: 0;
    min-width: 0;
    overflow: hidden;
}

/* Élément pleine largeur (span toutes les colonnes) */
.ypc-customizations__item--full {
    grid-column: 1 / -1;
    min-width: 0;
    overflow: hidden;
}

/* Élément demi-largeur */
.ypc-customizations__item--half {
    grid-column: span 1;
}

/* Élément tiers de largeur (pour layout 3 colonnes) */
.ypc-customizations__item--third {
    grid-column: span 1;
}

/* ==========================================================================
   Responsive
   ========================================================================== */

/* Tablette : gestion des layouts */
@media (max-width: 768px) and (min-width: 601px) {
    /* Par défaut : 3 colonnes devient 2 colonnes sur tablette */
    .ypc-customizations__list--3cols {
        grid-template-columns: repeat(2, 1fr);
    }

    /* Si layout tablette spécifié comme 1 colonne */
    .ypc-customizations__list[data-layout-tablet="1col"] {
        grid-template-columns: 1fr !important;
    }
    
    .ypc-customizations__list[data-layout-tablet="1col"] .ypc-customizations__item--half,
    .ypc-customizations__list[data-layout-tablet="1col"] .ypc-customizations__item--third,
    .ypc-customizations__list[data-layout-tablet="1col"] .ypc-customizations__item--full {
        grid-column: 1;
    }
    
    /* Si layout tablette spécifié comme 2 colonnes */
    .ypc-customizations__list[data-layout-tablet="2cols"] {
        display: grid;
        grid-template-columns: repeat(2, 1fr);
        gap: 1rem;
    }
}

/* Mobile : toujours 1 colonne */
@media (max-width: 600px) {
    .ypc-customizations {
        padding: 1rem;
        margin: 1rem 0;
        overflow-x: hidden;
    }

    /* Forcer 1 colonne sur mobile */
    .ypc-customizations__list--2cols,
    .ypc-customizations__list--3cols {
        grid-template-columns: 1fr;
    }

    .ypc-customizations__item--full,
    .ypc-customizations__item--half,
    .ypc-customizations__item--third {
        grid-column: 1;
    }

    .ypc-customizations__list {
        max-width: 100%;
    }

    .ypc-customizations__item {
        max-width: 100%;
        overflow: hidden;
    }

    .ypc-customizations__field {
        max-width: 100%;
        overflow: hidden;
    }

    .ypc-input-text,
    .ypc-input-float,
    .ypc-input-date,
    .ypc-input-time,
    .ypc-select {
        max-width: 100%;
        width: 100%;
    }

    .ypc-input-float {
        min-width: 80px;
        flex: 1;
    }

    .ypc-float-wrapper {
        flex-wrap: wrap;
        max-width: 100%;
    }

    .ypc-radio-option {
        padding: 8px 10px;
    }

    .ypc-radio-image {
        width: 40px;
        height: 40px;
    }

    /* Aide sous les champs - responsive */
    .ypc-customizations__help {
        word-wrap: break-word;
        overflow-wrap: break-word;
    }
}
