/* Actu page - layout, side navigation, cards, filters and responsive behavior */

/* -------------------------------------------------------------------------- */
/*   Generic elements                                                         */
/* -------------------------------------------------------------------------- */

section hr {
    border: none;
    border-top: 3px dashed var(--color-border);
    color: var(--color-border);
    overflow: visible;
    text-align: center;
    height: 5px;
}

section hr::after {
    background-color: var(--color-bg-primary);
    content: "marvinfm.fr";
    padding: 0 4px;
    position: relative;
    top: -15px;
}

/* -------------------------------------------------------------------------- */
/*   Page shell and main layout                                               */
/* -------------------------------------------------------------------------- */

.actu-page-shell {
    --actu-tablet-header-offset: 84px;
    --actu-mobile-header-offset: 72px;
    display: grid;
    grid-template-columns: minmax(220px, 280px) minmax(0, 1fr);
    gap: var(--spacing-lg);
    align-items: start;
    margin: 0 6vw auto var(--spacing-xl);
}

.actu-main-column {
    min-width: 0;
    border-left: 1px dotted var(--color-border);
    border-right: 1px dotted var(--color-border);
}

#actu-bottom {
    height: 1px;
}

/* -------------------------------------------------------------------------- */
/*   Hero and section wrappers                                                */
/* -------------------------------------------------------------------------- */

.actu-hero {
    padding: 96px var(--spacing-sm) 80px;
    background: linear-gradient(160deg, var(--color-bg-primary), var(--color-bg-secondary));
    border-bottom: 1px solid var(--color-card-border);
}

.actu-hero-content {
    max-width: 980px;
    margin: 0 auto;
    text-align: center;
}

.actu-hero-content.hero-content h1 {
    margin-bottom: var(--spacing-md);
    margin-top: 0;
    font-size: clamp(34px, 5vw, 56px);
}

.actu-hero-content.hero-content p {
    color: var(--color-text-secondary);
    font-size: 1.08rem;
    margin-bottom: 0;
}

.actu-section {
    max-width: 1280px;
    margin: var(--spacing-4xl) auto;
    padding: 0 var(--spacing-xl);
}

.actu-section-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--spacing-md);
    margin: var(--spacing-2xl) 0 var(--spacing-xl);
}

.actu-section-header h2 {
    margin: 0;
    font-size: clamp(26px, 3.5vw, 40px);
    text-align: left;
}

.actu-section-kicker {
    color: var(--color-text-secondary);
    font-size: 0.92rem;
}

/* -------------------------------------------------------------------------- */
/*   Side menu (desktop / tablet)                                             */
/* -------------------------------------------------------------------------- */

.actu-side-column {
    position: sticky;
    top: 92px;
    align-self: start;
    height: calc(100dvh - 92px - var(--spacing-lg));
    max-height: calc(100dvh - 92px - var(--spacing-lg));
    padding: var(--spacing-lg) 0 var(--spacing-3xl) var(--spacing-sm);
    overflow: hidden;
    z-index: 30;
}

.actu-side-menu {
    border: 1px solid var(--color-card-border);
    border-radius: var(--radius-md);
    background: linear-gradient(180deg, var(--color-card-bg), var(--color-bg-secondary));
    padding: var(--spacing-md);
    display: flex;
    flex-direction: column;
    gap: var(--spacing-md);
    max-height: 100%;
    overflow-y: auto;
    overscroll-behavior: contain;
}

.actu-side-menu-head h2 {
    margin: 0;
    font-size: 1.05rem;
    letter-spacing: 0.02em;
}

.actu-side-actions {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 8px;
}

.actu-side-action {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 38px;
    border: 1px solid var(--color-border);
    border-radius: var(--radius-sm);
    color: var(--color-text-primary);
    text-decoration: none;
    background: var(--color-bg-primary);
    transition: transform 0.2s ease, border-color 0.2s ease, background 0.2s ease;
}

.actu-side-action:hover,
.actu-side-action.is-active {
    transform: translateY(-1px);
    border-color: var(--color-text-secondary);
    background: var(--color-bg-secondary);
}

.actu-side-menu-list,
.actu-side-menu-category-list {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: 6px;
}

.actu-side-menu-category-list {
    border-left: 2px solid var(--color-border);
    margin-left: var(--spacing-md);
    padding-left: var(--spacing-sm);
}

.actu-side-link {
    display: block;
    width: 100%;
    text-decoration: none;
    color: var(--color-text-secondary);
    border: 1px solid transparent;
    border-radius: var(--radius-sm);
    padding: 8px 10px;
    transition: background 0.2s ease, color 0.2s ease, border-color 0.2s ease;
}

.actu-side-link:hover,
.actu-side-link.is-active {
    background: var(--color-bg-secondary);
    color: var(--color-text-primary);
    border-color: var(--color-border);
}

.actu-side-item-hidden {
    display: none;
}

/* -------------------------------------------------------------------------- */
/*   Side menu drawer controls (mobile)                                       */
/* -------------------------------------------------------------------------- */

.actu-side-drawer-handle,
.actu-side-drawer-backdrop,
.actu-side-menu-close {
    display: none;
}

/* -------------------------------------------------------------------------- */
/*   Grids and category masonry                                               */
/* -------------------------------------------------------------------------- */

.actu-grid {
    display: grid;
    gap: var(--spacing-lg);
}

.actu-grid-courses {
    grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
}

.actu-grid-news {
    grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
}

.actu-grid-news-list {
    grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
}

.actu-grid-info {
    grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
}

.actu-grid-categories {
    grid-template-columns: repeat(auto-fit, minmax(230px, 1fr));
}

.actu-category-block {
    margin: var(--spacing-md) 0 var(--spacing-3xl);
    padding: 0;
}

.actu-category-block:last-child {
    margin-bottom: 0;
}

.actu-category-title {
    margin: var(--spacing-md) 0;
    font-size: 1.4rem;
}

.actu-category-layout,
.actu-category-layout--alpha,
.actu-category-layout--beta,
.actu-category-layout--gamma {
    column-gap: var(--spacing-lg);
    column-count: 3;
}

.actu-category-layout .actu-card {
    display: inline-flex;
    width: 100%;
    margin: 0 0 var(--spacing-lg);
    break-inside: avoid;
    -webkit-column-break-inside: avoid;
    page-break-inside: avoid;
}

.actu-category-layout .actu-card:last-child {
    margin-bottom: 0;
}

/* -------------------------------------------------------------------------- */
/*   Cards, links and media                                                   */
/* -------------------------------------------------------------------------- */

.actu-card {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-md);
    padding: var(--spacing-md);
    border: 1px solid var(--color-card-border);
    border-radius: var(--radius-md);
    background: var(--color-card-bg);
}

.actu-card-link,
.actu-card-category {
    color: inherit;
    text-decoration: none;
    transition: transform 0.2s ease, border-color 0.2s ease;
}

.actu-card-link:hover,
.actu-card-category:hover {
    transform: translateY(-2px);
    border-color: var(--color-text-secondary);
}

.actu-card-clickable {
    position: relative;
    transition: transform 0.2s ease, border-color 0.2s ease;
}

.actu-card-clickable:hover {
    transform: translateY(-2px);
    border-color: var(--color-text-secondary);
}

.actu-card-main-link {
    position: absolute;
    inset: 0;
    z-index: 1;
    border-radius: var(--radius-md);
}

.actu-card-clickable>*:not(.actu-card-main-link) {
    position: relative;
    z-index: 2;
    cursor: pointer;
}

.actu-card h3,
.actu-list-item h3 {
    margin: 0;
    font-size: 1.2rem;
}

.actu-card h4 {
    margin: 0;
    font-size: 0.95rem;
    color: var(--color-text-secondary);
}

.actu-card p,
.actu-list-item p {
    margin: 0;
    color: var(--color-text-secondary);
}

.actu-card-image {
    display: block;
    width: 100%;
    height: auto;
    border-radius: var(--radius-sm);
    object-fit: cover;
    background: var(--color-bg-secondary);
}

.actu-card-image-featured,
.actu-card-image-list {
    aspect-ratio: 16 / 9;
}

.actu-card-image-compact {
    aspect-ratio: 16 / 7;
}

.actu-card-featured {
    min-height: 0;
}

.actu-card-compact,
.actu-card-more {
    min-height: 120px;
}

.actu-card-more {
    display: flex;
    flex-direction: column;
    justify-content: center;
    gap: var(--spacing-sm);
    border: 1px dashed var(--color-border);
    border-radius: var(--radius-md);
    padding: var(--spacing-md);
    text-decoration: none;
    color: var(--color-text-primary);
    background: var(--color-bg-secondary);
}

.actu-card-more:hover {
    border-color: var(--color-text-secondary);
}

.actu-news-list-card {
    min-height: 260px;
}

.actu-card-info {
    min-height: 220px;
}

/* -------------------------------------------------------------------------- */
/*   Lists, metadata and inline reviews                                       */
/* -------------------------------------------------------------------------- */

.actu-list {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-md);
}

.actu-list-item {
    display: flex;
    justify-content: space-between;
    gap: var(--spacing-lg);
    align-items: center;
    padding: var(--spacing-lg);
    border: 1px solid var(--color-border);
    border-radius: var(--radius-md);
    background: var(--color-bg-secondary);
}

.actu-card-meta {
    display: flex;
    align-items: center;
    gap: var(--spacing-sm);
    color: var(--color-text-secondary);
    font-size: 0.9rem;
}

.badge {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 4px 10px;
    border-radius: 999px;
    border: 1px solid var(--color-border);
    background: var(--color-bg-primary);
    color: var(--color-text-primary);
    font-size: 0.8rem;
    font-weight: 700;
}

.actu-rating {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    color: var(--color-text-secondary);
}

.actu-rating-inline {
    font-size: 0.9rem;
}

.actu-rating i {
    color: var(--color-text-primary);
}

.actu-source {
    font-size: 0.9rem;
}

.actu-source-link {
    color: var(--color-text-primary);
    text-decoration: underline;
}

.actu-source-link:hover {
    text-decoration-thickness: 2px;
}

.actu-course-comments {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-sm);
    padding: var(--spacing-md);
    border: 1px dashed var(--color-border);
    border-radius: var(--radius-md);
    background: var(--color-bg-secondary);
}

.actu-inline-comment {
    display: flex;
    flex-direction: column;
    gap: 6px;
    padding-bottom: var(--spacing-sm);
    border-bottom: 1px solid var(--color-border);
}

.actu-inline-comment:last-child {
    padding-bottom: 0;
    border-bottom: 0;
}

.actu-inline-comment p {
    font-size: 0.95rem;
}

.actu-inline-comment-meta {
    display: flex;
    align-items: center;
    gap: 6px;
    color: var(--color-text-secondary);
    font-size: 0.85rem;
}

/* -------------------------------------------------------------------------- */
/*   Filters and search panel                                                 */
/* -------------------------------------------------------------------------- */

.actu-search-section {
    margin-top: var(--spacing-xl);
}

.actu-filter-panel {
    border: 1px dashed var(--color-border);
    border-radius: var(--radius-md);
    padding: var(--spacing-md);
    background: var(--color-card-bg);
    display: flex;
    flex-direction: column;
    gap: var(--spacing-md);
}

.actu-filter-row {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: var(--spacing-sm);
}

.actu-filter-field {
    display: flex;
    flex-direction: column;
    gap: 6px;
}

.actu-filter-field--wide {
    grid-column: span 2;
}

.actu-filter-field span {
    font-size: 0.88rem;
    color: var(--color-text-secondary);
}

.actu-filter-field input,
.actu-filter-field select {
    width: 100%;
    min-height: 40px;
    border-radius: var(--radius-sm);
    border: 1px solid var(--color-border);
    background: var(--color-bg-secondary);
    color: var(--color-text-primary);
    padding: 0 10px;
}

.actu-filter-field input:focus,
.actu-filter-field select:focus {
    outline: 2px solid var(--color-border);
    outline-offset: 1px;
}

.actu-filter-actions {
    display: flex;
    flex-wrap: wrap;
    gap: var(--spacing-sm);
}

.actu-results-count {
    color: var(--color-text-secondary);
    font-size: 0.9rem;
}

/* -------------------------------------------------------------------------- */
/*    Empty and helper states                                                 */
/* -------------------------------------------------------------------------- */

.actu-empty {
    margin: 0;
    padding: var(--spacing-lg);
    border: 1px dashed var(--color-border);
    border-radius: var(--radius-md);
    color: var(--color-text-secondary);
    background: var(--color-bg-secondary);
}

.actu-empty-compact {
    padding: var(--spacing-sm);
    font-size: 0.9rem;
}

.actu-empty-results-state {
    margin-top: var(--spacing-md);
    border: 1px dashed var(--color-border);
    border-radius: var(--radius-md);
    background: var(--color-bg-secondary);
    padding: var(--spacing-lg);
    text-align: center;
    display: none;
    flex-direction: column;
    align-items: center;
    gap: var(--spacing-sm);
}

.actu-empty-results-state.is-visible {
    display: flex;
}

.actu-empty-results-illustration {
    width: 64px;
    height: 64px;
    object-fit: contain;
    opacity: 0.88;
}

.actu-empty-results-state h3 {
    margin: 0;
    font-size: 1.05rem;
}

.actu-empty-results-state p {
    margin: 0;
    color: var(--color-text-secondary);
}

.actu-item-hidden {
    display: none !important;
}

.actu-main-section-hidden,
.actu-category-block.actu-block-hidden {
    display: none;
}

/* -------------------------------------------------------------------------- */
/*    Responsive                                                              */
/* -------------------------------------------------------------------------- */

@media (max-width: 1200px) {
    .actu-page-shell {
        grid-template-columns: 230px minmax(0, 1fr);
        margin: 0 var(--radius-sm) auto var(--spacing-sm);
    }

    .actu-side-column {
        top: var(--actu-tablet-header-offset);
        height: calc(100dvh - var(--actu-tablet-header-offset) - var(--spacing-md));
        max-height: calc(100dvh - var(--actu-tablet-header-offset) - var(--spacing-md));
        padding: var(--spacing-2xl) var(--spacing-xs);
        overflow-y: auto;
        overflow-x: hidden;
    }

    .actu-side-menu {
        max-height: none;
        overflow: visible;
    }

    .actu-filter-row {
        grid-template-columns: repeat(3, minmax(0, 1fr));
    }

    .actu-filter-field--wide {
        grid-column: span 3;
    }

    .actu-category-layout,
    .actu-category-layout--alpha,
    .actu-category-layout--beta,
    .actu-category-layout--gamma {
        column-count: 2;
    }

    .actu-section-header {
        flex-direction: column;
        align-items: flex-start;
        gap: var(--spacing-sm);
    }

    .actu-section-header h2 {
        font-size: 1.8rem;
    }
}

@media (max-width: 992px) {
    .actu-page-shell {
        grid-template-columns: 210px minmax(0, 1fr);
    }

    .actu-filter-row {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .actu-filter-field--wide {
        grid-column: span 2;
    }

    .actu-list-item {
        align-items: flex-start;
        flex-direction: column;
    }

    .actu-category-layout,
    .actu-category-layout--alpha,
    .actu-category-layout--beta,
    .actu-category-layout--gamma {
        column-count: 1;
    }
}

@media (max-width: 768px) {
    .actu-page-shell {
        grid-template-columns: 1fr;
        margin: 0;
        gap: 0;
    }

    .actu-main-column {
        border-left: 0;
        border-right: 0;
    }

    .actu-side-column {
        position: fixed;
        top: var(--actu-mobile-header-offset);
        left: 0;
        bottom: var(--spacing-sm);
        width: min(86vw, 320px);
        height: calc(100dvh - var(--actu-mobile-header-offset) - var(--spacing-sm));
        max-height: calc(100dvh - var(--actu-mobile-header-offset) - var(--spacing-sm));
        padding: 0;
        transform: translateX(-105%);
        transition: transform 0.25s ease;
        z-index: 999;
        overflow: visible;
    }

    .actu-side-column.is-open {
        transform: translateX(0);
    }

    .actu-side-menu {
        height: 100%;
        max-height: none;
        border-radius: 0 var(--radius-md) var(--radius-md) 0;
        border-left: 0;
        padding-top: calc(var(--spacing-xl) + var(--spacing-sm));
        overflow-y: auto;
    }

    .actu-side-drawer-handle {
        position: fixed;
        left: 0;
        top: calc(var(--actu-mobile-header-offset) + ((100dvh - var(--actu-mobile-header-offset)) / 2));
        transform: translateY(-50%);
        z-index: 85;
        display: inline-flex;
        align-items: center;
        justify-content: center;
        width: 28px;
        height: 128px;
        border: 2px dashed var(--color-border);
        border-left: 0;
        border-radius: 0 var(--radius-md) var(--radius-md) 0;
        background: var(--color-card-bg);
        color: var(--color-accent);
        cursor: pointer;
    }

    body.actu-side-menu-open {
        overflow: hidden;
    }

    .actu-side-drawer-backdrop {
        position: fixed;
        inset: 0;
        z-index: 70;
        border: 0;
        background: rgba(0, 0, 0, 0.38);
        opacity: 0;
        pointer-events: none;
        transition: opacity 0.2s ease;
        display: block;
    }

    body.actu-side-menu-open .actu-side-drawer-backdrop {
        opacity: 1;
        pointer-events: auto;
    }

    .actu-side-menu-close {
        position: absolute;
        top: var(--spacing-sm);
        right: var(--spacing-sm);
        display: inline-flex;
        align-items: center;
        justify-content: center;
        width: 36px;
        height: 36px;
        border: 1px solid var(--color-border);
        border-radius: var(--radius-sm);
        background: var(--color-bg-primary);
        color: var(--color-text-primary);
        cursor: pointer;
    }

    .actu-filter-row {
        grid-template-columns: 1fr;
    }

    .actu-filter-field--wide {
        grid-column: span 1;
    }
}

@media (max-width: 640px) {
    .actu-section {
        padding: 0 var(--spacing-md);
    }

    .actu-hero {
        padding: 78px var(--spacing-md) 56px;
    }
}