/*
Theme Name: Whey Protein
Theme URI: 
Author: LZM Digital
Author URI: 
Description: 
Requires at least: 6.9
Tested up to: 6.9
Requires PHP: 8.1
Version: 1.0.1
License: GNU General Public License v2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
Template: twentytwentyfive
Text Domain: whey-protein
Tags: block-theme, full-site-editing, custom-colors, custom-typography, accessibility-ready


/* Variáveis --lzm-* no :root (theme.json → styles.css). CSS por bloco: assets/css/blocks/ (carregado com wp_enqueue_block_style). */

/*
 * Traço de navegação (só CSS):
 * — 1.º nível: traço fixo em .current-menu-item ou .current-menu-ancestor (pai de subitem corrente — classe nativa do core).
 * — Outros itens do 1.º nível: traço animado no :hover / :focus-within.
 * — Dentro de .wp-block-navigation__submenu-container: traço no label (span) do corrente.
 * — Menu modal (.is-menu-open): traço largo do <li> desligado; traço do label no submenu mantém-se.
 */
.wp-block-navigation .wp-block-navigation__container > li.wp-block-navigation-item.current-menu-item,
.wp-block-navigation .wp-block-navigation__container > li.wp-block-navigation-item.current-menu-ancestor {
    position: relative;
}

.wp-block-navigation .wp-block-navigation__container > li.wp-block-navigation-item.current-menu-item::after,
.wp-block-navigation .wp-block-navigation__container > li.wp-block-navigation-item.current-menu-ancestor::after {
    content: "";
    display: block;
    position: absolute;
    left: 0;
    right: 0;
    top: 100%;
    margin-top: 0.45rem;
    height: 2px;
    background-color: currentColor;
    transform: scaleX(1);
    transform-origin: left center;
    pointer-events: none;
}

.wp-block-navigation .wp-block-navigation__container > li.wp-block-navigation-item:not(.current-menu-item):not(.current-menu-ancestor) {
    position: relative;
}

.wp-block-navigation .wp-block-navigation__container > li.wp-block-navigation-item:not(.current-menu-item):not(.current-menu-ancestor)::after {
    content: "";
    display: block;
    position: absolute;
    left: 0;
    right: 0;
    top: 100%;
    margin-top: 0.45rem;
    height: 2px;
    background-color: currentColor;
    transform: scaleX(0);
    transform-origin: left center;
    opacity: 0;
    pointer-events: none;
    transition: transform 0.3s ease, opacity 0.25s ease;
}

.wp-block-navigation .wp-block-navigation__container > li.wp-block-navigation-item:not(.current-menu-item):not(.current-menu-ancestor):hover::after,
.wp-block-navigation .wp-block-navigation__container > li.wp-block-navigation-item:not(.current-menu-item):not(.current-menu-ancestor):focus-within::after {
    transform: scaleX(1);
    opacity: 1;
}

@media (prefers-reduced-motion: reduce) {
    .wp-block-navigation .wp-block-navigation__container > li.wp-block-navigation-item:not(.current-menu-item):not(.current-menu-ancestor)::after {
        transition: none;
    }

    .wp-block-navigation .wp-block-navigation__container > li.wp-block-navigation-item:not(.current-menu-item):not(.current-menu-ancestor):hover::after,
    .wp-block-navigation .wp-block-navigation__container > li.wp-block-navigation-item:not(.current-menu-item):not(.current-menu-ancestor):focus-within::after {
        transition: none;
    }
}

/*
 * Menu modal (overlay): o traço largo do 1.º nível (::after no <li>) não faz sentido em coluna — remove-se só com .is-menu-open.
 * O traço curto no submenu (label .wp-block-navigation-item__label::after) mantém-se; regras acima do submenu não usam este selector.
 */
.wp-block-navigation .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__container > li.wp-block-navigation-item::after {
    content: none !important;
    display: none !important;
}

/* Submenus: sem traço animado; corrente = linha estática dentro do item (não ultrapassa o fundo do ul). */
.wp-block-navigation .wp-block-navigation__submenu-container li.wp-block-navigation-item:not(.current-menu-item)::after {
    content: none;
    display: none;
}

.wp-block-navigation .wp-block-navigation__submenu-container li.wp-block-navigation-item.current-menu-item {
    position: relative;
}

/* Traço = largura do texto (span), não da <li> nem do <ul>. */
.wp-block-navigation .wp-block-navigation__submenu-container li.wp-block-navigation-item.current-menu-item::after {
    content: none;
    display: none;
}

.wp-block-navigation .wp-block-navigation__submenu-container li.wp-block-navigation-item.current-menu-item .wp-block-navigation-item__label {
    position: relative;
    display: inline-block;
}

.wp-block-navigation .wp-block-navigation__submenu-container li.wp-block-navigation-item.current-menu-item .wp-block-navigation-item__label::after {
    content: "";
    display: block;
    position: absolute;
    left: 0;
    right: 0;
    bottom: -0.35rem;
    height: 2px;
    background-color: currentColor;
    pointer-events: none;
}

/* Cor do texto: corrente e hover no submenu (mesma variável --lzm-submenu-accent). */
.wp-block-navigation .wp-block-navigation__submenu-container :is(a, button).wp-block-navigation-item__content[aria-current="page"],
.wp-block-navigation .wp-block-navigation__submenu-container :is(a, button).wp-block-navigation-item__content:hover,
.wp-block-navigation .wp-block-navigation__submenu-container :is(a, button).wp-block-navigation-item__content:focus-visible {
    color: var(--lzm-submenu-accent);
}

@media (min-width: 600px) {
    .wp-block-navigation__responsive-container:not(.hidden-by-default):not(.is-menu-open) .wp-block-navigation-item__content {
        line-height: var(--lzm-header-height, normal) !important;        
    }
}

/*
 * Distância entre o link pai e o dropdown (core usa top: 100% sem intervalo).
 * 782px alinha ao breakpoint de submenus em níveis do core; exclui menu overlay (is-menu-open).
 * ::before preenche o vão para o hover não fechar ao mover o cursor para o submenu.
 */
@media (min-width: 782px) {
    .wp-block-navigation:not(.is-vertical) .wp-block-navigation__responsive-container:not(.is-menu-open) .wp-block-navigation__container > .wp-block-navigation-item.has-child > .wp-block-navigation__submenu-container {
        top: calc(100% + var(--lzm-submenu-gap));
    }

    .wp-block-navigation.has-background:not(.is-vertical) .wp-block-navigation__responsive-container:not(.is-menu-open) .wp-block-navigation__container > .wp-block-navigation-item.has-child > .wp-block-navigation__submenu-container {
        top: calc(100% + var(--lzm-submenu-gap));
    }

    .wp-block-navigation:not(.is-vertical) .wp-block-navigation__responsive-container:not(.is-menu-open) .wp-block-navigation__container > .wp-block-navigation-item.has-child > .wp-block-navigation__submenu-container::before {
        content: "";
        position: absolute;
        left: 0;
        right: 0;
        bottom: 100%;
        height: var(--lzm-submenu-gap);
    }

    /* Padding do <ul> do dropdown (horizontal); X e Y separados — ver :root em theme.json / CSS adicional. */
    .wp-block-navigation:not(.is-vertical) .wp-block-navigation__responsive-container:not(.is-menu-open) .wp-block-navigation__submenu-container {
        padding-left: var(--lzm-submenu-padding-x);
        padding-right: var(--lzm-submenu-padding-x);
        padding-top: var(--lzm-submenu-padding-y);
        padding-bottom: var(--lzm-submenu-padding-y);
    }
}

/*
 * Grupo nativo (core/group) + classe lzm-rail-fixed: trilho fixo à direita, vertical (ex.: Redes sociais).
 * No editor: Grupo → Avançado → Classes CSS adicionais: lzm-rail-fixed (ou estilo de bloco "Trilho fixo" se registado).
 * !important: garante prioridade sobre estilos globais / block-supports; body aumenta a especificidade.
 */
body .wp-block-group.lzm-rail-fixed,
body .wp-block-group.is-style-lzm-rail-fixed {
    position: fixed !important;
    z-index: var(--lzm-rail-fixed-z, 99990) !important;
    inset-inline-end: env(safe-area-inset-right, 0px) !important;
    left: auto !important;
    top: 50% !important;
    transform: translateY(-50%) !important;   
    pointer-events: auto !important;
}

/*
 * wpmundi-blocks (Header Fixo): em alignfull o SCSS do bloco define overflow:hidden,
 * o que pode cortar submenus na borda inferior do header. Remover só se notar scroll horizontal indesejado.
 */
.wp-block-wpmundi-sticky-header.alignfull {
    overflow: visible !important;
}
