/**
 * Envíos CSS
 * Estilos para las opciones de entrega en el carrito
 *
 * @package ClimaZona
 * @version 1.0.0
 */

/* ========================================
   VARIABLES CSS
   ======================================== */
:root {
    /* Colores de interfaz */
    --envios-bg: #fff;
    --envios-bg-destacado: #f8fafc;
    --envios-text: var(--theme-text, #334155);
    --envios-text-light: var(--theme-text-light, #64748b);
    --envios-border: var(--border-color, #e4e4e7);
    --envios-border-light: var(--border-color-light, #f4f4f5);

    /* Colores de estado — derivados de tokens globales */
    --envios-success: var(--color-success, #22c55e);
    --envios-success-light: var(--color-success-light, #dcfce7);
    --envios-success-text: var(--color-success-foreground, #166534);
    --envios-primary: var(--theme-primary, #2563eb);
    --envios-primary-light: var(--theme-primary-light, #dbeafe);

    /* Espaciado */
    --envios-spacing-xs: 0.25rem;
    --envios-spacing-sm: 0.5rem;
    --envios-spacing-md: 0.75rem;
    --envios-spacing-lg: 1rem;

    /* Transiciones */
    --envios-transition: all 0.2s ease;

    /* Checkbox personalizado */
    --envios-checkbox-size: 18px;
    --envios-checkbox-border: 2px;
    --envios-checkbox-radius: 4px;
}

/* ========================================
   CONTENEDOR PRINCIPAL
   ======================================== */
.envios-servicios {
    margin-top: var(--envios-spacing-md);
    background-color: var(--envios-bg);
    border: 1px solid var(--envios-border);
    border-radius: 8px;
    overflow: hidden;
}

/* ========================================
   TITULO
   ======================================== */
.envios-servicios__titulo {
    display: flex;
    align-items: center;
    gap: var(--envios-spacing-sm);
    margin: 0;
    padding: var(--envios-spacing-sm) var(--envios-spacing-md);
    background-color: #fff;
    border-bottom: 1px solid var(--envios-border);
    font-size: 0.8125rem;
    font-weight: 600;
    color: var(--envios-text);
    text-transform: uppercase;
    letter-spacing: 0.025em;
}

.envios-servicios__titulo::before {
    content: '';
    display: inline-block;
    width: 16px;
    height: 16px;
    background-image: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22%23000000%22%20stroke-width%3D%221.5%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20class%3D%22icon%20icon-tabler%20icons-tabler-outline%20icon-tabler-trolley%22%3E%3Cpath%20stroke%3D%22none%22%20d%3D%22M0%200h24v24H0z%22%20fill%3D%22none%22%2F%3E%3Cpath%20d%3D%22M9%2019a2%202%200%201%200%204%200a2%202%200%201%200%20-4%200%22%20%2F%3E%3Cpath%20d%3D%22M6%2016l3%202%22%20%2F%3E%3Cpath%20d%3D%22M12%2017l8%20-12%22%20%2F%3E%3Cpath%20d%3D%22M17%2010l2%201%22%20%2F%3E%3Cpath%20d%3D%22M9.592%204.695l3.306%202.104a1.3%201.3%200%200%201%20.396%201.8l-3.094%204.811a1.3%201.3%200%200%201%20-1.792%20.394l-3.306%20-2.104a1.3%201.3%200%200%201%20-.396%20-1.8l3.094%20-4.81a1.3%201.3%200%200%201%201.792%20-.394%22%20%2F%3E%3C%2Fsvg%3E");
    background-size: contain;
    background-repeat: no-repeat;
    flex-shrink: 0;
}

/* ========================================
   LISTA DE OPCIONES
   ======================================== */
.envios-servicios__lista {
    list-style: none;
    margin: 0;
    padding: 0;
}

/* ========================================
   ITEM DE OPCION
   ======================================== */
.envios-servicios__item {
    border-bottom: 1px solid var(--envios-border-light);
    margin-bottom: 0px;
}

.envios-servicios__item:last-child {
    border-bottom: none;
}

/* Item destacado (pie de calle) */
.envios-servicios__item--destacado {
    background-color: var(--envios-bg-destacado);
}

/* Item secundario (recogida, instalación) */
.envios-servicios__item--secundario {
    background-color: var(--envios-bg);
}

.envios-servicios__item--secundario .envios-servicios__label {
    padding-left: calc(var(--envios-spacing-lg) + var(--envios-spacing-md));
    flex-wrap: nowrap;
}

/* ========================================
   LABEL Y CHECKBOX PERSONALIZADO
   ======================================== */
.envios-servicios__label {
    display: flex;
    align-items: center;
    gap: var(--envios-spacing-sm);
    padding: var(--envios-spacing-md) var(--envios-spacing-lg);
    cursor: pointer;
    transition: var(--envios-transition);
    position: relative;
}

/* Ocultar checkbox nativo */
.envios-servicios__checkbox {
    position: absolute;
    opacity: 0;
    width: 0;
    height: 0;
    pointer-events: none;
}

/* Checkmark personalizado */
.envios-servicios__checkmark {
    display: flex;
    align-items: center;
    justify-content: center;
    width: var(--envios-checkbox-size);
    height: var(--envios-checkbox-size);
    border: var(--envios-checkbox-border) solid var(--envios-border);
    border-radius: var(--envios-checkbox-radius);
    background-color: var(--envios-bg);
    flex-shrink: 0;
    transition: var(--envios-transition);
}

/* Checkmark icon */
.envios-servicios__checkmark::after {
    content: '';
    display: none;
    width: 5px;
    height: 9px;
    border: solid #fff;
    border-width: 0 2px 2px 0;
    transform: rotate(45deg);
    margin-top: -2px;
}

/* Estados del checkbox */
.envios-servicios__checkbox:checked + .envios-servicios__checkmark {
    background-color: var(--envios-primary);
    border-color: var(--envios-primary);
}

.envios-servicios__checkbox:checked + .envios-servicios__checkmark::after {
    display: block;
}

.envios-servicios__checkbox:focus + .envios-servicios__checkmark {
    box-shadow: 0 0 0 3px var(--envios-primary-light);
}

.envios-servicios__checkbox:disabled + .envios-servicios__checkmark {
    background-color: var(--envios-border-light);
    border-color: var(--envios-border);
    cursor: not-allowed;
}

.envios-servicios__checkbox:disabled ~ .envios-servicios__texto,
.envios-servicios__checkbox:disabled ~ .envios-servicios__badge,
.envios-servicios__checkbox:disabled ~ .envios-servicios__precio {
    opacity: 0.5;
}

.envios-servicios__item:has(.envios-servicios__checkbox:disabled) .envios-servicios__label {
    cursor: not-allowed;
}

.envios-servicios__item:has(.envios-servicios__checkbox:disabled) .envios-servicios__label:hover {
    background-color: transparent;
}

/* ========================================
   TEXTO DE LA OPCION
   ======================================== */
.envios-servicios__texto {
    display: flex;
    flex-direction: column;
    gap: 2px;
    flex: 1;
    font-size: 0.875rem;
    font-weight: 500;
    color: var(--envios-text);
    line-height: 1.4;
    min-width: 0;
}

/* ========================================
   PREVISION DE ENTREGA (dentro del texto)
   ======================================== */
.envios-servicios__prevision {
    display: block;
    font-size: 0.75rem;
    font-weight: 400;
    color: var(--envios-text-light);
}

/* ========================================
   INFO (Label informativo sin interacción)
   ======================================== */
.envios-servicios__info {
    display: flex;
    align-items: center;
    gap: var(--envios-spacing-md);
    padding: var(--envios-spacing-md) var(--envios-spacing-lg);
    background-color: var(--envios-success-light);
}

.envios-servicios__info-icon {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 32px;
    height: 32px;
    background-color: var(--envios-success);
    border-radius: 50%;
    flex-shrink: 0;
}

.envios-servicios__info-icon::before {
    content: '';
    display: block;
    width: 18px;
    height: 18px;
    background-image: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22%23ffffff%22%20stroke-width%3D%221.5%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20class%3D%22icon%20icon-tabler%20icons-tabler-outline%20icon-tabler-package%22%3E%3Cpath%20stroke%3D%22none%22%20d%3D%22M0%200h24v24H0z%22%20fill%3D%22none%22%2F%3E%3Cpath%20d%3D%22M12%203l8%204.5l0%209l-8%204.5l-8%20-4.5l0%20-9l8%20-4.5%22%20%2F%3E%3Cpath%20d%3D%22M12%2012l8%20-4.5%22%20%2F%3E%3Cpath%20d%3D%22M12%2012l0%209%22%20%2F%3E%3Cpath%20d%3D%22M12%2012l-8%20-4.5%22%20%2F%3E%3Cpath%20d%3D%22M16%205.25l-8%204.5%22%20%2F%3E%3C%2Fsvg%3E");
    background-size: contain;
    background-repeat: no-repeat;
}

.envios-servicios__info-content {
    display: flex;
    flex-direction: column;
    gap: 2px;
    flex: 1;
}

.envios-servicios__info-titulo {
    font-size: 0.875rem;
    font-weight: 600;
    color: var(--envios-success-text);
}

.envios-servicios__info--stock-parcial {
    background-color: var(--theme-primary-light, #dbeafe);
}
.envios-servicios__info--stock-parcial .envios-servicios__info-titulo {
    color: var(--theme-primary, #2563eb);
}

.envios-servicios__info-envio {
    font-size: 0.75rem;
    font-weight: 400;
    color: var(--envios-text-light);
}

.envios-servicios__info-link {
    display: inline-block;
    margin-top: var(--envios-spacing-xs);
    font-size: 0.75rem;
    font-weight: 500;
    color: var(--envios-primary);
    transition: var(--envios-transition);
}

.envios-servicios__info-link:hover {
    color: var(--envios-text);
    text-decoration: underline;
}

.envios-servicios__label:has(.envios-servicios__link-cp),
.envios-servicios__label:has(.envios-servicios__aviso-cp){
  flex-wrap: wrap;
}

/* Force wrap for the inline CP link / notice when present inside a label.
   Specificity (0,3,0) wins over the bare `.envios-servicios__link-cp`
   (0,1,0) and `.envios-servicios__aviso-cp` (0,1,0) declarations below. */
.envios-servicios__label:has(.envios-servicios__link-cp) .envios-servicios__link-cp,
.envios-servicios__label:has(.envios-servicios__aviso-cp) .envios-servicios__aviso-cp {
    flex: 0 0 100%;
    order: 99;
    white-space: normal;
    overflow-wrap: anywhere;
    max-width: 100%;
    margin-left: calc(var(--envios-checkbox-size) + var(--envios-spacing-sm));
}

td[data-title="Calcular Envío"],
.woocommerce-shipping-totals{
  scroll-margin-top: 45vh;
  font-size: 0.875rem;
}

/* ========================================
   INFO PAQUETERIA (mismo estilo que pie de calle - verde)
   ======================================== */
.envios-servicios__info--paqueteria {
    background-color: var(--envios-success-light);
}

.envios-servicios__info--paqueteria .envios-servicios__info-titulo {
    color: var(--envios-success-text);
}

.envios-servicios__info-icon--paqueteria {
    background-color: var(--envios-success);
}

.envios-servicios__info-icon--paqueteria::before {
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke='%23fff' stroke-width='2'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' d='M20 7l-8-4-8 4m16 0l-8 4m8-4v10l-8 4m0-10L4 7m8 4v10M4 7v10l8 4'/%3E%3C/svg%3E");
}

/* ========================================
   VALIDACIÓN DE CÓDIGO POSTAL
   ======================================== */

/* Link para introducir CP */
.envios-servicios__link-cp {
    font-size: 0.75rem;
    font-weight: 500;
    color: var(--envios-primary);
    white-space: nowrap;
    transition: var(--envios-transition);
}

.envios-servicios__link-cp:hover {
    color: var(--envios-text);
    text-decoration: underline;
}

/* Aviso de CP no disponible */
.envios-servicios__aviso-cp {
    font-size: 0.6875rem;
    font-weight: 500;
    color: var(--color-error, #ef4444);
    white-space: nowrap;
}

/* Item no disponible (CP inválido o vacío) */
/* Carrito: ocultar botón "Actualizar carrito" (envios gestiona el flow) */
.woocommerce button[name="update_cart"],
.woocommerce input[name="update_cart"] {
    display: none;
}

.envios-servicios__item--no-disponible .envios-servicios__label {
    cursor: not-allowed;
}

.envios-servicios__item--no-disponible .envios-servicios__label:hover {
    background-color: transparent;
}

.envios-servicios__item--no-disponible .envios-servicios__texto,
.envios-servicios__item--no-disponible .envios-servicios__prevision {
    opacity: 0.6;
}

/* Ocultar items secundarios cuando CP no disponible o vacío */
.envios-servicios__item--secundario.envios-servicios__item--no-disponible {
    display: none;
}

/* ========================================
   INFO RESERVA (sin stock)
   ======================================== */
.envios-servicios__info--reserva {
    background-color: #fff;
}

.envios-servicios__info--reserva .envios-servicios__info-titulo {
    color: var(--color-warning-foreground, #92400e);
}

.envios-servicios__info-icon--reserva {
    background-color: var(--color-warning, #f59e0b);
}

.envios-servicios__info-icon--reserva::before {
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke='%23fff' stroke-width='2'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' d='M12 8v4l3 3m6-3a9 9 0 11-18 0 9 9 0 0118 0z'/%3E%3C/svg%3E");
}

/* ========================================
   STOCK LABEL
   ======================================== */
.envios-servicios__stock {
    font-size: 0.75rem;
    font-weight: 800;
    color: var(--envios-success);
}

/* ========================================
   BADGES (Gratuito, Gratis, etc.)
   ======================================== */
.envios-servicios__badge {
    display: inline-flex;
    align-items: center;
    padding: var(--envios-spacing-xs) var(--envios-spacing-sm);
    font-size: 0.6875rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    border-radius: var(--border-radius-sm, 4px);
    white-space: nowrap;
    margin-left: auto;
}

.envios-servicios__badge--gratis {
    background-color: var(--envios-success-light);
    color: var(--envios-success-text);
}

/* ========================================
   PRECIO
   ======================================== */
.envios-servicios__precio {
    font-size: 0.875rem;
    font-weight: 600;
    color: var(--envios-text);
    margin-left: auto;
    white-space: nowrap;
}

.envios-servicios__precio small {
    font-size: 0.75rem;
    font-weight: 400;
    color: var(--envios-text-light);
}

/* ========================================
   ESTADOS VISUALES
   ======================================== */

/* Item seleccionado */
.envios-servicios__item:has(.envios-servicios__checkbox:checked) {
    background-color: var(--envios-primary-light);
}

.envios-servicios__item--destacado:has(.envios-servicios__checkbox:checked) {
    background-color: var(--envios-success-light);
}

.envios-servicios__item--destacado:has(.envios-servicios__checkbox:checked) .envios-servicios__checkmark {
    background-color: var(--envios-success);
    border-color: var(--envios-success);
}

/* ========================================
   RESPONSIVE
   ======================================== */
@media (max-width: 575px) {
    .envios-servicios__label {
        padding: var(--envios-spacing-sm) var(--envios-spacing-md);
        flex-wrap: wrap;
    }

    .envios-servicios__texto {
        font-size: 0.8125rem;
    }

    .envios-servicios__prevision {
        font-size: 0.6875rem;
    }

    .envios-servicios__badge {
        font-size: 0.625rem;
    }

    .envios-servicios__precio {
        font-size: 0.8125rem;
    }

    .envios-servicios__item--secundario .envios-servicios__label {
        padding-left: var(--envios-spacing-lg);
    }

    /* Info responsive */
    .envios-servicios__info {
        padding: var(--envios-spacing-sm) var(--envios-spacing-md);
        gap: var(--envios-spacing-sm);
    }

    .envios-servicios__info-icon {
        width: 28px;
        height: 28px;
    }

    .envios-servicios__info-icon::before {
        width: 14px;
        height: 14px;
    }

    .envios-servicios__info-titulo {
        font-size: 0.8125rem;
    }

    .envios-servicios__info-envio {
        font-size: 0.6875rem;
    }

    .envios-servicios__info-link {
        font-size: 0.6875rem;
    }

    .envios-servicios__stock {
        font-size: 0.6875rem;
    }
}

/* ========================================
   ANIMACIONES
   ======================================== */
@keyframes envios-pulse {
    0%, 100% {
        box-shadow: 0 0 0 0 rgba(34, 197, 94, 0.4);
    }
    50% {
        box-shadow: 0 0 0 6px rgba(34, 197, 94, 0);
    }
}

.envios-servicios__badge--gratis {
    animation: envios-pulse 2s infinite;
}

/* ========================================
   ACCESIBILIDAD
   ======================================== */
.envios-servicios__checkbox:focus-visible + .envios-servicios__checkmark {
    outline: 2px solid var(--envios-primary);
    outline-offset: 2px;
}

/* Reducir movimiento para usuarios que lo prefieren */
@media (prefers-reduced-motion: reduce) {
    .envios-servicios__badge--gratis {
        animation: none;
    }

    .envios-servicios__label,
    .envios-servicios__checkmark {
        transition: none;
    }
}

/* ========================================
   PRINT
   ======================================== */
@media print {
    .envios-servicios {
        border: 1px solid #000;
    }

    .envios-servicios__badge--gratis {
        animation: none;
        border: 1px solid currentColor;
    }
}