/* ═══════════════════════════════════════════════════
   TENDANCES.FR — Thème magazine moderne
   Light mode · Playfair Display + Inter
═══════════════════════════════════════════════════ */

@import url('https://fonts.googleapis.com/css2?family=Playfair+Display:ital,wght@0,700;0,800;0,900;1,700;1,800&family=Inter:wght@400;500;600;700&display=swap');

/* ── TOKENS ── */
:root {
  /* Backgrounds */
  --bg:         #FFFFFF;
  --bg-off:     #F8F8F8;
  --bg-section: #F2F3F5;

  /* Typography */
  --ink:        #0A0A0A;
  --ink-2:      #2C2C2C;
  --ink-3:      #555555;
  --ink-4:      #909090;

  /* Brand */
  --red:        #C41E3A;
  --red-pale:   #FEF2F4;

  /* Categories */
  --c-sante:    #16A34A;
  --c-finance:  #1D4ED8;
  --c-tech:     #7C3AED;
  --c-insolite:      #EA580C;

  /* Catégories Korben-style */
  --c-cybersecurite: #DC2626;
  --c-ia:            #4F46E5;
  --c-open-source:   #D97706;
  --c-vie-privee:    #475569;
  --c-gafam:         #9F1239;
  --c-hardware:      #0D9488;
  --c-humour:        #D946EF;
  --c-sport:         #F59E0B;
  --c-musculation:   #EF4444;
  --c-fitness:       #F97316;
  --c-jeux:          #6366F1;
  --c-jeux-video:    #6366F1;
  --c-quotidien:     #16A34A;

  /* Structure */
  --border:     #E4E4E7;
  --shadow-sm:  0 1px 3px rgba(0,0,0,.08);
  --shadow-md:  0 4px 16px rgba(0,0,0,.10);
  --shadow-lg:  0 8px 32px rgba(0,0,0,.14);
  --radius:     8px;
  --max:        1200px;

  /* Fonts */
  --ff-head:    'Playfair Display', Georgia, 'Times New Roman', serif;
  --ff-body:    'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
}

/* ── RESET ── */
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
html { font-size: 16px; scroll-behavior: smooth; }
body {
  background: var(--bg-off);
  color: var(--ink);
  font-family: var(--ff-body);
  line-height: 1.65;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}
a { color: inherit; text-decoration: none; }
img { display: block; width: 100%; height: auto; object-fit: cover; }

/* ── READING PROGRESS BAR ── */
.reading-bar {
  position: fixed;
  top: 0; left: 0;
  width: 0%;
  height: 3px;
  background: linear-gradient(90deg, var(--red), #FF6B6B);
  z-index: 1000;
  transition: width .1s linear;
}

/* ── TICKER ── */
.ticker-wrap {
  background: var(--ink);
  color: #fff;
  height: 34px;
  display: flex;
  align-items: center;
  overflow: hidden;
  gap: 0;
  contain: layout style paint;
}

.ticker-label {
  background: var(--red);
  color: #fff;
  font-family: var(--ff-body);
  font-size: 0.65rem;
  font-weight: 700;
  letter-spacing: 1.5px;
  text-transform: uppercase;
  padding: 0 14px;
  height: 100%;
  display: flex;
  align-items: center;
  white-space: nowrap;
  flex-shrink: 0;
}

.ticker-viewport {
  flex: 1;
  overflow: hidden;
  height: 100%;
  display: flex;
  align-items: center;
}

.ticker-track {
  display: flex;
  align-items: center;
  white-space: nowrap;
  animation: ticker-scroll 28s linear infinite;
  font-size: 0.78rem;
  color: #ccc;
  padding-left: 24px;
  gap: 0;
  will-change: transform;
  backface-visibility: hidden;
}

.ticker-track span { padding-right: 16px; }

@keyframes ticker-scroll {
  0%   { transform: translateX(0); }
  100% { transform: translateX(-50%); }
}

/* ── HEADER ── */
.site-header {
  background: var(--bg);
  border-bottom: 2px solid var(--ink);
  position: sticky;
  top: 0;
  z-index: 200;
  box-shadow: var(--shadow-sm);
  transform: translateY(0);
  transition: transform 0.32s ease, box-shadow 0.32s ease;
}
.site-header.header--hidden {
  transform: translateY(-100%);
  box-shadow: none;
}

.header-inner {
  max-width: var(--max);
  margin: 0 auto;
  padding: 0 24px;
  display: flex;
  align-items: center;
  gap: 4px;
  height: 64px;
}

/* ── LOGO SVG + Wordmark ── */
.site-logo {
  display: flex;
  align-items: center;
  gap: 10px;
  flex-shrink: 0;
  text-decoration: none;
  color: var(--ink);
}
.logo-icon {
  width: 30px;
  height: 34px;
  flex-shrink: 0;
  display: block;
}
.logo-wordmark {
  font-family: var(--ff-body);
  font-weight: 800;
  font-size: 1.45rem;
  letter-spacing: -0.5px;
  line-height: 1;
  display: flex;
  align-items: baseline;
  gap: 0;
}
.logo-w-hex  { color: var(--ink); }
.logo-w-actu { color: var(--red); }

.site-nav {
  display: flex;
  align-items: center;
  gap: 4px;
  flex: 1;
}

.site-nav a:not(.nav-group-label) {
  font-size: 0.82rem;
  font-weight: 600;
  padding: 4px 10px;
  border-radius: 0;
  transition: color .15s;
  color: var(--ink-3, #555);
  position: relative;
}
.site-nav a:not(.nav-group-label)::after {
  content: '';
  position: absolute;
  bottom: -4px;
  left: 10px;
  right: 10px;
  height: 2px;
  border-radius: 2px;
  background: currentColor;
  transform: scaleX(0);
  transition: transform .2s;
  transform-origin: left;
}
.site-nav a:not(.nav-group-label):hover { color: var(--ink); }
.site-nav a:not(.nav-group-label):hover::after { transform: scaleX(1); }
.nav-sante:hover              { color: var(--c-sante) !important; }
.nav-finance:hover            { color: var(--c-finance) !important; }
.nav-tech:hover               { color: var(--c-tech) !important; }
.nav-insolite:hover           { color: var(--c-insolite) !important; }
.nav-cybersecurite:hover      { color: var(--c-cybersecurite) !important; }
.nav-ia:hover                 { color: var(--c-ia) !important; }
.nav-open-source:hover        { color: var(--c-open-source) !important; }
.nav-vie-privee:hover         { color: var(--c-vie-privee) !important; }
.nav-gafam:hover              { color: var(--c-gafam) !important; }
.nav-hardware:hover           { color: var(--c-hardware) !important; }
.nav-humour:hover             { color: var(--c-humour) !important; }

/* ── MEMBRE HEADER ── */
.header-member-zone {
  display: flex;
  align-items: center;
  gap: 6px;
  flex-shrink: 0;
  margin-left: auto;
}
.member-btn {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-size: 0.78rem;
  font-weight: 600;
  padding: 7px 14px;
  border-radius: 100px;
  text-decoration: none;
  transition: background .15s, color .15s, border-color .15s;
  white-space: nowrap;
  cursor: pointer;
}
.member-btn-label { display: inline; }
.member-btn--icon {
  width: 34px;
  height: 34px;
  padding: 0;
  justify-content: center;
  gap: 0;
  border-radius: 50%;
  flex-shrink: 0;
}
.member-btn--signin {
  color: var(--ink-3);
  border: 1.5px solid var(--border);
  background: transparent;
}
.member-btn--signin:hover {
  border-color: var(--ink);
  color: var(--ink);
}
.member-btn--signup {
  background: var(--red);
  color: #fff;
  border: 1.5px solid var(--red);
}
.member-btn--signup:hover {
  background: #a31830;
  border-color: #a31830;
}
.member-btn--account {
  color: var(--ink-3);
  border: 1.5px solid var(--border);
  background: transparent;
}
.member-btn--account:hover {
  background: var(--bg-section);
  color: var(--ink);
}
/* ── Icône compte mobile (icon-only, ≤900px) ── */
.mobile-account-btn {
  display: none;
  align-items: center;
  justify-content: center;
  width: 38px;
  height: 38px;
  border-radius: var(--radius);
  color: var(--ink-3);
  text-decoration: none;
  transition: color .15s, background .15s;
  flex-shrink: 0;
}
.mobile-account-btn:hover { color: var(--ink); background: var(--bg-section); }

@media (max-width: 900px) {
  .header-member-zone { display: none; }
  /* Pousse search + date + compte + hamburger vers la droite */
  .nav-search-btn { margin-left: auto; }
  /* Affiche l'icône compte */
  .mobile-account-btn { display: flex; }
}

/* ── MEMBRE SIDEBAR MOBILE ── */
.msidebar-member {
  display: flex;
  flex-direction: column;
  gap: 8px;
  padding: 12px 16px;
  border-bottom: 1px solid var(--border);
  flex-shrink: 0;
}
.msidebar-member-btn {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 7px;
  padding: 11px 14px;
  border-radius: 10px;
  font-size: 0.86rem;
  font-weight: 600;
  text-decoration: none;
  transition: background .12s, color .12s;
  min-height: 44px;
}
.msidebar-member-btn--signin {
  background: var(--bg-section);
  color: var(--ink-2);
  border: 1px solid var(--border);
}
.msidebar-member-btn--signin:hover { background: var(--border); }
.msidebar-member-btn--signup {
  background: var(--red);
  color: #fff;
}
.msidebar-member-btn--signup:hover { background: #a31830; }
.msidebar-member-btn--account {
  background: var(--bg-section);
  color: var(--ink-2);
  border: 1px solid var(--border);
}

.header-date {
  font-size: 0.75rem;
  color: var(--ink-4);
  text-transform: capitalize;
  white-space: nowrap;
  flex-shrink: 0;
}

/* ── PILLS (category badges) ── */
.pill {
  display: inline-flex;
  align-items: center;
  font-size: 0.65rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 1.2px;
  padding: 4px 12px;
  border-radius: 100px;
  background: var(--bg-section);
  color: var(--ink-3, #555);
}
.pill--sante    { background: #DCFCE7; color: #15803D; }
.pill--finance  { background: #DBEAFE; color: #1D4ED8; }
.pill--tech     { background: #EDE9FE; color: #6D28D9; }
.pill--insolite      { background: #FFEDD5; color: #C2410C; }
.pill--cybersecurite { background: #FEE2E2; color: #B91C1C; }
.pill--ia            { background: #E0E7FF; color: #3730A3; }
.pill--open-source   { background: #FEF3C7; color: #B45309; }
.pill--vie-privee    { background: #F1F5F9; color: #334155; }
.pill--gafam         { background: #FFE4E6; color: #9F1239; }
.pill--hardware      { background: #CCFBF1; color: #0F766E; }
.pill--humour        { background: #FAE8FF; color: #A21CAF; }

.pill-overlay {
  position: absolute;
  top: 14px;
  left: 14px;
  z-index: 2;
  box-shadow: 0 2px 8px rgba(0,0,0,.15);
}

/* ── GRADIENT BACKGROUNDS (category) ── */
.grad--sante    { background: linear-gradient(135deg, #064E3B 0%, #065F46 40%, #047857 100%); }
.grad--finance  { background: linear-gradient(135deg, #1E3A8A 0%, #1D4ED8 50%, #2563EB 100%); }
.grad--tech     { background: linear-gradient(135deg, #4C1D95 0%, #6D28D9 50%, #7C3AED 100%); }
.grad--insolite { background: linear-gradient(135deg, #7C2D12 0%, #C2410C 50%, #EA580C 100%); }
.grad--default       { background: linear-gradient(135deg, #7f1d1d 0%, #B91C1C 50%, var(--red) 100%); }
.grad--cybersecurite { background: linear-gradient(135deg, #450a0a 0%, #991b1b 50%, #DC2626 100%); }
.grad--ia            { background: linear-gradient(135deg, #1e1b4b 0%, #3730A3 50%, #4F46E5 100%); }
.grad--open-source   { background: linear-gradient(135deg, #451a03 0%, #92400E 50%, #D97706 100%); }
.grad--vie-privee    { background: linear-gradient(135deg, #0f172a 0%, #1E293B 50%, #475569 100%); }
.grad--gafam         { background: linear-gradient(135deg, #4c0519 0%, #881337 50%, #9F1239 100%); }
.grad--hardware      { background: linear-gradient(135deg, #042f2e 0%, #0F766E 50%, #0D9488 100%); }
.grad--humour        { background: linear-gradient(135deg, #701a75 0%, #a21caf 50%, #d946ef 100%); }

/* ── HERO ── */
.hero {
  max-width: var(--max);
  margin: 32px auto 0;
  padding: 0 24px;
}

.hero-link { display: block; }

.hero-card {
  display: grid;
  grid-template-columns: 1fr 1fr;
  min-height: 460px;
  border-radius: var(--radius);
  overflow: hidden;
  box-shadow: var(--shadow-lg);
  transition: transform .3s, box-shadow .3s;
  background: var(--ink);
}
.hero-card:hover {
  transform: translateY(-4px);
  box-shadow: 0 16px 48px rgba(0,0,0,.18);
}

.hero-visual {
  position: relative;
  overflow: hidden;
}
.hero-visual::after {
  content: '';
  position: absolute;
  inset: 0;
  background: linear-gradient(to right, rgba(0,0,0,.18) 0%, transparent 60%);
  pointer-events: none;
  z-index: 1;
}
.hero-img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform .5s;
}
.hero-card:hover .hero-img { transform: scale(1.04); }

.hero-gradient {
  width: 100%;
  height: 100%;
  position: relative;
  overflow: hidden;
}
.hero-grad-deco {
  position: absolute;
  inset: 0;
  background:
    radial-gradient(circle at 20% 80%, rgba(255,255,255,.06) 0%, transparent 50%),
    radial-gradient(circle at 80% 20%, rgba(255,255,255,.04) 0%, transparent 40%);
}
/* Big geometric accent */
.hero-gradient::after {
  content: '';
  position: absolute;
  bottom: -40px; right: -40px;
  width: 220px; height: 220px;
  border-radius: 50%;
  background: rgba(255,255,255,.06);
}
.hero-gradient::before {
  content: '';
  position: absolute;
  top: 20px; left: 20px;
  width: 80px; height: 80px;
  border: 2px solid rgba(255,255,255,.12);
  border-radius: 50%;
}

/* Default gradient when no tag */
.hero-card:not([class*="hero-cat--"]) .hero-gradient { background: linear-gradient(135deg, #1a1a2e, #16213e, #0f3460); }

.hero-body {
  background: var(--bg);
  padding: 40px 44px;
  display: flex;
  flex-direction: column;
  justify-content: center;
  gap: 20px;
}

.hero-meta-top {
  display: flex;
  align-items: center;
  gap: 12px;
}

.hero-reading-time {
  font-size: 0.72rem;
  color: var(--ink-4);
  font-weight: 500;
}

.hero-title {
  font-family: var(--ff-head);
  font-size: clamp(1.6rem, 2.8vw, 2.4rem);
  line-height: 1.18;
  color: var(--ink);
  font-weight: 900;
  letter-spacing: -0.5px;
}
.hero-link:hover .hero-title { color: var(--red); transition: color .2s; }

.hero-excerpt {
  font-size: 1rem;
  line-height: 1.65;
  color: var(--ink-3, #555);
  display: -webkit-box;
  -webkit-line-clamp: 3;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

.hero-meta-bottom {
  display: flex;
  align-items: center;
  justify-content: space-between;
  font-size: 0.8rem;
  color: var(--ink-4);
  border-top: 1px solid var(--border);
  padding-top: 16px;
}
.hero-cta {
  font-weight: 600;
  color: var(--red);
  font-size: 0.82rem;
  transition: letter-spacing .2s;
}
.hero-link:hover .hero-cta { letter-spacing: 0.5px; }

/* ── SECTION HEADS ── */
.section-head {
  display: flex;
  align-items: center;
  gap: 16px;
  margin-bottom: 24px;
}
.section-label {
  font-size: 0.65rem;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: 2px;
  color: var(--red);
  white-space: nowrap;
}
.section-rule {
  flex: 1;
  height: 1px;
  background: var(--border);
}

/* ── FEATURED SECTION ── */
.featured-section {
  max-width: var(--max);
  margin: 40px auto 0;
  padding: 0 24px;
}

.featured-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 24px;
}

.featured-card {
  border-radius: var(--radius);
  overflow: hidden;
  background: var(--bg);
  box-shadow: var(--shadow-sm);
  border: 1px solid var(--border);
  transition: transform .25s, box-shadow .25s;
}
.featured-card:hover {
  transform: translateY(-3px);
  box-shadow: var(--shadow-md);
}

.fcard-link { display: flex; flex-direction: column; height: 100%; }

.fcard-top {
  position: relative;
  aspect-ratio: 16/8;
  overflow: hidden;
}
.fcard-top img {
  width: 100%; height: 100%;
  object-fit: cover;
  transition: transform .4s;
}
.featured-card:hover .fcard-top img { transform: scale(1.05); }

/* Gradient placeholder for featured */
.fcard-deco {
  position: absolute;
  inset: 0;
  background:
    radial-gradient(circle at 70% 30%, rgba(255,255,255,.08) 0%, transparent 60%),
    radial-gradient(circle at 20% 70%, rgba(255,255,255,.05) 0%, transparent 40%);
}
.fcard-deco::after {
  content: '';
  position: absolute;
  right: -20px; bottom: -20px;
  width: 120px; height: 120px;
  border-radius: 50%;
  background: rgba(255,255,255,.06);
}

/* Default gradient for fcard */
.fcard-top:not([class*="grad--"]) { background: linear-gradient(135deg, #1a1a2e, #0f3460); }

.fcard-body {
  padding: 24px;
  display: flex;
  flex-direction: column;
  gap: 12px;
  flex: 1;
}

.fcard-title {
  font-family: var(--ff-head);
  font-size: clamp(1.05rem, 1.6vw, 1.3rem);
  line-height: 1.3;
  color: var(--ink);
  font-weight: 800;
  display: -webkit-box;
  -webkit-line-clamp: 3;
  -webkit-box-orient: vertical;
  overflow: hidden;
}
.featured-card:hover .fcard-title { color: var(--red); transition: color .2s; }

.fcard-excerpt {
  font-size: 0.88rem;
  color: var(--ink-3, #555);
  line-height: 1.6;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
  flex: 1;
}

.fcard-meta {
  display: flex;
  align-items: center;
  justify-content: space-between;
  font-size: 0.76rem;
  color: var(--ink-4);
  border-top: 1px solid var(--border);
  padding-top: 12px;
  margin-top: auto;
}
.fcard-time { font-weight: 500; }

/* ── MAIN POSTS GRID ── */
.main-section {
  max-width: var(--max);
  margin: 40px auto 48px;
  padding: 0 24px;
}

.posts-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 20px;
}

.post-card {
  background: var(--bg);
  border-radius: var(--radius);
  overflow: hidden;
  border: 1px solid var(--border);
  box-shadow: var(--shadow-sm);
  transition: transform .2s, box-shadow .2s;
}
.post-card:hover {
  transform: translateY(-3px);
  box-shadow: var(--shadow-md);
}

.pcard-link { display: flex; flex-direction: column; height: 100%; }

.pcard-accent {
  height: 4px;
  background: var(--border);
}
.accent--sante    { background: var(--c-sante); }
.accent--finance  { background: var(--c-finance); }
.accent--tech     { background: var(--c-tech); }
.accent--insolite { background: var(--c-insolite); }
.accent--default       { background: var(--red); }
.accent--cybersecurite { background: var(--c-cybersecurite); }
.accent--ia            { background: var(--c-ia); }
.accent--open-source   { background: var(--c-open-source); }
.accent--vie-privee    { background: var(--c-vie-privee); }
.accent--gafam         { background: var(--c-gafam); }
.accent--hardware      { background: var(--c-hardware); }
.accent--humour        { background: var(--c-humour); }

.pcard-body {
  padding: 20px;
  display: flex;
  flex-direction: column;
  gap: 10px;
  flex: 1;
}

.pcard-tag {
  font-size: 0.62rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 1.2px;
}
.tag--sante    { color: var(--c-sante); }
.tag--finance  { color: var(--c-finance); }
.tag--tech     { color: var(--c-tech); }
.tag--insolite      { color: var(--c-insolite); }
.tag--cybersecurite { color: var(--c-cybersecurite); }
.tag--ia            { color: var(--c-ia); }
.tag--open-source   { color: var(--c-open-source); }
.tag--vie-privee    { color: var(--c-vie-privee); }
.tag--gafam         { color: var(--c-gafam); }
.tag--hardware      { color: var(--c-hardware); }
.tag--humour        { color: var(--c-humour); }

.pcard-title {
  font-family: var(--ff-head);
  font-size: 1.02rem;
  line-height: 1.35;
  color: var(--ink);
  font-weight: 800;
  display: -webkit-box;
  -webkit-line-clamp: 3;
  -webkit-box-orient: vertical;
  overflow: hidden;
}
.post-card:hover .pcard-title { color: var(--red); transition: color .2s; }

.pcard-excerpt {
  font-size: 0.84rem;
  color: var(--ink-3, #555);
  line-height: 1.6;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
  flex: 1;
}

.pcard-meta {
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: 0.74rem;
  color: var(--ink-4);
  border-top: 1px solid var(--border);
  padding-top: 12px;
  margin-top: auto;
}

/* ── ARTICLE PAGE ── */
.article-container {
  min-height: 60vh;
}

.article-header {
  background: var(--bg);
  border-bottom: 1px solid var(--border);
  padding: 48px 0 40px;
}

.article-header-inner {
  max-width: 760px;
  margin: 0 auto;
  padding: 0 24px;
  display: flex;
  flex-direction: column;
  gap: 16px;
}

.article-breadcrumb {
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: 0.78rem;
  color: var(--ink-4);
}
.article-breadcrumb a:hover { color: var(--red); }
.article-breadcrumb span { color: var(--border); }

.article-title {
  font-family: var(--ff-head);
  font-size: clamp(1.9rem, 4.5vw, 3rem);
  line-height: 1.12;
  color: var(--ink);
  font-weight: 900;
  letter-spacing: -0.5px;
}

.article-deck {
  font-size: 1.15rem;
  color: var(--ink-3, #555);
  line-height: 1.6;
  font-style: italic;
  border-left: 3px solid var(--red);
  padding-left: 16px;
}

/* Category-tinted article header left border */
.aheader--sante    .article-deck { border-color: var(--c-sante); }
.aheader--finance  .article-deck { border-color: var(--c-finance); }
.aheader--tech     .article-deck { border-color: var(--c-tech); }
.aheader--insolite      .article-deck { border-color: var(--c-insolite); }
.aheader--cybersecurite .article-deck { border-color: var(--c-cybersecurite); }
.aheader--ia            .article-deck { border-color: var(--c-ia); }
.aheader--open-source   .article-deck { border-color: var(--c-open-source); }
.aheader--vie-privee    .article-deck { border-color: var(--c-vie-privee); }
.aheader--gafam         .article-deck { border-color: var(--c-gafam); }
.aheader--hardware      .article-deck { border-color: var(--c-hardware); }

.article-meta {
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: 0.8rem;
  color: var(--ink-4);
  padding-top: 8px;
}
.meta-sep { color: var(--border); }

.article-cover {
  max-width: 900px;
  margin: 0 auto;
  padding: 32px 24px 0;
}
.article-cover img {
  border-radius: var(--radius);
  box-shadow: var(--shadow-md);
  aspect-ratio: 16/9;
}

.article-body {
  max-width: 760px;
  margin: 0 auto;
  padding: 40px 24px 64px;
}

.article-content {
  font-size: 1.05rem;
  line-height: 1.82;
  color: var(--ink-2);
}

.article-content h2 {
  font-family: var(--ff-head);
  font-size: 1.55rem;
  font-weight: 800;
  color: var(--ink);
  margin: 44px 0 16px;
  line-height: 1.25;
  letter-spacing: -0.3px;
}

.article-content h3 {
  font-family: var(--ff-head);
  font-size: 1.2rem;
  font-weight: 700;
  color: var(--ink);
  margin: 32px 0 12px;
}

.article-content p { margin-bottom: 22px; }

.article-content ul,
.article-content ol {
  margin: 8px 0 22px 24px;
}
.article-content li { margin-bottom: 8px; }

.article-content a {
  color: var(--red);
  text-decoration: underline;
  text-decoration-color: rgba(196,30,58,.3);
  text-underline-offset: 2px;
}
.article-content a:hover { text-decoration-color: var(--red); }

.article-content blockquote {
  margin: 28px 0;
  padding: 20px 24px;
  border-left: 4px solid var(--red);
  background: var(--red-pale);
  border-radius: 0 var(--radius) var(--radius) 0;
  font-style: italic;
  color: var(--ink-2);
  font-size: 1.02rem;
}

.article-content strong { color: var(--ink); font-weight: 700; }

.article-content hr {
  border: none;
  border-top: 1px solid var(--border);
  margin: 36px 0;
}

/* Article footer */
.article-footer {
  margin-top: 48px;
  padding-top: 32px;
  border-top: 2px solid var(--border);
  display: flex;
  flex-direction: column;
  gap: 24px;
}

.article-tag-cta {
  background: var(--bg-section);
  border-radius: var(--radius);
  padding: 24px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
}
.article-tag-cta p { color: var(--ink-3, #555); font-size: 0.9rem; }

.tag-btn {
  display: inline-flex;
  align-items: center;
  padding: 10px 20px;
  border-radius: 100px;
  font-size: 0.82rem;
  font-weight: 700;
  background: var(--ink);
  color: #fff;
  white-space: nowrap;
  transition: opacity .15s;
}
.tag-btn:hover { opacity: 0.85; }
.tag-btn--sante    { background: var(--c-sante); }
.tag-btn--finance  { background: var(--c-finance); }
.tag-btn--tech     { background: var(--c-tech); }
.tag-btn--insolite      { background: var(--c-insolite); }
.tag-btn--cybersecurite { background: var(--c-cybersecurite); }
.tag-btn--ia            { background: var(--c-ia); }
.tag-btn--open-source   { background: var(--c-open-source); }
.tag-btn--vie-privee    { background: var(--c-vie-privee); }
.tag-btn--gafam         { background: var(--c-gafam); }
.tag-btn--hardware      { background: var(--c-hardware); }

.back-home {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-size: 0.84rem;
  font-weight: 600;
  color: var(--ink-3, #555);
  transition: color .15s;
}
.back-home:hover { color: var(--red); }

/* ── TAG PAGE ── */
.tag-hero {
  padding: 56px 24px 48px;
  background: var(--ink);
  color: #fff;
  text-align: center;
  position: relative;
  overflow: hidden;
}
.tag-hero::before {
  content: '';
  position: absolute;
  inset: 0;
  opacity: .6;
}
.tag-hero--sante    { background: linear-gradient(135deg, #064E3B, #16A34A); }
.tag-hero--finance  { background: linear-gradient(135deg, #1E3A8A, #2563EB); }
.tag-hero--tech     { background: linear-gradient(135deg, #4C1D95, #7C3AED); }
.tag-hero--insolite      { background: linear-gradient(135deg, #7C2D12, #EA580C); }
.tag-hero--cybersecurite { background: linear-gradient(135deg, #450a0a, #DC2626); }
.tag-hero--ia            { background: linear-gradient(135deg, #1e1b4b, #4F46E5); }
.tag-hero--open-source   { background: linear-gradient(135deg, #451a03, #D97706); }
.tag-hero--vie-privee    { background: linear-gradient(135deg, #0f172a, #475569); }
.tag-hero--gafam         { background: linear-gradient(135deg, #4c0519, #9F1239); }
.tag-hero--hardware      { background: linear-gradient(135deg, #042f2e, #0D9488); }

.tag-hero-inner {
  position: relative;
  z-index: 1;
  max-width: var(--max);
  margin: 0 auto;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 12px;
}
.tag-hero-label {
  font-size: 0.65rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 2px;
  opacity: .7;
}
.tag-hero-title {
  font-family: var(--ff-head);
  font-size: clamp(2.5rem, 6vw, 4rem);
  font-weight: 900;
  letter-spacing: -1px;
}
.tag-hero-desc {
  font-size: 1rem;
  opacity: .8;
  max-width: 480px;
}

/* ── PAGINATION ── */
.pagination {
  max-width: var(--max);
  margin: 0 auto 48px;
  padding: 0 24px;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 16px;
}

.pagination-btn {
  padding: 10px 24px;
  background: var(--bg);
  border: 1px solid var(--border);
  border-radius: 100px;
  font-size: 0.84rem;
  font-weight: 600;
  color: var(--ink-2);
  transition: background .15s, border-color .15s, color .15s;
  box-shadow: var(--shadow-sm);
}
.pagination-btn:hover {
  background: var(--ink);
  border-color: var(--ink);
  color: #fff;
}
.pagination-info {
  font-size: 0.78rem;
  color: var(--ink-4);
}

/* ── FOOTER ── */
.site-footer {
  background: var(--ink);
  color: #fff;
  padding: 28px 24px 16px;
  margin-top: 32px;
}

.footer-inner { max-width: var(--max); margin: 0 auto; }

.footer-top {
  display: grid;
  grid-template-columns: 1.5fr auto auto auto;
  gap: 32px;
  padding-bottom: 32px;
  border-bottom: 1px solid rgba(255,255,255,.1);
  margin-bottom: 24px;
}

.footer-logo {
  font-family: var(--ff-head);
  font-size: 1.8rem;
  font-weight: 900;
  margin-bottom: 8px;
}
.footer-logo span { color: var(--red); }

.footer-tagline {
  font-size: 0.85rem;
  color: rgba(255,255,255,.5);
  max-width: 340px;
}

.footer-nav {
  display: flex;
  flex-direction: column;
  gap: 5px;
  min-width: 110px;
}
.footer-nav h4 {
  font-size: 0.65rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 1.5px;
  color: rgba(255,255,255,.4);
  margin-bottom: 4px;
}
.footer-nav a {
  font-size: 0.82rem;
  color: rgba(255,255,255,.65);
  transition: color .15s;
}
.footer-nav a:hover { color: #fff; }

.footer-bottom {
  font-size: 0.76rem;
  color: rgba(255,255,255,.3);
  text-align: center;
  display: flex;
  align-items: center;
  justify-content: center;
  position: relative;
}

.footer-loma-badge {
  display: inline-flex;
  align-items: center;
  opacity: 0.18;
  transition: opacity 0.3s ease, transform 0.3s ease;
  border-radius: 50%;
  overflow: hidden;
  position: absolute;
  right: 0;
}
.footer-loma-badge img {
  display: block;
  width: 28px;
  height: 28px;
  object-fit: cover;
  border-radius: 50%;
  filter: grayscale(1) brightness(2);
}
.footer-loma-badge:hover {
  opacity: 0.7;
  transform: scale(1.15);
}
.footer-loma-badge:hover img {
  filter: none;
}

/* ── EMPTY STATE ── */
.empty-state {
  text-align: center;
  padding: 80px 24px;
  color: var(--ink-4);
  font-size: 1.1rem;
}

/* ── RESPONSIVE ── */
@media (max-width: 960px) {
  .posts-grid { grid-template-columns: repeat(2, 1fr); }

  .hero-card {
    grid-template-columns: 1fr;
    min-height: auto;
  }
  .hero-visual {
    aspect-ratio: 16/7;
  }
  .hero-gradient { aspect-ratio: 16/7; }
  .hero-body { padding: 28px 32px 32px; }

  .footer-top { grid-template-columns: 1fr 1fr; gap: 24px; }
}

@media (max-width: 680px) {
  .posts-grid { grid-template-columns: 1fr; }
  .featured-grid { grid-template-columns: 1fr; }
  .site-nav { display: none; }
  .header-date { display: none; }
  .header-inner { padding: 0 16px; }
  .hero { padding: 0 16px; }
  .hero-body { padding: 24px 20px 28px; }
  .featured-section,
  .main-section { padding: 0 16px; }
  .article-tag-cta { flex-direction: column; align-items: flex-start; }
  .ticker-wrap { display: none; }
}

/* ═══════════════════════════════════════════════════
   AD SLOTS — AdSense / Ezoic ready
═══════════════════════════════════════════════════ */

.ad-wrap {
  max-width: var(--max);
  margin: 0 auto;
  padding: 12px 24px;
  display: flex;
  justify-content: center;
}

.ad-wrap--article-top  { padding: 16px 24px 0; }
.ad-wrap--article-bottom { padding: 24px 0 0; }
/* Leaderboard homepage — zone visible même avant chargement AdSense */
.ad-slot--leaderboard {
  min-height: 90px;
  background: var(--bg-section);
  border: 1px dashed var(--border-dark, #C8C8CC);
  border-radius: 4px;
  justify-content: center;
}

.ad-slot {
  position: relative;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 4px;
  width: 100%;
}

.ad-label {
  font-size: 0.6rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 1px;
  color: var(--ink-4);
  align-self: flex-start;
}

/* Placeholder visuel (à supprimer quand le vrai code pub est branché) */
.ad-placeholder {
  display: flex;
  align-items: center;
  justify-content: center;
  background: var(--bg-section);
  border: 1px dashed var(--border-dark, #C8C8CC);
  border-radius: 4px;
  color: var(--ink-4);
  font-size: 0.75rem;
  width: 100%;
}

.ad-placeholder--wide {
  height: 90px;
  max-width: 728px;
}

.ad-placeholder--billboard {
  height: 120px;
  max-width: 970px;
}

.ad-placeholder--rect {
  height: 250px;
  max-width: 336px; /* responsive rect: 336x280 ou 300x250 */
  align-self: center;
}

/* Masquer les placeholders sur mobile si trop grands */
@media (max-width: 760px) {
  .ad-placeholder--wide    { max-width: 100%; height: 60px; }
  .ad-placeholder--billboard { max-width: 100%; height: 80px; }
}

/* ═══════════════════════════════════════════════════
   GUIDE D'ACHAT — styles spécifiques
═══════════════════════════════════════════════════ */

/* Pill guide */
.pill--guide {
  background: #FEF3C7;
  color: #92400E;
}

/* Badge inline dans la meta */
.guide-badge-inline {
  background: #FEF3C7;
  color: #92400E;
  font-size: 0.72rem;
  font-weight: 700;
  padding: 2px 8px;
  border-radius: 4px;
}

/* Post card avec badge guide */
.post-card--guide .pcard-accent { background: #D97706; }

.pcard-tags-row {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
}

.pcard-badge-guide {
  font-size: 0.6rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 1px;
  color: #92400E;
  background: #FEF3C7;
  padding: 2px 6px;
  border-radius: 3px;
}

/* Contenu guide d'achat — table comparatif */
.guide-content table {
  width: 100%;
  border-collapse: collapse;
  margin: 24px 0;
  font-size: 0.9rem;
  border-radius: var(--radius);
  overflow: hidden;
  box-shadow: var(--shadow-sm);
}

.guide-content thead {
  background: var(--ink);
  color: #fff;
}

.guide-content th {
  padding: 12px 16px;
  text-align: left;
  font-size: 0.78rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.8px;
}

.guide-content td {
  padding: 12px 16px;
  border-bottom: 1px solid var(--border);
  vertical-align: top;
  line-height: 1.5;
}

.guide-content tbody tr:nth-child(even) {
  background: var(--bg-off);
}
.guide-content tbody tr:hover {
  background: #F0F4FF;
}

/* Headers guide */
.guide-header {
  background: var(--bg);
  border-bottom: 1px solid var(--border);
  padding: 48px 0 40px;
}

.guide-body { max-width: 860px; }

/* Disclaimer */
.guide-disclaimer {
  background: #FFFBEB;
  border: 1px solid #FDE68A;
  border-radius: var(--radius);
  padding: 14px 18px;
  font-size: 0.82rem;
  color: #78350F;
  margin-bottom: 16px;
}

/* Pros/cons dans le guide (générés par IA avec ✅ ❌) */
.guide-content ul {
  margin: 8px 0 16px 0;
  padding-left: 0;
  list-style: none;
}
.guide-content ul li {
  padding: 4px 0;
  font-size: 0.92rem;
  line-height: 1.55;
  padding-left: 0;
}

/* Sections produits dans le guide */
.guide-content h2 {
  margin-top: 40px;
  padding-top: 20px;
  border-top: 2px solid var(--border);
}
.guide-content h2:first-of-type {
  border-top: none;
  padding-top: 0;
}

/* Highlight premier produit (meilleur choix) */
.guide-content h2:nth-of-type(4),
.guide-content h2:nth-of-type(5),
.guide-content h2:nth-of-type(6) {
  position: relative;
}

/* ── NAV GUIDES ── */
.nav-sep {
  color: var(--border);
  font-size: 0.7rem;
  padding: 0 2px;
  flex-shrink: 0;
}
.nav-guides {
  background: #FEF3C7;
  color: #92400E !important;
  border-radius: 4px;
  padding: 4px 12px !important;
  font-weight: 700 !important;
  font-size: 0.78rem !important;
  transition: background .15s !important;
  white-space: nowrap;
}
.nav-guides:hover {
  background: #FDE68A !important;
  color: #78350F !important;
}
/* Guides pill ne prend pas le underline effect */
.nav-guides::after { display: none; }

/* ── Logiciels & Apps nav pilier ── */
.nav-logiciels:hover { color: var(--c-ia) !important; }
.nav-group--logiciels .nav-dropdown { border-top: 3px solid var(--c-ia); }
.nav-group--logiciels.is-open .nav-group-label { color: var(--c-ia) !important; }

/* ── Cyber nav group ── */
.nav-group--cyber .nav-dropdown { border-top: 3px solid var(--c-cybersecurite); }
.nav-group--cyber.is-open .nav-group-label { color: var(--c-cybersecurite) !important; }
.nav-group-label.nav-cybersecurite:hover { color: var(--c-cybersecurite) !important; }

/* ── Hardware nav group ── */
.nav-group--hardware .nav-dropdown { border-top: 3px solid var(--c-hardware); }
.nav-group--hardware.is-open .nav-group-label { color: var(--c-hardware) !important; }
.nav-group-label.nav-hardware:hover { color: var(--c-hardware) !important; }

/* ── "Voir tout" link in dropdowns ── */
.nav-voir-tout {
  font-style: italic;
  color: var(--ink-3, #888) !important;
  font-weight: 500 !important;
  font-size: 0.8rem !important;
}
.nav-voir-tout:hover { color: var(--red) !important; }
.nav-voir-tout::before { display: none !important; }

/* ── Mobile sidebar voir tout + new data-colors ── */
.msidebar-voir-tout {
  font-style: italic;
  color: var(--ink-3, #888) !important;
  font-size: 0.85rem;
}
.msidebar-group[data-color="cyber"].is-open    .msidebar-cat-btn { color: var(--c-cybersecurite); background: #fef2f2; }
.msidebar-group[data-color="hardware"].is-open .msidebar-cat-btn { color: var(--c-hardware);      background: #f0fdfa; }
.msidebar-group[data-color="guides"].is-open   .msidebar-cat-btn { color: var(--red);             background: #fff1f2; }

/* ── Quotidien nav group ── */
.nav-group--quotidien .nav-dropdown { border-top: 3px solid var(--c-quotidien); }
.nav-quotidien:hover { color: var(--c-quotidien) !important; }
.nav-group--quotidien.is-open .nav-group-label { color: var(--c-quotidien) !important; }
.nav-group-label.nav-quotidien:hover { color: var(--c-quotidien) !important; }
.nav-dropdown .nav-quotidien:hover::before { background: var(--c-quotidien); }

/* ── Direct nav items (no dropdown) ── */
.nav-item {
  display: flex;
  align-items: center;
}
.nav-item > .nav-direct {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  font-size: 0.88rem;
  font-weight: 700;
  padding: 6px 10px;
  border-radius: 6px;
  color: var(--ink-2, #444);
  text-decoration: none;
  white-space: nowrap;
  letter-spacing: 0.02em;
  text-transform: uppercase;
  transition: color .15s, background .15s;
}
.nav-item > .nav-direct:hover { background: var(--bg-section); }
.nav-item > .nav-direct.nav-cybersecurite:hover { color: var(--c-cybersecurite) !important; }
.nav-item > .nav-direct.nav-hardware:hover { color: var(--c-hardware) !important; }
.nav-item > .nav-direct.nav-jeux-video:hover { color: var(--c-jeux-video) !important; }
.nav-item--guides > .nav-direct {
  color: var(--red, #C41E3A);
  background: rgba(196,30,58,0.07);
}
.nav-item--guides > .nav-direct:hover { background: rgba(196,30,58,0.15) !important; }

/* ── Mobile sidebar direct links ── */
.msidebar-direct { list-style: none; }
.msidebar-direct-link {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 13px 18px;
  font-size: 0.95rem;
  font-weight: 600;
  color: var(--ink-2, #444);
  text-decoration: none;
  border-bottom: 1px solid var(--border, #eee);
  transition: background .15s, color .15s;
}
.msidebar-direct-link:hover { background: var(--bg-section); }
.msidebar-direct--cybersecurite:hover { color: var(--c-cybersecurite) !important; }
.msidebar-direct--hardware:hover { color: var(--c-hardware) !important; }
.msidebar-direct--jeux:hover { color: var(--c-jeux-video) !important; }
.msidebar-direct--guides {
  color: var(--red, #C41E3A) !important;
  background: rgba(196,30,58,0.05);
}
.msidebar-direct--guides:hover { background: rgba(196,30,58,0.12) !important; }
.msidebar-group[data-color="quotidien"].is-open .msidebar-cat-btn { color: var(--c-quotidien); background: #f0fdf4; }

/* ── Dropdown items manquants ── */
.nav-dropdown .nav-jeux-video:hover        { color: var(--c-jeux-video) !important; }
.nav-dropdown .nav-jeux-video:hover::before { background: var(--c-jeux-video); }
.nav-dropdown .nav-science:hover           { color: var(--c-open-source) !important; }
.nav-dropdown .nav-science:hover::before   { background: var(--c-open-source); }

/* ── Gondole logiciels + jeux ── */
.gondole--logiciels .gondole-title { color: var(--c-ia); }
.gondole--jeux .gondole-title { color: var(--c-jeux-video); }
.grad--jeux { background: linear-gradient(135deg, var(--c-jeux-video), #4338CA); }
.grad--vie-privee { background: linear-gradient(135deg, var(--c-vie-privee), #334155); }

/* ── CODE INLINE (style Korben) ── */
.article-content code {
  background: var(--bg-section);
  border: 1px solid var(--border);
  border-radius: 4px;
  padding: 2px 6px;
  font-family: 'Fira Code', 'Courier New', monospace;
  font-size: 0.87em;
  color: var(--c-ia);
  white-space: nowrap;
}
.article-content pre {
  background: var(--ink);
  color: #e2e8f0;
  border-radius: var(--radius);
  padding: 16px 20px;
  overflow-x: auto;
  margin: 20px 0;
  font-size: 0.88rem;
  line-height: 1.65;
}
.article-content pre code {
  background: none;
  border: none;
  padding: 0;
  color: inherit;
  font-size: inherit;
  white-space: pre;
}

/* ── NAV — overflow: visible sur le conteneur nav pour que les dropdowns ne soient pas clippés ── */
/* min-width:0 empêche la nav de pousser les boutons hors du header */
.site-nav {
  overflow: visible !important;
  flex-wrap: nowrap !important;
  min-width: 0;
}
/* "Plus ▾" dropdown aligné à droite pour éviter le débordement hors écran */
.nav-dropdown--plus {
  left: auto;
  right: 0;
  transform: translateY(-8px) scale(0.97);
  min-width: 200px;
}
.nav-group--plus:hover .nav-dropdown--plus,
.nav-group--plus.is-open .nav-dropdown--plus {
  transform: translateY(0) scale(1);
}
/* Séparateur dd-head suivant un autre (pas de double bordure) */
.nav-dropdown li.dd-head + li.dd-head {
  margin-top: 4px;
}
/* Semantic list reset */
.nav-list {
  list-style: none;
  margin: 0; padding: 0;
  display: flex;
  align-items: center;
  gap: 0;
}
.nav-list > li { list-style: none; }
/* Dropdown list reset */
.nav-dropdown { list-style: none; padding-left: 0; }
.nav-dropdown li { list-style: none; }
/* dd-head as <li> */
.nav-dropdown li.dd-head {
  display: block;
  padding: 8px 16px 6px;
  font-size: 0.7rem;
  font-weight: 700;
  letter-spacing: .08em;
  text-transform: uppercase;
  border-bottom: 1px solid var(--border);
  margin-bottom: 4px;
}
/* nav-sep as <li> */
li.nav-sep {
  color: var(--ink-4);
  font-size: 0.75rem;
  padding: 0 4px;
  user-select: none;
}

/* Couleurs catégories Korben dans la nav */
.nav-cybersecurite:hover { color: var(--c-cybersecurite) !important; }
.nav-ia:hover            { color: var(--c-ia) !important; }
.nav-open-source:hover   { color: var(--c-open-source) !important; }
.nav-vie-privee:hover    { color: var(--c-vie-privee) !important; }
.nav-gafam:hover         { color: var(--c-gafam) !important; }
.nav-hardware:hover      { color: var(--c-hardware) !important; }

/* ── DROPDOWN NAV ── */
.nav-group {
  position: relative;
  display: flex;
  align-items: center;
}

.nav-group-label {
  font-size: 0.88rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  padding: 6px 10px;
  color: var(--ink-2);
  cursor: pointer;
  display: flex;
  align-items: center;
  gap: 3px;
  border-radius: 6px;
  transition: color .15s, background .15s;
  white-space: nowrap;
}
.nav-group-label:hover,
.nav-group.is-open .nav-group-label { background: var(--bg-section); }

.nav-caret {
  font-size: 0.5rem;
  opacity: .55;
  transition: transform .22s cubic-bezier(.4,0,.2,1);
  display: inline-block;
}
.nav-group:hover .nav-caret,
.nav-group.is-open .nav-caret { transform: rotate(180deg); opacity: 1; }

/* Dropdown panel */
.nav-dropdown {
  position: absolute;
  top: calc(100% + 8px);
  left: 50%;
  transform: translateX(-50%) translateY(-8px) scale(0.97);
  background: var(--bg);
  border: 1px solid var(--border);
  border-radius: 12px;
  padding: 6px 0 8px;
  min-width: 220px;
  box-shadow: 0 8px 32px rgba(0,0,0,.13), 0 2px 8px rgba(0,0,0,.06);
  opacity: 0;
  visibility: hidden;
  transition: opacity .2s cubic-bezier(.4,0,.2,1),
              transform .2s cubic-bezier(.4,0,.2,1),
              visibility .2s;
  z-index: 600;
  overflow: hidden;
}
.nav-group:hover .nav-dropdown,
.nav-group.is-open .nav-dropdown {
  opacity: 1;
  visibility: visible;
  transform: translateX(-50%) translateY(0) scale(1);
}

/* Colored top accent per category */
.nav-group--tech     .nav-dropdown { border-top: 3px solid var(--c-tech); }
.nav-group--sante    .nav-dropdown { border-top: 3px solid var(--c-sante); }
.nav-group--finance  .nav-dropdown { border-top: 3px solid var(--c-finance); }
.nav-group--insolite .nav-dropdown { border-top: 3px solid var(--c-insolite); }
.nav-group--humour   .nav-dropdown { border-top: 3px solid var(--c-humour); }
.nav-group--sport    .nav-dropdown { border-top: 3px solid var(--c-sport); }
.nav-group--jeux     .nav-dropdown { border-top: 3px solid var(--c-jeux); }

/* Dropdown section header */
.dd-head {
  padding: 8px 16px 6px;
  font-size: 0.7rem;
  font-weight: 700;
  letter-spacing: .08em;
  text-transform: uppercase;
  color: var(--ink-4);
  border-bottom: 1px solid var(--border);
  margin-bottom: 4px;
}
.nav-group--tech     .dd-head { color: var(--c-tech); }
.nav-group--sante    .dd-head { color: var(--c-sante); }
.nav-group--finance  .dd-head { color: var(--c-finance); }
.nav-group--insolite .dd-head { color: var(--c-insolite); }
.nav-group--humour   .dd-head { color: var(--c-humour); }
.nav-group--sport    .dd-head { color: var(--c-sport); }
.nav-group--jeux     .dd-head { color: var(--c-jeux); }
.nav-dropdown li.dd-sep {
  height: 1px;
  background: var(--border);
  margin: 4px 12px;
}
.nav-shorts-dd { color: var(--red) !important; font-weight: 700 !important; }

/* Dropdown links */
.nav-dropdown a {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 9px 16px;
  font-size: 0.83rem;
  font-weight: 500;
  color: var(--ink-3);
  transition: background .12s, color .12s, padding-left .12s;
  position: relative;
}
.nav-dropdown a::after { display: none; }
.nav-dropdown a::before {
  content: '';
  width: 6px; height: 6px;
  border-radius: 50%;
  background: var(--border);
  flex-shrink: 0;
  transition: background .12s, transform .12s;
}
.nav-dropdown a:hover {
  background: var(--bg-section);
  color: var(--ink);
  padding-left: 20px;
}
.nav-dropdown a:hover::before { transform: scale(1.4); }

/* Per-link dot + text colors on hover */
.nav-dropdown .nav-cybersecurite:hover { color: var(--c-cybersecurite) !important; }
.nav-dropdown .nav-cybersecurite:hover::before { background: var(--c-cybersecurite); }
.nav-dropdown .nav-ia:hover            { color: var(--c-ia) !important; }
.nav-dropdown .nav-ia:hover::before    { background: var(--c-ia); }
.nav-dropdown .nav-open-source:hover   { color: var(--c-open-source) !important; }
.nav-dropdown .nav-open-source:hover::before { background: var(--c-open-source); }
.nav-dropdown .nav-vie-privee:hover    { color: var(--c-vie-privee) !important; }
.nav-dropdown .nav-vie-privee:hover::before  { background: var(--c-vie-privee); }
.nav-dropdown .nav-gafam:hover         { color: var(--c-gafam) !important; }
.nav-dropdown .nav-gafam:hover::before { background: var(--c-gafam); }
.nav-dropdown .nav-hardware:hover      { color: var(--c-hardware) !important; }
.nav-dropdown .nav-hardware:hover::before { background: var(--c-hardware); }

/* Label hover colors */
.nav-group-label.nav-sante:hover,
.nav-group--sante.is-open .nav-group-label   { color: var(--c-sante) !important; }
.nav-group-label.nav-finance:hover,
.nav-group--finance.is-open .nav-group-label { color: var(--c-finance) !important; }
.nav-group-label.nav-insolite:hover,
.nav-group--insolite.is-open .nav-group-label{ color: var(--c-insolite) !important; }
.nav-group-label.nav-humour:hover,
.nav-group--humour.is-open .nav-group-label  { color: var(--c-humour) !important; }
.nav-group-label.nav-sport:hover,
.nav-group--sport.is-open .nav-group-label   { color: var(--c-sport) !important; }
.nav-group-label.nav-jeux:hover,
.nav-group--jeux.is-open .nav-group-label    { color: var(--c-jeux) !important; }
.nav-group--tech.is-open .nav-group-label    { color: var(--c-tech) !important; }

/* Santé */
.nav-dropdown .nav-sante:hover, .nav-dropdown .nav-sante-all:hover,
.nav-dropdown .nav-bien-etre:hover, .nav-dropdown .nav-alimentation:hover,
.nav-dropdown .nav-habitudes:hover { color: var(--c-sante) !important; }
.nav-dropdown .nav-sante:hover::before, .nav-dropdown .nav-sante-all:hover::before,
.nav-dropdown .nav-bien-etre:hover::before, .nav-dropdown .nav-alimentation:hover::before,
.nav-dropdown .nav-habitudes:hover::before { background: var(--c-sante); }
/* Finance */
.nav-dropdown .nav-finance:hover, .nav-dropdown .nav-finance-all:hover,
.nav-dropdown .nav-epargne:hover, .nav-dropdown .nav-budget:hover,
.nav-dropdown .nav-finance-perso:hover, .nav-dropdown .nav-revenus:hover { color: var(--c-finance) !important; }
.nav-dropdown .nav-finance:hover::before, .nav-dropdown .nav-finance-all:hover::before,
.nav-dropdown .nav-epargne:hover::before, .nav-dropdown .nav-budget:hover::before,
.nav-dropdown .nav-finance-perso:hover::before, .nav-dropdown .nav-revenus:hover::before { background: var(--c-finance); }
/* Insolite */
.nav-dropdown .nav-insolite:hover, .nav-dropdown .nav-insolite-all:hover,
.nav-dropdown .nav-animaux:hover, .nav-dropdown .nav-nature:hover,
.nav-dropdown .nav-biodiversite:hover { color: var(--c-insolite) !important; }
.nav-dropdown .nav-insolite:hover::before, .nav-dropdown .nav-insolite-all:hover::before,
.nav-dropdown .nav-animaux:hover::before, .nav-dropdown .nav-nature:hover::before,
.nav-dropdown .nav-biodiversite:hover::before { background: var(--c-insolite); }
/* Humour */
.nav-dropdown .nav-humour:hover, .nav-dropdown .nav-humour-all:hover,
.nav-dropdown .nav-vie-quotidienne:hover, .nav-dropdown .nav-memes:hover { color: var(--c-humour) !important; }
.nav-dropdown .nav-humour:hover::before, .nav-dropdown .nav-humour-all:hover::before,
.nav-dropdown .nav-vie-quotidienne:hover::before, .nav-dropdown .nav-memes:hover::before { background: var(--c-humour); }

/* Mobile sidebar — always hidden on desktop */
@media (max-width: 900px) {
  .nav-group { display: none; }
}

/* ═══════════════════════════════════════════════════
   POST CARDS WITH IMAGES (grid + tag pages)
═══════════════════════════════════════════════════ */
.post-card {
  background: var(--bg);
  border-radius: var(--radius);
  overflow: hidden;
  box-shadow: var(--shadow-sm);
  transition: transform .18s ease, box-shadow .18s ease;
  display: flex;
  flex-direction: column;
}
.post-card:hover { transform: translateY(-3px); box-shadow: 0 8px 32px rgba(0,0,0,.13); }
.pcard-link { text-decoration: none; color: inherit; display: flex; flex-direction: column; height: 100%; }

/* Image container */
.pcard-img {
  position: relative;
  width: 100%;
  aspect-ratio: 16/9;
  overflow: hidden;
  flex-shrink: 0;
  background: linear-gradient(135deg, #1e293b 0%, #334155 100%);
}
.pcard-img img {
  width: 100%; height: 100%;
  object-fit: cover;
  transition: transform .3s ease;
  display: block;
}
.post-card:hover .pcard-img img { transform: scale(1.04); }
.pcard-img-gradient {
  width: 100%; height: 100%;
  opacity: 0.85;
}

/* Tag overlay on image */
.pcard-tag-overlay {
  position: absolute;
  bottom: 10px;
  left: 12px;
  font-size: 0.65rem;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: 1px;
  padding: 3px 10px;
  border-radius: 100px;
  backdrop-filter: blur(4px);
  -webkit-backdrop-filter: blur(4px);
}

/* Remove old accent bar (replaced by image) */
.pcard-accent { display: none; }

/* Card body */
.pcard-body {
  padding: 16px 18px 18px;
  display: flex;
  flex-direction: column;
  flex: 1;
  gap: 6px;
}
.pcard-title {
  font-size: 0.98rem;
  font-weight: 700;
  line-height: 1.35;
  color: var(--ink);
  margin: 0;
  display: -webkit-box;
  -webkit-line-clamp: 3;
  -webkit-box-orient: vertical;
  overflow: hidden;
}
.pcard-excerpt {
  font-size: 0.82rem;
  color: var(--ink-3, #555);
  line-height: 1.55;
  margin: 0;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}
.pcard-meta {
  display: flex;
  gap: 8px;
  font-size: 0.74rem;
  color: var(--ink-4);
  margin-top: auto;
  padding-top: 8px;
}
.pcard-badge-guide {
  display: inline-block;
  font-size: 0.62rem;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: 1px;
  padding: 2px 8px;
  border-radius: 100px;
  background: var(--c-open-source);
  color: white;
  width: fit-content;
}

/* ═══════════════════════════════════════════════════
   SHARE SECTION
═══════════════════════════════════════════════════ */
.share-section {
  display: flex;
  align-items: center;
  gap: 14px;
  flex-wrap: wrap;
  padding: 24px 0;
  border-top: 1px solid var(--border);
  border-bottom: 1px solid var(--border);
  margin: 32px 0 40px;
}
.share-label {
  font-size: 0.75rem;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: 1.5px;
  color: var(--ink-4);
  flex-shrink: 0;
}
.share-btns {
  display: flex;
  gap: 10px;
  flex-wrap: wrap;
}
.share-btn {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  padding: 8px 16px;
  border-radius: 100px;
  font-size: 0.8rem;
  font-weight: 600;
  text-decoration: none;
  border: none;
  cursor: pointer;
  transition: opacity .15s, transform .15s;
}
.share-btn:hover { opacity: 0.85; transform: translateY(-1px); }
.share-btn--x        { background: #000; color: #fff; }
.share-btn--linkedin { background: #0A66C2; color: #fff; }
.share-btn--facebook { background: #1877F2; color: #fff; }
.share-btn--copy     { background: var(--bg-section); color: var(--ink); border: 1px solid var(--border); }

/* ═══════════════════════════════════════════════════
   RELATED ARTICLES
═══════════════════════════════════════════════════ */
.related-section {
  margin: 0 0 40px;
}
.related-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
  gap: 20px;
  margin: 20px 0 24px;
}
.related-card {
  background: var(--bg);
  border-radius: var(--radius);
  overflow: hidden;
  box-shadow: var(--shadow-sm);
  transition: transform .18s ease;
}
.related-card:hover { transform: translateY(-2px); }
.related-link { text-decoration: none; color: inherit; display: block; }
.related-img {
  width: 100%;
  aspect-ratio: 16/9;
  object-fit: cover;
  display: block;
}
.related-img--gradient { opacity: 0.8; }
.related-body { padding: 12px 14px 14px; }
.related-title {
  font-size: 0.88rem;
  font-weight: 700;
  line-height: 1.35;
  margin: 0 0 8px;
  display: -webkit-box;
  -webkit-line-clamp: 3;
  -webkit-box-orient: vertical;
  overflow: hidden;
}
.related-meta {
  display: flex;
  gap: 8px;
  font-size: 0.72rem;
  color: var(--ink-4);
}

/* ═══════════════════════════════════════════════════
   PAGINATION
═══════════════════════════════════════════════════ */
.pagination {
  display: flex;
  justify-content: center;
  align-items: center;
  gap: 12px;
  padding: 40px 0 60px;
}
.pagination a, .pagination .page-number {
  padding: 9px 20px;
  border-radius: 100px;
  font-size: 0.82rem;
  font-weight: 600;
  text-decoration: none;
  border: 1px solid var(--border);
  background: var(--bg);
  color: var(--ink);
  transition: background .15s, color .15s;
}
.pagination a:hover { background: var(--red); color: white; border-color: var(--red); }
.pagination .page-number { color: var(--ink-3, #555); border: none; background: none; font-weight: 400; }


/* ── tag-btn for related articles ─────────────────── */
.tag-btn {
  display: inline-flex;
  align-items: center;
  padding: 10px 22px;
  border-radius: 100px;
  font-size: 0.82rem;
  font-weight: 700;
  text-decoration: none;
  background: var(--bg-section);
  color: var(--ink);
  border: 1px solid var(--border);
  transition: background .15s, color .15s;
  margin-top: 8px;
}
.tag-btn:hover { background: var(--red); color: white; border-color: var(--red); }
.tag-btn--cybersecurite:hover { background: var(--c-cybersecurite); border-color: var(--c-cybersecurite); }
.tag-btn--ia:hover            { background: var(--c-ia); border-color: var(--c-ia); }
.tag-btn--open-source:hover   { background: var(--c-open-source); border-color: var(--c-open-source); }
.tag-btn--vie-privee:hover    { background: var(--c-vie-privee); border-color: var(--c-vie-privee); }
.tag-btn--gafam:hover         { background: var(--c-gafam); border-color: var(--c-gafam); }
.tag-btn--hardware:hover      { background: var(--c-hardware); border-color: var(--c-hardware); }
.tag-btn--humour:hover        { background: var(--c-humour); border-color: var(--c-humour); }
.tag-btn--sante:hover         { background: var(--c-sante); border-color: var(--c-sante); }
.tag-btn--finance:hover       { background: var(--c-finance); border-color: var(--c-finance); }
.tag-btn--insolite:hover      { background: var(--c-insolite); border-color: var(--c-insolite); }

/* ── Ghost Koenig editor required classes ──────────── */
.kg-width-wide { margin-left: -8vw; margin-right: -8vw; max-width: calc(100% + 16vw); }
.kg-width-full { margin-left: calc(50% - 50vw); margin-right: calc(50% - 50vw); max-width: 100vw; width: 100vw; }
.kg-image { max-width: 100%; height: auto; }
.kg-gallery-container { display: flex; flex-direction: column; gap: 4px; width: 100%; }
.kg-gallery-row { display: flex; gap: 4px; justify-content: center; }
.kg-gallery-image { flex: 1; overflow: hidden; }
.kg-gallery-image img { width: 100%; height: 100%; object-fit: cover; display: block; }
.kg-bookmark-card { background: var(--bg); border: 1px solid var(--border); border-radius: var(--radius); overflow: hidden; }
.kg-bookmark-container { display: flex; text-decoration: none; color: inherit; }
.kg-bookmark-content { flex: 1; padding: 16px; min-width: 0; }
.kg-bookmark-title { font-weight: 600; font-size: 0.95rem; margin-bottom: 4px; }
.kg-bookmark-description { color: var(--ink-3, #555); font-size: 0.85rem; overflow: hidden; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; }
.kg-bookmark-metadata { display: flex; align-items: center; gap: 6px; margin-top: 8px; font-size: 0.78rem; color: var(--ink-3, #555); }
.kg-bookmark-thumbnail { width: 120px; flex-shrink: 0; }
.kg-bookmark-thumbnail img { width: 100%; height: 100%; object-fit: cover; }
.kg-callout-card { background: var(--bg-section, #f5f5f5); border-left: 4px solid var(--red); padding: 16px 20px; border-radius: var(--radius); display: flex; gap: 12px; }
.kg-callout-emoji { font-size: 1.4rem; }
.kg-callout-text { flex: 1; }
.kg-toggle-card { border: 1px solid var(--border); border-radius: var(--radius); overflow: hidden; }
.kg-toggle-heading { padding: 14px 18px; cursor: pointer; font-weight: 600; display: flex; justify-content: space-between; align-items: center; }
.kg-toggle-content { padding: 0 18px 14px; }
.kg-video-card { width: 100%; }
.kg-video-card video { width: 100%; display: block; }
.kg-embed-card { display:flex; flex-direction:column; align-items:center; width:100%; margin:2rem 0; }
.kg-embed-card iframe { width:100%; aspect-ratio:16/9; height:auto; border:0; border-radius:var(--radius,8px); }
.kg-embed-card figcaption { font-size:0.82rem; color:var(--ink-3,#666); text-align:center; margin-top:8px; font-style:italic; }
.kg-audio-card { border: 1px solid var(--border); border-radius: var(--radius); padding: 16px; }
.kg-file-card { border: 1px solid var(--border); border-radius: var(--radius); padding: 16px; display: flex; align-items: center; gap: 12px; text-decoration: none; color: inherit; }
.kg-product-card { border: 1px solid var(--border); border-radius: var(--radius); padding: 20px; }
.kg-header-card { padding: 40px 20px; text-align: center; background: var(--bg-section, #f5f5f5); border-radius: var(--radius); }

/* ── OFF-CANVAS SIDEBAR MOBILE ── */
body.sidebar-open { overflow: hidden; }

.msidebar {
  display: none;
  position: fixed;
  inset: 0;
  z-index: 1200;
  pointer-events: none;
}
.msidebar.is-open {
  display: block;
  pointer-events: none; /* container stays none, children opt-in */
}
.msidebar.is-open .msidebar-overlay { pointer-events: auto; }
.msidebar.is-open .msidebar-panel   { pointer-events: auto; }

.msidebar-overlay {
  position: absolute;
  inset: 0;
  background: rgba(0,0,0,0.48);
  backdrop-filter: blur(2px);
  -webkit-backdrop-filter: blur(2px);
  opacity: 0;
  transition: opacity .28s ease;
}
.msidebar.is-open .msidebar-overlay { opacity: 1; }

.msidebar-panel {
  position: absolute;
  top: 0; left: 0; bottom: 0;
  width: min(320px, 88vw);
  background: var(--bg);
  display: flex;
  flex-direction: column;
  overflow-y: auto;
  overflow-x: hidden;
  box-shadow: 4px 0 32px rgba(0,0,0,.18);
  transform: translateX(-100%);
  transition: transform .28s cubic-bezier(.4,0,.2,1);
}
.msidebar.is-open .msidebar-panel { transform: translateX(0); }

/* Top bar */
.msidebar-top {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 16px 16px 12px;
  border-bottom: 1px solid var(--border);
  flex-shrink: 0;
}
.msidebar-logo {
  font-family: var(--ff-head);
  font-size: 1.2rem;
  font-weight: 900;
  color: var(--ink);
}
.msidebar-logo span { color: var(--red); }
.msidebar-close {
  background: var(--bg-section);
  border: none;
  border-radius: 8px;
  padding: 8px;
  cursor: pointer;
  color: var(--ink-3);
  display: flex;
  align-items: center;
  justify-content: center;
  transition: background .15s, color .15s;
  min-width: 36px; min-height: 36px;
}
.msidebar-close:hover { background: var(--red); color: #fff; }

/* Search */
.msidebar-search-wrap {
  position: relative;
  margin: 12px 16px 0;
  flex-shrink: 0;
}
.msidebar-search-ico {
  position: absolute;
  left: 12px;
  top: 50%; transform: translateY(-50%);
  color: var(--ink-4);
  pointer-events: none;
}
.msidebar-search-input {
  width: 100%;
  padding: 10px 12px 10px 38px;
  border: 1.5px solid var(--border);
  border-radius: 10px;
  font-size: 0.88rem;
  font-family: var(--ff-body);
  color: var(--ink);
  background: var(--bg-off);
  outline: none;
  transition: border-color .15s;
}
.msidebar-search-input:focus { border-color: var(--red); background: var(--bg); }
.msidebar-search-input::placeholder { color: var(--ink-4); }

/* Search results */
.msidebar-results {
  margin: 6px 16px 0;
  border-radius: 10px;
  overflow: hidden;
  border: 1px solid transparent;
  flex-shrink: 0;
}
.msidebar-results:not(:empty) { border-color: var(--border); }
.msidebar-result-item {
  display: flex;
  flex-direction: column;
  gap: 2px;
  padding: 10px 14px;
  border-bottom: 1px solid var(--border);
  text-decoration: none;
  transition: background .12s;
}
.msidebar-result-item:last-child { border-bottom: none; }
.msidebar-result-item:hover { background: var(--bg-section); }
.msidebar-result-title { font-size: 0.84rem; font-weight: 600; color: var(--ink); line-height: 1.35; }
.msidebar-result-tag   { font-size: 0.72rem; color: var(--ink-4); }
.msidebar-no-results   { padding: 12px 14px; font-size: 0.84rem; color: var(--ink-4); }
.msidebar-searching    { padding: 12px 14px; font-size: 0.84rem; color: var(--ink-4); }

/* Accordion nav */
.msidebar-list {
  list-style: none;
  margin: 12px 0 0;
  padding: 0;
  flex-shrink: 0;
}
.msidebar-list li { list-style: none; }

.msidebar-cat-btn {
  width: 100%;
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 13px 16px;
  background: none;
  border: none;
  border-bottom: 1px solid var(--border);
  font-size: 0.92rem;
  font-weight: 700;
  color: var(--ink-2);
  cursor: pointer;
  text-align: left;
  transition: background .12s, color .12s;
  min-height: 48px;
}
.msidebar-cat-btn:hover { background: var(--bg-section); }
.msidebar-cat-ico { font-size: 1rem; flex-shrink: 0; }
.msidebar-cat-btn span:nth-child(2) { flex: 1; }
.msidebar-chevron { flex-shrink: 0; transition: transform .22s cubic-bezier(.4,0,.2,1); color: var(--ink-4); }
.msidebar-group.is-open .msidebar-chevron { transform: rotate(180deg); }

/* Category color accents */
.msidebar-group[data-color="tech"].is-open    .msidebar-cat-btn { color: var(--c-tech);     background: #f5f3ff; }
.msidebar-group[data-color="sante"].is-open   .msidebar-cat-btn { color: var(--c-sante);    background: #f0fdf4; }
.msidebar-group[data-color="finance"].is-open .msidebar-cat-btn { color: var(--c-finance);  background: #eff6ff; }
.msidebar-group[data-color="insolite"].is-open .msidebar-cat-btn { color: var(--c-insolite); background: #fff7ed; }
.msidebar-group[data-color="humour"].is-open  .msidebar-cat-btn { color: var(--c-humour);   background: #fdf4ff; }
.msidebar-group[data-color="sport"].is-open   .msidebar-cat-btn { color: var(--c-sport);    background: #fffbeb; }
.msidebar-group[data-color="jeux"].is-open    .msidebar-cat-btn { color: var(--c-jeux);     background: #eef2ff; }

/* Accordion sub-list */
.msidebar-sub {
  list-style: none;
  padding: 0;
  max-height: 0;
  overflow: hidden;
  transition: max-height .28s cubic-bezier(.4,0,.2,1);
  background: var(--bg-off);
}
.msidebar-group.is-open .msidebar-sub { max-height: 400px; }
.msidebar-sub li { list-style: none; }
.msidebar-sub a {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 11px 16px 11px 28px;
  font-size: 0.86rem;
  font-weight: 500;
  color: var(--ink-3);
  border-bottom: 1px solid var(--border);
  transition: background .12s, color .12s, padding-left .12s;
  min-height: 44px;
}
.msidebar-sub a:hover { background: var(--bg-section); color: var(--ink); padding-left: 34px; }
.msidebar-sub li:last-child a { border-bottom: none; }

/* Quick access */
.msidebar-quick {
  margin: 16px 16px 20px;
  flex-shrink: 0;
}
.msidebar-quick-label {
  font-size: 0.7rem;
  font-weight: 700;
  letter-spacing: .08em;
  text-transform: uppercase;
  color: var(--ink-4);
  margin-bottom: 8px;
}
.msidebar-quick-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 8px;
}
.msidebar-qbtn {
  display: flex;
  align-items: center;
  gap: 6px;
  padding: 10px 12px;
  background: var(--bg-section);
  border: 1px solid var(--border);
  border-radius: 8px;
  font-size: 0.8rem;
  font-weight: 600;
  color: var(--ink-2);
  transition: background .15s, color .15s, border-color .15s;
  min-height: 44px;
}
.msidebar-qbtn:hover { background: var(--ink); color: #fff; border-color: var(--ink); }

/* ═══════════════════════════════════════════════════
   RESPONSIVE — Enhanced breakpoints
═══════════════════════════════════════════════════ */

/* ── 1024px — Large tablet ── */
@media (max-width: 1024px) {
  .posts-grid { grid-template-columns: repeat(3, 1fr); }
  .hero-body { padding: 32px; }
}

/* ── 960px — Tablet ── (already exists, enhancing) */
@media (max-width: 960px) {
  .posts-grid { grid-template-columns: repeat(2, 1fr); }
  .article-body { padding: 32px 20px 56px; }
  .article-cover { padding: 24px 16px 0; }
  .footer-top { grid-template-columns: 1fr 1fr; gap: 24px; }
}

/* ── 768px — Small tablet / large phone ── */
@media (max-width: 768px) {
  .article-header-inner { padding: 0 16px; }
  .article-title { font-size: clamp(1.6rem, 5vw, 2.4rem); }
  .article-deck { font-size: 1rem; }
  .article-body { padding: 24px 16px 48px; }
  .article-cover { padding: 16px 16px 0; }
  .article-cover img { border-radius: 8px; }

  .tag-hero { padding: 40px 16px 32px; }
  .tag-hero-title { font-size: clamp(2rem, 8vw, 3rem); }

  .hero-body { padding: 20px 16px 24px; }
  .hero-title { font-size: clamp(1.5rem, 5vw, 2.2rem); }

  .related-grid { grid-template-columns: 1fr 1fr; gap: 12px; }

  .footer-top { grid-template-columns: 1fr; gap: 20px; }
  .footer-nav { min-width: unset; }
}

/* ── 680px — Mobile ── */
@media (max-width: 680px) {
  /* Show hamburger, hide desktop nav */
  .nav-toggle { display: flex; }
  .msidebar { display: block; }
  .site-nav { display: none; }
  .header-date { display: none; }
  .header-inner { padding: 0 16px; }

  /* Grid */
  .posts-grid { grid-template-columns: 1fr; }
  .featured-grid { grid-template-columns: 1fr; }

  /* Article */
  .article-header { padding: 32px 0 28px; }
  .article-header-inner { padding: 0 16px; }
  .article-title { font-size: clamp(1.6rem, 6vw, 2rem); letter-spacing: -0.3px; }
  .article-deck { font-size: 0.95rem; }
  .article-body { padding: 20px 16px 40px; }
  .article-cover { padding: 12px 0 0; }
  .article-cover img { border-radius: 0; width: 100%; }
  .article-content { font-size: 1rem; line-height: 1.75; }
  .article-content h2 { font-size: 1.3rem; margin: 32px 0 12px; }
  .article-content h3 { font-size: 1.1rem; margin: 24px 0 10px; }
  .article-footer { margin-top: 32px; padding-top: 24px; }

  /* Share buttons — touch targets 44px */
  .share-section { gap: 10px; padding: 18px 0; }
  .share-btn {
    padding: 10px 14px;
    min-height: 44px;
    font-size: 0.78rem;
  }

  /* Tag page */
  .tag-hero { padding: 32px 16px 28px; }

  /* Homepage sections */
  .featured-section, .main-section { padding: 0 16px; }
  .hero { padding: 0 16px; }
  .hero-card { margin: 0 -16px; border-radius: 0; }

  /* Ticker */
  .ticker-wrap { display: none; }

  /* Article tag CTA */
  .article-tag-cta { flex-direction: column; align-items: flex-start; }

  /* Pagination */
  .pagination { gap: 8px; padding: 24px 0 40px; }
  .pagination a, .pagination .page-number { padding: 8px 16px; font-size: 0.78rem; }
}

/* ── 480px — Small phone ── */
@media (max-width: 480px) {
  .hero-body { padding: 16px 16px 20px; }
  .hero-title { font-size: 1.45rem; }

  /* Related articles: single column */
  .related-grid { grid-template-columns: 1fr; gap: 12px; }

  /* Footer: single column */
  .footer-top { grid-template-columns: 1fr; }
  .site-footer { padding: 32px 16px 24px; }

  /* Share buttons wrap */
  .share-btns { gap: 8px; }
  .share-btn { flex: 1; justify-content: center; min-height: 44px; }

  /* Post card excerpt hidden to save space */
  .pcard-excerpt { display: none; }

  /* Article tag meta on one line */
  .article-meta { flex-wrap: wrap; gap: 6px; }
}

/* ── 380px — Very small phone (Galaxy S, iPhone SE) ── */
@media (max-width: 380px) {
  .msidebar-quick-grid { grid-template-columns: 1fr; }
  .site-logo { font-size: 1.3rem; }
  .article-title { font-size: 1.5rem; }
  .tag-hero-title { font-size: 1.8rem; }
}

/* ── Horizontal overflow fixes (mobile) ── */
@media (max-width: 680px) {
  .article-content table {
    display: block;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    max-width: 100%;
    font-size: 0.88rem;
  }
  .article-content pre,
  .article-content code {
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    white-space: pre;
    max-width: 100%;
    display: block;
  }
  .article-content img {
    max-width: 100%;
    height: auto;
  }
  .kg-width-wide,
  .kg-width-full {
    margin-left: 0;
    margin-right: 0;
    max-width: 100%;
    width: 100%;
  }
}

/* ── Touch target improvements ── */
@media (hover: none) and (pointer: coarse) {
  .pagination a,
  .tag-btn,
  .share-btn,
  .nav-toggle,
  .back-home {
    min-height: 44px;
    min-width: 44px;
  }
  .footer-nav a {
    padding: 8px 0;
    min-height: 44px;
    display: flex;
    align-items: center;
  }
}

/* ═══════════════════════════════════════════════════
   MOBILE — Responsive & Navigation hamburger
═══════════════════════════════════════════════════ */

/* ── Hamburger button ─────────────────────────────── */
.nav-toggle {
  display: none;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  gap: 5px;
  width: 40px;
  height: 40px;
  background: none;
  border: none;
  cursor: pointer;
  padding: 6px;
  border-radius: var(--radius);
  transition: background .15s;
  flex-shrink: 0;
}
.nav-toggle:hover { background: var(--bg-section, #f5f5f5); }
.hamburger-bar {
  display: block;
  width: 22px;
  height: 2px;
  background: var(--ink);
  border-radius: 2px;
  transition: transform .25s, opacity .2s;
}
.nav-toggle.is-open .hamburger-bar:nth-child(1) { transform: translateY(7px) rotate(45deg); }
.nav-toggle.is-open .hamburger-bar:nth-child(2) { opacity: 0; transform: scaleX(0); }
.nav-toggle.is-open .hamburger-bar:nth-child(3) { transform: translateY(-7px) rotate(-45deg); }

/* body.sidebar-open déjà défini en §OFF-CANVAS */

/* ── Breakpoints ─────────────────────────────────── */
@media (max-width: 900px) {
  .site-nav { display: none; }
  .nav-toggle { display: flex; }
  .msidebar { display: block; }

  .header-inner {
    padding: 0 16px;
    height: 56px;
  }

  /* Hero */
  .hero { margin: 0; }
  .hero-card { flex-direction: column; min-height: unset; }
  .hero-visual { max-height: 240px; }
  .hero-body { padding: 20px 16px 24px; }
  .hero-title { font-size: 1.5rem; }
  .hero-excerpt { display: none; }

  /* Featured grid */
  .featured-grid { grid-template-columns: 1fr; }
  .fcard-top { height: 180px; }

  /* Posts grid */
  .posts-grid { grid-template-columns: 1fr; gap: 16px; }

  /* Article */
  .article-header { padding: 40px 16px 24px; }
  .article-title { font-size: 1.55rem; }
  .article-body { padding: 0 16px; }
  .article-content { font-size: 0.97rem; }
  .related-grid { grid-template-columns: 1fr; }
  .share-btns { flex-wrap: wrap; gap: 8px; }
  .share-btn { font-size: 0.78rem; padding: 8px 12px; }

  /* Ad slots */
  .ad-placeholder--wide { width: 100%; height: 80px; }
  .ad-placeholder--billboard { width: 100%; height: 80px; }

  /* Ticker */
  .ticker-wrap { font-size: 0.7rem; }
}

@media (max-width: 600px) {
  .article-title { font-size: 1.35rem; }
  .hero-title { font-size: 1.3rem; }
  .section-label { font-size: 0.7rem; }
  .featured-section,
  .main-section { padding: 0 12px; }
}

/* ── Tap targets: min 44px ───────────────────────── */
@media (hover: none) {
  .pcard-link,
  .share-btn,
  .related-link,
  .back-home,
  .tag-btn { min-height: 44px; }
  .nav-toggle { min-height: 44px; min-width: 44px; }
}

/* ── Reduced motion ──────────────────────────────── */
@media (prefers-reduced-motion: reduce) {
  .msidebar-panel,
  .msidebar-overlay,
  .hamburger-bar,
  * { transition: none !important; animation: none !important; }
}

/* ═══════════════════════════════════════════════════
   HERO SLIDER
═══════════════════════════════════════════════════ */
.hero-slider {
  position: relative;
  overflow: hidden;
  border-radius: var(--radius);
  margin: 16px 0 32px;
  background: #0d0d0d;
  outline: none;
  contain: layout style;
  cursor: grab;
}
.hero-slider:active { cursor: grabbing; }

.slider-track {
  display: flex;
  transition: transform 0.6s cubic-bezier(0.25, 0.46, 0.45, 0.94);
  will-change: transform;
}

.slide {
  min-width: 100%;
  position: relative;
  height: clamp(300px, 50vw, 540px);
  flex-shrink: 0;
}

.slide-link {
  display: block;
  width: 100%;
  height: 100%;
  text-decoration: none;
  color: white;
  position: relative;
}

.slide-visual {
  position: absolute;
  inset: 0;
  overflow: hidden;
}

.slide-visual img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  transform: scale(1.0);
  transition: transform 8s ease;
}

.slide.is-active .slide-visual img {
  transform: scale(1.05);
}

.slide-gradient { width: 100%; height: 100%; }

.slide-overlay {
  position: absolute;
  inset: 0;
  background: linear-gradient(
    160deg,
    rgba(0,0,0,0.04) 0%,
    rgba(0,0,0,0.18) 35%,
    rgba(0,0,0,0.68) 68%,
    rgba(0,0,0,0.9) 100%
  );
}

.slide-body {
  position: absolute;
  bottom: 0; left: 0; right: 0;
  padding: 28px 40px 44px;
  z-index: 2;
  transform: translateY(6px);
  opacity: 0;
  transition: transform 0.55s ease 0.12s, opacity 0.55s ease 0.12s;
}

.slide.is-active .slide-body {
  transform: translateY(0);
  opacity: 1;
}

.slide-meta-top {
  display: flex;
  align-items: center;
  gap: 10px;
  margin-bottom: 10px;
}

.slide-reading-time {
  font-size: 0.74rem;
  color: rgba(255,255,255,0.65);
  background: rgba(0,0,0,0.28);
  padding: 2px 8px;
  border-radius: 100px;
}

.slide-title {
  font-family: 'Playfair Display', Georgia, serif;
  font-size: clamp(1.25rem, 3vw, 2.05rem);
  font-weight: 800;
  line-height: 1.18;
  margin: 0 0 10px;
  color: #fff;
  text-shadow: 0 2px 10px rgba(0,0,0,0.55);
  max-width: 680px;
}

.slide-excerpt {
  color: rgba(255,255,255,0.72);
  font-size: 0.9rem;
  line-height: 1.5;
  margin: 0 0 12px;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
  max-width: 560px;
}

.slide-meta-bottom {
  display: flex;
  align-items: center;
  gap: 16px;
  font-size: 0.78rem;
  color: rgba(255,255,255,0.55);
}

.slide-cta {
  color: #fff;
  font-weight: 600;
  font-size: 0.82rem;
  letter-spacing: 0.01em;
}

/* ── Arrows ──────────────────────────────────── */
.slider-btn {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  width: 46px;
  height: 46px;
  border-radius: 50%;
  border: 1.5px solid rgba(255,255,255,0.28);
  background: rgba(0,0,0,0.32);
  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
  color: #fff;
  cursor: pointer;
  z-index: 10;
  display: flex;
  align-items: center;
  justify-content: center;
  opacity: 0;
  transition: opacity 0.25s, background 0.2s, border-color 0.2s, transform 0.2s;
}
.hero-slider:hover .slider-btn,
.hero-slider:focus-within .slider-btn { opacity: 1; }
.slider-btn:hover {
  background: rgba(0,0,0,0.6);
  border-color: rgba(255,255,255,0.6);
}
.slider-btn--prev { left: 16px; }
.slider-btn--next { right: 16px; }
.slider-btn--prev:hover { transform: translateY(-50%) translateX(-2px); }
.slider-btn--next:hover { transform: translateY(-50%) translateX(2px); }

/* ── Dots ────────────────────────────────────── */
.slider-dots {
  position: absolute;
  bottom: 20px;
  right: 40px;
  display: flex;
  gap: 6px;
  z-index: 10;
  align-items: center;
}

.slider-dot {
  width: 8px;
  height: 8px;
  border-radius: 4px;
  background: rgba(255,255,255,0.32);
  border: none;
  cursor: pointer;
  padding: 0;
  transition: width 0.3s ease, background 0.25s;
  flex-shrink: 0;
}
.slider-dot.is-active {
  width: 28px;
  background: #fff;
}

/* ── Progress bar ──────────────────────────── */
.slider-progress {
  position: absolute;
  bottom: 0; left: 0; right: 0;
  height: 3px;
  background: rgba(255,255,255,0.12);
  z-index: 10;
}
.slider-progress-bar {
  height: 100%;
  width: 0;
  background: var(--red, #e03030);
  transition: none;
}
.slider-progress-bar.animating {
  transition: width 5s linear;
  width: 100%;
}

/* ── Mobile ──────────────────────────────────── */
@media (max-width: 900px) {
  .slide { height: clamp(240px, 62vw, 380px); }
  .slide-body { padding: 16px 18px 36px; }
  .slide-excerpt { display: none; }
  .slider-btn { display: none; }
  .slider-dots { right: 18px; bottom: 14px; }
}
@media (max-width: 600px) {
  .slide { height: 60vw; min-height: 210px; }
  .slide-title { font-size: 1.08rem; }
  .slide-meta-bottom { font-size: 0.7rem; }
  .slide-body { padding: 12px 14px 32px; }
}

/* ═══════════════════════════════════════════════════
   PERFORMANCE
═══════════════════════════════════════════════════ */
/* Defer paint of below-fold grid */
.main-section {
  content-visibility: auto;
  contain-intrinsic-size: 0 1800px;
}

/* ── ARTICLE TAGS / HASHTAGS ── */
.article-tags {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px;
  margin: 32px 0 24px;
  padding: 20px 0;
  border-top: 1px solid var(--border);
  border-bottom: 1px solid var(--border);
}
.tags-label {
  font-size: 0.72rem;
  font-weight: 700;
  letter-spacing: .08em;
  text-transform: uppercase;
  color: var(--ink-4);
  margin-right: 4px;
}
.tag-pill {
  display: inline-flex;
  align-items: center;
  padding: 4px 12px;
  border-radius: 999px;
  font-size: 0.78rem;
  font-weight: 600;
  background: var(--bg-section);
  color: var(--ink-3);
  border: 1px solid var(--border);
  transition: background .15s, color .15s, border-color .15s, transform .15s;
  white-space: nowrap;
}
.tag-pill:hover {
  background: var(--ink);
  color: #fff;
  border-color: var(--ink);
  transform: translateY(-1px);
}
/* Category color tints on hover */
.tag-pill--cybersecurite:hover { background: var(--c-cybersecurite); border-color: var(--c-cybersecurite); }
.tag-pill--ia:hover            { background: var(--c-ia);            border-color: var(--c-ia); }
.tag-pill--open-source:hover   { background: var(--c-open-source);   border-color: var(--c-open-source); }
.tag-pill--vie-privee:hover    { background: var(--c-vie-privee);    border-color: var(--c-vie-privee); }
.tag-pill--gafam:hover         { background: var(--c-gafam);         border-color: var(--c-gafam); }
.tag-pill--hardware:hover      { background: var(--c-hardware);      border-color: var(--c-hardware); }
.tag-pill--sante:hover,
.tag-pill--bien-etre:hover,
.tag-pill--alimentation:hover,
.tag-pill--habitudes-saines:hover { background: var(--c-sante); border-color: var(--c-sante); }
.tag-pill--finance:hover,
.tag-pill--epargne:hover,
.tag-pill--budget:hover,
.tag-pill--finance-personnelle:hover,
.tag-pill--revenus-passifs-accessibles:hover { background: var(--c-finance); border-color: var(--c-finance); }
.tag-pill--insolite:hover,
.tag-pill--animaux:hover,
.tag-pill--nature:hover,
.tag-pill--biodiversite:hover { background: var(--c-insolite); border-color: var(--c-insolite); }
.tag-pill--humour:hover,
.tag-pill--vie-quotidienne:hover,
.tag-pill--memes-internet:hover { background: var(--c-humour); border-color: var(--c-humour); }

/* ═══════════════════════════════════════════════════
   HX VIDEO PLAYER — Native-Feel
═══════════════════════════════════════════════════ */
.hx-player {
  position: relative;
  background: #000;
  border-radius: 12px;
  overflow: hidden;
  cursor: pointer;
  user-select: none;
  -webkit-user-select: none;
  touch-action: none;
  outline: none;
  margin: 24px 0;
  font-family: var(--font-body, 'Inter', sans-serif);
}
.hx-player:focus-visible { box-shadow: 0 0 0 3px rgba(196,30,58,0.4); }
.hx-player video {
  display: block;
  width: 100%;
  height: auto;
  max-height: 70vh;
  object-fit: contain;
  pointer-events: none;
}

/* Play overlay icon */
.hx-overlay {
  position: absolute;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  pointer-events: none;
  transition: opacity 0.25s;
  z-index: 2;
}
.hx-play-icon {
  width: 72px;
  height: 72px;
  background: rgba(0,0,0,0.52);
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  backdrop-filter: blur(6px);
  -webkit-backdrop-filter: blur(6px);
  color: #fff;
  transition: transform 0.15s ease, background 0.15s;
}
.hx-player:hover .hx-play-icon { background: rgba(0,0,0,0.68); transform: scale(1.06); }
.hx-playing .hx-overlay { opacity: 0; pointer-events: none; }

/* Controls bar */
.hx-controls {
  position: absolute;
  bottom: 0; left: 0; right: 0;
  padding: 8px 14px 14px;
  background: linear-gradient(transparent, rgba(0,0,0,0.76));
  opacity: 0;
  transition: opacity 0.25s;
  z-index: 3;
}
.hx-show .hx-controls,
.hx-player:hover .hx-controls { opacity: 1; }

/* Progress bar */
.hx-progress {
  width: 100%;
  height: 4px;
  background: rgba(255,255,255,0.22);
  border-radius: 2px;
  cursor: pointer;
  margin-bottom: 10px;
  position: relative;
  transition: height 0.15s;
}
.hx-show .hx-progress:hover,
.hx-player:hover .hx-progress:hover { height: 6px; }
.hx-progress-fill {
  height: 100%;
  background: #fff;
  border-radius: 2px;
  width: 0;
  position: relative;
  transition: width 0.1s linear;
}
.hx-progress-fill::after {
  content: '';
  position: absolute;
  right: -6px; top: 50%;
  transform: translateY(-50%);
  width: 13px; height: 13px;
  background: #fff;
  border-radius: 50%;
  opacity: 0;
  transition: opacity 0.15s;
  box-shadow: 0 0 4px rgba(0,0,0,0.4);
}
.hx-player:hover .hx-progress:hover .hx-progress-fill::after { opacity: 1; }

/* Controls row */
.hx-controls-row {
  display: flex;
  align-items: center;
  gap: 8px;
}
.hx-controls-row button {
  background: none;
  border: none;
  color: #fff;
  cursor: pointer;
  padding: 5px;
  display: flex;
  align-items: center;
  justify-content: center;
  opacity: 0.88;
  transition: opacity 0.15s, transform 0.15s;
  min-width: 36px;
  min-height: 36px;
  border-radius: 6px;
}
.hx-controls-row button:hover { opacity: 1; transform: scale(1.12); }
.hx-time {
  color: rgba(255,255,255,0.82);
  font-size: 11px;
  white-space: nowrap;
  letter-spacing: 0.02em;
}
.hx-spacer { flex: 1; }

/* Play/pause icon toggle */
.hx-btn-play .hx-icon-pause { display: none; }
.hx-playing .hx-btn-play .hx-icon-play  { display: none; }
.hx-playing .hx-btn-play .hx-icon-pause { display: block; }

/* Muted state */
.hx-btn-mute.hx-muted { opacity: 0.5; }

/* Seek / gesture feedback */
.hx-seek-feedback {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 5px;
  background: rgba(0,0,0,0.52);
  border-radius: 50px;
  padding: 12px 16px;
  color: #fff;
  pointer-events: none;
  opacity: 0;
  transition: opacity 0.18s;
  z-index: 4;
  backdrop-filter: blur(4px);
  -webkit-backdrop-filter: blur(4px);
}
.hx-seek-feedback.hx-visible { opacity: 1; }
.hx-seek-left  { left: 12px; }
.hx-seek-right { right: 12px; }
.hx-seek-label { font-size: 12px; font-weight: 600; color: #fff; }

/* Volume indicator (right side vertical bar) */
.hx-vol-indicator {
  position: absolute;
  right: 16px;
  top: 50%;
  transform: translateY(-50%);
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 6px;
  opacity: 0;
  transition: opacity 0.2s;
  pointer-events: none;
  z-index: 4;
}
.hx-vol-indicator.hx-visible { opacity: 1; }
.hx-vol-bar {
  width: 4px;
  height: 100px;
  background: rgba(255,255,255,0.28);
  border-radius: 2px;
  position: relative;
  overflow: hidden;
}
.hx-vol-fill {
  position: absolute;
  bottom: 0; width: 100%;
  background: #fff;
  border-radius: 2px;
  transition: height 0.08s;
}
.hx-vol-label { font-size: 11px; color: rgba(255,255,255,0.85); white-space: nowrap; }

/* Suppress Ghost's native video card player when hx-player takes over */
.kg-video-card .kg-video-overlay,
.kg-video-card .kg-video-large-play-icon { display: none !important; }

/* Responsive */
@media (max-width: 600px) {
  .hx-player { border-radius: 0; margin: 16px -16px; }
  .hx-play-icon { width: 56px; height: 56px; }
  .hx-time { font-size: 10px; }
}

/* ════════════════════════════════════════════════════════
   MÉTÉO — Header widget
   ════════════════════════════════════════════════════════ */
.header-weather {
  display: none; /* masqué tant que non chargé */
  align-items: center;
  gap: 4px;
  font-size: 0.78rem;
  font-weight: 600;
  color: var(--ink-3);
  padding: 5px 10px;
  border-radius: 100px;
  background: var(--bg-section, #f5f5f5);
  border: 1px solid var(--border, #e5e5e5);
  white-space: nowrap;
  flex-shrink: 0;
  cursor: default;
  transition: background .15s, color .15s;
  line-height: 1;
}
.header-weather.hw-loaded { display: flex; }
.hw-icon { font-size: 1rem; line-height: 1; }
.hw-temp { color: var(--ink); font-weight: 700; font-size: 0.82rem; }
.hw-city {
  color: var(--ink-3);
  font-size: 0.72rem;
  font-weight: 500;
  max-width: 70px;
  overflow: hidden;
  text-overflow: ellipsis;
}
/* Mobile : on cache la ville pour gagner de la place */
@media (max-width: 900px) {
  .hw-city { display: none; }
  .header-weather { padding: 5px 8px; }
}
/* Desktop intermédiaire : on cache date + météo pour libérer de la place dans la nav */
@media (max-width: 1380px) {
  .header-date { display: none; }
  .header-weather { display: none !important; }
}

/* ════════════════════════════════════════════════════════
   SEARCH — Nav button + Full-screen overlay
   ════════════════════════════════════════════════════════ */

/* Nav search button */
.nav-search-btn {
  background: none;
  border: none;
  cursor: pointer;
  color: #b0b0c0;
  padding: 6px 8px;
  display: flex;
  align-items: center;
  border-radius: 6px;
  transition: color 0.2s, background 0.2s;
  flex-shrink: 0;
}
.nav-search-btn:hover { color: #fff; background: rgba(255,255,255,0.1); }

/* Overlay container */
.hx-search-overlay {
  position: fixed;
  inset: 0;
  z-index: 9000;
  display: none;
  align-items: flex-start;
  justify-content: center;
  padding-top: 72px;
}
.hx-search-overlay.is-open { display: flex; }
body.hx-search-open { overflow: hidden; }

/* Backdrop */
.hx-search-backdrop {
  position: absolute;
  inset: 0;
  background: rgba(0,0,0,0.72);
  backdrop-filter: blur(5px);
}

/* Modal card */
.hx-search-modal {
  position: relative;
  z-index: 1;
  width: 100%;
  max-width: 680px;
  margin: 0 16px;
  background: #16162a;
  border-radius: 14px;
  border: 1px solid rgba(255,255,255,0.1);
  box-shadow: 0 28px 90px rgba(0,0,0,0.65);
  overflow: hidden;
  animation: hxSrIn 0.17s ease;
}
@keyframes hxSrIn {
  from { opacity:0; transform: translateY(-14px) scale(0.97); }
  to   { opacity:1; transform: none; }
}

/* Header row */
.hx-search-header {
  display: flex;
  align-items: center;
  padding: 12px 16px;
  border-bottom: 1px solid rgba(255,255,255,0.07);
  gap: 10px;
}
.hx-search-input-wrap {
  flex: 1;
  display: flex;
  align-items: center;
  gap: 10px;
  min-width: 0;
}
.hx-search-icon { color: #777; flex-shrink: 0; }
.hx-search-input {
  flex: 1;
  min-width: 0;
  background: none;
  border: none;
  outline: none;
  color: #f0f0f0;
  font-size: 1.05rem;
  font-family: 'Inter', sans-serif;
}
.hx-search-input::placeholder { color: #555; }
.hx-search-input::-webkit-search-cancel-button { display: none; }
.hx-search-esc-hint {
  background: rgba(255,255,255,0.07);
  border: 1px solid rgba(255,255,255,0.13);
  border-radius: 4px;
  padding: 2px 7px;
  font-size: 0.68rem;
  color: #666;
  font-family: 'Inter', sans-serif;
  flex-shrink: 0;
}
.hx-search-close {
  background: none;
  border: none;
  cursor: pointer;
  color: #777;
  padding: 6px;
  border-radius: 6px;
  display: flex;
  transition: color 0.2s;
  flex-shrink: 0;
}
.hx-search-close:hover { color: #fff; }

/* Results list */
.hx-search-results {
  max-height: 460px;
  overflow-y: auto;
  overscroll-behavior: contain;
}
.hx-search-loading,
.hx-search-empty {
  padding: 30px;
  text-align: center;
  color: #666;
  font-size: 0.88rem;
}

/* Single result */
.hx-sr {
  display: flex;
  align-items: center;
  gap: 14px;
  padding: 11px 16px;
  text-decoration: none;
  color: inherit;
  border-bottom: 1px solid rgba(255,255,255,0.05);
  transition: background 0.14s;
  cursor: pointer;
}
.hx-sr:last-child { border-bottom: none; }
.hx-sr:hover,
.hx-sr.is-active { background: rgba(255,255,255,0.07); }

/* Thumbnail */
.hx-sr-img {
  width: 74px;
  height: 54px;
  border-radius: 7px;
  overflow: hidden;
  flex-shrink: 0;
  background: #22223a;
}
.hx-sr-img img { width:100%; height:100%; object-fit:cover; display:block; }
.hx-sr-img--ph {
  display: flex;
  align-items: center;
  justify-content: center;
  color: #444;
}

/* Result body */
.hx-sr-body { flex:1; min-width:0; }
.hx-sr-meta {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-bottom: 4px;
}
.hx-sr-tag {
  font-size: 0.62rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.07em;
  background: rgba(139,92,246,0.18);
  color: #a78bfa;
  padding: 2px 7px;
  border-radius: 50px;
  white-space: nowrap;
}
.hx-sr-date {
  font-size: 0.7rem;
  color: #666;
  white-space: nowrap;
}
.hx-sr-title {
  font-size: 0.9rem;
  font-weight: 600;
  color: #eee;
  margin: 0 0 3px;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.hx-sr-excerpt {
  font-size: 0.76rem;
  color: #888;
  margin: 0;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

/* Footer hints */
.hx-search-footer {
  display: flex;
  gap: 16px;
  padding: 8px 16px;
  border-top: 1px solid rgba(255,255,255,0.06);
  font-size: 0.68rem;
  color: #555;
}

@media (max-width: 900px) {
  /* Recherche intégrée : modale collée en haut, pleine largeur — feeling header natif */
  .hx-search-overlay {
    padding-top: 0;
    align-items: flex-start;
  }
  .hx-search-backdrop { background: rgba(0,0,0,0.55); backdrop-filter: blur(3px); }
  .hx-search-modal {
    margin: 0;
    max-width: 100%;
    border-radius: 0 0 14px 14px;
    border-top: none;
    box-shadow: 0 12px 40px rgba(0,0,0,0.5);
    animation: hxSrInMobile 0.18s ease;
  }
  @keyframes hxSrInMobile {
    from { opacity:0; transform: translateY(-20px); }
    to   { opacity:1; transform: none; }
  }
  .hx-sr-img { width: 58px; height: 44px; }
  .hx-search-footer { display: none; }
  .hx-search-esc-hint { display: none; }
}

/* ── Ad inline grid (injection JS toutes les N cartes) ── */
.ad-wrap--grid-inline {
  grid-column: 1 / -1;
  display: flex;
  justify-content: center;
  padding: 12px 0;
}
.ad-wrap--grid-inline .ad-slot {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 6px;
}
/* ═══ CONFORT DE LECTURE (sidebar mobile) ════════════ */
.msidebar-comfort {
  border-top: 1px solid var(--border);
  padding: 14px 16px 16px;
  margin-top: 4px;
}
.msidebar-comfort-label {
  font-size: 0.68rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .08em;
  color: var(--ink-4);
  margin: 0 0 12px;
}
.comfort-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  margin-bottom: 12px;
}
.comfort-row-label {
  font-size: 0.78rem;
  font-weight: 500;
  color: var(--ink-2);
  flex-shrink: 0;
}
.comfort-toggle-group {
  display: flex;
  gap: 4px;
}
.comfort-toggle {
  padding: 4px 12px;
  border-radius: 20px;
  border: 1.5px solid var(--border);
  background: var(--bg);
  font-size: 0.78rem;
  font-weight: 700;
  color: var(--ink-3);
  cursor: pointer;
  transition: all .15s;
}
.comfort-toggle--active, .comfort-toggle[aria-pressed="true"] {
  background: var(--red);
  border-color: var(--red);
  color: #fff;
}
.comfort-font-btns {
  display: flex;
  align-items: center;
  gap: 6px;
}
.comfort-font-btn {
  width: 32px; height: 32px;
  border-radius: 8px;
  border: 1.5px solid var(--border);
  background: var(--bg);
  font-size: 0.8rem;
  font-weight: 700;
  color: var(--ink);
  cursor: pointer;
  transition: background .12s, border-color .12s;
  display: flex; align-items: center; justify-content: center;
}
.comfort-font-btn:hover { background: var(--bg-section); border-color: var(--ink-3); }
.comfort-font-size {
  font-size: 0.75rem;
  font-weight: 600;
  color: var(--ink-3);
  min-width: 34px;
  text-align: center;
}
.comfort-modes {
  display: flex;
  gap: 4px;
}
.comfort-mode-btn {
  width: 36px; height: 36px;
  border-radius: 8px;
  border: 1.5px solid var(--border);
  background: var(--bg);
  cursor: pointer;
  font-size: 1rem;
  transition: border-color .12s, background .12s;
  display: flex; align-items: center; justify-content: center;
}
.comfort-mode-btn:hover { background: var(--bg-section); }
.comfort-mode-btn--active, .comfort-mode-btn[data-active="true"] {
  border-color: var(--red);
  background: var(--red-pale);
}

/* Reading modes applied to body */
body.reading-sepia {
  --bg: #faf3e0;
  --bg-off: #f5ecd0;
  --bg-section: #f0e4c0;
  --ink: #4a3728;
  --ink-2: #5a4435;
  background: #faf3e0;
}
body.reading-focus .site-main,
body.reading-focus .main-section {
  max-width: 680px;
  margin-left: auto;
  margin-right: auto;
}
body.reading-focus .msidebar { display: none !important; }

/* Language override classes */
body[data-lang="en"] [data-fr] { display: none; }
body[data-lang="en"] [data-en] { display: inline; }
body[data-lang="fr"] [data-en] { display: none; }

/* ═══ TÊTES DE GONDOLES ═══════════════════════════════ */
.gondole {
  max-width: var(--max);
  margin: 48px auto 0;
  padding: 0 16px;
}
.gondole-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  border-bottom: 3px solid var(--border);
  padding-bottom: 10px;
  margin-bottom: 20px;
}
.gondole-title {
  font-family: var(--ff-head);
  font-size: 1.2rem;
  font-weight: 800;
  color: var(--ink);
  display: flex;
  align-items: center;
  gap: 8px;
  margin: 0;
}
.gondole-ico { font-size: 1.1em; }
.gondole--sport .gondole-header  { border-color: var(--c-sport); }
.gondole--sport .gondole-title   { color: var(--c-sport); }
.gondole--jeux .gondole-header   { border-color: var(--c-jeux); }
.gondole--jeux .gondole-title    { color: var(--c-jeux); }
.gondole--tendances .gondole-header { border-color: var(--c-sante); }
.gondole--tendances .gondole-title  { color: var(--c-sante); }
.gondole-voir-tout {
  font-size: 0.8rem;
  font-weight: 600;
  color: var(--ink-3);
  text-decoration: none;
  transition: color .15s;
  white-space: nowrap;
}
.gondole-voir-tout:hover { color: var(--red); }
.gondole-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 20px;
}
.gondole-card { background: var(--bg); border-radius: var(--radius); box-shadow: var(--shadow-sm); overflow: hidden; transition: box-shadow .2s, transform .2s; }
.gondole-card:hover { box-shadow: var(--shadow-md); transform: translateY(-2px); }
.gondole-card-link { display: block; text-decoration: none; color: inherit; }
.gondole-card-img { position: relative; aspect-ratio: 16/9; overflow: hidden; background: var(--bg-section); }
.gondole-card-img img { width: 100%; height: 100%; object-fit: cover; display: block; transition: transform .4s ease; }
.gondole-card:hover .gondole-card-img img { transform: scale(1.05); }
.gondole-card-gradient { width: 100%; height: 100%; }
.grad--sport     { background: linear-gradient(135deg, #F59E0B 0%, #EF4444 100%); }
.grad--jeux      { background: linear-gradient(135deg, #6366F1 0%, #8B5CF6 100%); }
.grad--tendances { background: linear-gradient(135deg, #EC4899 0%, #F43F5E 100%); }
.gondole-tag {
  position: absolute;
  top: 8px; left: 8px;
  font-size: 0.65rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .06em;
  padding: 3px 8px;
  border-radius: 20px;
  background: rgba(0,0,0,.55);
  color: #fff;
  backdrop-filter: blur(4px);
}
.gondole-card-body { padding: 12px 14px 14px; }
.gondole-card-title {
  font-family: var(--ff-head);
  font-size: 0.9rem;
  font-weight: 700;
  line-height: 1.35;
  color: var(--ink);
  margin: 0 0 6px;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}
.gondole-card-date { font-size: 0.72rem; color: var(--ink-4); }
@media (max-width: 768px) {
  .gondole-grid { grid-template-columns: 1fr; }
  .gondole { margin-top: 32px; }
}
@media (min-width: 769px) and (max-width: 1024px) {
  .gondole-grid { grid-template-columns: repeat(2, 1fr); }
}

/* tag-pill générique (padding JS min-6 hashtags) */
.tag-pill--generic {
  opacity: 0.6;
  border-style: dashed;
}

/* ═══════════════════════════════════════════════════
   WIDGET ACCESSIBILITÉ (2026-09-23)
═══════════════════════════════════════════════════ */

/* ── Bouton déclencheur ── */
.a11y-btn {
  background: none;
  border: none;
  cursor: pointer;
  color: #b0b0c0;
  padding: 6px 8px;
  display: flex;
  align-items: center;
  border-radius: 6px;
  transition: color 0.2s, background 0.2s;
  flex-shrink: 0;
}
.a11y-btn:hover { color: #fff; background: rgba(255,255,255,0.1); }
.a11y-btn.is-open { color: var(--red, #c41e3a); background: rgba(196,30,58,.1); }

/* ── Panneau flottant ── */
.a11y-panel {
  position: fixed;
  top: 68px;
  right: 12px;
  width: 288px;
  background: var(--bg, #fff);
  border: 1px solid var(--border, #e4e4e7);
  border-radius: 14px;
  box-shadow: 0 8px 32px rgba(0,0,0,.18), 0 2px 8px rgba(0,0,0,.08);
  z-index: 8500;
  display: none;
  overflow: hidden;
}
.a11y-panel.is-open { display: block; }

@media (max-width: 900px) {
  .a11y-panel { top: 60px; right: 8px; left: 8px; width: auto; border-radius: 12px; }
}

/* Header panel */
.a11y-panel-hd {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 11px 14px;
  border-bottom: 1px solid var(--border, #e4e4e7);
  background: var(--bg-section, #f2f3f5);
}
.a11y-panel-title {
  display: flex;
  align-items: center;
  gap: 7px;
  font-weight: 600;
  font-size: .875rem;
  color: var(--ink, #0a0a0a);
}
.a11y-panel-close {
  background: none;
  border: none;
  cursor: pointer;
  color: var(--ink-3, #555);
  padding: 4px;
  border-radius: 6px;
  display: flex;
  align-items: center;
  transition: background .15s, color .15s;
}
.a11y-panel-close:hover { background: var(--border, #e4e4e7); color: var(--ink); }

/* Sections */
.a11y-section {
  padding: 12px 14px;
  border-bottom: 1px solid var(--border, #e4e4e7);
}
.a11y-section-lbl {
  font-size: .72rem;
  font-weight: 700;
  color: var(--ink-3, #555);
  text-transform: uppercase;
  letter-spacing: .05em;
  margin: 0 0 8px;
}
.a11y-hint {
  font-size: .7rem;
  color: var(--ink-4, #909090);
  margin-top: 5px;
  display: block;
}

/* Groupes de boutons option */
.a11y-opt-group {
  display: flex;
  gap: 5px;
}
.a11y-opt-group--wrap { flex-wrap: wrap; }

.a11y-opt {
  flex: 1;
  min-width: 56px;
  padding: 7px 8px;
  border: 1.5px solid var(--border, #e4e4e7);
  border-radius: 8px;
  background: var(--bg, #fff);
  color: var(--ink-2, #2c2c2c);
  font-size: .8rem;
  font-family: var(--ff-body);
  font-weight: 500;
  cursor: pointer;
  transition: border-color .15s, background .15s, color .15s;
  text-align: center;
  line-height: 1.2;
}
.a11y-opt:hover { border-color: var(--ink-3, #555); }
.a11y-opt--on {
  border-color: var(--red, #c41e3a) !important;
  background: var(--red-pale, #fef2f4) !important;
  color: var(--red, #c41e3a) !important;
  font-weight: 700;
}
/* Aperçu police dans le bouton */
.a11y-opt--dyslexic { font-family: 'Comic Sans MS', Verdana, sans-serif; }
.a11y-opt--serif    { font-family: Georgia, serif; }
.a11y-opt--mono     { font-family: 'Courier New', monospace; letter-spacing: -.02em; }

/* Bouton reset */
.a11y-reset {
  width: 100%;
  padding: 10px 14px;
  background: none;
  border: none;
  border-top: 1px solid var(--border, #e4e4e7);
  color: var(--ink-4, #909090);
  font-size: .8rem;
  cursor: pointer;
  text-align: center;
  transition: color .15s, background .15s;
  display: block;
}
.a11y-reset:hover { color: var(--red, #c41e3a); background: var(--red-pale, #fef2f4); }

/* ── Hamburger gauche (mobile) ── */
@media (max-width: 900px) {
  html[data-ham-pos="left"] .nav-toggle { order: -1; }
  html[data-ham-pos="left"] .site-logo  { order: 0; }
  html[data-ham-pos="left"] .nav-search-btn { margin-left: auto !important; }
}

/* ── CONTRASTE ÉLEVÉ ── */
html[data-contrast="high"] {
  --bg:         #ffffff;
  --bg-off:     #f0f0f0;
  --bg-section: #e0e0e0;
  --ink:        #000000;
  --ink-2:      #111111;
  --ink-3:      #333333;
  --ink-4:      #555555;
  --border:     #000000;
}
html[data-contrast="high"] body { background: #fff; color: #000; }
html[data-contrast="high"] .site-header {
  background: #000 !important;
  border-bottom: 3px solid #ff0 !important;
}
html[data-contrast="high"] .site-header a,
html[data-contrast="high"] .site-header button,
html[data-contrast="high"] .nav-search-btn,
html[data-contrast="high"] .a11y-btn,
html[data-contrast="high"] .mobile-account-btn { color: #fff !important; }
html[data-contrast="high"] .site-header a:hover,
html[data-contrast="high"] .nav-search-btn:hover,
html[data-contrast="high"] .a11y-btn:hover { background: rgba(255,255,0,.18) !important; }
html[data-contrast="high"] a:not(.site-header a):not(.member-btn):not(.nav-group-label) {
  color: #0000cc !important;
  text-decoration: underline !important;
}
html[data-contrast="high"] .post-card,
html[data-contrast="high"] .gondole-card { border: 2px solid #000 !important; box-shadow: none !important; }
html[data-contrast="high"] .ticker-wrap { background: #000 !important; color: #ff0 !important; border-bottom: 2px solid #ff0 !important; }

/* ── CONTRASTE INVERSÉ ── */
html[data-contrast="inverted"] body { filter: invert(1) hue-rotate(180deg); }
html[data-contrast="inverted"] img,
html[data-contrast="inverted"] video,
html[data-contrast="inverted"] iframe,
html[data-contrast="inverted"] .logo-icon { filter: invert(1) hue-rotate(180deg); }

/* ── POLICE DYSLEXIE ── */
html[data-font="dyslexic"] body,
html[data-font="dyslexic"] p,
html[data-font="dyslexic"] li,
html[data-font="dyslexic"] .post-content,
html[data-font="dyslexic"] .article-body {
  font-family: 'Comic Sans MS', 'Trebuchet MS', Verdana, Arial, sans-serif !important;
  letter-spacing: .05em;
  word-spacing: .12em;
  line-height: 1.9;
}
html[data-font="dyslexic"] h1,
html[data-font="dyslexic"] h2,
html[data-font="dyslexic"] h3 {
  font-family: 'Trebuchet MS', Verdana, Arial, sans-serif !important;
  letter-spacing: .02em;
}

/* ── POLICE SERIF ── */
html[data-font="serif"] body,
html[data-font="serif"] p,
html[data-font="serif"] li,
html[data-font="serif"] .post-content,
html[data-font="serif"] .article-body {
  font-family: Georgia, 'Palatino Linotype', 'Times New Roman', serif !important;
  line-height: 1.78;
}
html[data-font="serif"] h1,
html[data-font="serif"] h2,
html[data-font="serif"] h3 {
  font-family: Georgia, 'Palatino Linotype', serif !important;
}

/* ── POLICE MONO ── */
html[data-font="mono"] body,
html[data-font="mono"] p,
html[data-font="mono"] li,
html[data-font="mono"] .post-content,
html[data-font="mono"] .article-body {
  font-family: 'Courier New', Consolas, 'Lucida Console', monospace !important;
  font-size: .91em;
  line-height: 1.75;
}

/* ── a11y font-size row ── */
.a11y-font-row {
  display: flex;
  align-items: center;
  gap: 8px;
}
.a11y-font-row .a11y-opt {
  flex: 0 0 44px;
  padding: 7px 4px;
  font-weight: 700;
  letter-spacing: -.01em;
}
.a11y-font-val {
  flex: 1;
  text-align: center;
  font-size: .85rem;
  font-weight: 600;
  color: var(--ink-2, #2c2c2c);
  pointer-events: none;
}

/* ══ NOUVELLES GONDOLES (2026-09-23) ══════════════════════════════════════ */

:root {
  --c-science:  #0891B2;
  --c-cuisine:  #CA8A04;
  --c-voyage:   #059669;
}

/* Gradients manquants pour gondoles existantes */
.grad--sport      { background: linear-gradient(135deg, #7f1d1d 0%, #C2410C 50%, #EF4444 100%); }
.grad--jeux       { background: linear-gradient(135deg, #1e1b4b 0%, #4338CA 50%, #6366F1 100%); }
.grad--tendances  { background: linear-gradient(135deg, #042f2e 0%, #065F46 50%, #059669 100%); }

/* Nouveaux gradients */
.grad--science    { background: linear-gradient(135deg, #082f49 0%, #0C4A6E 50%, #0891B2 100%); }
.grad--cuisine    { background: linear-gradient(135deg, #422006 0%, #92400E 50%, #CA8A04 100%); }
.grad--voyage     { background: linear-gradient(135deg, #022c22 0%, #065F46 50%, #059669 100%); }

/* Couleurs gondoles — tech, sante, finance réutilisent variables existantes */
.gondole--tech .gondole-header     { border-color: var(--c-tech); }
.gondole--tech .gondole-title      { color: var(--c-tech); }
.gondole--sante .gondole-header    { border-color: var(--c-sante); }
.gondole--sante .gondole-title     { color: var(--c-sante); }
.gondole--finance .gondole-header  { border-color: var(--c-finance); }
.gondole--finance .gondole-title   { color: var(--c-finance); }
.gondole--science .gondole-header  { border-color: var(--c-science); }
.gondole--science .gondole-title   { color: var(--c-science); }
.gondole--cuisine .gondole-header  { border-color: var(--c-cuisine); }
.gondole--cuisine .gondole-title   { color: var(--c-cuisine); }
.gondole--humour .gondole-header   { border-color: var(--c-humour); }
.gondole--humour .gondole-title    { color: var(--c-humour); }
.gondole--guides .gondole-header   { border-color: var(--red); }
.gondole--guides .gondole-title    { color: var(--red); }

/* Nav hover pour nouvelles catégories */
.nav-science:hover  { color: var(--c-science) !important; }
.nav-cuisine:hover  { color: var(--c-cuisine) !important; }
.nav-voyage:hover   { color: var(--c-voyage) !important; }

/* Nouvelles couleurs msidebar (2026-09-23) */
.msidebar-group[data-color="science"].is-open .msidebar-cat-btn { color: var(--c-science); background: #ecfeff; }
.msidebar-group[data-color="cuisine"].is-open .msidebar-cat-btn { color: var(--c-cuisine); background: #fefce8; }
.msidebar-group[data-color="voyage"].is-open  .msidebar-cat-btn { color: var(--c-voyage);  background: #f0fdf4; }

/* Accessibilité — masquer visuellement sans retirer du DOM (screen readers + SEO) */
.sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0,0,0,0);
  white-space: nowrap;
  border: 0;
}

/* ── Featured List : 5 articles à la une sous le slider ─────────────────── */
.featured-list-section {
  max-width: var(--content-width, 1200px);
  margin: 2rem auto 0;
  padding: 0 1.25rem;
}

.featured-list {
  display: grid;
  grid-template-columns: repeat(5, 1fr);
  gap: 1rem;
}

.flist-item {
  border-radius: 10px;
  overflow: hidden;
  background: #fff;
  box-shadow: 0 1px 6px rgba(0,0,0,.07);
  transition: box-shadow .2s, transform .2s;
}
.flist-item:hover {
  box-shadow: 0 4px 18px rgba(0,0,0,.12);
  transform: translateY(-2px);
}

.flist-link {
  display: flex;
  flex-direction: column;
  height: 100%;
  text-decoration: none;
  color: inherit;
}

.flist-thumb {
  position: relative;
  width: 100%;
  aspect-ratio: 16/9;
  overflow: hidden;
  flex-shrink: 0;
}
.flist-thumb img,
.flist-thumb-grad {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  transition: transform .35s ease;
}
.flist-item:hover .flist-thumb img { transform: scale(1.04); }
.flist-thumb-grad { background: var(--grad-default, #1a1a2e); }

.flist-body {
  display: flex;
  flex-direction: column;
  gap: .35rem;
  padding: .75rem .85rem .9rem;
  flex: 1;
}

.flist-tag {
  font-size: .68rem;
  font-weight: 700;
  letter-spacing: .04em;
  text-transform: uppercase;
  padding: .2em .55em;
  border-radius: 4px;
  align-self: flex-start;
  line-height: 1.4;
}

.flist-title {
  font-family: 'Playfair Display', Georgia, serif;
  font-size: .9rem;
  font-weight: 700;
  line-height: 1.35;
  color: #111;
  margin: 0;
  display: -webkit-box;
  -webkit-line-clamp: 3;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

.flist-date {
  font-size: .72rem;
  color: #888;
  margin-top: auto;
  padding-top: .3rem;
}

/* Responsive : 3 cols sur tablette, 1 col sur mobile */
@media (max-width: 1024px) {
  .featured-list { grid-template-columns: repeat(3, 1fr); }
}
@media (max-width: 640px) {
  .featured-list { grid-template-columns: 1fr; gap: .6rem; }
  .flist-item { display: flex; flex-direction: row; border-radius: 8px; }
  .flist-link { flex-direction: row; }
  .flist-thumb { width: 90px; min-width: 90px; aspect-ratio: 1/1; border-radius: 0; }
  .flist-body { padding: .6rem .75rem; }
  .flist-title { font-size: .82rem; -webkit-line-clamp: 2; }
}

/* flist excerpt (ajouté batch-2) */
.flist-excerpt {
  font-size: .78rem;
  color: #555;
  line-height: 1.45;
  margin: 0;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}
@media (max-width: 640px) {
  .flist-excerpt { display: none; }
}

/* ═══════════════════════════════════════════
   PAGE TEMPLATE (page.hbs) — institutional pages
   CGU, mentions légales, plan du site, à propos
   ═══════════════════════════════════════════ */
.page-main {
  max-width: 800px;
  margin: 0 auto;
  padding: 32px 24px 64px;
}

.page-breadcrumb {
  display: flex;
  align-items: center;
  gap: 6px;
  font-size: 0.82rem;
  color: #888;
  margin-bottom: 20px;
}
.page-breadcrumb a {
  color: #888;
  text-decoration: none;
}
.page-breadcrumb a:hover { color: var(--red); }
.breadcrumb-sep { color: #bbb; }

.page-title {
  font-size: 2rem;
  font-weight: 800;
  line-height: 1.2;
  color: var(--ink);
  margin: 0 0 12px;
}

.page-excerpt {
  font-size: 1.1rem;
  color: #555;
  margin: 0 0 32px;
  line-height: 1.6;
  border-left: 3px solid var(--red);
  padding-left: 14px;
}

.page-content {
  font-size: 1rem;
  line-height: 1.8;
  color: var(--ink);
  margin-bottom: 48px;
}
.page-content h2 {
  font-size: 1.4rem;
  font-weight: 700;
  margin: 40px 0 14px;
  padding-bottom: 8px;
  border-bottom: 2px solid var(--surface);
}
.page-content h3 {
  font-size: 1.15rem;
  font-weight: 700;
  margin: 28px 0 10px;
}
.page-content p { margin-bottom: 18px; }
.page-content ul, .page-content ol {
  padding-left: 24px;
  margin-bottom: 18px;
}
.page-content li { margin-bottom: 6px; }
.page-content a {
  color: var(--red);
  text-decoration: underline;
  text-decoration-color: rgba(220,38,38,.3);
}
.page-content a:hover { text-decoration-color: var(--red); }
.page-content strong { font-weight: 700; }
.page-content blockquote {
  border-left: 3px solid var(--red);
  margin: 24px 0;
  padding: 12px 20px;
  background: var(--surface);
  border-radius: 0 6px 6px 0;
  font-style: italic;
  color: #555;
}
.page-content hr {
  border: none;
  border-top: 1px solid var(--border);
  margin: 32px 0;
}

.page-footer {
  padding-top: 24px;
  border-top: 1px solid var(--border);
}
.page-back-link {
  font-size: 0.9rem;
  color: #666;
  text-decoration: none;
  display: inline-flex;
  align-items: center;
  gap: 6px;
  transition: color .2s;
}
.page-back-link:hover { color: var(--red); }

@media (max-width: 640px) {
  .page-main { padding: 20px 16px 48px; }
  .page-title { font-size: 1.5rem; }
}

/* ── Encadré Bon à savoir (§14 charte orchestrateur) ────────────── */
.bon-a-savoir {
  background: rgba(52, 152, 219, 0.08);
  border-left: 3px solid #3498db;
  border-radius: 0 8px 8px 0;
  padding: 16px 20px;
  margin: 28px 0;
}
.bon-a-savoir strong {
  display: block;
  color: #3498db;
  font-size: 0.8rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  margin-bottom: 8px;
}
.bon-a-savoir p {
  font-size: 0.92rem;
  color: var(--text, #e8eaf0);
  line-height: 1.65;
  margin: 0;
}

/* ── Signature auteur (§15 charte orchestrateur) ────────────────── */
.author-signature {
  margin: 32px 0 16px;
  padding-top: 16px;
  border-top: 1px solid var(--border, #2a2d3e);
  font-size: 0.85rem;
  color: var(--muted, #8b8fa8);
}
.author-signature a {
  color: var(--red, #e63946);
  text-decoration: none;
}
.author-signature a:hover {
  text-decoration: underline;
}

/* ── Author box E-E-A-T ──────────────────────────────────────────── */
.author-box {
  margin: 40px 0 32px;
  padding: 24px;
  border: 1px solid var(--border, #2a2d3e);
  border-radius: 10px;
  background: var(--card-bg, #1e2130);
}
.author-box-inner {
  display: flex;
  gap: 18px;
  align-items: flex-start;
}
.author-box-avatar {
  width: 64px;
  height: 64px;
  border-radius: 50%;
  object-fit: cover;
  flex-shrink: 0;
  background: var(--surface, #252840);
}
.author-box-avatar--placeholder {
  display: flex;
  align-items: center;
  justify-content: center;
  color: var(--muted, #8b8fa8);
}
.author-box-label {
  display: block;
  font-size: 0.72rem;
  text-transform: uppercase;
  letter-spacing: .06em;
  color: var(--muted, #8b8fa8);
  margin-bottom: 4px;
}
.author-box-name {
  display: block;
  font-size: 1rem;
  font-weight: 700;
  color: var(--text, #e8eaf0);
  text-decoration: none;
  margin-bottom: 6px;
}
.author-box-name:hover { color: var(--red, #e63946); }
.author-box-bio {
  font-size: 0.87rem;
  color: var(--text-muted, #aab0c6);
  margin: 0 0 10px;
  line-height: 1.55;
}
.author-box-links {
  display: flex;
  gap: 10px;
  flex-wrap: wrap;
}
.author-box-link {
  font-size: 0.78rem;
  padding: 4px 10px;
  border-radius: 4px;
  text-decoration: none;
  font-weight: 600;
  transition: opacity .2s;
}
.author-box-link--linkedin {
  background: #0077b5;
  color: #fff;
}
.author-box-link--web {
  background: var(--surface, #252840);
  color: var(--text, #e8eaf0);
}
.author-box-link:hover { opacity: .82; }
@media (max-width: 600px) {
  .author-box-inner { flex-direction: column; }
  .author-box-avatar { width: 52px; height: 52px; }
}

/* ── Sources & Documentation ─────────────────────────────────────── */
.sources-section {
  margin: 32px 0;
  padding: 20px 24px;
  border-left: 3px solid var(--red, #e63946);
  background: var(--card-bg, #1e2130);
  border-radius: 0 8px 8px 0;
}
.sources-header {
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: 0.82rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .06em;
  color: var(--muted, #8b8fa8);
  margin-bottom: 12px;
}
.sources-body {
  font-size: 0.87rem;
  color: var(--text-muted, #aab0c6);
  line-height: 1.6;
}
.sources-body a {
  color: var(--red, #e63946);
  text-decoration: none;
}
.sources-body a:hover { text-decoration: underline; }
.sources-body ul { margin: 0; padding-left: 18px; }
.sources-body li { margin-bottom: 4px; }

/* ── Bandeau consentement cookies (CMP) ──────────────────────────── */
.hx-cmp {
  position: fixed;
  bottom: 0;
  left: 0;
  right: 0;
  z-index: 9999;
  background: var(--bg-dark, #11131f);
  border-top: 1px solid var(--border, #2a2d3e);
  padding: 16px 24px;
  box-shadow: 0 -4px 24px rgba(0,0,0,.45);
}
.hx-cmp-inner {
  max-width: 900px;
  margin: 0 auto;
  display: flex;
  align-items: center;
  gap: 24px;
  flex-wrap: wrap;
}
.hx-cmp-text {
  flex: 1;
  min-width: 220px;
}
.hx-cmp-text strong {
  display: block;
  font-size: 0.9rem;
  color: var(--text, #e8eaf0);
  margin-bottom: 4px;
}
.hx-cmp-text p {
  font-size: 0.82rem;
  color: var(--muted, #8b8fa8);
  margin: 0;
  line-height: 1.5;
}
.hx-cmp-link {
  color: var(--red, #e63946);
  text-decoration: none;
}
.hx-cmp-link:hover { text-decoration: underline; }
.hx-cmp-actions {
  display: flex;
  gap: 10px;
  flex-shrink: 0;
}
.hx-cmp-btn {
  padding: 9px 20px;
  border: none;
  border-radius: 6px;
  font-size: 0.85rem;
  font-weight: 600;
  cursor: pointer;
  transition: opacity .2s;
}
.hx-cmp-btn--refuse {
  background: var(--surface, #252840);
  color: var(--text, #e8eaf0);
}
.hx-cmp-btn--accept {
  background: var(--red, #e63946);
  color: #fff;
}
.hx-cmp-btn:hover { opacity: .85; }
@media (max-width: 600px) {
  .hx-cmp-inner { flex-direction: column; gap: 12px; }
  .hx-cmp-actions { width: 100%; }
  .hx-cmp-btn { flex: 1; text-align: center; }
}
