/**
 * Módulo okmenucategorias — barra "Todas las categorías" + mega-menú.
 *
 * Mobile-first: por debajo de 992px el árbol (Padre/Hija/Nieta) se muestra en
 * capas a pantalla completa que se deslizan hacia el lado (como el menú
 * principal); a partir de 992px se muestra como mega-menú (sidebar de padres
 * + columnas de hijas/nietas).
 */
/*
 * Se renderiza dentro de la fila (Bootstrap, ya en flex) del hook displayTop,
 * junto a la navegación principal (ps_mainmenu). La clase "col-auto" del
 * contenedor (ver .tpl) hace que ocupe sólo lo que necesita, sin estirarse.
 */
.okmenucat {
    position: relative;
    display: flex;
    align-items: center;
}
body.okmenucat-lock-scroll {
    overflow: hidden;
}
.okmenucat__bar {
    display: flex;
    align-items: center;
}

/* Mobile (por debajo de 992px): como si fuese texto, sin fondo ni padding lateral. */
.okmenucat__toggle {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    border: none;
    background-color: transparent;
    color: #110f0e;
    font-size: 14px;
    font-weight: 600;
    letter-spacing: 0.07px;
    line-height: 1.4;
    padding: 8px 0;
    border-radius: 0;
    cursor: pointer;
    white-space: nowrap;
    transition: background-color 0.15s ease, color 0.15s ease;
}
.okmenucat__toggle-icon {
    flex-shrink: 0;
    width: 16px;
    height: 16px;
}
.okmenucat.is-open .okmenucat__toggle {
    background-color: transparent;
    color: #110f0e;
}

/* Fondo oscurecido detrás del panel (mega-menú y off-canvas) */
.okmenucat__overlay {
    display: none;
    position: fixed;
    inset: 0;
    background-color: rgba(17, 15, 14, 0.4);
    z-index: 1040;
}
.okmenucat.is-open .okmenucat__overlay {
    display: block;
}

/* ---------------------------------------------------------------------
 * Off-canvas mobile (< 992px): capas a pantalla completa, deslizando hacia
 * el lado (igual que el menú principal)
 * ------------------------------------------------------------------ */
.okmenucat__offcanvas {
    position: fixed;
    top: 0;
    left: 0;
    bottom: 0;
    width: 100%;
    max-width: 360px;
    background-color: #ffffff;
    z-index: 1050;
    display: flex;
    flex-direction: column;
    transform: translateX(-100%);
    transition: transform 0.25s ease;
    overflow: hidden;
}
.okmenucat.is-open .okmenucat__offcanvas {
    transform: translateX(0);
}
.okmenucat__offcanvas-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 8px;
    padding: 16px 20px;
    border-bottom: 1px solid #e8e5e3;
    flex-shrink: 0;
}
.okmenucat__offcanvas-title {
    font-size: 16px;
    font-weight: 700;
    color: #110f0e;
}
.okmenucat__offcanvas-back {
    display: flex;
    align-items: center;
    gap: 6px;
    border: none;
    background: none;
    color: #110f0e;
    font-size: 16px;
    font-weight: 600;
    cursor: pointer;
    padding: 0;
    margin-right: auto;
}
.okmenucat__offcanvas-back svg {
    flex-shrink: 0;
    width: 16px;
    height: 16px;
}
.okmenucat__offcanvas-back[hidden],
.okmenucat__offcanvas-title[hidden] {
    display: none;
}
.okmenucat__offcanvas-close {
    border: none;
    background: none;
    font-size: 24px;
    line-height: 1;
    color: #110f0e;
    cursor: pointer;
    padding: 4px;
}

.okmenucat__mobile-layers {
    position: relative;
    flex: 1 1 auto;
    overflow: hidden;
}
.okmenucat__mobile-layer {
    position: absolute;
    inset: 0;
    overflow-y: auto;
    padding: 8px 20px 24px;
    background-color: #ffffff;
    transform: translateX(100%);
    transition: transform 0.3s ease;
}
.okmenucat__mobile-layer.is-current {
    transform: translateX(0);
}
.okmenucat__mobile-layer.is-before {
    transform: translateX(-100%);
}
.okmenucat__mobile-list {
    list-style: none;
    margin: 0;
    padding: 0;
}
.okmenucat__mobile-item {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 8px;
    border-bottom: 1px solid #e8e5e3;
}
.okmenucat__mobile-item--viewall {
    border-bottom: none;
    padding: 4px 0 16px;
}
.okmenucat__mobile-link {
    flex: 1 1 auto;
    padding: 14px 4px;
    font-size: 14px;
    font-weight: 600;
    color: #110f0e;
    text-decoration: none;
}
/*
 * Un padre/hija con hijas propias no navega en mobile: su enlace es
 * directamente el botón que abre la siguiente capa (mismo texto que
 * .okmenucat__mobile-link, más el layout y el reset de <button> aquí).
 */
button.okmenucat__mobile-link.okmenucat__mobile-open {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 8px;
    width: 100%;
    border: none;
    background: none;
    font-family: inherit;
    text-align: left;
    cursor: pointer;
}
button.okmenucat__mobile-link.okmenucat__mobile-open svg {
    flex-shrink: 0;
    width: 16px;
    height: 16px;
    color: #544b45;
}

/* ---------------------------------------------------------------------
 * Panel de hijas (compartido por el mega-menú de escritorio y el acordeón)
 * ------------------------------------------------------------------ */
.okmenucat__panel-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
    margin-bottom: 20px;
}
.okmenucat__panel-title {
    font-size: 18px;
    font-weight: 700;
    letter-spacing: -0.36px;
    color: #110f0e;
    margin: 0;
}
.okmenucat__panel-viewall {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    font-size: 12px;
    font-weight: 600;
    color: #1d4e24;
    text-decoration: none;
    white-space: nowrap;
}
.okmenucat__panel-viewall:hover {
    text-decoration: underline;
}
.okmenucat__panel-viewall svg {
    width: 14px;
    height: 14px;
    flex-shrink: 0;
}
.okmenucat__columns {
    display: flex;
    flex-direction: column;
    gap: 20px;
}
.okmenucat__column {
    min-width: 0;
}
.okmenucat__column-title {
    display: block;
    font-size: 12px;
    font-weight: 700;
    letter-spacing: 1.54px;
    text-transform: uppercase;
    color: #544b45;
    padding-bottom: 9px;
    margin-bottom: 12px;
    border-bottom: 1px solid #d9d3d0;
}
/* Una "Hija" con nietas, cuando además es un enlace: verde y con flechita. */
a.okmenucat__column-title.okmenucat__column-title--link {
    display: flex;
    align-items: center;
    gap: 6px;
    color: #1d4e24;
    text-decoration: none;
}
a.okmenucat__column-title.okmenucat__column-title--link:hover {
    text-decoration: underline;
}
a.okmenucat__column-title.okmenucat__column-title--link svg {
    flex-shrink: 0;
    width: 12px;
    height: 12px;
}
.okmenucat__column-link {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    font-size: 14px;
    font-weight: 600;
    color: #110f0e;
    text-decoration: none;
}
a.okmenucat__column-link {
    color: #1d4e24;
}
a.okmenucat__column-link:hover {
    text-decoration: underline;
}
a.okmenucat__column-link svg {
    flex-shrink: 0;
    width: 12px;
    height: 12px;
}
.okmenucat__children-list {
    list-style: none;
    margin: 0;
    padding: 0;
}
.okmenucat__children-list li {
    display: flex;
    align-items: center;
    gap: 8px;
    margin-bottom: 10px;
}
.okmenucat__children-list li::before {
    content: '';
    flex-shrink: 0;
    width: 12px;
    height: 1px;
    background-color: #d9d3d0;
}
.okmenucat__children-list a,
.okmenucat__children-list span {
    font-size: 14px;
    color: #544b45;
    text-decoration: none;
}
.okmenucat__children-list a:hover {
    color: #1d4e24;
    text-decoration: underline;
}

/* ---------------------------------------------------------------------
 * Mega-menú desktop (>= 992px): sidebar de padres + panel de hijas
 * ------------------------------------------------------------------ */
.okmenucat__dropdown {
    display: none;
}

@media (min-width: 992px) {
    .okmenucat__offcanvas {
        display: none;
    }

    /* A partir de aquí, el botón vuelve a ser la pastilla verde. */
    .okmenucat__toggle {
        background-color: #1d4e24;
        color: #ffffff;
        padding: 8px 16px;
        border-radius: 999px;
    }
    .okmenucat.is-open .okmenucat__toggle {
        background-color: #e8e5e3;
        color: #110f0e;
    }

    .okmenucat__dropdown {
        position: absolute;
        top: 100%;
        left: 0;
        z-index: 1045;
    }
    .okmenucat.is-open .okmenucat__dropdown {
        display: flex;
    }
    .okmenucat__dropdown-inner {
        display: flex;
        width: 1130px;
        max-width: calc(100vw - 30px);
        margin-top: 8px;
        margin-left: 15px;
        background-color: #ffffff;
        border-radius: 14px;
        box-shadow: 0 25px 25px rgba(217, 211, 208, 0.2);
        overflow: hidden;
    }
    .okmenucat__sidebar {
        flex: 0 0 260px;
        list-style: none;
        margin: 0;
        padding: 12.5px 0.5px;
        background-color: #f1efee;
        border: 1px solid #e8e5e3;
        border-top-left-radius: 14px;
        border-bottom-left-radius: 14px;
        max-height: 70vh;
        overflow-y: auto;
    }
    .okmenucat__sidebar-link {
        display: flex;
        align-items: center;
        justify-content: space-between;
        gap: 8px;
        padding: 10px 20px;
        font-size: 14px;
        color: #544b45;
        text-decoration: none;
    }
    button.okmenucat__sidebar-link {
        width: 100%;
        border: none;
        background: none;
        text-align: left;
        font-family: inherit;
        cursor: pointer;
    }
    .okmenucat__sidebar-link svg {
        flex-shrink: 0;
        width: 16px;
        height: 16px;
        opacity: 0.6;
    }
    .okmenucat__sidebar-item.is-active .okmenucat__sidebar-link {
        background-color: #f8f7f7;
        color: #110f0e;
        font-weight: 600;
    }
    .okmenucat__content {
        flex: 1 1 auto;
        min-width: 0;
        border: 1px solid #e8e5e3;
        border-left: none;
        border-top-right-radius: 14px;
        border-bottom-right-radius: 14px;
        padding: 28px 28px 32px;
        max-height: 70vh;
        overflow-y: auto;
    }
    .okmenucat__panel {
        display: none;
    }
    .okmenucat__panel.is-active {
        display: block;
    }
    .okmenucat__panel .okmenucat__columns {
        flex-direction: row;
        flex-wrap: wrap;
        gap: 32px;
    }
    .okmenucat__panel .okmenucat__column {
        flex: 1 0 0;
        min-width: 180px;
    }
}

/* A partir de 1200px, las columnas de nivel 2 ocupan siempre 4/12 (3 por fila),
 * sea cual sea el número de columnas, en vez de repartirse el ancho disponible. */
@media (min-width: 1200px) {
    .okmenucat__panel .okmenucat__column {
        flex: 0 0 calc((100% - 64px) / 3);
        max-width: calc((100% - 64px) / 3);
        min-width: 0;
    }
}
