/*
Theme Name: Geek on Web
Theme URI: https://geekonweb.fr
Author: Geek on Web
Author URI: https://geekonweb.fr
Description: Thème sur mesure pour geekonweb.fr, au design assorti à l'app iOS compagnon (mêmes couleurs, mêmes proportions de cartes, même traitement typographique). Comprend une bannière d'invitation à télécharger l'app, entièrement personnalisable depuis le Personnaliseur (icône, texte, lien) sans toucher au code.
Version: 1.4.1
Requires at least: 6.0
Requires PHP: 7.4
Text Domain: geekonweb
*/

/* ==========================================================================
   Jetons de design — repris directement de l'identité de l'app iOS :
   rouge d'accentuation, fond blanc, cartes arrondies, police système
   (rendue en SF Pro sur les appareils Apple, dégradation propre ailleurs).
   ========================================================================== */

:root {
    --gow-red: #FD4C31;
    --gow-red-dark: #E23A20;
    --gow-red-tint: #FFF1EE;
    --gow-ink: #1C1C1E;
    --gow-gray: #6E6E73;
    --gow-gray-light: #F2F2F7;
    --gow-border: #E5E5EA;
    --gow-white: #FFFFFF;

    --gow-font: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto,
        "Helvetica Neue", Arial, sans-serif;

    --gow-radius-card: 16px;
    --gow-radius-thumb: 12px;
    --gow-radius-pill: 999px;

    --gow-content-width: 720px;
    --gow-layout-width: 1160px;
    --gow-sidebar-width: 300px;
    --gow-gutter: 20px;
}

* {
    box-sizing: border-box;
}

html {
    -webkit-text-size-adjust: 100%;
}

body {
    margin: 0;
    font-family: var(--gow-font);
    color: var(--gow-ink);
    background: var(--gow-white);
    line-height: 1.5;
    -webkit-font-smoothing: antialiased;
}

img {
    max-width: 100%;
    height: auto;
    display: block;
}

a {
    color: var(--gow-red);
    text-decoration: none;
}

a:hover {
    text-decoration: underline;
}

:focus-visible {
    outline: 2px solid var(--gow-red);
    outline-offset: 2px;
}

.gow-container {
    max-width: var(--gow-content-width);
    margin: 0 auto;
    padding: 0 var(--gow-gutter);
}

.gow-container-wide {
    max-width: var(--gow-layout-width);
    margin: 0 auto;
    padding: 0 var(--gow-gutter);
}

/* ==========================================================================
   En-tête du site
   ========================================================================== */

.gow-site-header {
    border-bottom: 1px solid var(--gow-border);
    background: var(--gow-white);
}

.gow-header-top {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 16px var(--gow-gutter);
    max-width: var(--gow-layout-width);
    margin: 0 auto;
    gap: 16px;
}

.gow-site-branding {
    display: flex;
    align-items: center;
    gap: 10px;
}

.gow-site-branding img {
    max-height: 32px;
    width: auto;
    border-radius: 7px;
}

.gow-site-title {
    font-size: 19px;
    font-weight: 700;
    letter-spacing: -0.02em;
    margin: 0;
    color: var(--gow-ink);
}

.gow-site-title a {
    color: inherit;
    text-decoration: none;
}

.gow-primary-nav {
    position: relative;
}

.gow-primary-nav > ul {
    list-style: none;
    display: flex;
    gap: 8px;
    margin: 0;
    padding: 0;
    flex-wrap: wrap;
}

.gow-primary-nav li {
    position: relative;
}

.gow-primary-nav > ul > li > a {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    color: var(--gow-ink);
    background: var(--gow-gray-light);
    font-size: 14px;
    font-weight: 600;
    padding: 8px 16px;
    border-radius: var(--gow-radius-pill);
    transition: background-color 0.15s ease, color 0.15s ease;
}

.gow-primary-nav > ul > li > a:hover {
    background: var(--gow-red);
    color: var(--gow-white);
    text-decoration: none;
}

.gow-primary-nav > ul > li.current-menu-item > a,
.gow-primary-nav > ul > li.current-menu-ancestor > a {
    background: var(--gow-red);
    color: var(--gow-white);
}

/* Petite flèche indiquant qu'un élément de premier niveau a un
   sous-menu — ajoutée en CSS pur (::after), donc sans rien à modifier
   dans le menu lui-même. */
.gow-primary-nav > ul > li.menu-item-has-children > a::after {
    content: "";
    width: 6px;
    height: 6px;
    border-right: 1.6px solid currentColor;
    border-bottom: 1.6px solid currentColor;
    transform: rotate(45deg);
    margin-top: -3px;
    flex-shrink: 0;
}

/* ==========================================================================
   Sous-menus déroulants (dropdown classique)
   ========================================================================== */

.gow-primary-nav .sub-menu {
    list-style: none;
    margin: 8px 0 0;
    padding: 8px;
    position: absolute;
    top: 100%;
    left: 0;
    min-width: 220px;
    background: var(--gow-white);
    border: 1px solid var(--gow-border);
    border-radius: 14px;
    box-shadow: 0 12px 28px rgba(0, 0, 0, 0.12);
    z-index: 60;
    display: none;
    flex-direction: column;
    gap: 2px;
}

/* "Pont" invisible comblant l'espace entre le bouton et le panneau : sans
   lui, déplacer la souris du bouton vers le sous-menu traverse une zone
   où rien n'est survolé, ce qui referme le panneau avant d'y arriver.
   Fait partie du sous-menu (donc du <li> survolé), il garde le survol
   actif pendant toute la traversée. */
.gow-primary-nav .sub-menu::before {
    content: "";
    position: absolute;
    top: -8px;
    left: 0;
    right: 0;
    height: 8px;
}

.gow-primary-nav .sub-menu .sub-menu {
    /* Sous-sous-menu : ouvert sur le côté plutôt qu'en dessous, pour ne
       pas se superposer à son propre parent. */
    top: -8px;
    left: 100%;
    margin: 0 0 0 6px;
}

/* Ce sous-sous-menu s'ouvre sur le côté : le pont doit donc combler
   l'espace horizontal à sa gauche, pas au-dessus comme pour un
   sous-menu classique. */
.gow-primary-nav .sub-menu .sub-menu::before {
    top: 0;
    bottom: 0;
    left: -6px;
    right: auto;
    width: 6px;
    height: auto;
}

.gow-primary-nav .sub-menu a {
    display: block;
    color: var(--gow-ink);
    background: none;
    font-size: 14px;
    font-weight: 500;
    padding: 9px 14px;
    border-radius: 9px;
}

.gow-primary-nav .sub-menu a:hover {
    background: var(--gow-red-tint);
    color: var(--gow-red);
    text-decoration: none;
}

/* Survol/clavier sur ordinateur : affiche le sous-menu directement
   concerné (":focus-within" couvre aussi la navigation au clavier). */
@media (hover: hover) {
    .gow-primary-nav li:hover > .sub-menu,
    .gow-primary-nav li:focus-within > .sub-menu {
        display: flex;
    }
}

/* Ouverture pilotée par JS (tactile/clic) — voir assets/js/nav.js. */
.gow-primary-nav li.gow-submenu-open > .sub-menu {
    display: flex;
}

/* ==========================================================================
   Méga menu — activé par élément de menu (case "Méga menu" dans
   Apparence > Menus, voir inc/nav-menu.php). Panneau centré, pleine
   largeur, ses éléments répartis en grille plutôt qu'en liste verticale.
   ========================================================================== */

.gow-primary-nav li.gow-mega-menu-parent > .sub-menu {
    left: 50%;
    right: auto;
    transform: translateX(-50%);
    width: min(var(--gow-layout-width), calc(100vw - 40px));
    max-width: calc(100vw - 40px);
    padding: 24px;
    display: none;
    grid-template-columns: repeat(auto-fill, minmax(180px, 1fr));
    gap: 4px 20px;
    align-content: start;
}

@media (hover: hover) {
    .gow-primary-nav li.gow-mega-menu-parent:hover > .sub-menu,
    .gow-primary-nav li.gow-mega-menu-parent:focus-within > .sub-menu {
        display: grid;
    }
}

.gow-primary-nav li.gow-mega-menu-parent.gow-submenu-open > .sub-menu {
    display: grid;
}

.gow-primary-nav li.gow-mega-menu-parent > .sub-menu > li {
    width: 100%;
}

/* Un sous-sous-menu à l'intérieur d'un méga menu redevient une simple
   liste empilée sous son parent (pas un panneau qui s'ouvrirait sur le
   côté, qui n'aurait pas de sens ici). */
.gow-primary-nav li.gow-mega-menu-parent .sub-menu .sub-menu {
    position: static;
    display: block;
    box-shadow: none;
    border: none;
    padding: 4px 0 0 10px;
    margin: 0;
    background: none;
}

.gow-menu-toggle {
    display: none;
    background: none;
    border: none;
    padding: 6px;
    cursor: pointer;
}

.gow-menu-toggle svg {
    width: 24px;
    height: 24px;
    color: var(--gow-ink);
}

/* ==========================================================================
   Bannière "Téléchargez l'app iOS" — entièrement pilotée par le
   Personnaliseur (icône, titre, texte, texte du bouton, lien). Pensée
   pour évoquer la bannière native "Smart App Banner" d'iOS, en plus sobre.
   ========================================================================== */

.gow-app-banner {
    background: var(--gow-red-tint);
    border-bottom: 1px solid var(--gow-border);
}

.gow-app-banner-inner {
    max-width: var(--gow-layout-width);
    margin: 0 auto;
    padding: 12px var(--gow-gutter);
    display: flex;
    align-items: center;
    gap: 12px;
}

.gow-app-banner-icon {
    width: 44px;
    height: 44px;
    border-radius: 10px;
    flex-shrink: 0;
    box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12);
}

.gow-app-banner-text {
    flex: 1;
    min-width: 0;
}

.gow-app-banner-title {
    font-size: 14px;
    font-weight: 600;
    color: var(--gow-ink);
    margin: 0;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.gow-app-banner-subtitle {
    font-size: 13px;
    color: var(--gow-gray);
    margin: 1px 0 0;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.gow-app-banner-cta {
    flex-shrink: 0;
    background: var(--gow-red);
    color: var(--gow-white);
    font-size: 14px;
    font-weight: 600;
    padding: 8px 16px;
    border-radius: var(--gow-radius-pill);
    white-space: nowrap;
}

.gow-app-banner-cta:hover {
    background: var(--gow-red-dark);
    color: var(--gow-white);
    text-decoration: none;
}

/* Immunise la bannière contre les styles génériques de
   `.gow-single-content` (pensés pour le vrai texte/images d'un
   article) quand elle est injectée À L'INTÉRIEUR du contenu (position
   "Dans le contenu, après le premier paragraphe") — sans ceci, les
   règles ".gow-single-content p" et ".gow-single-content img"
   l'emportaient (spécificité CSS plus élevée) et cassaient sa mise en
   page compacte. */
.gow-app-banner-text .gow-app-banner-title,
.gow-app-banner-text .gow-app-banner-subtitle {
    margin: 0;
}

.gow-app-banner-text .gow-app-banner-subtitle {
    margin-top: 1px;
}

.gow-app-banner-inner .gow-app-banner-icon {
    margin: 0;
    border-radius: 10px;
}

/* ==========================================================================
   Effet de tremblement de l'icône (Personnaliseur > Application iOS) —
   un bref mouvement périodique pour attirer l'œil, pas une agitation
   continue : la majeure partie du cycle de 4s ne bouge pas, seul le
   dernier instant tremble. Désactivé automatiquement si le visiteur a
   activé "Réduire les animations" sur son appareil.
   ========================================================================== */

@keyframes gow-icon-shake {
    0%, 82%, 100% {
        transform: rotate(0deg);
    }
    85% {
        transform: rotate(-8deg);
    }
    88% {
        transform: rotate(8deg);
    }
    91% {
        transform: rotate(-6deg);
    }
    94% {
        transform: rotate(6deg);
    }
    97% {
        transform: rotate(-2deg);
    }
}

@media (prefers-reduced-motion: no-preference) {
    .gow-icon-shake {
        animation: gow-icon-shake 4s ease-in-out infinite;
        transform-origin: 50% 50%;
    }
}

/* ==========================================================================
   Bannière app — variante "carte", en haut de la sidebar. Plus grande,
   verticale, pensée pour une colonne étroite plutôt qu'un bandeau pleine
   largeur.
   ========================================================================== */

.gow-app-banner-card {
    background: var(--gow-red-tint);
    border: 1px solid var(--gow-border);
    border-radius: var(--gow-radius-card);
    padding: 24px 20px;
    text-align: center;
    margin-bottom: 32px;
}

.gow-app-banner-card-icon {
    width: 72px;
    height: 72px;
    border-radius: 16px;
    margin: 0 auto 14px;
    box-shadow: 0 4px 10px rgba(0, 0, 0, 0.14);
}

.gow-app-banner-card-title {
    font-size: 17px;
    font-weight: 700;
    color: var(--gow-ink);
    margin: 0 0 4px;
}

.gow-app-banner-card-subtitle {
    font-size: 14px;
    color: var(--gow-gray);
    margin: 0 0 18px;
}

.gow-app-banner-card-cta {
    display: block;
    background: var(--gow-red);
    color: var(--gow-white);
    font-size: 15px;
    font-weight: 600;
    padding: 11px 20px;
    border-radius: var(--gow-radius-pill);
}

.gow-app-banner-card-cta:hover {
    background: var(--gow-red-dark);
    color: var(--gow-white);
    text-decoration: none;
}

/* La bannière n'apparaît qu'à UN SEUL endroit à la fois : dans la
   sidebar sur ordinateur (où elle est visible sans avoir à faire
   défiler la page), et juste sous l'en-tête sur mobile — sur un écran
   étroit, la sidebar passe après tout le contenu principal (voir plus
   bas), ce qui rendrait la bannière invisible sans défiler jusqu'au
   bout d'un article. */
.gow-mobile-app-banner {
    display: none;
}

/* ==========================================================================
   Bannière d'annonce éphémère (Personnaliseur > Message du site) — sous
   le menu, sur toutes les pages. Couleurs de fond/texte définies au cas
   par cas depuis le Personnaliseur (voir inc/announcement.php), d'où le
   style inline sur l'élément lui-même plutôt que des couleurs fixes ici.
   ========================================================================== */

.gow-announcement-wrap {
    max-width: var(--gow-layout-width);
    margin: 20px auto 0;
    padding: 0 var(--gow-gutter);
    display: flex;
    justify-content: center;
}

.gow-announcement-bar {
    align-items: center;
    justify-content: center;
    max-width: 1160px;
    text-align: center;
    padding: 14px 24px;
    border-radius: var(--gow-radius-card);
    font-size: 14px;
    font-weight: 600;
    white-space: pre-line;
}

/* Fluide : la carte prend seulement la place nécessaire à son contenu
   (un message court reste compact), sans jamais dépasser 1160px. */
.gow-announcement-bar.gow-announcement-fluid {
    display: inline-flex;
}

/* Figée : occupe toute la largeur disponible dans le conteneur, jusqu'à
   1160px — comme le header et le footer du site. */
.gow-announcement-bar.gow-announcement-fixed {
    display: flex;
    width: 100%;
}

a.gow-announcement-bar:hover {
    opacity: 0.9;
    text-decoration: underline;
}

/* ==========================================================================
   Zone de mise en avant — jusqu'à 4 articles choisis individuellement
   depuis leur écran d'édition (voir inc/featured.php). N'apparaît que
   sur la page d'accueil.
   ========================================================================== */

.gow-featured {
    max-width: var(--gow-layout-width);
    margin: 0 auto;
    padding: 20px var(--gow-gutter) 4px;
}

.gow-featured-inner {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 14px;
}

.gow-featured-card {
    position: relative;
    display: block;
    aspect-ratio: 4 / 3;
    border-radius: var(--gow-radius-card);
    overflow: hidden;
    background: var(--gow-gray-light);
}

.gow-featured-image {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    margin: 0;
}

.gow-featured-image-placeholder {
    background: var(--gow-gray-light);
}

.gow-featured-overlay {
    position: absolute;
    inset: auto 0 0 0;
    padding: 14px;
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 6px;
    background: linear-gradient(to top, rgba(0, 0, 0, 0.78), rgba(0, 0, 0, 0) 75%);
}

.gow-category-pill-on-image {
    background: rgba(255, 255, 255, 0.92);
}

.gow-featured-title {
    color: var(--gow-white);
    font-size: 15px;
    font-weight: 700;
    line-height: 1.3;
    margin: 0;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
}

/* ==========================================================================
   Mise en page à deux colonnes : contenu principal + sidebar.
   ========================================================================== */

.gow-layout {
    max-width: var(--gow-layout-width);
    margin: 0 auto;
    padding: 28px var(--gow-gutter) 0;
    display: flex;
    align-items: flex-start;
    gap: 40px;
}

.gow-main {
    flex: 1 1 auto;
    min-width: 0;
}

.gow-sidebar {
    width: var(--gow-sidebar-width);
    flex-shrink: 0;
}

.gow-widget {
    margin-bottom: 32px;
}

.gow-widget-title {
    font-size: 14px;
    font-weight: 700;
    text-transform: none;
    color: var(--gow-ink);
    margin: 0 0 14px;
}

.gow-widget ul {
    list-style: none;
    margin: 0;
    padding: 0;
}

.gow-widget li {
    margin-bottom: 10px;
}

.gow-widget a {
    color: var(--gow-ink);
    font-size: 14px;
}

.gow-widget a:hover {
    color: var(--gow-red);
    text-decoration: none;
}

.gow-widget .gow-widget-count {
    color: var(--gow-gray);
    font-size: 13px;
}

.gow-archives-dropdown {
    width: 100%;
    padding: 10px 14px;
    border: 1px solid var(--gow-border);
    border-radius: 10px;
    background: var(--gow-white);
    font-family: var(--gow-font);
    font-size: 14px;
    color: var(--gow-ink);
    cursor: pointer;
}

.gow-sidebar a.gow-latest-post-link {
    display: block;
    margin-top: 20px;
    text-align: center;
    background: var(--gow-red);
    color: var(--gow-white) !important;
    font-size: 14px;
    font-weight: 600;
    padding: 11px 16px;
    border-radius: var(--gow-radius-pill);
}

.gow-sidebar a.gow-latest-post-link:hover {
    background: var(--gow-red-dark);
    color: var(--gow-white) !important;
    text-decoration: none;
}

/* Widgets ajoutés depuis Apparence > Widgets (dynamic_sidebar) : styles
   raisonnables par défaut, cohérents avec le reste du thème. */
.gow-sidebar .widget {
    margin-bottom: 32px;
}

.gow-sidebar .widget-title {
    font-size: 14px;
    font-weight: 700;
    margin: 0 0 14px;
}

/* ==========================================================================
   Liste d'articles — reprend le principe des lignes d'articles de l'app :
   vignette arrondie à gauche, titre + méta + extrait à droite, sur une
   carte discrète.
   ========================================================================== */

.gow-post-list {
    padding: 0 0 60px;
}

.gow-post-card {
    display: flex;
    gap: 14px;
    padding: 16px 0;
    border-bottom: 1px solid var(--gow-border);
}

.gow-post-card:first-child {
    padding-top: 0;
}

.gow-post-thumb {
    width: 96px;
    height: 96px;
    border-radius: var(--gow-radius-thumb);
    overflow: hidden;
    flex-shrink: 0;
    background: var(--gow-gray-light);
}

.gow-post-thumb img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.gow-post-thumb-placeholder {
    width: 100%;
    height: 100%;
    display: flex;
    align-items: center;
    justify-content: center;
    color: var(--gow-gray);
}

.gow-post-thumb-placeholder svg {
    width: 28px;
    height: 28px;
}

.gow-post-body {
    flex: 1;
    min-width: 0;
    display: flex;
    flex-direction: column;
    gap: 4px;
}

.gow-post-title {
    font-size: 17px;
    font-weight: 600;
    line-height: 1.3;
    margin: 0;
    color: var(--gow-ink);
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
}

.gow-post-title a {
    color: inherit;
}

.gow-post-title a:hover {
    text-decoration: none;
    color: var(--gow-red);
}

.gow-post-meta {
    font-size: 13px;
    color: var(--gow-gray);
    display: flex;
    align-items: center;
    gap: 6px;
    flex-wrap: wrap;
}

.gow-category-pill {
    display: inline-block;
    background: var(--gow-red-tint);
    color: var(--gow-red);
    font-size: 12px;
    font-weight: 600;
    padding: 3px 10px;
    border-radius: var(--gow-radius-pill);
}

.gow-post-excerpt {
    font-size: 14px;
    color: var(--gow-gray);
    margin: 0;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
}

/* ==========================================================================
   Pagination
   ========================================================================== */

.gow-pagination {
    display: flex;
    justify-content: center;
    gap: 8px;
    padding: 24px 0 60px;
}

.gow-pagination a,
.gow-pagination span {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 36px;
    height: 36px;
    padding: 0 12px;
    border-radius: var(--gow-radius-pill);
    font-size: 14px;
    font-weight: 600;
    color: var(--gow-ink);
}

.gow-pagination a:hover {
    background: var(--gow-gray-light);
    text-decoration: none;
}

.gow-pagination .current {
    background: var(--gow-red);
    color: var(--gow-white);
}

/* ==========================================================================
   Article — page seule
   ========================================================================== */

.gow-single-article {
    padding: 0;
}

.gow-single-header {
    max-width: var(--gow-content-width);
    margin-bottom: 24px;
}

.gow-single-title {
    font-size: 28px;
    font-weight: 700;
    line-height: 1.25;
    letter-spacing: -0.01em;
    margin: 10px 0 12px;
    color: var(--gow-ink);
}

.gow-single-meta {
    font-size: 14px;
    color: var(--gow-gray);
    display: flex;
    align-items: center;
    gap: 8px;
    flex-wrap: wrap;
}

.gow-single-thumb {
    border-radius: var(--gow-radius-card);
    overflow: hidden;
    margin: 0 0 28px;
}

.gow-single-content {
    max-width: var(--gow-content-width);
    font-size: 17px;
    line-height: 1.7;
    color: var(--gow-ink);
}

.gow-single-content p {
    margin: 0 0 22px;
}

.gow-single-content h2 {
    font-size: 22px;
    font-weight: 700;
    margin: 36px 0 14px;
    letter-spacing: -0.01em;
}

.gow-single-content h3 {
    font-size: 19px;
    font-weight: 700;
    margin: 28px 0 12px;
}

.gow-single-content img {
    border-radius: var(--gow-radius-thumb);
    margin: 20px 0;
}

.gow-single-content blockquote {
    margin: 24px 0;
    padding: 4px 0 4px 18px;
    border-left: 3px solid var(--gow-red);
    color: var(--gow-gray);
    font-style: italic;
}

.gow-single-content pre {
    background: var(--gow-gray-light);
    border-radius: var(--gow-radius-thumb);
    padding: 16px;
    overflow-x: auto;
    font-size: 14px;
}

.gow-single-content code {
    background: var(--gow-gray-light);
    padding: 2px 6px;
    border-radius: 6px;
    font-size: 0.9em;
}

.gow-single-content ul,
.gow-single-content ol {
    padding-left: 22px;
    margin: 0 0 22px;
}

/* Bannière app répétée en fin d'article — même composant que l'en-tête,
   deuxième occasion de convertir un lecteur engagé. */
.gow-inline-app-banner {
    max-width: var(--gow-content-width);
    margin: 24px 0;
    padding: 0;
}

.gow-inline-app-banner .gow-app-banner {
    border: 1px solid var(--gow-border);
    border-radius: var(--gow-radius-card);
}

.gow-inline-app-banner .gow-app-banner-inner {
    padding: 16px;
}

/* ==========================================================================
   Commentaires
   ========================================================================== */

.gow-comments {
    max-width: var(--gow-content-width);
    margin: 40px 0 0;
    padding: 0 0 60px;
}

.gow-comments-title {
    font-size: 20px;
    font-weight: 700;
    margin: 0 0 20px;
}

.gow-comment-list {
    list-style: none;
    margin: 0;
    padding: 0;
}

.gow-comment-list .children {
    list-style: none;
    padding-left: 24px;
    margin: 0;
}

.gow-comment-body {
    display: flex;
    gap: 12px;
    padding: 16px 0;
    border-bottom: 1px solid var(--gow-border);
}

.gow-comment-avatar {
    flex-shrink: 0;
}

.gow-comment-avatar img {
    width: 36px;
    height: 36px;
    border-radius: 50%;
    object-fit: cover;
    flex-shrink: 0;
}

.gow-comment-author {
    font-weight: 600;
    font-size: 14px;
    display: flex;
    align-items: center;
    gap: 6px;
}

.gow-comment-date {
    font-size: 12px;
    color: var(--gow-gray);
    font-weight: 400;
}

.gow-comment-text {
    font-size: 15px;
    margin-top: 4px;
}

.comment-respond input[type="text"],
.comment-respond input[type="email"],
.comment-respond input[type="url"],
.comment-respond textarea {
    width: 100%;
    padding: 10px 14px;
    border: 1px solid var(--gow-border);
    border-radius: 10px;
    font-family: var(--gow-font);
    font-size: 15px;
    margin-bottom: 12px;
}

.comment-respond textarea {
    min-height: 110px;
    resize: vertical;
}

.comment-respond .form-submit input {
    background: var(--gow-red);
    color: var(--gow-white);
    border: none;
    padding: 10px 22px;
    border-radius: var(--gow-radius-pill);
    font-weight: 600;
    font-size: 15px;
    cursor: pointer;
}

.comment-respond .form-submit input:hover {
    background: var(--gow-red-dark);
}

/* ==========================================================================
   Pied de page
   ========================================================================== */

.gow-site-footer {
    border-top: 1px solid var(--gow-border);
    background: var(--gow-gray-light);
}

.gow-footer-inner {
    max-width: var(--gow-layout-width);
    margin: 0 auto;
    padding: 32px var(--gow-gutter);
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
    flex-wrap: wrap;
}

.gow-footer-tagline {
    font-size: 13px;
    color: var(--gow-gray);
    margin: 0;
}

.gow-footer-nav ul {
    list-style: none;
    display: flex;
    gap: 16px;
    margin: 0;
    padding: 0;
}

.gow-footer-nav a {
    font-size: 13px;
    color: var(--gow-gray);
}

/* ==========================================================================
   États vides / recherche / 404
   ========================================================================== */

.gow-empty-state {
    max-width: var(--gow-content-width);
    margin: 0 auto;
    padding: 60px var(--gow-gutter);
    text-align: center;
}

.gow-empty-state h1 {
    font-size: 22px;
    margin: 0 0 10px;
}

.gow-empty-state p {
    color: var(--gow-gray);
    margin: 0 0 20px;
}

.gow-search-form {
    display: flex;
    gap: 8px;
    max-width: 420px;
    margin: 0 auto;
}

.gow-search-form input[type="search"] {
    flex: 1;
    padding: 10px 14px;
    border: 1px solid var(--gow-border);
    border-radius: var(--gow-radius-pill);
    font-family: var(--gow-font);
    font-size: 15px;
}

.gow-search-form button {
    background: var(--gow-red);
    color: var(--gow-white);
    border: none;
    padding: 0 20px;
    border-radius: var(--gow-radius-pill);
    font-weight: 600;
    cursor: pointer;
}

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

@media (max-width: 900px) {
    .gow-layout {
        flex-direction: column;
    }

    .gow-sidebar {
        width: 100%;
        order: 2;
        padding-top: 20px;
        border-top: 1px solid var(--gow-border);
    }

    .gow-mobile-app-banner {
        display: block;
    }

    .gow-sidebar-app-banner {
        display: none;
    }

    .gow-featured-inner {
        grid-template-columns: repeat(2, 1fr);
    }
}

@media (max-width: 640px) {
    .gow-primary-nav {
        display: none;
        position: absolute;
        top: 64px;
        left: 0;
        right: 0;
        max-height: calc(100vh - 64px);
        overflow-y: auto;
        background: var(--gow-white);
        border-bottom: 1px solid var(--gow-border);
        z-index: 20;
    }

    .gow-primary-nav.is-open {
        display: block;
    }

    .gow-primary-nav > ul {
        flex-direction: column;
        gap: 8px;
        padding: 12px var(--gow-gutter);
    }

    .gow-primary-nav li {
        width: 100%;
    }

    .gow-primary-nav > ul > li > a {
        display: block;
        width: 100%;
        text-align: center;
    }

    /* Sur mobile, tout sous-menu (classique ou méga) redevient une
       simple liste empilée sous son parent, en accordéon au clic —
       plus de panneau flottant ni de grille : sur un écran étroit, ça
       n'apporterait rien et compliquerait la lecture. */
    .gow-primary-nav .sub-menu,
    .gow-primary-nav li.gow-mega-menu-parent > .sub-menu {
        display: none;
        position: static;
        transform: none;
        width: 100%;
        max-width: none;
        margin: 6px 0 0;
        padding: 4px 0 4px 16px;
        border: none;
        box-shadow: none;
        border-radius: 0;
        grid-template-columns: none;
    }

    .gow-primary-nav li.gow-submenu-open > .sub-menu,
    .gow-primary-nav li.gow-mega-menu-parent.gow-submenu-open > .sub-menu {
        display: flex;
        flex-direction: column;
    }

    .gow-primary-nav .sub-menu a {
        text-align: left;
    }

    .gow-menu-toggle {
        display: block;
    }

    .gow-site-header {
        position: relative;
    }

    .gow-post-thumb {
        width: 76px;
        height: 76px;
    }

    .gow-single-title {
        font-size: 23px;
    }

    .gow-single-content {
        font-size: 16px;
    }
}
