/*
 Theme Name:   GeneratePress Child
 Theme URI:    https://www.controle-moral.fr
 Description:  Thème enfant de GeneratePress pour Controle Moral
 Author:       ACSI Services
 Author URI:   https://www.controle-moral.fr
 Template:     generatepress
 Version:      1.0.1
 Text Domain:  generatepress-child
*/

/* ========================================
   VARIABLES
   ======================================== */
:root {
    --cm-dark: #222529;
    --cm-darker: #191c20;
    --cm-darkest: #191c20;
    --cm-card-bg: #26292e;
    --cm-card-bg-light: #2c2f35;
    --cm-accent: #4db8a4;
    --cm-accent2: #5ec6b2;
    --cm-text: #e8ecef;
    --cm-text-muted: #9a9fa8;
    --cm-white: #ffffff;
    --cm-radius: 12px;
    --cm-radius-sm: 8px;
    --cm-shadow: 0 4px 20px rgba(0,0,0,.25);
    --cm-font: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif;
    --cm-container: 1280px;
}

/* ========================================
   OVERRIDE GeneratePress variables
   ======================================== */
body.cm-theme {
    --base: var(--cm-darkest) !important;
    --base-2: var(--cm-darker) !important;
    --base-3: var(--cm-dark) !important;
    --contrast: var(--cm-text) !important;
    --contrast-2: var(--cm-text-muted) !important;
    --contrast-3: var(--cm-text-muted) !important;
    --accent: var(--cm-accent) !important;
    font-family: var(--cm-font) !important;
    background-color: var(--cm-darkest) !important;
    color: var(--cm-text) !important;
    position: relative;
}


/* ========================================
   RESET & BASE (dark theme)
   ======================================== */
body.cm-theme .site {
    background-color: var(--cm-darkest) !important;
}
body.cm-theme .site-header,
body.cm-theme #masthead,
body.cm-theme .inside-header {
    background-color: var(--cm-darker) !important;
    border-bottom: none;
}
/* Header must be above mega overlay (z-index 998) so nav links remain clickable */
body.cm-theme .site-header {
    position: relative;
    z-index: 1000;
}

/* ========================================
   NAVIGATION - Easy Home clone
   ======================================== */
/* Logo + header — desktop: centered column, mobile: row for hamburger */
@media (min-width: 769px) {
    body.cm-theme .site-header .inside-header {
        display: flex !important;
        flex-direction: column !important;
        align-items: center !important;
        padding: 1.2rem 1.5rem .3rem !important;
    }
    body.cm-theme .site-branding {
        text-align: center;
        margin-bottom: .6rem;
    }
    body.cm-theme .site-title {
        font-size: 1.6rem;
        font-weight: 800;
        letter-spacing: .02em;
    }
}
/* Nav bar - constrained to container width (desktop only) */
body.cm-theme .main-navigation {
    width: 100%;
    max-width: var(--cm-container);
    margin: 0 auto;
    border-top: 1px solid rgba(255,255,255,.06);
}
/* Desktop nav styles — only above 768px */
@media (min-width: 769px) {
    body.cm-theme .main-navigation .main-nav > ul {
        display: flex !important;
        justify-content: center !important;
        flex-wrap: nowrap !important;
        gap: 0;
    }
    body.cm-theme .main-navigation .main-nav > ul > li {
        flex-shrink: 0;
    }
    body.cm-theme .main-navigation .main-nav ul li a {
        font-size: .85rem !important;
        font-weight: 500 !important;
        text-transform: none !important;
        letter-spacing: .01em;
        padding: .75rem .7rem !important;
        position: relative;
        transition: color .25s !important;
        white-space: nowrap;
    }
    /* Dropdown chevron */
    body.cm-theme .main-navigation .main-nav > ul > li.menu-item-has-children > a::after,
    body.cm-theme .main-navigation .main-nav > ul > li.cm-mega-parent > a::after {
        content: '';
        display: inline-block;
        width: 0;
        height: 0;
        border-left: 4px solid transparent;
        border-right: 4px solid transparent;
        border-top: 4px solid currentColor;
        margin-left: 5px;
        vertical-align: middle;
        position: static;
        background: none;
        transition: transform .25s;
    }
    body.cm-theme .main-navigation .main-nav > ul > li.menu-item-has-children:hover > a::after,
    body.cm-theme .main-navigation .main-nav > ul > li.cm-mega-parent:hover > a::after {
        transform: rotate(180deg);
    }
    /* Underline on hover */
    body.cm-theme .main-navigation .main-nav > ul > li > a::before {
        content: '';
        position: absolute;
        bottom: 0;
        left: 50%;
        width: 0;
        height: 2px;
        background: var(--cm-accent);
        transition: width .25s, left .25s;
    }
    body.cm-theme .main-navigation .main-nav > ul > li:hover > a::before,
    body.cm-theme .main-navigation .main-nav > ul > li.current-menu-item > a::before {
        width: 100%;
        left: 0;
    }
    /* Hide GP dropdown toggle on desktop — we use chevrons */
    body.cm-theme .main-navigation .menu-bar-items,
    body.cm-theme .main-navigation .dropdown-menu-toggle {
        display: none !important;
    }
}
/* Mobile nav — let GP handle hamburger, just restyle colors */
@media (max-width: 768px) {
    body.cm-theme .site-title {
        font-size: 1.2rem;
    }
    body.cm-theme .main-navigation {
        max-width: 100%;
        border-top: none;
    }
    /* Hamburger button — only the inline wrapper one */
    body.cm-theme .mobile-menu-control-wrapper .menu-toggle {
        display: block !important;
        color: var(--cm-text) !important;
        background: transparent !important;
        cursor: pointer;
    }
    /* Hide the duplicate toggle inside #site-navigation */
    body.cm-theme #site-navigation > .inside-navigation > .menu-toggle {
        display: none !important;
    }
    /* Hide nav ul by default on mobile (GP default behavior) */
    body.cm-theme #site-navigation:not(.toggled) .main-nav > ul {
        display: none !important;
    }
    /* Show nav when toggled */
    body.cm-theme #site-navigation.toggled {
        display: block !important;
    }
    body.cm-theme #site-navigation.toggled .main-nav > ul {
        display: block !important;
    }
    /* Dark background for mobile nav */
    body.cm-theme .main-navigation,
    body.cm-theme .main-navigation ul ul,
    body.cm-theme #site-navigation.toggled {
        background-color: var(--cm-darker) !important;
    }
    body.cm-theme .main-navigation .main-nav ul li a {
        color: var(--cm-text) !important;
        padding: .7rem 1.2rem !important;
        font-size: .9rem !important;
        border-bottom: 1px solid rgba(255,255,255,.06);
    }
    body.cm-theme .main-navigation .main-nav ul li a:hover {
        color: var(--cm-accent) !important;
    }
    /* Hide mega menu on mobile */
    .cm-mega-panel,
    .cm-mega-overlay {
        display: none !important;
    }
}
/* Default sub-menus dark style */
body.cm-theme .main-navigation .main-nav ul ul {
    background-color: var(--cm-dark) !important;
    border: 1px solid rgba(255,255,255,.06) !important;
    border-radius: var(--cm-radius-sm) !important;
    box-shadow: 0 8px 30px rgba(0,0,0,.4) !important;
    min-width: 200px;
}
body.cm-theme .main-navigation .main-nav ul ul li a {
    padding: .6rem 1rem !important;
    font-size: .82rem !important;
    border-bottom: 1px solid rgba(255,255,255,.04);
}
body.cm-theme .main-navigation .main-nav ul ul li:last-child a {
    border-bottom: none;
}
body.cm-theme .main-navigation .main-nav ul ul li a:hover {
    background-color: var(--cm-card-bg) !important;
}
/* Hide default GP sub-menus on mega-parent items */
body.cm-theme .cm-mega-parent > ul.sub-menu,
body.cm-theme .cm-mega-parent > .sub-menu {
    display: none !important;
}
body.cm-theme .site-header a,
body.cm-theme .main-navigation a,
body.cm-theme .site-title a,
body.cm-theme .main-navigation .main-nav ul li a {
    color: var(--cm-text) !important;
}
body.cm-theme .main-navigation a:hover,
body.cm-theme .main-navigation .main-nav ul li a:hover {
    color: var(--cm-accent) !important;
}
body.cm-theme .site-footer,
body.cm-theme #colophon,
body.cm-theme .site-info {
    background-color: var(--cm-darkest) !important;
    color: var(--cm-text-muted) !important;
    border-top: 1px solid rgba(255,255,255,.06);
}
body.cm-theme .site-footer a,
body.cm-theme .site-info a {
    color: var(--cm-text-muted) !important;
}

/* Remove GP defaults on our pages */
body.cm-home-page .site-content,
body.cm-single-page .site-content,
body.cm-category-page .site-content {
    padding: 0 !important;
    margin: 0 auto !important;
    max-width: 100% !important;
}
body.cm-home-page .site-main,
body.cm-single-page .site-main,
body.cm-category-page .site-main {
    max-width: 100% !important;
    margin: 0 !important;
}
body.cm-home-page #primary,
body.cm-single-page #primary,
body.cm-category-page #primary {
    max-width: 100% !important;
    padding: 0 !important;
    margin: 0 !important;
}
body.cm-home-page .inside-article,
body.cm-single-page .inside-article,
body.cm-category-page .inside-article {
    padding: 0 !important;
    max-width: 100% !important;
}
body.cm-home-page .article-holder,
body.cm-single-page .article-holder,
body.cm-category-page .article-holder {
    max-width: 100% !important;
}
body.cm-home-page .separate-containers .inside-article,
body.cm-single-page .separate-containers .inside-article,
body.cm-category-page .separate-containers .inside-article {
    background-color: transparent !important;
    border: none !important;
    box-shadow: none !important;
    padding: 0 !important;
}
body.cm-home-page .separate-containers .site-main > *,
body.cm-category-page .separate-containers .site-main > * {
    background-color: transparent !important;
    border: none !important;
    box-shadow: none !important;
    margin-bottom: 0 !important;
}
body.cm-home-page .entry-header,
body.cm-home-page .entry-content > *:not(.cm-home),
body.cm-category-page .entry-header,
body.cm-home-page .post-image,
body.cm-home-page .entry-meta {
    display: none !important;
}
body.cm-home-page .generate-columns-container,
body.cm-home-page #content {
    max-width: 100% !important;
}

/* ========================================
   CONTAINER
   ======================================== */
.cm-container {
    max-width: var(--cm-container);
    margin: 0 auto;
    padding: 0 1.5rem;
}

/* ========================================
   CATEGORY BADGE
   ======================================== */
.cm-cat-badge {
    display: inline-block;
    font-size: .7rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .08em;
    color: var(--cm-accent);
    margin-bottom: .25rem;
}

/* ========================================
   HERO SECTION - Interactive stacked cards
   ======================================== */
.cm-hero {
    position: relative;
    padding: 4rem 0;
    min-height: 480px;
    display: flex;
    align-items: center;
}
.cm-hero__bg {
    position: absolute;
    inset: 0;
    background-size: cover;
    background-position: center;
    transition: background-image .6s ease;
    z-index: 0;
    border-radius: var(--cm-radius);
}
.cm-hero__bg-overlay {
    position: absolute;
    inset: 0;
    background: linear-gradient(90deg, rgba(25,28,32,.95) 0%, rgba(25,28,32,.85) 40%, rgba(25,28,32,.55) 100%);
    z-index: 1;
    border-radius: var(--cm-radius);
}
.cm-hero__grid {
    position: relative;
    z-index: 2;
    display: grid;
    grid-template-columns: 1fr 1.2fr;
    gap: 3rem;
    align-items: center;
}
.cm-hero__title {
    font-size: 2.5rem;
    font-weight: 900;
    line-height: 1.1;
    color: var(--cm-white);
    margin: 0 0 .5rem;
    text-shadow: 0 2px 10px rgba(0,0,0,.3);
}
.cm-hero__sub {
    color: var(--cm-text-muted);
    font-size: .95rem;
    margin-bottom: 1.5rem;
}
.cm-hero__small {
    display: flex;
    gap: .75rem;
    align-items: center;
    padding: .75rem 0;
    border-bottom: 1px solid rgba(255,255,255,.1);
    text-decoration: none;
    color: var(--cm-text);
    transition: opacity .2s;
}
.cm-hero__small:hover {
    opacity: .85;
    color: var(--cm-white);
}
.cm-hero__small-img {
    width: 80px;
    height: 60px;
    object-fit: cover;
    border-radius: var(--cm-radius-sm);
    flex-shrink: 0;
}
.cm-hero__small-text h3 {
    font-size: .85rem;
    font-weight: 600;
    margin: 0 0 .25rem;
    line-height: 1.3;
}

/* Stacked cards container */
.cm-hero__stack {
    position: relative;
    height: 380px;
    perspective: 1000px;
}

/* Individual stacked card */
.cm-hero__scard {
    position: absolute;
    display: flex;
    flex-direction: column;
    width: 260px;
    background: var(--cm-card-bg);
    border-radius: var(--cm-radius);
    overflow: hidden;
    text-decoration: none;
    color: var(--cm-text);
    box-shadow: 0 8px 30px rgba(0,0,0,.4);
    transition: all .4s cubic-bezier(.25,.8,.25,1);
    cursor: pointer;
}
.cm-hero__scard:hover {
    color: var(--cm-white);
}

/* Card positions: stacked with offset */
.cm-hero__scard[data-index="0"] {
    top: 10%;
    left: 0;
    z-index: 3;
    transform: rotate(-2deg);
}
.cm-hero__scard[data-index="1"] {
    top: 5%;
    left: 35%;
    z-index: 2;
    transform: rotate(1deg);
}
.cm-hero__scard[data-index="2"] {
    top: 15%;
    right: 0;
    z-index: 1;
    transform: rotate(3deg);
}

/* Active card: comes to front, larger, no rotation */
.cm-hero__scard--active {
    z-index: 10 !important;
    transform: rotate(0deg) scale(1.08) !important;
    box-shadow: 0 15px 50px rgba(0,0,0,.6);
}

.cm-hero__scard-img-wrap {
    overflow: hidden;
    aspect-ratio: 16/10;
}
.cm-hero__scard-img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
    transition: transform .4s;
}
.cm-hero__scard--active .cm-hero__scard-img {
    transform: scale(1.05);
}
.cm-hero__scard-body {
    padding: .75rem 1rem;
}
.cm-hero__scard-title {
    font-size: .85rem;
    font-weight: 700;
    margin: .2rem 0 0;
    line-height: 1.35;
    color: var(--cm-white);
}

/* ========================================
   SECTIONS
   ======================================== */
.cm-section {
    padding: 3.5rem 0;
    background: transparent;
    border-top: 1px solid rgba(255,255,255,.25);
}
.cm-section:first-of-type {
    border-top: none;
}
.cm-section--dark {
    background: transparent;
}
.cm-section--light {
    background: transparent;
}
.cm-section__header {
    margin-bottom: 2rem;
}
.cm-section__hashtag {
    font-size: .75rem;
    font-weight: 600;
    color: var(--cm-text-muted);
    text-transform: uppercase;
    letter-spacing: .08em;
}
.cm-section__title {
    font-size: 1.75rem;
    font-weight: 900;
    color: var(--cm-white);
    margin: .25rem 0 0;
    line-height: 1.2;
}

/* ========================================
   GRID LAYOUTS
   ======================================== */
.cm-grid--4 {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 1.5rem;
}
.cm-grid--2 {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 1.5rem;
}
.cm-grid--2x2 {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 1.5rem;
}
.cm-grid--sidebar3 {
    display: grid;
    grid-template-columns: 1fr 1fr 1fr 1fr;
    gap: 1.5rem;
}
.cm-grid--blog {
    display: grid;
    grid-template-columns: 1fr 350px;
    gap: 2.5rem;
    align-items: start;
}

/* ========================================
   CARDS
   ======================================== */
.cm-card__link {
    display: block;
    text-decoration: none;
    color: inherit;
    height: 100%;
    transition: transform .2s;
}
.cm-card__link:hover {
    transform: translateY(-3px);
    color: inherit;
}
.cm-card__img-wrap {
    border-radius: var(--cm-radius);
    overflow: hidden;
    margin-bottom: .75rem;
}
.cm-card__img {
    width: 100%;
    height: 180px;
    object-fit: cover;
    display: block;
    transition: transform .3s;
}
.cm-card__link:hover .cm-card__img {
    transform: scale(1.05);
}
.cm-card__body {
    padding: .25rem 0;
}
.cm-card__title {
    font-size: .95rem;
    font-weight: 700;
    margin: .25rem 0 .5rem;
    line-height: 1.35;
    color: var(--cm-white);
}
.cm-card__excerpt {
    font-size: .82rem;
    color: var(--cm-text-muted);
    line-height: 1.5;
    margin: 0 0 .5rem;
}
.cm-card__date {
    font-size: .75rem;
    color: var(--cm-text-muted);
    opacity: .7;
}

/* Card: compact (sidebar3 layout) */
.cm-card--compact .cm-card__img {
    height: 150px;
}

/* Card: large (2col layout) */
.cm-card--large .cm-card__img {
    height: 240px;
}

/* Card: horizontal */
.cm-card--horizontal .cm-card__link {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 1.25rem;
    align-items: center;
}
.cm-card--horizontal .cm-card__img-wrap {
    margin-bottom: 0;
}
.cm-card--horizontal .cm-card__img {
    height: 200px;
}

/* Card: blog list */
.cm-card--blog {
    padding-bottom: 2rem;
    margin-bottom: 2rem;
    border-bottom: 1px solid rgba(255,255,255,.06);
}
.cm-card--blog .cm-card__link {
    grid-template-columns: 280px 1fr;
}
.cm-card--blog .cm-card__img {
    height: 180px;
    border-radius: var(--cm-radius);
}
.cm-card--blog .cm-card__title {
    font-size: 1.1rem;
}

/* Sidebar desc (sidebar3 layout) */
.cm-sidebar-desc {
    padding: 1.5rem;
    border-radius: var(--cm-radius);
    background: var(--cm-card-bg);
    display: flex;
    align-items: center;
}
.cm-sidebar-desc p {
    font-size: .85rem;
    line-height: 1.6;
    color: var(--cm-text-muted);
    margin: 0;
}

/* ========================================
   SIDEBAR WIDGETS
   ======================================== */
.cm-blog-sidebar,
.cm-single__sidebar {
    position: sticky;
    top: 2rem;
}
.cm-widget {
    background: var(--cm-card-bg);
    border-radius: var(--cm-radius);
    padding: 1.5rem;
    margin-bottom: 1.5rem;
}
.cm-widget__title {
    font-size: 1.3rem;
    font-weight: 800;
    color: var(--cm-white);
    margin: .25rem 0 1rem;
}
.cm-widget__card {
    display: block;
    text-decoration: none;
    color: var(--cm-text);
    transition: opacity .2s;
}
.cm-widget__card:hover {
    opacity: .85;
    color: var(--cm-text);
}
.cm-widget__card-img {
    width: 100%;
    height: 160px;
    object-fit: cover;
    border-radius: var(--cm-radius-sm);
    margin-bottom: .75rem;
}
.cm-widget__card h4 {
    font-size: .9rem;
    font-weight: 600;
    margin: .25rem 0;
    line-height: 1.35;
}
.cm-widget__mini {
    display: flex;
    gap: .75rem;
    align-items: center;
    text-decoration: none;
    color: var(--cm-text);
    padding: .75rem 0;
    border-bottom: 1px solid rgba(255,255,255,.06);
    transition: opacity .2s;
}
.cm-widget__mini:last-child {
    border-bottom: none;
    padding-bottom: 0;
}
.cm-widget__mini:hover {
    opacity: .85;
    color: var(--cm-text);
}
.cm-widget__mini-img {
    width: 80px;
    height: 65px;
    object-fit: cover;
    border-radius: var(--cm-radius-sm);
    flex-shrink: 0;
}
.cm-widget__mini h4 {
    font-size: .8rem;
    font-weight: 600;
    margin: .15rem 0;
    line-height: 1.35;
}

/* ========================================
   SINGLE ARTICLE
   ======================================== */
.cm-single__hero {
    background: var(--cm-dark);
    padding: 3rem 0;
}
.cm-single__hero-inner {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 2.5rem;
    align-items: center;
}
.cm-single__hero-text .cm-cat-badge {
    text-decoration: none;
}
.cm-single__title {
    font-size: 2.5rem;
    font-weight: 700;
    color: var(--cm-white);
    margin: .75rem 0;
    line-height: 1.15;
    letter-spacing: -.01em;
}
.cm-single__date {
    font-size: .85rem;
    color: var(--cm-text-muted);
}
.cm-single__featured-img {
    width: 100%;
    height: 300px;
    object-fit: cover;
    border-radius: var(--cm-radius);
}
.cm-single__content-wrap {
    background: var(--cm-darker);
    padding: 3rem 0;
}
.cm-single__layout {
    display: grid;
    grid-template-columns: 1fr 350px;
    gap: 2.5rem;
    align-items: start;
}
.cm-single__excerpt {
    font-size: 1.05rem;
    font-weight: 500;
    color: var(--cm-text);
    line-height: 1.7;
    margin-bottom: 2rem;
    font-style: italic;
    border-left: 3px solid var(--cm-accent);
    padding-left: 1rem;
}
.cm-single__content {
    color: var(--cm-text);
    font-size: .95rem;
    line-height: 1.8;
}
.cm-single__content h2,
.cm-single__content h3,
.cm-single__content h4 {
    color: var(--cm-white);
    margin-top: 2.5rem;
    margin-bottom: .75rem;
    font-weight: 700;
    line-height: 1.25;
}
.cm-single__content h2 {
    font-size: 1.75rem;
    padding-bottom: .6rem;
    border-bottom: 2px solid rgba(77,184,164,.25);
}
.cm-single__content h3 {
    font-size: 1.35rem;
}
.cm-single__content h4 {
    font-size: 1.1rem;
}
.cm-single__content p {
    margin-bottom: 1.25rem;
    color: var(--cm-text);
}
.cm-single__content a {
    color: var(--cm-accent2);
    text-decoration: underline;
    text-decoration-color: rgba(78,184,164,.3);
}
.cm-single__content a:hover {
    color: var(--cm-white);
}
.cm-single__content img {
    border-radius: var(--cm-radius);
    margin: 1.5rem 0;
    max-width: 100%;
    height: auto;
}
.cm-single__content ul,
.cm-single__content ol {
    padding-left: 1.5rem;
    margin-bottom: 1.25rem;
}
.cm-single__content li {
    margin-bottom: .5rem;
    color: var(--cm-text);
}
.cm-single__content strong {
    color: var(--cm-white);
    font-weight: 600;
}
.cm-single__content blockquote {
    border-left: 3px solid var(--cm-accent);
    padding: 1rem 1.5rem;
    margin: 1.5rem 0;
    background: var(--cm-card-bg);
    border-radius: 0 var(--cm-radius-sm) var(--cm-radius-sm) 0;
    font-style: italic;
}

/* ========================================
   TABLE OF CONTENTS (TOC Plus)
   ======================================== */
#toc_container {
    background: var(--cm-card-bg) !important;
    border: 1px solid rgba(255,255,255,.08) !important;
    border-radius: var(--cm-radius) !important;
    padding: 1.5rem 2rem !important;
    margin: 2rem 0 !important;
    color: var(--cm-text) !important;
    box-shadow: 0 5px 30px rgba(0,0,0,.2);
    width: 100% !important;
}
#toc_container .toc_title {
    color: var(--cm-white) !important;
    font-weight: 800 !important;
    font-size: 1.1rem !important;
    margin-bottom: .5rem;
    display: flex;
    align-items: center;
    justify-content: space-between;
}
#toc_container .toc_toggle a {
    color: var(--cm-accent) !important;
    text-decoration: none !important;
    font-size: .82rem;
    font-weight: 500;
}
#toc_container .toc_toggle a:hover {
    color: var(--cm-white) !important;
}
#toc_container .toc_list {
    padding: 0 !important;
    margin: 0 !important;
}
#toc_container .toc_list > li {
    padding: .5rem 0;
    border-top: 1px solid rgba(255,255,255,.06);
    list-style-position: inside;
}
#toc_container .toc_list li:first-child {
    border-top: none;
}
#toc_container .toc_list a {
    color: var(--cm-text) !important;
    text-decoration: none !important;
    font-size: .88rem;
    transition: color .2s;
}
#toc_container .toc_list a:hover {
    color: var(--cm-accent) !important;
}
#toc_container .toc_list a:visited {
    color: var(--cm-text-muted) !important;
}
#toc_container .toc_list ul {
    margin-left: 1.25rem !important;
    margin-top: .25rem;
}
#toc_container .toc_list ul li {
    padding: .3rem 0;
}
#toc_container .toc_list ul li a {
    font-size: .82rem;
    color: var(--cm-text-muted) !important;
}
#toc_container .toc_list ul li a:hover {
    color: var(--cm-accent) !important;
}
/* Also style TOC when inside single content */
.cm-single__content #toc_container {
    margin: 2rem 0 2.5rem !important;
}

/* Tags */
.cm-single__tags {
    display: flex;
    flex-wrap: wrap;
    gap: .5rem;
    margin-top: 2rem;
    padding-top: 2rem;
    border-top: 1px solid rgba(255,255,255,.25);
}
.cm-tag {
    display: inline-block;
    padding: .35rem .85rem;
    background: var(--cm-card-bg);
    border-radius: 20px;
    font-size: .78rem;
    color: var(--cm-text-muted);
    text-decoration: none;
    transition: all .2s;
}
.cm-tag:hover {
    background: var(--cm-accent);
    color: var(--cm-darkest);
}

/* ========================================
   CATEGORY PAGE
   ======================================== */
.cm-category__hero {
    background: linear-gradient(180deg, var(--cm-darkest) 0%, var(--cm-darker) 100%);
    padding: 3.5rem 0 2.5rem;
    text-align: center;
    border-bottom: 1px solid rgba(255,255,255,.04);
}
.cm-category__label {
    font-size: .78rem;
    font-weight: 600;
    color: var(--cm-text-muted);
    text-transform: uppercase;
    letter-spacing: .2em;
    display: block;
    margin-bottom: .3rem;
}
.cm-category__title {
    font-size: 2.8rem;
    font-weight: 900;
    color: var(--cm-white);
    margin: .25rem 0 0;
    letter-spacing: -.01em;
}
/* Category page articles: more spacing, bigger titles */
.cm-category .cm-card--blog {
    padding-bottom: 2.5rem;
    margin-bottom: 2.5rem;
}
.cm-category .cm-card--blog .cm-card__link {
    grid-template-columns: 300px 1fr;
    gap: 1.5rem;
}
.cm-category .cm-card--blog .cm-card__img {
    height: 210px;
    border-radius: var(--cm-radius);
}
.cm-category .cm-card--blog .cm-card__title {
    font-size: 1.25rem;
    font-weight: 700;
    line-height: 1.3;
    margin-bottom: .6rem;
}
.cm-category .cm-card--blog .cm-card__excerpt {
    font-size: .88rem;
    line-height: 1.6;
    color: var(--cm-text-muted);
    margin-bottom: .6rem;
}
.cm-category .cm-card--blog .cm-cat-badge {
    margin-bottom: .4rem;
}
.cm-category .cm-card--blog .cm-card__date {
    font-size: .78rem;
}

/* Pagination */
.cm-pagination {
    margin-top: 2rem;
    padding-top: 2rem;
    border-top: 1px solid rgba(255,255,255,.06);
}
.cm-pagination .nav-links {
    display: flex;
    gap: .5rem;
    justify-content: center;
}
.cm-pagination .page-numbers {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 40px;
    height: 40px;
    padding: 0 .75rem;
    border-radius: var(--cm-radius-sm);
    background: var(--cm-card-bg);
    color: var(--cm-text);
    text-decoration: none;
    font-size: .85rem;
    font-weight: 600;
    transition: all .2s;
}
.cm-pagination .page-numbers.current,
.cm-pagination .page-numbers:hover {
    background: var(--cm-accent);
    color: var(--cm-darkest);
}
.cm-no-posts {
    text-align: center;
    padding: 3rem;
    color: var(--cm-text-muted);
    font-size: 1.1rem;
}

/* ========================================
   MEGA MENU
   ======================================== */
.cm-mega-overlay {
    display: none;
    position: fixed;
    inset: 0;
    background: rgba(0,0,0,.35);
    z-index: 998;
    backdrop-filter: blur(2px);
}
.cm-mega-overlay--active {
    display: block;
}
/* Bridge: invisible zone between nav and panel to prevent gap-flicker */
body.cm-theme .cm-mega-parent {
    position: relative;
}
body.cm-theme .cm-mega-parent::after {
    content: '';
    display: none;
    position: absolute;
    left: 0;
    right: 0;
    bottom: -12px;
    height: 12px;
}
body.cm-theme .cm-mega-parent:hover::after {
    display: block;
}
.cm-mega-panel {
    display: none;
    position: fixed;
    left: 50%;
    transform: translateX(-50%) translateY(-5px);
    width: 100%;
    max-width: var(--cm-container);
    z-index: 999;
    background: transparent;
    border-top: none;
    border-bottom: none;
    box-shadow: none;
    border-radius: 0;
    padding: 1.5rem;
    pointer-events: none;
    opacity: 0;
    transition: opacity .2s ease, transform .2s ease;
}
.cm-mega-panel--active {
    display: block;
    pointer-events: auto;
    opacity: 1;
    transform: translateX(-50%) translateY(0);
}
.cm-mega-panel__inner {
    display: grid;
    grid-template-columns: repeat(5, 1fr);
    gap: 1.25rem;
}
.cm-mega-card {
    display: block;
    text-decoration: none;
    color: var(--cm-text);
    transition: transform .2s;
}
.cm-mega-card:hover {
    transform: translateY(-3px);
    color: var(--cm-white);
}
.cm-mega-card__img-wrap {
    border-radius: var(--cm-radius-sm);
    overflow: hidden;
    margin-bottom: .6rem;
    aspect-ratio: 16/10;
}
.cm-mega-card__img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
    transition: transform .3s;
}
.cm-mega-card:hover .cm-mega-card__img {
    transform: scale(1.06);
}
.cm-mega-card__title {
    font-size: .82rem;
    font-weight: 700;
    line-height: 1.35;
    margin: 0 0 .3rem;
    color: var(--cm-white);
}
.cm-mega-card__date {
    font-size: .72rem;
    color: var(--cm-text-muted);
}

/* Hide GP featured image on front page */
body.cm-home-page .post-image,
body.cm-home-page .featured-image,
body.cm-home-page .inside-article > .post-image {
    display: none !important;
}

/* GP sub-menus: hide default when mega menu is active */
body.cm-theme .cm-mega-parent > ul.sub-menu {
    display: none !important;
}

/* ========================================
   RESPONSIVE
   ======================================== */
@media (max-width: 1024px) {
    .cm-mega-panel__inner {
        grid-template-columns: repeat(3, 1fr);
    }
    .cm-mega-panel__inner .cm-mega-card:nth-child(n+4) {
        display: none;
    }
    .cm-grid--4 {
        grid-template-columns: repeat(2, 1fr);
    }
    .cm-grid--sidebar3 {
        grid-template-columns: repeat(2, 1fr);
    }
    .cm-grid--blog {
        grid-template-columns: 1fr;
    }
    .cm-single__layout {
        grid-template-columns: 1fr;
    }
    .cm-blog-sidebar,
    .cm-single__sidebar {
        position: static;
    }
}
@media (max-width: 768px) {
    .cm-hero__grid {
        grid-template-columns: 1fr;
    }
    .cm-hero {
        min-height: auto;
        padding: 2.5rem 0;
    }
    .cm-hero__title {
        font-size: 1.6rem;
    }
    .cm-hero__stack {
        height: 300px;
    }
    .cm-hero__scard {
        width: 200px;
    }
    .cm-grid--4,
    .cm-grid--2,
    .cm-grid--2x2,
    .cm-grid--sidebar3 {
        grid-template-columns: 1fr;
    }
    .cm-card--horizontal .cm-card__link,
    .cm-card--blog .cm-card__link {
        grid-template-columns: 1fr !important;
    }
    .cm-card--horizontal .cm-card__img,
    .cm-card--blog .cm-card__img {
        height: 200px !important;
    }
    .cm-single__hero-inner {
        grid-template-columns: 1fr;
    }
    .cm-single__title {
        font-size: 1.5rem;
    }
    .cm-section__title {
        font-size: 1.4rem;
    }
    .cm-category__title {
        font-size: 1.8rem;
    }
    .cm-section {
        padding: 2.5rem 0;
    }
}
@media (max-width: 480px) {
    .cm-container {
        padding: 0 1rem;
    }
    .cm-hero {
        padding: 2rem 0;
    }
    .cm-hero__title {
        font-size: 1.4rem;
    }
    .cm-card__img {
        height: 160px;
    }
}

/* Hide all dates sitewide */
.cm-single__date,
.cm-card__date,
.cm-mega-card__date,
.entry-meta .posted-on {
    display: none !important;
}
