/* ==========================================================================
   AFRICA HEALTH NEWS — COUCHE D'AMÉLIORATION
   Iconographie santé, tonalités de rubriques, animations, lisibilité.
   (Se superpose à main.css, issu de la maquette v6 compacte.)
   ========================================================================== */

/* ---------- 0. Lisibilité ---------- */
body { font-size: var(--base-size, 14px); }
.label { font-size: 9px; gap: 5px; }
.editorial-badge { font-size: 8.5px; }
.meta { font-size: 10.5px; }
.article p { font-size: 12.8px; }
.readline { font-size: 11.5px; }
.section-pill, .rubric-pill { font-size: 9.5px; }
.rank-title { font-size: 12px; }
.short-content small { font-size: 8.5px; }
.form-note { font-size: 10.5px !important; }

/* ---------- 1. Icônes ---------- */
.ahn-i { width: 1em; height: 1em; flex: none; display: inline-block; vertical-align: -0.15em; overflow: visible; }
.btn .ahn-i, .text-link .ahn-i, .utility-discover .ahn-i, .campaign-cta .ahn-i { width: 14px; height: 14px; transition: transform .25s cubic-bezier(.2,0,0,1); }
.btn:hover .ahn-i-arrow-up-right, .text-link:hover .ahn-i, .utility-discover:hover .ahn-i, .campaign-banner:hover .campaign-cta .ahn-i { transform: translate(2px,-2px); }
.icon .ahn-i, .hero-nav-arrow .ahn-i { width: 16px; height: 16px; }
.read-icon .ahn-i { width: 12px; height: 12px; }
.rank-arrow .ahn-i { width: 13px; height: 13px; }
.meta .ahn-i { width: 12px; height: 12px; opacity: .75; margin-right: 1px; }
.meta-time { display: inline-flex; align-items: center; gap: 3px; }
.label-icon { width: 11px !important; height: 11px !important; }
.subnav-pill .ahn-i, .filter .ahn-i, .country-pill .ahn-i, .country-label .ahn-i { width: 14px; height: 14px; }
.subnav-pill, .filter, .country-pill, .country-label { display: inline-flex; align-items: center; gap: 6px; }

/* ---------- 2. Tonalités des rubriques ---------- */
.tone-emerald { --tone: var(--color-emerald); --tone-light: var(--color-emerald-light); --tone-border: var(--color-emerald-border); --tone-rgb: var(--color-emerald-rgb); }
.tone-blue    { --tone: var(--brand-blue);    --tone-light: var(--brand-blue-light);    --tone-border: var(--brand-blue-border);    --tone-rgb: var(--brand-blue-rgb); }
.tone-violet  { --tone: var(--color-violet);  --tone-light: var(--color-violet-light);  --tone-border: var(--color-violet-border);  --tone-rgb: var(--color-violet-rgb); }
.tone-amber   { --tone: var(--color-amber);   --tone-light: var(--color-amber-light);   --tone-border: var(--color-amber-border);   --tone-rgb: var(--color-amber-rgb); }
.tone-red     { --tone: var(--brand-red);     --tone-light: var(--brand-red-light);     --tone-border: var(--brand-red-border);     --tone-rgb: var(--brand-red-rgb); }
.tone-cyan    { --tone: var(--color-cyan);    --tone-light: var(--color-cyan-light);    --tone-border: var(--color-cyan-border);    --tone-rgb: var(--color-cyan-rgb); }

.label[class*="tone-"] { background: var(--tone-light); color: var(--tone); border: 1px solid var(--tone-border); }
.imagebox .label[class*="tone-"] { background: color-mix(in srgb, var(--surface) 88%, transparent); }
.label-static { position: static; box-shadow: none; }
.article.tone-emerald:hover, .article.tone-blue:hover, .article.tone-violet:hover, .article.tone-amber:hover, .article.tone-red:hover, .article.tone-cyan:hover { border-color: var(--tone-border); }
.article[class*="tone-"] .meta-cat { color: var(--tone); }
.article[class*="tone-"]:hover h3 { color: var(--tone); }
.article[class*="tone-"] .readline { color: var(--tone); }
.article[class*="tone-"] .read-icon { background: var(--tone-light); color: var(--tone); }
.article[class*="tone-"]:hover .read-icon { background: var(--tone); color: #fff; }
.article[class*="tone-"]::before { content: ''; position: absolute; left: 0; right: 0; top: 0; height: 3px; background: linear-gradient(90deg, var(--tone), transparent); transform: scaleX(0); transform-origin: left; transition: transform .45s cubic-bezier(.2,0,0,1); z-index: 3; }
.article { position: relative; }
.article:hover::before { transform: scaleX(1); }
.subnav-pill[class*="tone-"] .ahn-i, .filter[class*="tone-"] .ahn-i { color: var(--tone); }
.filter[class*="tone-"][aria-pressed="true"], .subnav-pill[class*="tone-"].active { background: var(--tone); border-color: var(--tone); color: #fff; }
.filter[class*="tone-"][aria-pressed="true"] .ahn-i, .subnav-pill[class*="tone-"].active .ahn-i { color: #fff; }
.rail-item[class*="tone-"] small { color: color-mix(in srgb, var(--tone) 55%, #ffffff); display: inline-flex; align-items: center; gap: 4px; }
.rail-item small .ahn-i { width: 11px; height: 11px; }

/* ---------- 3. Cartes (liens) ---------- */
.article-link { display: flex; flex-direction: column; height: 100%; width: 100%; text-align: left; color: inherit; }
.science-feature { display: block; }
.public-tile, .world-card, .science-item, .rank-item, .rail-item, .short-card { color: inherit; }
.rank-item, .rail-item { text-decoration: none; }
.imagebox > img, .imagebox > .ahn-placeholder { position: absolute; inset: 0; }
.quick-btn {
  position: absolute; top: 10px; right: 10px; z-index: 4;
  width: 32px; height: 32px; border-radius: 50%; display: grid; place-items: center;
  background: rgba(15, 23, 42, .62); color: #fff; backdrop-filter: blur(8px);
  border: 1px solid rgba(255,255,255,.25);
  opacity: 0; transform: scale(.7); transition: opacity .25s, transform .25s cubic-bezier(.2,0,0,1), background .2s;
}
.quick-btn .ahn-i { width: 15px; height: 15px; }
.article:hover .quick-btn, .quick-btn:focus-visible { opacity: 1; transform: none; }
.quick-btn:hover { background: var(--brand-blue); }
.article:has(.editorial-badge) .quick-btn { top: 36px; }
@media (hover: none) { .quick-btn { opacity: 1; transform: none; } }

/* Visuel de remplacement (aucune image) */
.ahn-placeholder {
  display: grid; place-items: center; width: 100%; height: 100%;
  background: radial-gradient(circle at 30% 20%, var(--tone-light), transparent 60%), linear-gradient(135deg, var(--tone-light), var(--surface-subtle));
  color: var(--tone);
}
.ahn-placeholder .ahn-i { width: 30%; height: 30%; max-width: 72px; max-height: 72px; opacity: .55; animation: ahnFloat 6s ease-in-out infinite; }

/* ---------- 4. En-têtes de section avec icône ---------- */
.section-title-wrap { display: flex; align-items: center; gap: 14px; }
.section-icon, .rubric-icon {
  flex: none; position: relative; display: grid; place-items: center;
  width: 46px; height: 46px; border-radius: 14px;
  background: linear-gradient(135deg, var(--brand-blue), color-mix(in srgb, var(--brand-blue) 55%, var(--color-cyan)));
  color: #fff; box-shadow: 0 8px 18px -6px rgba(var(--brand-blue-rgb), .55);
}
.section-icon .ahn-i, .rubric-icon .ahn-i { width: 22px; height: 22px; }
.section-icon::after, .rubric-icon::after { content: ''; position: absolute; inset: -4px; border-radius: 17px; border: 2px solid rgba(var(--brand-blue-rgb), .35); opacity: 0; }
.section-head.visible .section-icon::after, .rubric.visible .rubric-icon::after { animation: ahnRing 2.6s ease-out .3s 2; }
.section-head:hover .section-icon .ahn-i, .rubric-head:hover .rubric-icon .ahn-i { animation: ahnBeat 1s ease-in-out; }
.section-head h2 { position: relative; }
.section-head h2::after {
  content: ''; display: block; width: 64px; height: 10px; margin-top: 4px;
  background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 64 10' fill='none' stroke='%23ef4444' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M0 5h20l3-4 4 8 3-6 2 2h32'/%3E%3C/svg%3E") no-repeat left center / contain;
  clip-path: inset(0 100% 0 0);
}
.section-head.visible h2::after { animation: ahnReveal 1.1s cubic-bezier(.2,0,0,1) .25s forwards; }
.shorts-section .section-icon { background: linear-gradient(135deg, var(--brand-red), #f97316); box-shadow: 0 8px 18px -6px rgba(var(--brand-red-rgb), .55); }
.rubric-head { display: flex; flex-direction: row; align-items: center; gap: 12px; }
.rubric[class*="tone-"] .rubric-pill { background: var(--tone-light); color: var(--tone); border-color: var(--tone-border); }
.rubric-head > div { flex: 1; min-width: 0; }
.rubric[class*="tone-"] .rubric-icon { background: linear-gradient(135deg, var(--tone), color-mix(in srgb, var(--tone) 60%, #000)); box-shadow: 0 8px 18px -6px rgba(var(--tone-rgb), .5); }
.rubric[class*="tone-"] .rubric-icon::after { border-color: rgba(var(--tone-rgb), .35); }
.rubric-icon { width: 40px; height: 40px; border-radius: 12px; }
.rubric-icon .ahn-i { width: 19px; height: 19px; }
.rubric-more { display: inline-flex; align-items: center; gap: 5px; font-size: 11px; font-weight: 700; color: var(--tone, var(--brand-blue)); padding: 6px 12px; border-radius: var(--radius-pill); background: var(--tone-light, var(--brand-blue-light)); transition: gap .2s; white-space: nowrap; }
.rubric-more:hover { gap: 9px; }
.rubric-more .ahn-i { width: 13px; height: 13px; }

/* ---------- 5. Logo animé ---------- */
.health-mark .heart-shape { transform-origin: 24px 26px; animation: ahnBeat 1.8s ease-in-out infinite; }
.brand-logo { max-height: 44px; width: auto; height: auto; object-fit: contain; background: none; }

/* ---------- 6. Bannière & icônes flottantes ---------- */
.float-icons { position: absolute; inset: 0; pointer-events: none; z-index: 1; overflow: hidden; }
.float-icons .fi { position: absolute; color: rgba(255, 255, 255, .16); animation: ahnFloat 9s ease-in-out infinite; }
.float-icons .ahn-i { width: 30px; height: 30px; }
.float-icons .fi-0 { left: 46%; top: 14%; }
.float-icons .fi-1 { left: 58%; bottom: 12%; animation-delay: -2s; }
.float-icons .fi-2 { left: 70%; top: 18%; animation-delay: -4s; }
.float-icons .fi-3 { left: 82%; bottom: 20%; animation-delay: -6s; }
.float-icons .fi-4 { left: 64%; top: 46%; animation-delay: -3s; }
.float-icons .fi-5 { left: 90%; top: 10%; animation-delay: -5s; }
.float-icons .fi-1 .ahn-i, .float-icons .fi-4 .ahn-i { width: 22px; height: 22px; }
.campaign-content { position: relative; z-index: 2; }
.campaign-seal, .campaign-credit { z-index: 2; }
.newsletter > div:not(.float-icons), .newsletter > form { position: relative; z-index: 2; }
.newsletter .float-icons .fi { color: rgba(255, 255, 255, .12); }
.newsletter .float-icons .fi-0 { left: 4%; top: 70%; }
.newsletter .float-icons .fi-2 { left: 40%; top: 8%; }

/* ---------- 7. Barre utilitaire ---------- */
.flash-label { display: inline-flex; align-items: center; gap: 6px; }
.flash-label::before { display: none !important; }
.flash-icon { width: 13px; height: 13px; stroke-dasharray: 40; animation: ahnDash 2.4s linear infinite; }
.utility-discover { display: inline-flex; align-items: center; gap: 4px; }

/* ---------- 8. En-tête ---------- */
body.ahn-sticky .mast { position: sticky; top: 0; z-index: 50; }
.mast.is-scrolled { box-shadow: 0 8px 24px -12px rgba(15, 23, 42, .18); }
nav a { display: inline-flex; align-items: center; gap: 6px; position: relative; }
nav a.is-current { color: var(--brand-blue); background: var(--brand-blue-light); }
.navrow nav a::after { content: ''; position: absolute; left: 50%; bottom: 2px; width: 0; height: 2px; border-radius: 2px; background: var(--brand-red); transition: width .25s, left .25s; }
.navrow nav a:hover::after { width: 16px; left: calc(50% - 8px); }
.actions .btn { display: inline-flex; gap: 6px; }
.theme-toggle { position: relative; overflow: hidden; }
.theme-toggle .ahn-i { position: absolute; inset: 0; margin: auto; width: 16px; height: 16px; transition: transform .45s cubic-bezier(.2,0,0,1), opacity .3s; }
.theme-toggle .icon-sun { transform: rotate(-90deg) scale(.4); opacity: 0; color: #fbbf24; }
[data-theme="dark"] .theme-toggle .icon-sun { transform: none; opacity: 1; }
[data-theme="dark"] .theme-toggle .icon-moon { transform: rotate(90deg) scale(.4); opacity: 0; }
.menu .icon-close { display: none; }
.menu[aria-expanded="true"] .icon-open { display: none; }
.menu[aria-expanded="true"] .icon-close { display: inline-block; }
.search-toggle { display: inline-grid; }
.search-panel { border-top: 1px solid var(--line); background: var(--surface); padding: 14px 0; animation: copyIn .3s ease-out both; }
.search-panel[hidden] { display: none; }

/* Bouton avec reflet */
.btn-shine { position: relative; overflow: hidden; }
.btn-shine::after { content: ''; position: absolute; top: 0; left: -60%; width: 40%; height: 100%; background: linear-gradient(100deg, transparent, rgba(255,255,255,.45), transparent); transform: skewX(-20deg); animation: ahnShine 4.5s ease-in-out infinite; }

/* ---------- 9. Grand format : fondu enchaîné ---------- */
.hero-slide { position: absolute; inset: 0; opacity: 0; visibility: hidden; transition: opacity .8s ease, visibility 0s linear .8s; }
.hero-slide.is-active { opacity: 1; visibility: visible; transition: opacity .8s ease; z-index: 1; }
.hero-slide .hero-photo img { transform: scale(1.08); transition: transform 7s cubic-bezier(.2,0,0,1); }
.hero-slide.is-active .hero-photo img { transform: scale(1); }
.hero-slide.is-active .copy > * { animation: copyIn .6s cubic-bezier(.2,0,0,1) both; }
.hero-slide.is-active .copy > *:nth-child(2) { animation-delay: .08s; }
.hero-slide.is-active .copy > *:nth-child(3) { animation-delay: .16s; }
.hero-slide.is-active .copy > *:nth-child(4) { animation-delay: .24s; }
.hero .hero-title { font-family: var(--font-display); font-size: clamp(24px, 2.6vw, 34px); line-height: 1.15; font-weight: 800; letter-spacing: -0.03em; margin: 8px 0 10px; color: #fff; }
.hero .hero-title a { color: inherit; background: linear-gradient(currentColor, currentColor) no-repeat 0 100% / 0 2px; transition: background-size .4s; }
.hero .hero-title a:hover { background-size: 100% 2px; }
.copy { max-width: 620px; }
.hero-nav-arrow { top: 30%; }
.hero-nav-arrow:hover { transform: translateY(-50%) scale(1.1); }
.copy-actions { display: flex; align-items: center; gap: 14px; flex-wrap: wrap; }
.copy-time { display: inline-flex; align-items: center; gap: 5px; font-size: 11px; color: #cbd5e1; font-weight: 600; }
.copy-time .ahn-i { width: 13px; height: 13px; }
.photo-tag { display: inline-flex; align-items: center; gap: 6px; }
.photo-tag .ahn-i { width: 12px; height: 12px; }
.photo-tag[class*="tone-"] { color: var(--tone); }
.intro .eyebrow { display: inline-flex; align-items: center; gap: 6px; }
.intro .eyebrow .ahn-i { width: 13px; height: 13px; color: var(--brand-red); }
.beat { animation: ahnBeat 1.6s ease-in-out infinite; }
.hero-dock-dots button { position: relative; overflow: hidden; }
.dock-progress { position: absolute; left: 0; bottom: 0; height: 2px; width: 0; background: var(--brand-red); border-radius: 2px; }
.hero-grid.is-playing .hero-dock-dots button[aria-pressed="true"] .dock-progress { animation: ahnProgress var(--hero-interval, 6500ms) linear forwards; }
.hero-dock-pause .i-play, .hero-grid.is-paused .hero-dock-pause .i-pause { display: none; }
.hero-grid.is-paused .hero-dock-pause .i-play { display: inline-block; }
.hero-dock-pause .ahn-i { width: 12px; height: 12px; }
#railPause .i-play, .news-rail.is-paused #railPause .i-pause { display: none; }
.news-rail.is-paused #railPause .i-play { display: inline-block; }
.rail-head .eyebrow { display: inline-flex; align-items: center; gap: 4px; }
.rail-head .eyebrow .ahn-i { width: 12px; height: 12px; stroke-dasharray: 40; animation: ahnDash 2.4s linear infinite; }
.rail-time { display: block; font-style: normal; font-size: 9.5px; color: #94a3b8; margin-top: 2px; }

/* ---------- 10. Bandeau défilant ---------- */
.ticker-title { display: inline-flex; align-items: center; gap: 6px; }
.ticker-title .ahn-i { width: 14px; height: 14px; }
.ticker-track span { display: inline-flex; align-items: center; gap: 8px; }
.ticker-track span .ahn-i { width: 15px; height: 15px; color: var(--brand-red); }
.ticker:hover .ticker-track { animation-play-state: paused; }

/* ---------- 11. Grilles : apparition en cascade ---------- */
.articles .article:nth-child(3n+2), .carousel .article:nth-child(3n+2) { transition-delay: .08s; }
.articles .article:nth-child(3n+3), .carousel .article:nth-child(3n+3) { transition-delay: .16s; }
.articles .article[hidden] { display: none; }
.articles .article.is-filtering { animation: ahnPop .45s cubic-bezier(.2,0,0,1) both; }
.count:empty { display: none; }

/* ---------- 12. Rubriques ---------- */
.science-feature small, .world-feature-body small { display: inline-flex; align-items: center; gap: 5px; }
.science-feature small .ahn-i, .world-feature-body small .ahn-i { width: 13px; height: 13px; }
.feature-time, .world-time, .tile-link, .world-link { display: inline-flex; align-items: center; gap: 5px; }
.feature-time .ahn-i, .world-time .ahn-i, .tile-link .ahn-i, .world-link .ahn-i, .science-arrow .ahn-i { width: 12px; height: 12px; }
.world-excerpt { display: block; font-size: 12px; line-height: 1.55; color: #cbd5e1; margin: 2px 0 10px; }
.public-tile:hover .tile-link .ahn-i, .world-feature:hover .world-link .ahn-i { transform: translate(2px, -2px); transition: transform .2s; }
.rubric-public[class*="tone-"] .public-tile:hover { border-color: var(--tone-border); }

/* ---------- 13. Barre latérale ---------- */
.rank-box h2 { display: flex; align-items: center; gap: 7px; }
.rank-box h2 .flame { width: 18px; height: 18px; color: #f97316; animation: ahnFlicker 1.6s ease-in-out infinite; transform-origin: 50% 100%; }
.rank-box h2::before { display: none; }
.rank-num { background: #e2e8f0; color: #475569; }
[data-theme="dark"] .rank-num { background: rgba(255,255,255,.1); color: #cbd5e1; }
.rank-1 { background: linear-gradient(135deg, #ef4444, #f97316); color: #fff; }
.rank-2 { background: linear-gradient(135deg, #2563eb, #06b6d4); color: #fff; }
.rank-3 { background: linear-gradient(135deg, #10b981, #059669); color: #fff; }
.rank-4 { background: linear-gradient(135deg, #8b5cf6, #6366f1); color: #fff; }
.podcast-tag, .podcast-host { display: inline-flex; align-items: center; gap: 5px; }
.podcast-tag .ahn-i, .podcast-host .ahn-i { width: 13px; height: 13px; }
.podcast-title a { color: inherit; }
.podcast-play-btn .ahn-i { width: 14px; height: 14px; }
.podcast-play-btn .i-pause, .podcast-widget.playing .podcast-play-btn .i-play { display: none; }
.podcast-widget.playing .podcast-play-btn .i-pause { display: inline-block; }
.podcast-widget.playing .podcast-play-btn { box-shadow: 0 0 0 0 rgba(255,255,255,.45); animation: ahnPulseRing 1.6s ease-out infinite; }
.podcast-waveform { flex: 1; }
.podcast-progress { height: 3px; border-radius: 3px; background: rgba(255,255,255,.15); margin-top: 10px; overflow: hidden; }
.podcast-progress i { display: block; height: 100%; width: 0; background: linear-gradient(90deg, #f472b6, #fbbf24); transition: width .3s linear; }
.wave-bar:nth-child(8)  { animation-delay: .15s; } .wave-bar:nth-child(9)  { animation-delay: .35s; }
.wave-bar:nth-child(10) { animation-delay: .05s; } .wave-bar:nth-child(11) { animation-delay: .25s; }
.wave-bar:nth-child(12) { animation-delay: .45s; } .wave-bar:nth-child(13) { animation-delay: .1s; }
.wave-bar:nth-child(14) { animation-delay: .3s; }
.podcast-widget.playing .wave-bar:nth-child(n+8) { animation: waveMotion 0.9s ease-in-out infinite alternate; }
.callout-icon { display: inline-grid; place-items: center; width: 40px; height: 40px; border-radius: 12px; background: var(--brand-red-light); color: var(--brand-red); margin-bottom: 8px; }
.callout-icon .ahn-i { width: 20px; height: 20px; animation: ahnSpinSlow 12s linear infinite; }
.sidebar-callout a .ahn-i { width: 12px; height: 12px; }
.sidebar-callout .ahn-newsletter-form .eyebrow { display: none; }
.sidebar-callout .emailrow { background: var(--surface-subtle); border-color: var(--line); }
.sidebar-callout .emailrow input { color: var(--text-main); }
.sidebar-callout .emailrow input::placeholder { color: var(--text-sub); }
.sidebar-callout .emailrow button { background: var(--brand-blue); color: #fff; }
.sidebar-callout .form-note { color: var(--text-muted); }

/* ---------- 14. Terrain ---------- */
.stamp { display: inline-flex; align-items: center; gap: 6px; }
.stamp .ahn-i { width: 13px; height: 13px; }
.field-points { list-style: none; display: flex; flex-wrap: wrap; gap: 8px; margin: 0 0 18px; padding: 0; }
.field-points li { display: inline-flex; align-items: center; gap: 6px; font-size: 11.5px; font-weight: 700; color: var(--text-main); background: var(--surface); border: 1px solid var(--line); border-radius: var(--radius-pill); padding: 6px 12px; }
.field-points .ahn-i { width: 15px; height: 15px; color: var(--color-emerald); }
.field-image img { transition: transform 1.2s cubic-bezier(.2,0,0,1); }
.field:hover .field-image img { transform: scale(1.05); }
.field .btn { display: inline-flex; }

/* ---------- 15. Health Stories ---------- */
.short-icon { width: 30px; height: 30px; }
.short-icon .ahn-i { width: 15px; height: 15px; }
.short-card:hover .short-icon { animation: ahnBeat 1s ease-in-out; }
.short-card[data-video] .short-icon { background: var(--brand-red); border-color: var(--brand-red); }
.grad-0 .short-content small { background: linear-gradient(135deg, #ef4444, #f59e0b); }
.grad-1 .short-content small { background: linear-gradient(135deg, #06b6d4, #3b82f6); }
.grad-2 .short-content small { background: linear-gradient(135deg, #10b981, #059669); }
.grad-3 .short-content small { background: linear-gradient(135deg, #8b5cf6, #ec4899); }
.grad-4 .short-content small { background: linear-gradient(135deg, #f59e0b, #ef4444); }
.grad-5 .short-content small { background: linear-gradient(135deg, #3b82f6, #8b5cf6); }
.short-card::after { content: ''; position: absolute; inset: 0; border-radius: inherit; border: 2px solid transparent; background: linear-gradient(135deg, #ef4444, #f59e0b, #8b5cf6) border-box; -webkit-mask: linear-gradient(#000 0 0) padding-box, linear-gradient(#000 0 0); -webkit-mask-composite: xor; mask-composite: exclude; opacity: 0; transition: opacity .3s; z-index: 3; pointer-events: none; }
.short-card:hover::after { opacity: 1; }

/* ---------- 16. Newsletter ---------- */
#newsletter { margin-top: 36px; }
.newsletter { border-radius: var(--radius-xl); }
.mail-icon .ahn-i { width: 18px; height: 18px; animation: ahnWiggle 3.5s ease-in-out infinite; }
.nl-perks { list-style: none; display: flex; flex-wrap: wrap; gap: 10px; margin: 14px 0 0; padding: 0; }
.nl-perks li { display: inline-flex; align-items: center; gap: 5px; font-size: 11.5px; font-weight: 700; color: #e0f2fe; }
.nl-perks .ahn-i { width: 15px; height: 15px; color: #6ee7b7; }
.emailrow { align-items: center; }
.emailrow-icon { width: 16px; height: 16px; color: #bae6fd; }
.emailrow button { display: inline-flex; align-items: center; gap: 6px; }
.emailrow button .ahn-i { width: 13px; height: 13px; }
.ahn-hp { position: absolute !important; left: -9999px !important; width: 1px; height: 1px; opacity: 0; }
.ahn-newsletter-form.is-loading button { opacity: .7; pointer-events: none; }
.ahn-newsletter-form.is-success .emailrow { border-color: #6ee7b7; }
.ahn-newsletter-form .form-note.is-ok { color: #6ee7b7; font-weight: 700; }
.ahn-newsletter-form .form-note.is-error { color: #fecaca; font-weight: 700; }
.sidebar-callout .form-note.is-ok { color: var(--color-emerald); }
.sidebar-callout .form-note.is-error { color: var(--brand-red); }

/* ---------- 17. Pied de page ---------- */
.site-footer { margin-top: 48px; background: var(--surface); border-top: 1px solid var(--line); position: relative; }
.footer-ecg { position: absolute; top: -20px; left: 0; right: 0; height: 40px; pointer-events: none; overflow: hidden; }
.footer-ecg svg { width: 100%; height: 100%; }
.footer-ecg path { fill: none; stroke: var(--brand-red); stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; stroke-dasharray: 4000; stroke-dashoffset: 4000; vector-effect: non-scaling-stroke; }
.site-footer.visible .footer-ecg path { animation: ahnDraw 2.4s cubic-bezier(.2,0,0,1) forwards; }
.footer-top { display: grid; grid-template-columns: 1.1fr 2fr; gap: 40px; padding: 44px 0 10px; }
.footer-about p { color: var(--text-muted); font-size: 12.5px; line-height: 1.65; margin: 14px 0; max-width: 360px; }
.footer-widgets { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 28px; }
.footer-title { font-family: var(--font-display); font-size: 14px; font-weight: 700; margin: 0 0 12px; color: var(--text-main); }
.footer-col ul { list-style: none; margin: 0; padding: 0; display: grid; gap: 8px; }
.footer-col a { display: inline-flex; align-items: center; gap: 8px; color: var(--text-muted); font-size: 12.5px; font-weight: 600; transition: color .2s, transform .2s; }
.footer-col a:hover { color: var(--brand-blue); transform: translateX(3px); }
.footer-col a .ahn-i { width: 15px; height: 15px; color: var(--brand-blue); }
.footer-col p { color: var(--text-muted); font-size: 12px; line-height: 1.6; }
.footer-col .btn { color: #fff; }
.footer-col .btn .ahn-i { color: #fff; }
.footer-col .btn:hover { transform: none; }
.social-links { display: flex; gap: 8px; flex-wrap: wrap; }
.social-links a { width: 36px; height: 36px; border-radius: 50%; display: grid; place-items: center; background: var(--surface-subtle); color: var(--text-muted); border: 1px solid var(--line); transition: all .25s cubic-bezier(.2,0,0,1); }
.social-links a .ahn-i { width: 16px; height: 16px; }
.social-links a:hover { background: var(--brand-blue); color: #fff; border-color: var(--brand-blue); transform: translateY(-3px) rotate(-6deg); }
.footer-nav { display: flex; gap: 6px; flex-wrap: wrap; margin: 0; }
.footer-nav a { font-size: 11px; padding: 4px 10px; }
.footer-disclaimer { display: inline-flex; align-items: center; gap: 5px; }
.footer-disclaimer .ahn-i { width: 12px; height: 12px; }
.top .ahn-i { width: 16px; height: 16px; }
.top:not([hidden]) { animation: ahnPop .35s cubic-bezier(.2,0,0,1) both; }

/* ---------- 18. Modales ---------- */
.modal[open] { animation: ahnModal .35s cubic-bezier(.2,0,0,1) both; }
.modal-brand { display: inline-flex; align-items: center; gap: 6px; color: var(--brand-blue); }
.modal-brand .ahn-i { color: var(--brand-red); }
.modal-body .meta { margin: 0 0 10px; }
.modal-body .label { position: static; }
.modal-body .btn { margin-top: 6px; display: inline-flex; }
.modal-video { width: min(420px, 92vw); background: #000; overflow: visible; }
.modal-video-frame { aspect-ratio: 9 / 16; max-height: 82vh; }
.modal-video-frame iframe, .modal-video-frame video { width: 100%; height: 100%; border: 0; display: block; border-radius: var(--radius-xl); }
.modal-video-close { position: absolute; top: -14px; right: -14px; z-index: 2; background: #fff; color: #0f172a; }

/* ---------- 19. Animations ---------- */
@keyframes ahnBeat { 0%, 100% { transform: scale(1); } 14% { transform: scale(1.12); } 28% { transform: scale(.96); } 42% { transform: scale(1.08); } 70% { transform: scale(1); } }
@keyframes ahnFloat { 0%, 100% { transform: translateY(0) rotate(0); } 50% { transform: translateY(-14px) rotate(10deg); } }
@keyframes ahnRing { 0% { opacity: .9; transform: scale(.9); } 100% { opacity: 0; transform: scale(1.35); } }
@keyframes ahnReveal { to { clip-path: inset(0 0 0 0); } }
@keyframes ahnDash { from { stroke-dashoffset: 80; } to { stroke-dashoffset: 0; } }
@keyframes ahnDraw { to { stroke-dashoffset: 0; } }
@keyframes ahnShine { 0%, 70% { left: -60%; } 100% { left: 130%; } }
@keyframes ahnProgress { from { width: 0; } to { width: 100%; } }
@keyframes ahnPop { from { opacity: 0; transform: scale(.94) translateY(8px); } to { opacity: 1; transform: none; } }
@keyframes ahnFlicker { 0%, 100% { transform: scale(1) rotate(0); } 25% { transform: scale(1.08, .95) rotate(-3deg); } 50% { transform: scale(.96, 1.06) rotate(2deg); } 75% { transform: scale(1.04, .97) rotate(-1deg); } }
@keyframes ahnPulseRing { 0% { box-shadow: 0 0 0 0 rgba(255,255,255,.45); } 100% { box-shadow: 0 0 0 12px rgba(255,255,255,0); } }
@keyframes ahnSpinSlow { to { transform: rotate(360deg); } }
@keyframes ahnWiggle { 0%, 85%, 100% { transform: rotate(0); } 88% { transform: rotate(-12deg); } 92% { transform: rotate(10deg); } 96% { transform: rotate(-6deg); } }
@keyframes ahnModal { from { opacity: 0; transform: translateY(20px) scale(.97); } to { opacity: 1; transform: none; } }

/* Respect des préférences d'accessibilité et de l'option « animations ». */
body.ahn-no-anim .reveal { opacity: 1 !important; transform: none !important; }
body.ahn-no-anim .float-icons, body.ahn-no-anim .btn-shine::after { display: none; }
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation-duration: .001ms !important; animation-iteration-count: 1 !important; transition-duration: .001ms !important; scroll-behavior: auto !important; }
  .float-icons { display: none; }
  .section-head h2::after { clip-path: none; }
  .footer-ecg path { stroke-dashoffset: 0; }
}

/* ---------- 20. Responsive complémentaire ---------- */
@media (max-width: 1100px) {
  .footer-top { grid-template-columns: 1fr; gap: 26px; }
}
@media (max-width: 860px) {
  .navrow nav.open a::after { display: none; }
  .section-icon { width: 40px; height: 40px; border-radius: 12px; }
  .section-icon .ahn-i { width: 19px; height: 19px; }
  .actions .btn span { display: none; }
  .float-icons .fi-0, .float-icons .fi-2 { display: none; }
}
@media (max-width: 600px) {
  .footer-widgets { grid-template-columns: 1fr 1fr; }
  .footer-col-nl { grid-column: 1 / -1; }
  .section-title-wrap { gap: 10px; }
  .rubric-more { display: none; }
  .copy-time { display: none; }
  .actions .btn { display: none; }
  .hero-nav-arrow { top: 20px; transform: none; width: 32px; height: 32px; }
  .hero-nav-arrow:hover { transform: scale(1.08); }
  .hero-nav-prev { left: 14px; }
  .hero-nav-next { left: 52px; right: auto; }
  .section-head { flex-wrap: wrap; gap: 10px; }
  .actions { gap: 6px; }
  .navrow { gap: 8px; }
  .brand { min-width: 0; }
}
@media (max-width: 380px) {
  .search-toggle { display: none; }
}

/* ---------- 21. Widgets de blocs par défaut ---------- */
.widget h2, .widget .wp-block-heading { font-family: var(--font-display); font-size: 14.5px; font-weight: 700; margin: 0 0 10px; }
.wp-block-search__label { font-family: var(--font-display); font-weight: 700; font-size: 14px; display: block; margin-bottom: 8px; }
.wp-block-search__inside-wrapper { display: flex; gap: 6px; background: var(--surface-subtle); border: 1.5px solid var(--line); border-radius: var(--radius-pill); padding: 4px; }
.wp-block-search__input { flex: 1; min-width: 0; border: 0; background: transparent; padding: 6px 10px; color: var(--text-main); font: inherit; font-size: 12.5px; }
.wp-block-search__input:focus { outline: none; }
.wp-block-search__button { background: var(--brand-blue); color: #fff; border: 0; border-radius: var(--radius-pill); padding: 7px 14px; font-weight: 700; font-size: 11.5px; cursor: pointer; }
.wp-block-latest-posts, .wp-block-latest-comments, .wp-block-archives, .wp-block-categories { list-style: none; margin: 0; padding: 0; }
.wp-block-latest-posts li, .wp-block-archives li, .wp-block-categories li { padding: 7px 0; border-bottom: 1px solid var(--line-subtle); font-size: 12.5px; font-weight: 600; }
.wp-block-latest-posts li a:hover, .wp-block-archives a:hover, .wp-block-categories a:hover { color: var(--brand-blue); }
.wp-block-latest-comments { font-size: 12px; }
