/* =====================================================
   Blog Master — Frontend CSS v4.1
   Design référence: archive blog moderne
   ===================================================== */

/* ══ CSS Custom Properties ══════════════════════════ */
.bm-wrapper {
    /* Colors — Cards */
    --bm-card-bg:              #ffffff;
    --bm-card-border:          rgba(0,0,0,.06);
    --bm-card-shadow:          0 2px 12px rgba(0,0,0,.07);
    --bm-card-shadow-hover:    0 8px 28px rgba(0,0,0,.12);
    --bm-card-radius:          16px;
    --bm-img-radius:           16px 16px 0 0;
    --bm-card-title:           #1a1a2e;
    --bm-card-text:            #6b7280;
    --bm-card-meta:            #9ca3af;
    --bm-card-hover:           #7c3aed;

    /* Colors — Category */
    --bm-cat-color:            #7c3aed;

    /* Colors — Insider */
    --bm-insider-bg:           #f59e0b;
    --bm-insider-text:         #ffffff;
    --bm-insider-border:       #f59e0b;
    --bm-insider-border-w:     2px;

    /* Colors — Tabs */
    --bm-tab-bg:               #ffffff;
    --bm-tab-text:             #374151;
    --bm-tab-border:           #e5e7eb;
    --bm-tab-active-bg:        #7c3aed;
    --bm-tab-active-text:      #ffffff;

    /* Colors — Pagination */
    --bm-pag-bg:               #7c3aed;
    --bm-pag-text:             #ffffff;

    /* Typography */
    --bm-font-title:           'Montserrat', -apple-system, BlinkMacSystemFont, sans-serif;
    --bm-font-body:            -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;

    /* Spacing */
    --bm-gap:                  24px;
    --bm-card-pad-v:           20px;
    --bm-card-pad-h:           20px;
    --bm-space-cat-title:      6px;
    --bm-space-title-meta:     12px;
    --bm-space-meta-excerpt:   10px;
    --bm-space-excerpt-cta:    16px;

    /* Hero */
    --bm-hero-min-h:           400px;
    --bm-hero-max-h:           520px;

    /* Dark mode */
    --bm-dark-card-bg:         #1e1e2e;
    --bm-dark-card-border:     rgba(255,255,255,.08);
    --bm-dark-card-title:      #e8e8f0;
    --bm-dark-card-text:       #a0a0c0;
    --bm-dark-bg-wrapper:      #12121e;

    width: 100%;
    font-family: var(--bm-font-body);
    box-sizing: border-box;
}

*, *::before, *::after { box-sizing: inherit; }

/* ══ Dark mode ══════════════════════════════════════ */
@media (prefers-color-scheme: dark) {
    .bm-wrapper--dark-auto {
        --bm-card-bg:           var(--bm-dark-card-bg);
        --bm-card-border:       var(--bm-dark-card-border);
        --bm-card-title:        var(--bm-dark-card-title);
        --bm-card-text:         var(--bm-dark-card-text);
        background-color:       var(--bm-dark-bg-wrapper);
    }
}
.bm-wrapper--dark-on {
    --bm-card-bg:    var(--bm-dark-card-bg);
    --bm-card-border:var(--bm-dark-card-border);
    --bm-card-title: var(--bm-dark-card-title);
    --bm-card-text:  var(--bm-dark-card-text);
    background-color:var(--bm-dark-bg-wrapper);
}

/* ══ Google Font loader (injected via PHP if selected) ══ */

/* ══ Toolbar (Search + Sort) ════════════════════════ */
.bm-toolbar {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 10px;
    margin-bottom: 20px;
}

.bm-search-wrap { position: relative; flex: 1 1 200px; min-width: 160px; }
.bm-search-wrap svg { position: absolute; left: 12px; top: 50%; transform: translateY(-50%); color: var(--bm-card-meta); pointer-events: none; }
.bm-search-input {
    width: 100%; padding: 9px 12px 9px 36px;
    border: 1.5px solid var(--bm-tab-border); border-radius: 30px;
    font-size: 14px; background: var(--bm-card-bg); color: var(--bm-card-text);
    font-family: var(--bm-font-body); outline: none;
    transition: border-color .18s, box-shadow .18s;
}
.bm-search-input:focus { border-color: var(--bm-tab-active-bg); box-shadow: 0 0 0 3px rgba(124,58,237,.12); }

.bm-sort-select {
    padding: 9px 14px; border: 1.5px solid var(--bm-tab-border); border-radius: 30px;
    font-size: 13px; background: var(--bm-card-bg); color: var(--bm-card-text);
    font-family: var(--bm-font-body); cursor: pointer; outline: none;
    transition: border-color .18s;
}
.bm-sort-select:focus { border-color: var(--bm-tab-active-bg); }

/* ══ Tabs / Filtres ═════════════════════════════════ */
.bm-tabs {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 8px;
    margin-bottom: 28px;
}

.bm-tab {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    padding: 7px 18px;
    border-radius: 30px;
    border: 1.5px solid var(--bm-tab-border);
    background: var(--bm-tab-bg);
    color: var(--bm-tab-text);
    font-size: 13px;
    font-weight: 500;
    cursor: pointer;
    transition: all .18s;
    font-family: inherit;
    white-space: nowrap;
    line-height: 1;
}
.bm-tab:hover { border-color: var(--bm-tab-active-bg); color: var(--bm-tab-active-bg); }
.bm-tab--active, .bm-tab[aria-selected="true"] {
    background: var(--bm-tab-active-bg);
    color: var(--bm-tab-active-text);
    border-color: var(--bm-tab-active-bg);
}
.bm-tab--insider.bm-tab--active,
.bm-tab--insider[aria-selected="true"] {
    background: var(--bm-insider-bg);
    border-color: var(--bm-insider-bg);
    color: var(--bm-insider-text);
}

/* Count bar */
.bm-count-bar { display: flex; justify-content: flex-end; margin-bottom: 16px; }
.bm-count-label { font-size: 13px; color: var(--bm-card-meta); }

/* ══ Grid ═══════════════════════════════════════════ */
.bm-grid {
    display: grid;
    gap: var(--bm-gap);
    margin-bottom: 40px;
    transition: opacity .18s;
}
.bm-grid--loading { opacity: .4; pointer-events: none; }

.bm-cols-1 { grid-template-columns: 1fr; }
.bm-cols-2 { grid-template-columns: repeat(2,1fr); }
.bm-cols-3 { grid-template-columns: repeat(3,1fr); }
.bm-cols-4 { grid-template-columns: repeat(4,1fr); }

/* ══ Layout HERO ════════════════════════════════════
   Première ligne = card pleine largeur
   Image à gauche, texte à droite
   ═══════════════════════════════════════════════════ */
.bm-grid--hero { display: flex; flex-direction: column; }

.bm-hero-card {
    display: flex;
    align-items: stretch;
    background: var(--bm-card-bg);
    border: 1px solid var(--bm-card-border);
    border-radius: var(--bm-card-radius);
    overflow: hidden;
    box-shadow: var(--bm-card-shadow);
    margin-bottom: var(--bm-gap);
    min-height: var(--bm-hero-min-h);
    max-height: var(--bm-hero-max-h);
    transition: box-shadow .22s, transform .22s;
}
.bm-hero-card:hover { box-shadow: var(--bm-card-shadow-hover); transform: translateY(-2px); }
.bm-hero-card--img-right { flex-direction: row-reverse; }
.bm-hero-card--insider {
    border-color: var(--bm-insider-border);
    border-width: var(--bm-insider-border-w);
}

/* Hero image */
.bm-hero-card__img {
    flex: 0 0 52%;
    position: relative;
    overflow: hidden;
}
.bm-hero-card__img img {
    width: 100%; height: 100%;
    object-fit: cover;
    display: block;
    transition: transform .4s ease;
}
.bm-hero-card:hover .bm-hero-card__img img { transform: scale(1.03); }

/* Hero body */
.bm-hero-card__body {
    flex: 1;
    display: flex;
    flex-direction: column;
    justify-content: center;
    padding: clamp(28px, 4vw, 52px);
}

.bm-hero-card__cat {
    display: inline-block;
    font-size: 11px;
    font-weight: 700;
    letter-spacing: .08em;
    text-transform: uppercase;
    color: var(--bm-cat-color);
    margin-bottom: var(--bm-space-cat-title);
}

.bm-hero-card__title {
    font-family: var(--bm-font-title);
    font-size: clamp(22px, 2.8vw, 34px);
    font-weight: 700;
    line-height: 1.2;
    color: var(--bm-card-title);
    margin: 0 0 var(--bm-space-title-meta);
}
.bm-hero-card__title a { color: inherit; text-decoration: none; }
.bm-hero-card__title a:hover { color: var(--bm-card-hover); }

.bm-hero-card__excerpt {
    font-size: 15px;
    line-height: 1.7;
    color: var(--bm-card-text);
    margin-bottom: var(--bm-space-excerpt-cta);
    display: -webkit-box;
    -webkit-line-clamp: 3;
    -webkit-box-orient: vertical;
    overflow: hidden;
}

.bm-hero-card__meta {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 8px;
    font-size: 13px;
    color: var(--bm-card-meta);
    margin-bottom: var(--bm-space-meta-excerpt);
}

.bm-hero-card__cta {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 10px 22px;
    border-radius: 30px;
    background: var(--bm-tab-active-bg);
    color: var(--bm-tab-active-text);
    font-size: 14px;
    font-weight: 600;
    text-decoration: none;
    align-self: flex-start;
    transition: opacity .18s, transform .18s;
}
.bm-hero-card__cta:hover { opacity: .88; transform: translateX(3px); }

/* Rest grid after hero */
.bm-rest-grid { display: grid; gap: var(--bm-gap); }

/* ══ Layout MAGAZINE ════════════════════════════════ */
.bm-grid--magazine .bm-card--featured { grid-column: span 2; }
.bm-grid--magazine .bm-card--featured .bm-card__thumb { aspect-ratio: 16/7; }
.bm-grid--magazine .bm-card--featured .bm-card__title { font-size: 20px; }

/* ══ Layout PORTRAIT ════════════════════════════════ */
.bm-grid--portrait.bm-cols-3 { grid-template-columns: repeat(3,1fr); grid-template-rows: auto auto; }
.bm-grid--portrait .bm-card--featured { grid-column: 1; grid-row: 1/3; display: flex; flex-direction: column; }
.bm-grid--portrait .bm-card--featured .bm-card__thumb-link { flex: 1; display: flex; flex-direction: column; }
.bm-grid--portrait .bm-card--featured .bm-card__thumb { flex: 1; aspect-ratio: auto; min-height: 300px; }

/* ══ Layout LISTE ═══════════════════════════════════ */
.bm-grid--list .bm-card { flex-direction: row; }
.bm-grid--list .bm-card__thumb-link { flex: 0 0 220px; }
.bm-grid--list .bm-card__thumb { height: 100%; aspect-ratio: auto; min-height: 140px; }
.bm-grid--list .bm-card__thumb img { border-radius: var(--bm-img-radius) 0 0 var(--bm-img-radius); }
.bm-grid--list .bm-card__thumb img { border-radius: 12px 0 0 12px; }

/* ══ Layout MASONRY ═════════════════════════════════ */
.bm-grid--masonry { display: block; column-gap: var(--bm-gap); }
.bm-grid--masonry.bm-cols-2 { column-count: 2; }
.bm-grid--masonry.bm-cols-3 { column-count: 3; }
.bm-grid--masonry.bm-cols-4 { column-count: 4; }
.bm-grid--masonry .bm-card { break-inside: avoid; display: inline-block; width: 100%; margin-bottom: var(--bm-gap); }

/* ══ Card BASE ══════════════════════════════════════ */
.bm-card {
    background: var(--bm-card-bg);
    border: 1px solid var(--bm-card-border);
    border-radius: var(--bm-card-radius);
    overflow: hidden;
    display: flex;
    flex-direction: column;
    box-shadow: var(--bm-card-shadow);
    transition: box-shadow .22s, transform .22s;
    position: relative;
    height: 100%;
}
.bm-card:hover {
    box-shadow: var(--bm-card-shadow-hover);
    transform: translateY(-3px);
}

/* Insider card: gold border */
.bm-card--insider {
    border-color: var(--bm-insider-border);
    border-width: var(--bm-insider-border-w);
}

/* ── Thumbnail ── */
.bm-card__thumb-link {
    display: block;
    overflow: hidden;
    text-decoration: none;
    flex-shrink: 0;
    border-radius: var(--bm-img-radius);
}
.bm-card__thumb {
    position: relative;
    aspect-ratio: 16/10;
    overflow: hidden;
}
.bm-card__thumb img {
    width: 100%; height: 100%;
    object-fit: cover;
    display: block;
    transition: transform .35s ease;
}
.bm-card:hover .bm-card__thumb img { transform: scale(1.05); }

/* Placeholder gradient (when no image) */
.bm-card__placeholder {
    width: 100%; height: 100%;
    display: flex;
    align-items: center;
    justify-content: center;
    background: linear-gradient(135deg,
        color-mix(in srgb, var(--bm-tab-active-bg) 12%, #f8f7ff),
        color-mix(in srgb, #ec4899 12%, #f8f7ff));
    color: rgba(124,58,237,.25);
}
.bm-card__placeholder svg { width: 44px; height: 44px; }

/* ── Insider badge ON image ── */
.bm-insider-badge {
    position: absolute;
    display: inline-flex;
    align-items: center;
    gap: 4px;
    padding: 4px 10px;
    border-radius: 20px;
    background: var(--bm-insider-bg);
    color: var(--bm-insider-text);
    font-size: 11px;
    font-weight: 700;
    z-index: 2;
    white-space: nowrap;
    box-shadow: 0 2px 8px rgba(0,0,0,.2);
    pointer-events: none;
    letter-spacing: .02em;
}

/* 8 positions sur l'image (position: absolute héritée) */
.bm-insider-badge--top-left      { top: 12px;    left: 12px;  }
.bm-insider-badge--top-center    { top: 12px;    left: 50%;   transform: translateX(-50%); }
.bm-insider-badge--top-right     { top: 12px;    right: 12px; }
.bm-insider-badge--middle-left   { top: 50%;     left: 12px;  transform: translateY(-50%); }
.bm-insider-badge--middle-right  { top: 50%;     right: 12px; transform: translateY(-50%); }
.bm-insider-badge--bottom-left   { bottom: 12px; left: 12px;  }
.bm-insider-badge--bottom-center { bottom: 12px; left: 50%;   transform: translateX(-50%); }
.bm-insider-badge--bottom-right  { bottom: 12px; right: 12px; }

/* Badge inline dans le corps de la carte (override position: absolute) */
.bm-insider-badge--inline {
    position: static;
    display: inline-flex;
    pointer-events: auto;
    align-self: flex-start;
    margin: 4px 0;
}

/* ── Card Body ── */
.bm-card__body {
    display: flex;
    flex-direction: column;
    flex: 1;
    padding: var(--bm-card-pad-v) var(--bm-card-pad-h);
}

/* Category: small uppercase colored text above title */
.bm-card__cat {
    display: block;
    font-size: 10px;
    font-weight: 700;
    letter-spacing: .08em;
    text-transform: uppercase;
    color: var(--bm-cat-color);
    margin-bottom: var(--bm-space-cat-title);
}

/* Title */
.bm-card__title {
    font-family: var(--bm-font-title);
    font-size: 16px;
    font-weight: 700;
    line-height: 1.35;
    color: var(--bm-card-title);
    margin: 0 0 var(--bm-space-title-meta);
}
.bm-card__title a { color: inherit; text-decoration: none; transition: color .18s; }
.bm-card__title a:hover { color: var(--bm-card-hover); }

/* Excerpt */
.bm-card__excerpt {
    font-size: 13.5px;
    line-height: 1.65;
    color: var(--bm-card-text);
    margin: 0 0 var(--bm-space-excerpt-cta);
    flex: 1;
    display: -webkit-box;
    -webkit-line-clamp: 3;
    -webkit-box-orient: vertical;
    overflow: hidden;
}

/* Footer */
.bm-card__footer {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 8px;
    margin-top: auto;
    padding-top: 12px;
    border-top: 1px solid rgba(0,0,0,.05);
}

.bm-card__meta {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 6px;
    font-size: 12px;
    color: var(--bm-card-meta);
}

.bm-card__author-wrap { display: inline-flex; align-items: center; gap: 5px; }
.bm-card__avatar { width: 22px; height: 22px; border-radius: 50%; object-fit: cover; }

.bm-card__date::before { content: '·'; margin-right: 6px; }

/* "Lire →" link */
.bm-card__read-link {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    font-size: 13px;
    font-weight: 600;
    color: var(--bm-card-hover);
    text-decoration: none;
    transition: gap .18s, opacity .18s;
    white-space: nowrap;
    flex-shrink: 0;
}
.bm-card__read-link:hover { gap: 8px; opacity: .8; }

/* Insider footer badge (replaces Lire →) */
.bm-card__insider-footer {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    font-size: 12px;
    font-weight: 700;
    color: var(--bm-insider-bg);
    white-space: nowrap;
    flex-shrink: 0;
}

/* ── Card HORIZONTAL ── */
.bm-card--horizontal { flex-direction: row; align-items: stretch; }
.bm-card--horizontal .bm-card__thumb-link { flex: 0 0 40%; max-width: 260px; border-radius: 12px 0 0 12px; }
.bm-card--horizontal .bm-card__thumb { height: 100%; aspect-ratio: auto; min-height: 130px; }
.bm-card--horizontal .bm-card__thumb img { border-radius: 12px 0 0 12px; }

/* ── Card COMPACT (no image) ── */
.bm-card--compact .bm-card__thumb-link { display: none; }

/* ══ Animations ════════════════════════════════════ */
.bm-anim--fade    { animation: bm-fade    .42s ease both; }
.bm-anim--slide-up{ animation: bm-slide   .42s ease both; }
.bm-anim--zoom    { animation: bm-zoom    .38s ease both; }
.bm-anim--stagger { animation: bm-slide   .38s ease both; }

@keyframes bm-fade  { from{opacity:0}              to{opacity:1} }
@keyframes bm-slide { from{opacity:0;transform:translateY(18px)} to{opacity:1;transform:none} }
@keyframes bm-zoom  { from{opacity:0;transform:scale(.95)}       to{opacity:1;transform:scale(1)} }

/* ══ No posts ══════════════════════════════════════ */
.bm-no-posts {
    grid-column: 1/-1;
    text-align: center;
    padding: 48px 20px;
    color: var(--bm-card-meta);
    font-size: 15px;
}

/* ══ Pagination ════════════════════════════════════ */
.bm-pagination {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 6px;
    flex-wrap: wrap;
    margin-top: 8px;
}

.bm-page-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 38px; height: 38px;
    border-radius: 50%;
    border: 1.5px solid var(--bm-tab-border);
    background: var(--bm-card-bg);
    color: var(--bm-card-text);
    font-size: 14px;
    cursor: pointer;
    transition: all .18s;
    font-family: inherit;
}
.bm-page-btn:hover,
.bm-page-btn--active {
    background: var(--bm-pag-bg);
    color: var(--bm-pag-text);
    border-color: var(--bm-pag-bg);
}
.bm-page-ellipsis { padding: 0 4px; color: var(--bm-card-meta); }

.bm-load-more-wrap { text-align: center; margin-top: 12px; }
.bm-load-more-btn {
    display: inline-flex; align-items: center; gap: 8px;
    padding: 12px 28px; border-radius: 30px;
    background: var(--bm-pag-bg); color: var(--bm-pag-text);
    border: none; font-size: 14px; font-weight: 600;
    cursor: pointer; transition: opacity .18s, transform .18s; font-family: inherit;
}
.bm-load-more-btn:hover { opacity: .88; transform: translateY(-1px); }
.bm-load-more-btn:disabled { opacity: .5; cursor: not-allowed; }

.bm-spinner {
    width: 16px; height: 16px;
    border: 2px solid rgba(255,255,255,.35);
    border-top-color: #fff;
    border-radius: 50%;
    animation: bm-spin .7s linear infinite;
    display: inline-block;
}
@keyframes bm-spin { to{transform:rotate(360deg)} }
.bm-sentinel { height: 1px; margin-top: -1px; }

/* ══ Responsive Hiding ═════════════════════════════ */
.bm-hide-excerpt    .bm-card__excerpt     { display: none; }
.bm-hide-author     .bm-card__author-wrap { display: none; }
.bm-hide-read-time  .bm-card__read-time   { display: none; }
.bm-hide-image      .bm-card__thumb-link  { display: none; }

/* ══ Responsive Media Queries ══════════════════════ */
@media (max-width: 1024px) {
    .bm-hero-card__title { font-size: clamp(18px, 2.5vw, 26px); }
    .bm-hero-card__excerpt { -webkit-line-clamp: 2; }
}

@media (max-width: 768px) {
    .bm-hero-card,
    .bm-hero-card--img-right { flex-direction: column; max-height: none; }
    .bm-hero-card__img { flex: 0 0 240px; }
    .bm-grid--portrait .bm-card--featured { grid-column: 1/-1; grid-row: auto; }
    .bm-card--horizontal { flex-direction: column; }
    .bm-card--horizontal .bm-card__thumb-link { flex: 0 0 auto; max-width: none; border-radius: 12px 12px 0 0; }
    .bm-card--horizontal .bm-card__thumb img { border-radius: 12px 12px 0 0; }
    .bm-toolbar { flex-direction: column; align-items: stretch; }
}

@media (max-width: 480px) {
    .bm-grid--masonry { column-count: 1 !important; }
    .bm-hero-card__title { font-size: 18px; }
    .bm-tabs { gap: 6px; }
    .bm-tab { padding: 6px 14px; font-size: 12px; }
}

/* ══ Accessibilité ═════════════════════════════════ */
:focus-visible { outline: 2px solid var(--bm-tab-active-bg); outline-offset: 2px; }
.bm-card__title a:focus-visible,
.bm-card__read-link:focus-visible,
.bm-hero-card__title a:focus-visible,
.bm-hero-card__cta:focus-visible { outline-offset: 3px; border-radius: 3px; }

@media (prefers-reduced-motion: reduce) {
    .bm-anim--fade, .bm-anim--slide-up, .bm-anim--zoom, .bm-anim--stagger { animation: none; }
    .bm-card, .bm-hero-card, .bm-card__thumb img, .bm-hero-card__img img { transition: none; }
}

/* ── Blog Master Paywall — login line ── */
.bm-pw-login-line {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 6px;
    color: rgba(255,255,255,.78);
    font-size: .85rem;
    flex-wrap: wrap;
}
.bm-pw-login-text { opacity: .85; }
