/* =========================================================================
   GEEKTHINK SINGLE ARTICLE V8 — Transmuted from /Template/Single/
   ========================================================================= */

.single-article-viewer {
  --article-max: 1500px;
  --article-gutter: clamp(1rem, 3vw, 2rem);
  width: 100%;
  overflow-x: clip;
  background: var(--color-void);
  color: var(--text-pure);
}

/* --- HERO (calibré sur ref. Image #1 — bloc tiers supérieur) --- */
.article-hero {
  position: relative;
  width: 100%;
  height: calc(100dvh - var(--shell-offset));
  min-height: 500px;
  display: flex;
  align-items: flex-start;
  padding-top: clamp(2.5rem, 14vh, 6.5rem);
  padding-bottom: 0;
  margin-top: 0 !important;
  overflow: hidden;
}

.article-hero-bg {
  position: absolute;
  inset: 0;
  background-size: cover;
  background-position: center;
  z-index: 0;
  will-change: transform;
  animation: articleSlowZoom 25s infinite alternate linear;
}

.article-hero-bg--void {
  background: radial-gradient(ellipse at 50% 20%, rgba(255, 40, 81, 0.12), var(--color-void) 70%);
}

.article-hero-video-wrap {
  position: absolute;
  inset: 0;
  z-index: 0;
  overflow: hidden;
}

.article-hero-video-wrap .article-video-node {
  width: 100%;
  height: 100%;
  min-height: 100%;
}

.article-hero-video-fallback-excerpt {
  position: absolute;
  left: 50%;
  bottom: 18%;
  z-index: 2;
  transform: translateX(-50%);
  max-width: min(42rem, 90vw);
  margin: 0;
  padding: 0.65rem 0.9rem;
  border: 1px solid rgba(255, 40, 81, 0.35);
  background: rgba(10, 10, 12, 0.72);
  font-family: var(--font-mono), ui-monospace, monospace;
  font-size: 0.82rem;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  text-align: center;
  color: rgba(255, 255, 255, 0.88);
}

@keyframes articleSlowZoom {
  0% { transform: scale(1); }
  100% { transform: scale(1.15); }
}

.article-hero-overlay {
  position: absolute;
  inset: 0;
  /* Double voile : haut lisible (titre/extrait) + bas vers void */
  background:
    linear-gradient(
      to bottom,
      rgba(5, 5, 8, 0.55) 0%,
      rgba(5, 5, 8, 0.28) 22%,
      rgba(10, 10, 12, 0.45) 48%,
      rgba(10, 10, 12, 0.88) 78%,
      var(--color-void) 96%,
      var(--color-void) 100%
    ),
    radial-gradient(
      ellipse 90% 55% at 18% 28%,
      rgba(0, 0, 0, 0.55) 0%,
      transparent 70%
    );
  z-index: 1;
  pointer-events: none;
}

.hero-bottom-shroud {
  position: absolute;
  bottom: -2px;
  left: 0;
  width: 100%;
  height: 40vh;
  background: linear-gradient(
    to top,
    var(--color-void) 0%,
    var(--color-void) 15%,
    transparent 100%
  );
  z-index: 2;
  pointer-events: none;
}

/* ==========================================================================
   MODULE: ARTICLE HEADER V8 (Style_Core — Cyber-Blade)
   ========================================================================== */

.article-header {
  position: relative;
  z-index: 10;
  max-width: 1400px;
  margin: 0 auto;
  width: 100%;
  padding-top: 0;
  padding-bottom: 50px;
  padding-left: clamp(2.5rem, 5vw, 4.5rem);
  padding-right: clamp(1rem, 3vw, 1.5rem);
}

.article-category-wrap {
  will-change: filter;
}

.article-category {
  font-family: var(--font-mono), ui-monospace, monospace;
  font-size: 11px;
  font-weight: 900;
  color: var(--text-pure);
  letter-spacing: 0.25em;
  text-transform: uppercase;
  background:
    linear-gradient(rgba(10, 10, 12, 0.65), rgba(10, 10, 12, 0.65)),
    repeating-linear-gradient(
      45deg,
      transparent,
      transparent 2px,
      rgba(255, 40, 81, 0.15) 2px,
      rgba(255, 40, 81, 0.15) 4px
    );
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
  padding: 8px 30px 8px 15px;
  clip-path: polygon(0 0, 100% 0, calc(100% - 15px) 100%, 0 100%);
  border-left: 3px solid var(--cyber-red);
  display: flex;
  align-items: center;
  gap: 12px;
}

.article-category::before {
  content: "";
  display: block;
  width: 6px;
  height: 6px;
  background: #00ff66;
  box-shadow:
    0 0 10px #00ff66,
    0 0 20px rgba(0, 255, 102, 0.6);
  border-radius: 50%;
  animation: categoryPulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;
}

@keyframes categoryPulse {
  0%,
  100% {
    opacity: 1;
    transform: scale(1);
  }
  50% {
    opacity: 0.3;
    transform: scale(0.7);
    box-shadow: none;
  }
}

.cat-link {
  color: inherit;
  text-decoration: none;
}

.cat-sep {
  color: var(--cyber-red);
  opacity: 0.5;
  font-weight: 400;
  letter-spacing: 0;
}

.category-prefix-line {
  display: none !important;
}

.article-title {
  /* px = calibrage ref. 16px root (évite le gonflement rem via html { font-size: var(--text-base) }) */
  font-size: clamp(36px, 4.25vw, 58px);
  font-family: var(--font-sans), "Inter", system-ui, sans-serif;
  font-weight: 900;
  color: var(--text-pure);
  line-height: 1.05;
  letter-spacing: -0.03em;
  margin: 0 0 20px;
  max-width: 1100px;
  text-shadow:
    0 2px 12px rgba(0, 0, 0, 0.85),
    0 10px 30px rgba(0, 0, 0, 0.8);
}

/*
 * Extrait : PAS de carte / glass box (casse le design).
 * Lisible sur fond clair via halo flou + text-shadow ciné uniquement.
 */
.article-excerpt-wrap {
  position: relative;
  display: flex;
  gap: 20px;
  max-width: 800px;
  margin-top: 20px;
  padding: 0;
  border: none;
  background: transparent;
  backdrop-filter: none;
  -webkit-backdrop-filter: none;
  box-shadow: none;
  isolation: isolate;
}

/* Bloom sombre flou derrière le texte — bords fondus, zéro rectangle */
.article-excerpt-wrap::before {
  content: "";
  position: absolute;
  z-index: -1;
  left: -0.35rem;
  right: -1.25rem;
  top: -0.45rem;
  bottom: -0.55rem;
  background: radial-gradient(
    ellipse 85% 90% at 20% 50%,
    rgba(0, 0, 0, 0.72) 0%,
    rgba(0, 0, 0, 0.42) 42%,
    rgba(0, 0, 0, 0.12) 68%,
    transparent 82%
  );
  filter: blur(10px);
  pointer-events: none;
  transform: translateZ(0);
}

.excerpt-status-line {
  position: relative;
  z-index: 1;
  flex-shrink: 0;
  width: 2px;
  background-color: var(--cyber-red);
  box-shadow:
    0 0 8px rgba(255, 40, 81, 0.55),
    0 0 1px rgba(0, 0, 0, 0.9);
}

.article-hero-excerpt {
  position: relative;
  z-index: 1;
  font-size: 1.4rem;
  font-weight: 400;
  color: rgba(255, 255, 255, 0.92);
  line-height: 1.6;
  margin: 0;
  /* Halo type générique film — tient sur PCB clair sans boîte */
  text-shadow:
    0 0 1px rgba(0, 0, 0, 1),
    0 1px 2px rgba(0, 0, 0, 0.95),
    0 2px 8px rgba(0, 0, 0, 0.85),
    0 4px 20px rgba(0, 0, 0, 0.75),
    0 0 28px rgba(0, 0, 0, 0.55);
}

@media (max-width: 768px) {
  .article-hero {
    height: auto;
    min-height: 70vh;
    margin-top: 0 !important;
    padding-top: 4rem;
    padding-bottom: 4rem;
  }

  .article-title {
    font-size: clamp(2.2rem, 10vw, 3.2rem);
    word-break: break-word;
    line-height: 1.1;
    margin-bottom: 1.5rem;
  }

  .article-header {
    padding: 0 1.2rem;
    padding-top: 0;
    padding-bottom: 2rem;
  }

  .article-hero-excerpt {
    font-size: 1.1rem;
  }
}

/* --- LAYOUT 200px 1fr 280px --- */
.article-layout {
  display: grid;
  grid-template-columns: 200px minmax(0, 1fr) 280px;
  grid-template-areas: "left main right";
  max-width: var(--article-max);
  margin: 0 auto;
  padding: 6rem var(--article-gutter) 4rem;
  gap: 4rem;
  position: relative;
  z-index: 10;
  width: 100%;
  box-sizing: border-box;
}

.article-main-column {
  grid-area: main;
  min-width: 0;
}

.article-sidebar.left {
  grid-area: left;
}

.article-sidebar.right {
  grid-area: right;
}

.article-sidebar {
  position: sticky;
  top: calc(var(--shell-offset) + 60px);
  height: max-content;
  display: flex;
  flex-direction: column;
  gap: 3rem;
  font-family: var(--font-mono), ui-monospace, monospace;
}

.article-sidebar.left {
  gap: 0;
}

.article-sidebar.right {
  min-width: 0;
}

.sidebar-block-title {
  font-size: 0.65rem;
  color: var(--text-mineral);
  letter-spacing: 0.15em;
  margin-bottom: 0.5rem;
  text-transform: uppercase;
}

.sidebar-data {
  font-size: 1rem;
  color: var(--text-pure);
  font-weight: 700;
}

/* MODULE: SYSTEM DATA IDENTIFIER (LEFT SIDEBAR) — Style_Core */
.sys-id-module {
  margin-bottom: 2.5rem;
  padding-left: 15px;
  border-left: 2px solid rgba(255, 40, 81, 0.2);
}

.sys-id-module .sidebar-block-title {
  font-family: var(--font-mono), ui-monospace, monospace;
  font-size: 11px;
  color: var(--text-mineral);
  letter-spacing: 0.25em;
  text-transform: uppercase;
  margin-bottom: 8px;
  opacity: 0.6;
}

.sys-id-value {
  font-family: var(--font-mono), ui-monospace, monospace;
  font-size: 1.4rem;
  font-weight: 800;
  letter-spacing: 0.05em;
  line-height: 1;
  transition: all 0.3s ease;
}

.sys-id-value.date-value {
  color: var(--text-pure);
  font-size: 17px;
  letter-spacing: 0.04em;
  white-space: nowrap;
}

.sys-id-value.id-value {
  color: var(--cyber-red);
  text-shadow: 0 0 15px rgba(255, 40, 81, 0.3);
}

.sys-id-module:hover .sys-id-value.id-value {
  color: #fff;
  text-shadow: 0 0 20px var(--cyber-red);
}

.article-sidebar.left .sidebar-group {
  margin-top: 2rem;
}

.article-sidebar.left .sidebar-group + .sidebar-group {
  margin-top: 2.5rem;
}

/* --- SHARE VECTORS V2 (aligné réactions commentaires) --- */
.share-terminal-wrap {
  margin-top: 2rem;
  width: 100%;
  display: flex;
  flex-direction: column;
  align-items: center;
}

.share-terminal-wrap__title {
  font-family: var(--font-mono), ui-monospace, monospace;
  font-size: 11px;
  letter-spacing: 0.25em;
  text-transform: uppercase;
  color: #8b8b8f;
  opacity: 0.6;
  text-align: center;
  margin-bottom: 25px;
}

.share-network {
  width: 100%;
}

.share-network-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 16px 20px;
  justify-items: center;
  max-width: 260px;
  margin: 0 auto;
}

.share-vector-btn {
  position: relative;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 54px;
  height: 54px;
  padding: 0;
  border: 1px solid rgba(255, 40, 81, 0.12);
  border-radius: 3px;
  background: rgba(255, 255, 255, 0.02);
  cursor: pointer;
  overflow: hidden;
  isolation: isolate;
  transition:
    border-color 0.25s ease,
    background 0.25s ease,
    box-shadow 0.25s ease;
}

.share-vector-btn:focus-visible {
  outline: 1px solid rgba(255, 40, 81, 0.65);
  outline-offset: 2px;
}

.share-vector-btn__rgb {
  position: absolute;
  inset: 0;
  border-radius: inherit;
  opacity: 0;
  background: linear-gradient(
    90deg,
    #ff2851,
    #00d4ff,
    #00ff88,
    #ff2851
  );
  background-size: 300% 100%;
  z-index: 0;
  pointer-events: none;
  transition: opacity 0.2s ease;
}

.share-vector-btn:hover .share-vector-btn__rgb,
.share-vector-btn:focus-visible .share-vector-btn__rgb {
  opacity: 0.24;
  animation:
    n3xus-continuous-strip 4s linear infinite,
    n3xus-glow-pulse 4s linear infinite;
}

.share-vector-icon {
  position: relative;
  z-index: 1;
  width: 22px;
  height: 22px;
  object-fit: contain;
  flex-shrink: 0;
  filter: drop-shadow(0 0 3px rgba(255, 40, 81, 0.45));
  animation: reaction-idle-pulse 3.2s ease-in-out infinite;
}

.share-vector-btn:hover .share-vector-icon,
.share-vector-btn:focus-visible .share-vector-icon {
  animation: none;
}

.share-vector-btn--copied {
  border-color: rgba(0, 255, 136, 0.45);
  background: rgba(0, 255, 136, 0.06);
  box-shadow: 0 0 10px rgba(0, 255, 136, 0.22);
}

.share-vector-btn--copied .share-vector-icon {
  animation: none;
  filter: drop-shadow(0 0 5px rgba(0, 255, 136, 0.75));
}

.share-vector-btn--copied .share-vector-btn__rgb {
  opacity: 0;
  animation: none;
}

.share-vector-tooltip {
  position: absolute;
  bottom: calc(100% + 8px);
  left: 50%;
  transform: translateX(-50%) translateY(5px);
  white-space: nowrap;
  padding: 6px 12px;
  background: #0a0a0c;
  border: 1px solid rgba(255, 40, 81, 0.4);
  color: #ff2851;
  font-family: var(--font-mono), ui-monospace, monospace;
  font-size: 10px;
  letter-spacing: 0.15em;
  text-transform: uppercase;
  opacity: 0;
  pointer-events: none;
  border-radius: 2px;
  z-index: 100;
  box-shadow: 0 0 15px rgba(255, 40, 81, 0.4);
  transition:
    opacity 0.3s ease,
    transform 0.3s ease;
}

.share-vector-btn:hover .share-vector-tooltip,
.share-vector-btn:focus-visible .share-vector-tooltip {
  opacity: 1;
  transform: translateX(-50%) translateY(0);
}

.share-vector-btn--copied .share-vector-tooltip {
  color: #00ff88;
  border-color: rgba(0, 255, 136, 0.45);
  box-shadow: 0 0 15px rgba(0, 255, 136, 0.35);
  opacity: 1;
  transform: translateX(-50%) translateY(0);
}

@media (prefers-reduced-motion: reduce) {
  .share-vector-icon {
    animation: none;
  }

  .share-vector-btn:hover .share-vector-btn__rgb,
  .share-vector-btn:focus-visible .share-vector-btn__rgb {
    animation: none;
    opacity: 0.18;
  }
}

/* --- AUTHOR CARD --- */
.article-sidebar.right .author-card,
.author-card {
  width: 100%;
  max-width: 100%;
  box-sizing: border-box;
  overflow: hidden;
}

.author-card {
  background: rgba(10, 10, 12, 0.6);
  border: 1px solid rgba(255, 255, 255, 0.05);
  padding: 2rem;
  border-radius: 4px;
  display: flex;
  flex-direction: column;
  gap: 1.2rem;
  transition: transform 0.4s, border-color 0.4s;
  text-decoration: none;
  color: inherit;
  font-size: 16px;
}

.author-card:hover {
  border-color: rgba(255, 40, 81, 0.3);
  transform: translateY(-5px);
}

.author-header {
  display: flex;
  align-items: center;
  gap: 1rem;
  width: 100%;
  min-width: 0;
}

.author-avatar {
  width: 80px;
  height: 80px;
  border-radius: 4px;
  border: 1px solid rgba(255, 40, 81, 0.2);
  background: rgba(10, 10, 12, 0.95);
  padding: 4px;
  box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);
  overflow: hidden;
  flex-shrink: 0;
  position: relative;
  transition: all 0.4s cubic-bezier(0.19, 1, 0.22, 1);
}

.author-avatar::after {
  content: "";
  position: absolute;
  inset: 4px;
  border-radius: 2px;
  box-shadow: inset 0 0 10px rgba(0, 0, 0, 0.8);
  pointer-events: none;
}

.author-avatar img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  border-radius: 2px;
  filter: grayscale(100%) contrast(1.2);
  transition: filter 0.5s;
  display: block;
  -webkit-touch-callout: none;
  pointer-events: auto;
}

.author-card:hover .author-avatar {
  border-color: rgba(255, 40, 81, 0.6);
  box-shadow: 0 8px 25px rgba(255, 40, 81, 0.2);
}

.author-card:hover .author-avatar img {
  filter: grayscale(0%) contrast(1);
}

.author-meta {
  display: flex;
  flex-direction: column;
  justify-content: center;
  gap: 0.4rem;
  padding-top: 2px;
  flex: 1;
  min-width: 0;
}

.author-card .author-name {
  font-family: var(--font-mono), ui-monospace, monospace;
  font-weight: 800;
  font-size: 18.4px;
  color: var(--text-pure);
  letter-spacing: 0.05em;
  line-height: 1.15;
  max-width: 100%;
  overflow-wrap: anywhere;
  word-break: break-word;
}

.author-card .author-role {
  font-size: 10.4px;
  color: var(--cyber-red);
  letter-spacing: 0.15em;
  text-transform: uppercase;
  font-family: var(--font-mono), ui-monospace, monospace;
  opacity: 0.9;
  line-height: 1.2;
  max-width: 100%;
  overflow-wrap: anywhere;
  word-break: break-word;
}

.author-card .author-bio {
  font-size: 13.6px;
  line-height: 1.6;
  color: var(--text-mineral);
  border-left: 2px solid rgba(255, 255, 255, 0.12);
  padding-left: 1rem;
  margin-top: 0;
  width: 100%;
  max-width: 100%;
  box-sizing: border-box;
  overflow-wrap: break-word;
}

.gt-sys-line {
  display: block;
  width: 50px;
  height: 2px;
  background: var(--cyber-red);
  margin: 20px auto 0;
  opacity: 0.5;
  box-shadow: 0 0 10px var(--cyber-red);
  transition: opacity 0.4s, width 0.4s, box-shadow 0.4s;
}

.author-card:hover .gt-sys-line {
  opacity: 1;
  width: 100%;
  box-shadow: 0 0 15px var(--cyber-red);
}

.author-footer-status {
  display: flex;
  flex-direction: row;
  justify-content: space-between;
  align-items: center;
  flex-wrap: nowrap;
  padding-top: 20px;
  border-top: 1px dashed rgba(255, 255, 255, 0.1);
}

.status-label {
  font-size: 11px;
  letter-spacing: 0.15em;
  color: var(--text-mineral);
  margin: 0;
  line-height: 1;
  text-transform: uppercase;
}

.status-led-pulse {
  width: 8px;
  height: 8px;
  border-radius: 50%;
}

.status-led-pulse.led-online {
  background: #00ff88;
  box-shadow: 0 0 10px #00ff88;
  animation: pulseGlow 2s infinite;
}

.status-led-pulse.led-offline {
  background: var(--cyber-red);
  box-shadow: 0 0 10px var(--cyber-red);
}

@keyframes pulseGlow {
  0%, 100% { opacity: 1; }
  50% { opacity: 0.45; }
}

/* --- RELATED --- */
.related-header {
  font-size: 0.75rem;
  letter-spacing: 0.15em;
  margin-bottom: 1rem;
  color: var(--text-pure);
}

.related-log-item {
  display: flex;
  gap: 10px;
  align-items: flex-start;
  padding: 0.85rem 0;
  border-bottom: 1px dashed rgba(255, 255, 255, 0.05);
  color: var(--text-mineral);
  text-decoration: none;
  font-size: 0.8rem;
  transition: color 0.3s ease;
}

.related-log-item:hover {
  color: var(--cyber-red);
}

.log-cursor {
  color: var(--cyber-red);
}

/* --- CONTENT BOX --- */
.content-box {
  background: rgba(20, 20, 23, 0.4);
  border: 1px solid rgba(255, 255, 255, 0.02);
  padding: 3.5rem;
  border-radius: 6px;
  box-shadow: inset 0 0 20px rgba(0, 0, 0, 0.5);
}

.article-content {
  font-size: 1.15rem;
  line-height: 1.8;
  color: rgba(255, 255, 255, 0.75);
  max-width: 850px;
}

.article-content p { margin-bottom: 1.5rem; }

.n3xus-drop-cap,
.neon-drop-cap {
  font-size: 5rem;
  float: left;
  line-height: 1;
  margin-right: 15px;
  color: var(--cyber-red);
  font-weight: 900;
  animation: slowNeonPulse 6s ease-in-out infinite;
}

@keyframes slowNeonPulse {
  0%, 100% { text-shadow: 0 0 5px rgba(255, 40, 81, 0.1); }
  50% { text-shadow: 0 0 25px rgba(255, 40, 81, 0.6); }
}

/* =========================================================================
   N3XUS KERNEL : TYPOGRAPHIC HIERARCHY (H2 DECOMPRESSION & H3 NODE)
   ========================================================================= */

.article-content h2 {
  text-align: center !important;
  font-weight: 900 !important;
  font-size: 2rem !important;
  text-transform: uppercase !important;
  color: #ff2851 !important;
  margin: 4.5rem auto 2.5rem auto !important;
  line-height: 1.3 !important;
  max-width: 800px;
  clear: both;
}

/* =========================================================================
   N3XUS KERNEL : H3 TERMINAL NODE (CLEAN LED & SLASH)
   ========================================================================= */

.article-content h3::before,
.article-content h3::after {
  content: none;
}

.article-content h3 {
  text-align: left !important;
  font-family: var(--font-mono, monospace) !important;
  font-weight: 800 !important;
  font-size: 1.15rem !important;
  color: #ffffff !important;
  margin: 3.5rem 0 1.5rem 0 !important;
  text-transform: uppercase !important;
  letter-spacing: 0.1em !important;
  position: relative;
  padding-left: 62px !important;
  display: flex;
  align-items: center;
}

.article-content h3::before {
  content: "";
  position: absolute;
  left: 0;
  top: 50%;
  width: 8px;
  height: 8px;
  background-color: #00ff88;
  border-radius: 50%;
  animation: n3xus-led-breathe 2s ease-in-out infinite alternate;
  will-change: opacity, box-shadow;
  transform: translateY(calc(-50% - 1px));
}

.article-content h3::after {
  content: "//";
  position: absolute;
  left: 16px;
  top: 50%;
  transform: translateY(-50%);
  color: rgba(255, 255, 255, 0.4);
  font-size: 1.1rem;
  font-weight: 400;
  letter-spacing: 0.05em;
  width: 1.6rem;
  pointer-events: none;
}

@keyframes n3xus-led-breathe {
  0% {
    opacity: 0.7;
    box-shadow: 0 0 4px rgba(0, 255, 136, 0.4);
  }
  100% {
    opacity: 1;
    box-shadow: 0 0 12px rgba(0, 255, 136, 0.9);
  }
}

/* -------------------------------------------------------------------------
   BLOCKQUOTE : Mise en exergue avec bande LED latérale
   ------------------------------------------------------------------------- */

.article-content blockquote {
  margin: 3rem 0 !important;
  padding: 1.5rem 2rem !important;
  background: linear-gradient(90deg, rgba(255, 40, 81, 0.05) 0%, transparent 100%) !important;
  border-left: 3px solid #ff2851 !important;
  border-radius: 0 4px 4px 0;
  position: relative;
  box-shadow: inset 10px 0 20px -10px rgba(255, 40, 81, 0.1);
}

.article-content blockquote p {
  font-family: var(--font-mono, monospace) !important;
  font-size: 1.05rem !important;
  color: #c2c2c5 !important;
  font-style: italic !important;
  line-height: 1.8 !important;
  margin: 0 !important;
}

.article-content h2 + p {
  margin-top: 0 !important;
}

.article-content h3 + p,
.article-content blockquote + p {
  margin-top: 1.5rem !important;
}

/* =========================================================================
   N3XUS KERNEL : LISTS (public only — never admin canvas .article-content)
   ========================================================================= */

.single-article-viewer .article-content ul.article-list,
.single-article-viewer .article-content ol.article-list,
.single-article-viewer .article-content ul:not(.article-builder-wp-list-ui),
.single-article-viewer .article-content ol:not(.article-builder-wp-list-ui),
.dossier-single .article-content ul.article-list,
.dossier-single .article-content ol.article-list,
.dossier-single .article-content ul:not(.article-builder-wp-list-ui),
.dossier-single .article-content ol:not(.article-builder-wp-list-ui) {
  list-style: none;
  margin: 1.75rem 0 2rem;
  padding: 1rem 1.15rem 1rem 1.25rem;
  max-width: 850px;
  border-radius: 0.45rem;
  border: 1px solid rgba(255, 255, 255, 0.06);
  background:
    linear-gradient(90deg, rgba(0, 255, 136, 0.04) 0%, transparent 42%),
    rgba(0, 0, 0, 0.22);
  box-shadow: inset 3px 0 0 rgba(0, 255, 136, 0.45);
}

.single-article-viewer .article-content ol.article-list,
.single-article-viewer .article-content ol:not(.article-builder-wp-list-ui),
.dossier-single .article-content ol.article-list,
.dossier-single .article-content ol:not(.article-builder-wp-list-ui) {
  background:
    linear-gradient(90deg, rgba(0, 212, 255, 0.05) 0%, transparent 42%),
    rgba(0, 0, 0, 0.22);
  box-shadow: inset 3px 0 0 rgba(0, 212, 255, 0.5);
  counter-reset: article-list-counter;
}

.single-article-viewer .article-content li.article-list__item,
.single-article-viewer .article-content li,
.dossier-single .article-content li.article-list__item,
.dossier-single .article-content li {
  position: relative;
  margin: 0 0 0.85rem;
  padding: 0.15rem 0 0.15rem 1.55rem;
  font-size: 1.08rem;
  line-height: 1.7;
  color: rgba(255, 255, 255, 0.78);
}

.single-article-viewer .article-content li.article-list__item:last-child,
.single-article-viewer .article-content li:last-child,
.dossier-single .article-content li.article-list__item:last-child,
.dossier-single .article-content li:last-child {
  margin-bottom: 0;
}

/* Puces LED (ul) — alignées h3 node */
.single-article-viewer .article-content ul.article-list > li.article-list__item::before,
.single-article-viewer .article-content ul:not(.article-builder-wp-list-ui) > li::before,
.dossier-single .article-content ul.article-list > li.article-list__item::before,
.dossier-single .article-content ul:not(.article-builder-wp-list-ui) > li::before {
  content: "";
  position: absolute;
  left: 0.15rem;
  top: 0.75em;
  width: 7px;
  height: 7px;
  border-radius: 50%;
  background: #00ff88;
  box-shadow: 0 0 8px rgba(0, 255, 136, 0.55);
  transform: translateY(-50%);
}

/* Index mono (ol) */
.single-article-viewer .article-content ol.article-list > li.article-list__item,
.single-article-viewer .article-content ol:not(.article-builder-wp-list-ui) > li,
.dossier-single .article-content ol.article-list > li.article-list__item,
.dossier-single .article-content ol:not(.article-builder-wp-list-ui) > li {
  counter-increment: article-list-counter;
  padding-left: 2.1rem;
}

.single-article-viewer .article-content ol.article-list > li.article-list__item::before,
.single-article-viewer .article-content ol:not(.article-builder-wp-list-ui) > li::before,
.dossier-single .article-content ol.article-list > li.article-list__item::before,
.dossier-single .article-content ol:not(.article-builder-wp-list-ui) > li::before {
  content: counter(article-list-counter, decimal-leading-zero);
  position: absolute;
  left: 0;
  top: 0.2em;
  font-family: var(--font-mono, ui-monospace, monospace);
  font-size: 0.72rem;
  font-weight: 700;
  letter-spacing: 0.06em;
  color: #7ee9ff;
  text-shadow: 0 0 10px rgba(0, 212, 255, 0.25);
}

.single-article-viewer .article-content .article-block--list,
.dossier-single .article-content .article-block--list {
  margin: 0.25rem 0 0.5rem;
}

.single-article-viewer .article-content ul + p,
.single-article-viewer .article-content ol + p,
.dossier-single .article-content ul + p,
.dossier-single .article-content ol + p {
  margin-top: 1.5rem;
}

@media (max-width: 768px) {
  .single-article-viewer .article-content ul.article-list,
  .single-article-viewer .article-content ol.article-list,
  .single-article-viewer .article-content ul:not(.article-builder-wp-list-ui),
  .single-article-viewer .article-content ol:not(.article-builder-wp-list-ui),
  .dossier-single .article-content ul.article-list,
  .dossier-single .article-content ol.article-list,
  .dossier-single .article-content ul:not(.article-builder-wp-list-ui),
  .dossier-single .article-content ol:not(.article-builder-wp-list-ui) {
    padding: 0.85rem 0.85rem 0.85rem 0.95rem;
    margin: 1.35rem 0 1.6rem;
  }

  .single-article-viewer .article-content li.article-list__item,
  .single-article-viewer .article-content li,
  .dossier-single .article-content li.article-list__item,
  .dossier-single .article-content li {
    font-size: 1.02rem;
    padding-left: 1.35rem;
  }

  .single-article-viewer .article-content ol.article-list > li.article-list__item,
  .single-article-viewer .article-content ol:not(.article-builder-wp-list-ui) > li,
  .dossier-single .article-content ol.article-list > li.article-list__item,
  .dossier-single .article-content ol:not(.article-builder-wp-list-ui) > li {
    padding-left: 1.85rem;
  }
}

/* =========================================================================
   N3XUS KERNEL : CONTINUOUS RGB LED STRIP (WYSIWYG OVERRIDE)
   ========================================================================= */

.article-content hr,
.article-content .liquid-scan-rgb,
.article-content .wp-block-separator {
  border: none !important;
  height: 1px !important;
  width: 100% !important;
  margin: 3.5rem 0 !important;
  position: relative !important;
  overflow: hidden !important;
  display: block !important;
  background: rgba(255, 255, 255, 0.04) !important;
  box-shadow: 0 0 10px rgba(255, 40, 81, 0.4);
  animation: n3xus-glow-pulse 4s linear infinite !important;
  isolation: isolate;
}

.article-content hr::after,
.article-content .liquid-scan-rgb::after,
.article-content .wp-block-separator::after {
  content: "" !important;
  position: absolute;
  top: 0;
  left: 0;
  width: 200%;
  height: 100%;
  /* Motif dupliqué 0→50% = 50→100% pour boucle translate3d(-50%) sans saut */
  background: linear-gradient(
    90deg,
    #ff2851 0%,
    #00d4ff 12.5%,
    #00ff88 25%,
    #00d4ff 37.5%,
    #ff2851 50%,
    #00d4ff 62.5%,
    #00ff88 75%,
    #00d4ff 87.5%,
    #ff2851 100%
  );
  animation: n3xus-continuous-strip 4s linear infinite reverse;
  will-change: transform;
  transform: translate3d(0, 0, 0);
  pointer-events: none;
}

@keyframes n3xus-continuous-strip {
  0% {
    transform: translate3d(0, 0, 0);
  }
  100% {
    transform: translate3d(-50%, 0, 0);
  }
}

@keyframes n3xus-glow-pulse {
  0%, 100% { box-shadow: 0 0 8px rgba(255, 40, 81, 0.5); }
  33% { box-shadow: 0 0 8px rgba(0, 212, 255, 0.5); }
  66% { box-shadow: 0 0 8px rgba(0, 255, 136, 0.5); }
}

@media (prefers-reduced-motion: reduce) {
  .article-content hr::after,
  .article-content .liquid-scan-rgb::after,
  .article-content .wp-block-separator::after {
    animation: none;
    transform: translate3d(-25%, 0, 0);
  }

  .article-content hr,
  .article-content .liquid-scan-rgb,
  .article-content .wp-block-separator {
    animation: none !important;
    box-shadow: 0 0 8px rgba(255, 40, 81, 0.45);
  }
}

.article-bottom-ad {
  margin-top: 3rem;
}

/* --- REVEAL --- */
@keyframes slideUpDecode {
  0% { opacity: 0; transform: translateY(30px); filter: blur(4px); }
  100% { opacity: 1; transform: translateY(0); filter: blur(0); }
}

.reveal-block {
  animation: slideUpDecode 0.8s cubic-bezier(0.165, 0.84, 0.44, 1) forwards;
  opacity: 0;
}

.delay-1 { animation-delay: 0.1s; }
.delay-2 { animation-delay: 0.2s; }
.delay-3 { animation-delay: 0.3s; }

/* --- COMMENTS TERMINAL FEEDBACK V8 --- */
.comments-terminal-wrap h2,
.comments-terminal-wrap h3,
.comments-area h2,
.comments-area h3 {
  font-family: var(--font-mono), ui-monospace, monospace;
}

.comments-terminal-wrap h2::before,
.comments-terminal-wrap h3::before,
.comments-terminal-wrap h2::after,
.comments-terminal-wrap h3::after,
.comments-area h2::before,
.comments-area h3::before,
.comments-area h2::after,
.comments-area h3::after {
  content: none;
}

.comments-terminal-wrap {
  margin-bottom: 0.25rem;
}

.comments-terminal-wrap__title {
  margin-top: 4rem;
  margin-bottom: 2rem;
}

.comments-area {
  margin-top: 2rem;
  padding-top: 2rem;
  border-top: 1px dashed rgba(255, 255, 255, 0.1);
}

.comments-title {
  font-family: var(--font-mono), ui-monospace, monospace;
  font-size: clamp(1.25rem, 2vw, 2rem);
  font-weight: 800;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--cyber-red);
  margin-bottom: 1.5rem;
}

.comment-respond-block {
  margin-bottom: 2.5rem;
}

.comment-flux-meta {
  font-family: var(--font-mono), ui-monospace, monospace;
  font-size: 0.7rem;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--text-mineral);
  opacity: 0.75;
  margin-bottom: 1.5rem;
  padding-bottom: 1rem;
  border-bottom: 1px dashed rgba(255, 255, 255, 0.06);
}

.comment-stream-btn {
  display: inline-flex;
  align-items: center;
  background: transparent;
  border: 1px solid rgba(255, 40, 81, 0.35);
  color: var(--cyber-red);
  font-family: var(--font-mono), ui-monospace, monospace;
  font-size: 0.65rem;
  font-weight: 700;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  padding: 10px 18px;
  cursor: pointer;
  transition:
    background 0.3s ease,
    border-color 0.3s ease,
    box-shadow 0.3s ease,
    letter-spacing 0.3s ease;
}

.comment-stream-btn:hover {
  background: rgba(255, 40, 81, 0.06);
  border-color: var(--cyber-red);
  box-shadow: 0 0 16px rgba(255, 40, 81, 0.15);
  letter-spacing: 0.18em;
}

.comment-stream-load {
  display: flex;
  justify-content: center;
  margin-top: 1rem;
  padding-top: 1.5rem;
  border-top: 1px dashed rgba(255, 255, 255, 0.06);
}

.comment-stream-complete {
  font-family: var(--font-mono), ui-monospace, monospace;
  font-size: 0.65rem;
  letter-spacing: 0.12em;
  text-align: center;
  color: var(--text-mineral);
  opacity: 0.5;
  margin-top: 1.5rem;
  padding-top: 1rem;
  border-top: 1px dashed rgba(255, 255, 255, 0.04);
}

.comment-thread-expand {
  margin-top: 12px;
}

.comment-list {
  list-style: none;
  padding: 0;
  margin: 0;
}

.comment-node {
  margin-bottom: 2.5rem;
}

.comment-node--incoming .comment-body-v8 {
  animation: comment-incoming-pulse 2.2s ease-out forwards;
}

@keyframes comment-incoming-pulse {
  0% {
    box-shadow: inset 2px 0 0 var(--cyber-red);
    background: rgba(255, 40, 81, 0.06);
  }
  100% {
    box-shadow: inset 2px 0 0 transparent;
    background: transparent;
  }
}

.comment-error-panel {
  margin: 1rem 0 1.5rem;
  padding: 1rem 1.25rem;
  border: 1px dashed rgba(255, 40, 81, 0.35);
  background: rgba(255, 40, 81, 0.03);
}

.comment-error-countdown {
  font-family: var(--font-mono), ui-monospace, monospace;
  font-size: 0.7rem;
  color: var(--text-mineral);
  margin: 0.5rem 0 1rem;
  letter-spacing: 0.1em;
}

.comment-report-btn {
  background: none;
  border: none;
  padding: 0;
  margin-left: 12px;
  color: var(--text-mineral);
  font-family: var(--font-mono), ui-monospace, monospace;
  font-size: inherit;
  letter-spacing: 0.05em;
  opacity: 0.45;
  cursor: pointer;
  transition: opacity 0.3s ease, color 0.3s ease;
}

.comment-report-btn:hover:not(:disabled) {
  opacity: 1;
  color: var(--cyber-red);
}

.comment-report-btn:disabled {
  cursor: wait;
  opacity: 0.7;
}

.comment-stream-btn:disabled {
  opacity: 0.5;
  cursor: wait;
}

.comment-body-v8 {
  display: flex;
  gap: 20px;
  transition: transform 0.3s ease;
}

.comment-body-v8:hover {
  transform: translateX(4px);
}

.comment-aside {
  display: flex;
  flex-direction: column;
  align-items: center;
  flex-shrink: 0;
}

.comment-avatar {
  width: 48px;
  height: 48px;
  border-radius: 2px;
  overflow: hidden;
}

.comment-avatar img {
  width: 48px;
  height: 48px;
  object-fit: cover;
  border: 1px solid rgba(255, 255, 255, 0.1);
  filter: grayscale(1) contrast(1.2);
  transition: filter 0.3s ease, opacity 0.3s ease;
  opacity: 0.8;
}

.comment-body-v8:hover .comment-avatar img {
  filter: grayscale(0);
  opacity: 1;
}

.comment-avatar.user-logged-in {
  border: 1px solid var(--cyber-red);
  box-shadow: 0 0 10px rgba(255, 40, 81, 0.3);
}

.comment-avatar__fallback {
  display: flex;
  width: 48px;
  height: 48px;
  align-items: center;
  justify-content: center;
  border: 1px solid rgba(255, 255, 255, 0.1);
  font-family: var(--font-mono), ui-monospace, monospace;
  font-size: 0.7rem;
  font-weight: 700;
  color: var(--cyber-red);
  background: rgba(255, 40, 81, 0.04);
}

.comment-thread-line {
  width: 1px;
  flex-grow: 1;
  min-height: 24px;
  background: linear-gradient(to bottom, rgba(255, 40, 81, 0.4), transparent);
  margin-top: 10px;
}

.comment-main {
  flex-grow: 1;
  min-width: 0;
  padding: 0 0 20px;
}

.comment-header {
  display: flex;
  flex-wrap: wrap;
  gap: 15px;
  align-items: center;
  font-family: var(--font-mono), ui-monospace, monospace;
  font-size: 12px;
  margin-bottom: 8px;
}

.comment-author-name {
  color: var(--text-pure);
  font-weight: 700;
  letter-spacing: 0.1em;
  text-transform: uppercase;
}

.comment-author-name.staff {
  color: var(--cyber-red);
  display: inline-flex;
  align-items: center;
  gap: 5px;
}

.comment-author-name.staff::after {
  content: "STAFF";
  font-size: 0.5rem;
  padding: 1px 4px;
  border: 1px solid var(--cyber-red);
  border-radius: 2px;
  letter-spacing: 0.05em;
}

.comment-meta {
  color: var(--text-mineral);
  opacity: 0.6;
}

.comment-content-v8 {
  color: var(--text-mineral);
  line-height: 1.6;
  font-size: 1rem;
}

.comment-content-v8 p {
  margin: 0 0 10px;
}

.comment-content-v8 p:last-child {
  margin-bottom: 0;
}

.comment-pending-warning {
  color: var(--cyber-red) !important;
  font-family: var(--font-mono), ui-monospace, monospace;
  font-size: 10px;
  margin-bottom: 10px !important;
}

/* --- COMMENT REACTIONS V1 --- */
.comment-reactions {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 6px 10px;
  margin-top: 14px;
  padding: 4px 0;
}

.comment-reactions--heart-boost {
  border-radius: 3px;
  box-shadow: inset 0 0 12px rgba(255, 40, 81, 0.04);
}

.comment-reactions--error {
  animation: reaction-error-flash 1.8s ease-out forwards;
}

@keyframes reaction-error-flash {
  0%,
  15% {
    box-shadow: inset 0 0 0 1px rgba(255, 40, 81, 0.35);
  }
  100% {
    box-shadow: none;
  }
}

.comment-reaction-btn {
  position: relative;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 5px;
  min-width: 34px;
  min-height: 34px;
  padding: 5px 8px;
  border: 1px solid rgba(255, 40, 81, 0.12);
  border-radius: 3px;
  background: rgba(255, 255, 255, 0.02);
  cursor: pointer;
  overflow: hidden;
  isolation: isolate;
  transition:
    border-color 0.25s ease,
    background 0.25s ease,
    opacity 0.2s ease;
}

.comment-reaction-btn:focus-visible {
  outline: 1px solid rgba(255, 40, 81, 0.65);
  outline-offset: 2px;
}

.comment-reaction-btn:disabled {
  cursor: not-allowed;
  opacity: 0.45;
}

.comment-reaction-btn__rgb {
  position: absolute;
  inset: 0;
  border-radius: inherit;
  opacity: 0;
  background: linear-gradient(
    90deg,
    #ff2851,
    #00d4ff,
    #00ff88,
    #ff2851
  );
  background-size: 300% 100%;
  z-index: 0;
  pointer-events: none;
  transition: opacity 0.2s ease;
}

.comment-reaction-btn:hover:not(:disabled) .comment-reaction-btn__rgb,
.comment-reaction-btn:focus-visible:not(:disabled) .comment-reaction-btn__rgb {
  opacity: 0.22;
  animation:
    n3xus-continuous-strip 4s linear infinite,
    n3xus-glow-pulse 4s linear infinite;
}

.comment-reaction-icon {
  position: relative;
  z-index: 1;
  width: 18px;
  height: 18px;
  object-fit: contain;
  flex-shrink: 0;
  filter: drop-shadow(0 0 3px rgba(255, 40, 81, 0.45));
  animation: reaction-idle-pulse 3.2s ease-in-out infinite;
}

/*
 * HEART V2 = PNG multi-teinte → forcer #ff2851 (même famille que like/dislike)
 * brightness(0) monochrome puis teinte cyber-red + glow
 */
.comment-reaction-btn--heart .comment-reaction-icon {
  animation: reaction-heart-idle-pulse 3.2s ease-in-out infinite;
  filter:
    brightness(0)
    saturate(100%)
    invert(22%)
    sepia(98%)
    saturate(5200%)
    hue-rotate(338deg)
    brightness(1.08)
    contrast(1.05)
    drop-shadow(0 0 3px rgba(255, 40, 81, 0.45));
}

.comment-reaction-btn:hover:not(:disabled) .comment-reaction-icon,
.comment-reaction-btn--active .comment-reaction-icon {
  animation: none;
}

.comment-reaction-btn--heart:hover:not(:disabled) .comment-reaction-icon,
.comment-reaction-btn--heart.comment-reaction-btn--active .comment-reaction-icon {
  animation: none;
  filter:
    brightness(0)
    saturate(100%)
    invert(22%)
    sepia(98%)
    saturate(5200%)
    hue-rotate(338deg)
    brightness(1.08)
    contrast(1.05)
    drop-shadow(0 0 5px rgba(255, 40, 81, 0.75));
}

.comment-reaction-btn--active {
  border-color: rgba(255, 40, 81, 0.45);
  background: rgba(255, 40, 81, 0.06);
  box-shadow: 0 0 10px rgba(255, 40, 81, 0.22);
}

.comment-reaction-btn--active .comment-reaction-icon {
  filter: drop-shadow(0 0 5px rgba(255, 40, 81, 0.75));
}

.comment-reaction-btn--heart.comment-reaction-btn--active .comment-reaction-icon {
  filter:
    brightness(0)
    saturate(100%)
    invert(22%)
    sepia(98%)
    saturate(5200%)
    hue-rotate(338deg)
    brightness(1.08)
    contrast(1.05)
    drop-shadow(0 0 5px rgba(255, 40, 81, 0.75));
}

.comment-reaction-btn--syncing {
  opacity: 0.72;
  pointer-events: none;
}

.comment-reaction-btn--syncing .comment-reaction-icon {
  animation: reaction-sync-pulse 0.9s ease-in-out infinite;
}

@keyframes reaction-idle-pulse {
  0%,
  100% {
    filter: drop-shadow(0 0 2px rgba(255, 40, 81, 0.35));
  }
  50% {
    filter: drop-shadow(0 0 5px rgba(255, 40, 81, 0.55));
  }
}

@keyframes reaction-heart-idle-pulse {
  0%,
  100% {
    filter:
      brightness(0)
      saturate(100%)
      invert(22%)
      sepia(98%)
      saturate(5200%)
      hue-rotate(338deg)
      brightness(1.08)
      contrast(1.05)
      drop-shadow(0 0 2px rgba(255, 40, 81, 0.35));
  }
  50% {
    filter:
      brightness(0)
      saturate(100%)
      invert(22%)
      sepia(98%)
      saturate(5200%)
      hue-rotate(338deg)
      brightness(1.08)
      contrast(1.05)
      drop-shadow(0 0 5px rgba(255, 40, 81, 0.55));
  }
}

@keyframes reaction-sync-pulse {
  0%,
  100% {
    opacity: 1;
  }
  50% {
    opacity: 0.55;
  }
}

.comment-reaction-count {
  position: relative;
  z-index: 1;
  font-family: var(--font-mono), ui-monospace, monospace;
  font-size: 0.62rem;
  letter-spacing: 0.06em;
  color: var(--text-mineral);
  line-height: 1;
  min-width: 0.6em;
}

.comment-reaction-btn--active .comment-reaction-count {
  color: #ff2851;
}

@media (max-width: 768px) {
  .comment-reactions {
    gap: 5px 8px;
    margin-top: 12px;
  }

  .comment-reaction-btn {
    min-width: 36px;
    min-height: 36px;
    padding: 6px 9px;
  }

  .comment-reaction-icon {
    width: 16px;
    height: 16px;
  }
}

@media (prefers-reduced-motion: reduce) {
  .comment-reaction-icon {
    animation: none;
  }

  .comment-reaction-btn:hover:not(:disabled) .comment-reaction-btn__rgb,
  .comment-reaction-btn:focus-visible:not(:disabled) .comment-reaction-btn__rgb {
    animation: none;
    opacity: 0.18;
  }

  .comment-reaction-btn--syncing .comment-reaction-icon {
    animation: none;
    opacity: 0.65;
  }

  .comment-reactions--error {
    animation: none;
    box-shadow: inset 0 0 0 1px rgba(255, 40, 81, 0.25);
  }
}

.comment-actions {
  margin-top: 10px;
  font-family: var(--font-mono), ui-monospace, monospace;
  font-size: 10px;
}

.comment-reply-btn {
  background: none;
  border: none;
  padding: 0;
  color: var(--cyber-red);
  font-family: inherit;
  font-size: inherit;
  letter-spacing: 0.05em;
  opacity: 0.8;
  cursor: not-allowed;
  transition: opacity 0.3s ease, text-shadow 0.3s ease;
}

.comment-reply-btn:not(:disabled) {
  cursor: pointer;
  opacity: 1;
}

.comment-reply-cancel {
  margin-left: 12px;
  background: none;
  border: none;
  color: var(--text-mineral);
  font-family: var(--font-mono), ui-monospace, monospace;
  font-size: 0.6rem;
  letter-spacing: 0.1em;
  cursor: pointer;
}

.comment-reply-cancel:hover {
  color: var(--cyber-red);
}

.comment-honeypot {
  position: absolute;
  left: -9999px;
  width: 1px;
  height: 1px;
  opacity: 0;
  pointer-events: none;
}

.comment-sync-dot {
  display: inline-block;
  width: 6px;
  height: 6px;
  margin-left: 10px;
  border-radius: 50%;
  background: var(--text-mineral);
  opacity: 0.4;
  vertical-align: middle;
}

.comment-sync-dot--on {
  background: #00ff88;
  opacity: 1;
  box-shadow: 0 0 8px rgba(0, 255, 136, 0.5);
}

.status-msg--live {
  color: var(--cyber-red);
}

.comment-reply-btn:not(:disabled):hover {
  opacity: 1;
  text-shadow: 0 0 8px var(--cyber-red);
}

.children {
  list-style: none;
  padding-left: 68px;
  margin-top: 20px;
}

#respond {
  margin-top: 2rem;
  padding: 20px;
  background: rgba(255, 255, 255, 0.02);
  border: 1px solid rgba(255, 255, 255, 0.05);
  border-radius: 4px;
}

#reply-title {
  font-family: var(--font-mono), ui-monospace, monospace;
  font-size: 0.85rem;
  font-weight: 700;
  display: flex;
  align-items: center;
  margin-bottom: 1.5rem;
}

.sys-square {
  display: inline-block;
  width: 6px;
  height: 6px;
  background: var(--cyber-red);
  margin-right: 12px;
}

.comment-input-wrap input,
.comment-input-wrap textarea {
  width: 100%;
  background: var(--color-void);
  border: 1px solid rgba(255, 255, 255, 0.05);
  border-radius: 2px;
  color: var(--text-pure);
  padding: 12px 15px;
  font-family: var(--font-mono), ui-monospace, monospace;
  font-size: 12px;
  transition: border-color 0.3s ease, background 0.3s ease;
}

.comment-input-wrap input::placeholder,
.comment-input-wrap textarea::placeholder {
  color: var(--text-mineral);
  opacity: 0.5;
}

.comment-input-wrap input:focus,
.comment-input-wrap textarea:focus {
  outline: none;
  border-color: rgba(255, 40, 81, 0.4);
  background: rgba(0, 0, 0, 0.8);
}

#respond:focus-within {
  border-color: rgba(255, 40, 81, 0.4);
  background: rgba(255, 40, 81, 0.02);
  box-shadow: 0 0 20px rgba(255, 40, 81, 0.05);
}

.comment-input-row {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 15px;
}

.form-submit {
  display: flex;
  justify-content: flex-end;
  margin-top: 20px;
}

.os-btn-execute {
  background: transparent;
  color: var(--cyber-red);
  border: 1px solid var(--cyber-red);
  padding: 12px 30px;
  font-family: var(--font-mono), ui-monospace, monospace;
  font-size: 12px;
  font-weight: 700;
  letter-spacing: 0.2em;
  cursor: pointer;
}

.status-msg,
.status-warning {
  font-family: var(--font-mono), ui-monospace, monospace;
  font-size: 0.75rem;
  color: var(--text-mineral);
  margin-top: 1rem;
}

/* --- RELATED ARTICLES (POUR ALLER PLUS LOIN) — footer postlude --- */
.related-articles-footer-zone {
  position: relative;
  max-width: var(--article-max);
  margin: 0 auto;
  padding: 0 var(--article-gutter) 5rem;
  box-sizing: border-box;
}

.related-articles-footer-zone::before {
  content: "";
  display: block;
  height: 1px;
  margin: 3rem auto 2.5rem;
  max-width: min(100%, 1200px);
  background: linear-gradient(
    90deg,
    transparent 0%,
    rgba(255, 40, 81, 0.15) 15%,
    rgba(255, 40, 81, 0.45) 35%,
    rgba(0, 212, 255, 0.35) 55%,
    rgba(0, 255, 136, 0.25) 75%,
    transparent 100%
  );
  box-shadow: 0 -18px 36px rgba(255, 40, 81, 0.05);
  opacity: 0.85;
}

.related-articles-shell {
  margin: 0;
  padding: 1.75rem 1.25rem 1.5rem;
  border: 1px solid rgba(255, 40, 81, 0.12);
  background: linear-gradient(
    180deg,
    rgba(255, 40, 81, 0.03) 0%,
    rgba(255, 255, 255, 0.01) 100%
  );
  border-radius: 4px;
}

.related-articles-shell--postlude {
  padding: 2.25rem 1.75rem 2rem;
  border-color: rgba(255, 40, 81, 0.16);
  background: linear-gradient(
    180deg,
    rgba(255, 40, 81, 0.04) 0%,
    rgba(10, 10, 12, 0.6) 48%,
    rgba(255, 255, 255, 0.015) 100%
  );
  box-shadow: 0 24px 60px rgba(0, 0, 0, 0.35);
}

.related-articles-header {
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
  gap: 0.75rem;
  margin-bottom: 1.75rem;
  padding-bottom: 1.5rem;
  border-bottom: 1px dashed rgba(255, 255, 255, 0.08);
}

.related-articles-header__label {
  margin: 0;
  font-family: var(--font-mono), ui-monospace, monospace;
  font-size: 0.65rem;
  letter-spacing: 0.28em;
  text-transform: uppercase;
  color: #ff2851;
  opacity: 0.85;
}

.related-articles-header__hero {
  position: relative;
  width: 100%;
  max-width: 760px;
  padding: 0.35rem 0 0.15rem;
}

.related-articles-header__hero::before {
  content: "// //";
  display: block;
  margin-bottom: 0.85rem;
  font-family: var(--font-mono), ui-monospace, monospace;
  font-size: 0.68rem;
  letter-spacing: 0.42em;
  color: #ff2851;
  opacity: 0.55;
}

.related-articles-header__hero::after {
  content: "";
  display: block;
  width: min(320px, 72%);
  height: 1px;
  margin: 1rem auto 0;
  background: linear-gradient(
    90deg,
    transparent,
    rgba(255, 40, 81, 0.55) 20%,
    rgba(0, 212, 255, 0.35) 50%,
    rgba(255, 40, 81, 0.55) 80%,
    transparent
  );
  opacity: 0.75;
}

.related-articles-header__title {
  margin: 0;
  font-family: var(--font-mono), ui-monospace, monospace;
  font-size: clamp(1.2rem, 3.2vw, 1.85rem);
  font-weight: 800;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: #fff;
  line-height: 1.15;
  text-shadow: 0 0 18px rgba(255, 40, 81, 0.35);
  animation: related-title-glow 4.5s ease-in-out infinite;
}

@keyframes related-title-glow {
  0%,
  100% {
    text-shadow:
      0 0 14px rgba(255, 40, 81, 0.28),
      0 0 2px rgba(255, 40, 81, 0.15);
  }
  50% {
    text-shadow:
      0 0 28px rgba(255, 40, 81, 0.55),
      0 0 48px rgba(255, 40, 81, 0.12);
  }
}

.related-articles-header__subtitle {
  margin: 0.65rem 0 0;
  font-family: var(--font-mono), ui-monospace, monospace;
  font-size: 0.72rem;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--text-mineral);
  opacity: 0.8;
}

.related-articles-status {
  margin: 0.25rem 0 0;
  font-family: var(--font-mono), ui-monospace, monospace;
  font-size: 0.62rem;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: #8b8b8f;
  padding: 6px 12px;
  border: 1px solid rgba(255, 40, 81, 0.2);
  border-radius: 2px;
  background: rgba(0, 0, 0, 0.35);
}

.related-articles-grid {
  display: flex;
  flex-direction: column;
  gap: 14px;
}

.related-article-card {
  position: relative;
  border: 1px solid rgba(255, 255, 255, 0.06);
  border-radius: 3px;
  background: rgba(255, 255, 255, 0.02);
  overflow: hidden;
  transition:
    border-color 0.3s ease,
    box-shadow 0.3s ease,
    transform 0.3s ease;
}

.related-article-card__link {
  display: grid;
  grid-template-columns: 1fr;
  text-decoration: none;
  color: inherit;
  height: 100%;
}

.related-article-card__media {
  position: relative;
  min-height: 160px;
  background-color: #0a0a0c;
  background-size: cover;
  background-position: center;
  filter: grayscale(1) contrast(1.1);
  transition: filter 0.35s ease;
}

.related-article-card--primary .related-article-card__media {
  min-height: 200px;
}

.related-article-card__overlay {
  position: absolute;
  inset: 0;
  background: linear-gradient(
    180deg,
    rgba(10, 10, 12, 0.15) 0%,
    rgba(10, 10, 12, 0.88) 100%
  );
}

.related-article-card__scanline {
  position: absolute;
  inset: 0;
  pointer-events: none;
  background: repeating-linear-gradient(
    0deg,
    transparent,
    transparent 2px,
    rgba(255, 255, 255, 0.02) 2px,
    rgba(255, 255, 255, 0.02) 4px
  );
  opacity: 0.35;
}

.related-article-card__body {
  display: flex;
  flex-direction: column;
  gap: 0.55rem;
  padding: 1rem 1.1rem 1.1rem;
}

.related-article-card__meta {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
}

.related-article-reason {
  font-family: var(--font-mono), ui-monospace, monospace;
  font-size: 0.58rem;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: #ff2851;
}

.related-article-match {
  font-family: var(--font-mono), ui-monospace, monospace;
  font-size: 0.58rem;
  letter-spacing: 0.12em;
  color: #8b8b8f;
}

.related-article-card__title {
  margin: 0;
  font-family: var(--font-mono), ui-monospace, monospace;
  font-size: 0.92rem;
  font-weight: 700;
  line-height: 1.45;
  letter-spacing: 0.03em;
  color: #fff;
  display: -webkit-box;
  -webkit-line-clamp: 3;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

.related-article-card--primary .related-article-card__title {
  font-size: 1.05rem;
  -webkit-line-clamp: 4;
}

.related-article-card--primary .related-article-card__body {
  padding: 1.1rem 1.2rem 1.2rem;
}

.related-article-card__excerpt {
  margin: 0;
  font-family: var(--font-mono), ui-monospace, monospace;
  font-size: 0.68rem;
  line-height: 1.6;
  color: var(--text-mineral);
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

.related-article-card--primary .related-article-card__excerpt {
  -webkit-line-clamp: 3;
}

.related-article-card__footer {
  display: flex;
  gap: 12px;
  margin-top: 0.15rem;
  font-family: var(--font-mono), ui-monospace, monospace;
  font-size: 0.58rem;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: #8b8b8f;
}

.related-article-card:hover,
.related-article-card:focus-within {
  border-color: rgba(255, 40, 81, 0.35);
  box-shadow: 0 8px 28px rgba(255, 40, 81, 0.12);
  transform: translateY(-2px);
}

.related-article-card:hover .related-article-card__media,
.related-article-card:focus-within .related-article-card__media {
  filter: grayscale(0.35) contrast(1.15);
}

@media (min-width: 768px) {
  .comments-terminal-wrap {
    margin-bottom: 0.5rem;
  }

  .related-articles-footer-zone {
    padding: 0 2rem 6rem;
  }

  .related-articles-footer-zone::before {
    margin-top: 3.75rem;
    margin-bottom: 3rem;
  }

  .related-articles-shell--postlude {
    padding: 2.75rem 2.25rem 2.5rem;
  }

  .related-articles-header {
    margin-bottom: 2.25rem;
    padding-bottom: 1.75rem;
  }

  .related-articles-header__title {
    font-size: clamp(1.45rem, 2.8vw, 2rem);
    letter-spacing: 0.12em;
  }

  .related-articles-grid {
    display: grid;
    grid-template-columns: 1.32fr 0.98fr;
    grid-template-rows: 1fr 1fr;
    align-items: stretch;
    gap: 20px;
  }

  .related-article-card--primary {
    grid-row: span 2;
  }

  .related-article-card--primary .related-article-card__link {
    grid-template-rows: 1fr auto;
  }

  .related-article-card--primary .related-article-card__media {
    min-height: 280px;
  }

  .related-article-card--primary .related-article-card__title {
    font-size: 1.08rem;
  }

  .related-article-card:not(.related-article-card--primary) .related-article-card__link {
    grid-template-columns: 128px 1fr;
    min-height: 100%;
  }

  .related-article-card:not(.related-article-card--primary) .related-article-card__media {
    min-height: 100%;
  }

  .related-article-card:not(.related-article-card--primary) .related-article-card__title {
    font-size: 0.88rem;
    -webkit-line-clamp: 2;
  }
}

@media (min-width: 1024px) {
  .related-articles-footer-zone {
    max-width: min(1680px, calc(100vw - 2.5rem));
    padding-inline: clamp(1.5rem, 2.5vw, 2.75rem);
    padding-bottom: 6.5rem;
  }

  .related-articles-footer-zone::before {
    max-width: 100%;
    margin-top: 4rem;
    margin-bottom: 3.25rem;
  }

  .related-articles-shell--postlude {
    padding: 3rem clamp(2rem, 3vw, 3.25rem) 2.75rem;
    border-radius: 6px;
  }

  .related-articles-header__hero {
    max-width: 920px;
  }
}

@media (min-width: 1200px) {
  .related-articles-footer-zone {
    max-width: min(1760px, calc(100vw - 3rem));
    padding-inline: clamp(1.75rem, 3vw, 3.5rem);
  }

  .related-articles-grid {
    grid-template-columns: 1.48fr 0.92fr;
    gap: 24px;
  }

  .related-article-card--primary .related-article-card__media {
    min-height: 380px;
  }

  .related-article-card--primary .related-article-card__title {
    font-size: 1.12rem;
  }

  .related-article-card--primary .related-article-card__body {
    padding: 1.2rem 1.35rem 1.35rem;
  }

  .related-article-card:not(.related-article-card--primary) .related-article-card__link {
    grid-template-columns: 152px 1fr;
  }
}

@media (min-width: 1400px) {
  .related-articles-footer-zone {
    max-width: min(1840px, calc(100vw - 3.5rem));
  }

  .related-articles-grid {
    grid-template-columns: 1.55fr 0.85fr;
    gap: 28px;
  }

  .related-article-card--primary .related-article-card__media {
    min-height: 420px;
  }

  .related-article-card:not(.related-article-card--primary) .related-article-card__link {
    grid-template-columns: 168px 1fr;
  }
}

@media (prefers-reduced-motion: reduce) {
  .related-articles-header__title {
    animation: none;
    text-shadow: 0 0 16px rgba(255, 40, 81, 0.35);
  }

  .related-article-card {
    transition: border-color 0.2s ease, box-shadow 0.2s ease;
  }

  .related-article-card:hover,
  .related-article-card:focus-within {
    transform: none;
  }
}



.cyber-red {
  color: var(--cyber-red);
}

/* --- RESPONSIVE --- */
@media (max-width: 1024px) {
  .single-article-viewer .article-layout {
    padding-top: 0 !important;
  }

  .article-layout {
    grid-template-columns: minmax(0, 1fr);
    grid-template-areas:
      "meta"
      "main"
      "aside";
    gap: 2rem;
    padding: 0 var(--article-gutter) 3rem;
  }

  .article-sidebar.left {
    grid-area: meta;
  }

  .article-main-column {
    grid-area: main;
  }

  .article-sidebar.right {
    grid-area: aside;
  }

  .article-main-column,
  .article-sidebar.left,
  .article-sidebar.right {
    width: 100%;
    min-width: 0;
  }

  .article-sidebar {
    position: static;
  }
}

@media (max-width: 768px) {

  .article-hero {
    height: auto !important;
    min-height: clamp(400px, 58vh, 540px) !important;
    aspect-ratio: unset;
    padding-top: 2.75rem;
    padding-bottom: 2.5rem;
  }

  .article-hero-bg {
    aspect-ratio: unset;
    inset: 0;
  }

  .article-hero-overlay {
    background:
      linear-gradient(
        to bottom,
        rgba(5, 5, 8, 0.62) 0%,
        rgba(5, 5, 8, 0.35) 28%,
        rgba(10, 10, 12, 0.72) 62%,
        var(--color-void) 92%,
        var(--color-void) 100%
      ),
      radial-gradient(
        ellipse 100% 50% at 50% 22%,
        rgba(0, 0, 0, 0.5) 0%,
        transparent 72%
      );
  }

  .article-excerpt-wrap::before {
    filter: blur(12px);
    background: radial-gradient(
      ellipse 95% 100% at 25% 50%,
      rgba(0, 0, 0, 0.78) 0%,
      rgba(0, 0, 0, 0.4) 48%,
      transparent 78%
    );
  }

  .article-hero-excerpt {
    font-size: 1.1rem;
    color: rgba(255, 255, 255, 0.93);
  }

  .hero-bottom-shroud {
    height: 28vh;
  }

  .article-header {
    padding: 0 var(--article-gutter);
    padding-bottom: 1.5rem;
  }

  .article-excerpt-wrap {
    gap: 14px;
    margin-top: 14px;
  }

  .article-layout {
    gap: 1.5rem;
    padding: 0 var(--article-gutter) 2.5rem;
  }

  .content-box {
    padding: 0;
    border: none;
    background: transparent;
    box-shadow: none;
  }

  .article-content {
    max-width: 100%;
  }

  .article-content h2 {
    font-size: clamp(1.3rem, 5.2vw, 1.7rem) !important;
    margin: 2.75rem auto 1.5rem auto !important;
    line-height: 1.25 !important;
  }

  .article-content h3 {
    font-size: 1rem !important;
    padding-left: 48px !important;
    margin: 2.25rem 0 1rem 0 !important;
  }

  .article-content h3::after {
    left: 14px;
    font-size: 0.95rem;
  }

  .n3xus-drop-cap,
  .neon-drop-cap {
    font-size: 3.75rem;
    margin-right: 12px;
  }

  .article-sidebar.left {
    flex-direction: column;
    flex-wrap: nowrap;
    gap: 1rem;
    margin-top: 0;
    padding: 0 0 0.5rem;
    background: transparent;
    border: none;
    border-bottom: 1px solid rgba(255, 255, 255, 0.05);
    border-radius: 0;
  }

  .article-sidebar.left .sys-id-module {
    margin-bottom: 0.85rem;
    padding-left: 12px;
  }

  .article-sidebar.left .sys-id-module:last-of-type {
    margin-bottom: 0.35rem;
  }

  .article-sidebar.left .sys-id-value {
    font-size: 1.15rem;
  }

  .article-sidebar.left .sys-id-value.date-value {
    font-size: 15px;
  }

  .article-sidebar.left .sidebar-group {
    margin-top: 0.75rem !important;
    margin-bottom: 0 !important;
  }

  /* Vecteurs de partage mobile : grille dense (pas 1fr = pas d’écart horizontal) */
  .share-terminal-wrap {
    margin-top: 0.35rem;
    align-items: center;
  }

  .share-terminal-wrap__title {
    margin-bottom: 12px;
    letter-spacing: 0.18em;
    font-size: 10px;
  }

  .share-network {
    width: auto;
  }

  /* 6 vecteurs sur une seule ligne */
  .share-network-grid {
    display: grid;
    grid-template-columns: repeat(6, minmax(0, 1fr));
    gap: 6px;
    width: 100%;
    max-width: min(100%, 360px);
    margin: 0 auto;
    justify-items: center;
  }

  .share-vector-btn {
    width: 100%;
    max-width: 42px;
    height: 42px;
    aspect-ratio: 1;
    border-radius: 4px;
  }

  .share-vector-icon {
    width: 16px;
    height: 16px;
  }

  .share-vector-tooltip {
    font-size: 9px;
    padding: 5px 8px;
    bottom: calc(100% + 6px);
  }

  .article-sidebar.right {
    flex-direction: column;
    flex-wrap: nowrap;
    gap: 2rem;
  }

  .comment-input-row {
    grid-template-columns: 1fr;
  }

  .comments-terminal-wrap {
    margin-bottom: 0;
    padding: 0;
    overflow: hidden;
  }

  .related-articles-footer-zone {
    padding: 0 1rem 3.5rem;
  }

  .related-articles-footer-zone::before {
    margin-top: 2.25rem;
    margin-bottom: 1.75rem;
  }

  .related-articles-shell--postlude {
    padding: 1.5rem 1rem 1.25rem;
  }

  .related-articles-grid {
    gap: 12px;
  }

  .children {
    padding-left: 30px;
  }

  .comment-body-v8 {
    gap: 12px;
  }

  .comment-avatar,
  .comment-avatar img,
  .comment-avatar__fallback {
    width: 36px;
    height: 36px;
  }
}
/* =========================================================================
   APERÇU LIVE — bandeau WordPress-like (draft / non public)
   ========================================================================= */

.article-preview-shell {
  position: relative;
}

.article-preview-banner {
  position: sticky;
  top: 0;
  z-index: 90;
  border-bottom: 1px solid rgba(0, 212, 255, 0.28);
  background:
    linear-gradient(180deg, rgba(8, 12, 20, 0.97), rgba(10, 14, 22, 0.94));
  backdrop-filter: blur(12px);
  box-shadow: 0 8px 32px rgba(0, 0, 0, 0.45), 0 0 40px rgba(0, 212, 255, 0.06);
}

.article-preview-banner__inner {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 0.85rem 1.25rem;
  max-width: var(--article-max, 1500px);
  margin: 0 auto;
  padding: 0.7rem clamp(0.85rem, 2.5vw, 1.5rem);
}

.article-preview-banner__left {
  display: flex;
  align-items: flex-start;
  gap: 0.75rem;
  min-width: 0;
  flex: 1 1 16rem;
}

.article-preview-banner__pulse {
  flex-shrink: 0;
  width: 0.55rem;
  height: 0.55rem;
  margin-top: 0.35rem;
  border-radius: 50%;
  background: #00d4ff;
  box-shadow: 0 0 0 0 rgba(0, 212, 255, 0.55);
  animation: article-preview-pulse 1.8s ease-out infinite;
}

@keyframes article-preview-pulse {
  0% {
    box-shadow: 0 0 0 0 rgba(0, 212, 255, 0.5);
  }
  70% {
    box-shadow: 0 0 0 10px rgba(0, 212, 255, 0);
  }
  100% {
    box-shadow: 0 0 0 0 rgba(0, 212, 255, 0);
  }
}

.article-preview-banner__copy {
  min-width: 0;
}

.article-preview-banner__kicker {
  margin: 0;
  font-family: var(--font-mono), ui-monospace, monospace;
  font-size: 0.62rem;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: #00d4ff;
}

.article-preview-banner__title {
  margin: 0.2rem 0 0;
  font-size: 0.92rem;
  font-weight: 700;
  color: #fff;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  max-width: min(42rem, 70vw);
}

.article-preview-banner__badge {
  display: inline-block;
  margin-left: 0.5rem;
  padding: 0.08rem 0.4rem;
  border: 1px solid rgba(255, 40, 81, 0.45);
  border-radius: 0.2rem;
  font-family: var(--font-mono), ui-monospace, monospace;
  font-size: 0.58rem;
  letter-spacing: 0.1em;
  color: #ff6b8a;
  vertical-align: middle;
}

.article-preview-banner__hint {
  margin: 0.2rem 0 0;
  font-size: 0.72rem;
  color: rgba(255, 255, 255, 0.45);
  line-height: 1.35;
}

.article-preview-banner__actions {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.4rem;
}

.article-preview-banner__btn {
  display: inline-flex;
  align-items: center;
  border: 1px solid rgba(255, 255, 255, 0.12);
  border-radius: 0.3rem;
  background: rgba(255, 255, 255, 0.04);
  color: rgba(255, 255, 255, 0.85);
  font-family: var(--font-mono), ui-monospace, monospace;
  font-size: 0.68rem;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  text-decoration: none;
  padding: 0.35rem 0.65rem;
  cursor: pointer;
  transition: border-color 0.15s ease, color 0.15s ease, background 0.15s ease;
}

.article-preview-banner__btn:hover {
  border-color: rgba(0, 212, 255, 0.45);
  color: #fff;
  background: rgba(0, 212, 255, 0.1);
}

.article-preview-banner__btn--primary {
  border-color: rgba(0, 212, 255, 0.4);
  background: rgba(0, 212, 255, 0.12);
  color: #7ee9ff;
}

.article-preview-banner__ghost {
  font-size: 0.68rem;
  color: rgba(255, 255, 255, 0.35);
  font-family: var(--font-mono), ui-monospace, monospace;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  padding: 0 0.25rem;
}

.single-article-viewer--preview {
  /* room under sticky banner */
  scroll-margin-top: 4rem;
}

.article-preview-comments-stub {
  margin: 2.5rem 0 1rem;
  padding: 1.1rem 1rem;
  border: 1px dashed rgba(255, 255, 255, 0.12);
  border-radius: 0.45rem;
  background: rgba(0, 0, 0, 0.22);
}

.article-preview-comments-stub__kicker {
  margin: 0 0 0.4rem;
  font-family: var(--font-mono), ui-monospace, monospace;
  font-size: 0.62rem;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: rgba(255, 255, 255, 0.4);
}

.article-preview-comments-stub__text {
  margin: 0;
  font-size: 0.88rem;
  line-height: 1.55;
  color: rgba(255, 255, 255, 0.5);
}

@media (max-width: 720px) {
  .article-preview-banner__title {
    white-space: normal;
    max-width: none;
  }
}

/* --- AIEO public blocks (TL;DR / FAQ / claims) — parity with JSON-LD --- */
.article-aieo-public {
  display: flex;
  flex-direction: column;
  gap: 1.25rem;
  margin: 0 0 1.5rem;
}

.article-aieo-tldr {
  padding: 1rem 1.15rem;
  border: 1px solid rgba(0, 212, 255, 0.22);
  border-radius: 0.5rem;
  background: rgba(0, 212, 255, 0.05);
}

.article-aieo-tldr__kicker {
  margin: 0 0 0.4rem;
  font-family: var(--font-mono), ui-monospace, monospace;
  font-size: 0.65rem;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: #00d4ff;
}

.article-aieo-tldr__text {
  margin: 0;
  font-size: 0.98rem;
  line-height: 1.55;
  color: rgba(255, 255, 255, 0.88);
}

.article-aieo-claims__list {
  margin: 0.35rem 0 0;
  padding-left: 1.15rem;
  color: rgba(255, 255, 255, 0.78);
  font-size: 0.9rem;
  line-height: 1.5;
}

.article-aieo-claims__src {
  font-family: var(--font-mono), ui-monospace, monospace;
  font-size: 0.72rem;
  color: rgba(255, 255, 255, 0.4);
}

.article-aieo-faq {
  margin-top: 0.5rem;
  padding: 1.1rem 1.15rem;
  border: 1px solid rgba(255, 255, 255, 0.08);
  border-radius: 0.5rem;
  background: rgba(0, 0, 0, 0.28);
}

.article-aieo-faq__title {
  margin: 0 0 0.85rem;
  font-size: 1.05rem;
  letter-spacing: 0.04em;
  text-transform: uppercase;
}

.article-aieo-faq__list {
  display: flex;
  flex-direction: column;
  gap: 0.45rem;
}

.article-aieo-faq__item {
  border: 1px solid rgba(255, 255, 255, 0.08);
  border-radius: 0.35rem;
  background: rgba(0, 0, 0, 0.22);
  padding: 0.15rem 0.75rem;
}

.article-aieo-faq__q {
  cursor: pointer;
  font-weight: 600;
  font-size: 0.92rem;
  padding: 0.55rem 0;
  list-style: none;
}

.article-aieo-faq__q::-webkit-details-marker {
  display: none;
}

.article-aieo-faq__a {
  margin: 0 0 0.75rem;
  font-size: 0.88rem;
  line-height: 1.55;
  color: rgba(255, 255, 255, 0.72);
}

/* ==========================================================================
   ARTICLE IMAGE SYSTEM — Geekthink tactical frame + logo overlay
   Namespace isolé : .article-image-* / .matrix-lightbox-*
   ========================================================================== */

.article-image-node {
  margin: 2.5rem 0;
  width: 100%;
  max-width: 100%;
}

.article-image-frame {
  position: relative;
  display: block;
  width: 100%;
  margin: 0;
  padding: clamp(10px, 2vw, 14px);
  border: 1px solid rgba(255, 40, 81, 0.35);
  border-radius: 2px;
  background: #0a0a0c;
  box-shadow: 0 10px 40px rgba(0, 0, 0, 0.6);
  cursor: zoom-in;
  overflow: hidden;
  text-align: left;
  transition:
    border-color 0.4s cubic-bezier(0.165, 0.84, 0.44, 1),
    box-shadow 0.4s cubic-bezier(0.165, 0.84, 0.44, 1),
    transform 0.4s cubic-bezier(0.165, 0.84, 0.44, 1);
}

.article-image-frame:hover,
.article-image-frame:focus-visible {
  border-color: rgba(255, 40, 81, 0.78);
  box-shadow:
    0 14px 48px rgba(0, 0, 0, 0.65),
    0 0 24px rgba(255, 40, 81, 0.12);
  transform: translateY(-2px);
  outline: none;
}

.article-image-frame:focus-visible {
  box-shadow:
    0 14px 48px rgba(0, 0, 0, 0.65),
    0 0 0 2px rgba(255, 40, 81, 0.45);
}

.article-image-stage {
  position: relative;
  display: block;
  width: 100%;
  line-height: 0;
}

.article-image-overlay {
  position: absolute;
  top: 2.5%;
  right: 2.5%;
  z-index: 3;
  width: 14%;
  min-width: 44px;
  max-width: 118px;
  pointer-events: none;
  /* Glow sur le conteneur (évite de casser mix-blend-mode sur le logo) */
  filter: drop-shadow(0 0 10px rgba(255, 40, 81, 0.32));
}

.article-image-overlay--lightbox {
  width: 13%;
  min-width: 48px;
  max-width: 132px;
}

/* Ancien scrim sombre retiré — doublait le fond “plaque” du PNG export */
.article-image-overlay::before {
  content: none;
  display: none;
}

.article-image-logo {
  position: relative;
  z-index: 1;
  display: block;
  width: 100%;
  height: auto;
  aspect-ratio: 2616 / 1928;
  object-fit: contain;
  object-position: top right;
  opacity: 0.98;
  background: transparent;
  /*
   * Asset SVG = PNG embarqué avec plaque sombre : screen rend le noir/transparent
   * et garde le neon cyan/rouge du wordmark GEEKTHINK.
   */
  mix-blend-mode: screen;
  filter: none;
  pointer-events: none;
}

.article-image-media {
  position: relative;
  z-index: 1;
  display: block;
  width: 100%;
  height: auto;
  max-width: 100%;
  max-height: min(85vh, 1200px); /* 4K source n'impose pas 4K de hauteur layout */
  margin: 0;
  padding: 0;
  border: none;
  border-radius: 1px;
  background: transparent;
  box-shadow: none;
  object-fit: contain;
  object-position: center;
  filter: grayscale(0.18) contrast(1.02);
  transition: filter 0.45s ease;
}

.article-image-frame:hover .article-image-media,
.article-image-frame:focus-visible .article-image-media {
  filter: grayscale(0) contrast(1.04);
}

.article-image-caption {
  margin: 0.85rem 0 0;
  color: var(--text-mineral);
  font-family: var(--font-mono), ui-monospace, monospace;
  font-size: 0.8rem;
  letter-spacing: 0.06em;
  text-align: center;
}

/* Emojis / inline assets — bypass du pipeline image */
.article-content img.emoji,
.article-content img.wp-smiley {
  display: inline !important;
  width: 1em !important;
  height: 1em !important;
  margin: 0 0.1em !important;
  padding: 0 !important;
  border: none !important;
  border-radius: 0 !important;
  box-shadow: none !important;
  filter: none !important;
  max-width: none !important;
  vertical-align: -0.1em !important;
  cursor: auto !important;
}

/* ==========================================================================
   MATRIX LIGHTBOX — terminal immersion (rain derrière le panneau)
   ========================================================================== */

.matrix-lightbox-backdrop {
  position: fixed;
  top: var(--shell-offset);
  left: 0;
  width: 100vw;
  height: calc(100dvh - var(--shell-offset));
  z-index: 10000;
  display: flex;
  align-items: center;
  justify-content: center;
  background: rgba(0, 0, 0, 0.94);
  opacity: 0;
  pointer-events: none;
  transition: opacity 0.4s cubic-bezier(0.165, 0.84, 0.44, 1);
  overflow: hidden;
  isolation: isolate;
}

.matrix-lightbox-backdrop.is-open {
  opacity: 1;
  pointer-events: all;
}

.matrix-lightbox-field {
  position: absolute;
  inset: 0;
  z-index: 1;
  pointer-events: none;
  opacity: 0;
  transition: opacity 0.4s ease;
  overflow: hidden;
}

.matrix-lightbox-backdrop.is-open .matrix-lightbox-field {
  opacity: 1;
}

.matrix-lightbox-void-base {
  position: absolute;
  inset: 0;
  background:
    radial-gradient(ellipse 80% 60% at 50% 42%, rgba(255, 40, 81, 0.07) 0%, transparent 62%),
    radial-gradient(ellipse 55% 45% at 78% 72%, rgba(0, 212, 255, 0.05) 0%, transparent 68%),
    #050508;
}

.matrix-lightbox-field__canvas {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  opacity: 0.88;
}

.matrix-lightbox-rgb-beam {
  position: absolute;
  inset: -30% -10%;
  background: linear-gradient(
    112deg,
    transparent 38%,
    rgba(255, 40, 81, 0.07) 46%,
    rgba(0, 212, 255, 0.05) 50%,
    rgba(0, 255, 136, 0.04) 54%,
    transparent 62%
  );
  animation: matrix-rgb-beam-sweep 9s ease-in-out infinite;
  opacity: 0.75;
}

@keyframes matrix-rgb-beam-sweep {
  0%,
  100% {
    transform: translate3d(-8%, -4%, 0) rotate(0deg);
    opacity: 0.45;
  }
  50% {
    transform: translate3d(8%, 4%, 0) rotate(2deg);
    opacity: 0.85;
  }
}

.matrix-lightbox-noise {
  position: absolute;
  inset: 0;
  opacity: 0.045;
  background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
  background-size: 180px 180px;
  mix-blend-mode: soft-light;
}

.matrix-lightbox-field--static .matrix-lightbox-field__canvas,
.matrix-lightbox-field--static .matrix-lightbox-rgb-beam {
  display: none;
  animation: none;
}

.matrix-lightbox-scanlines {
  position: absolute;
  inset: 0;
  background: repeating-linear-gradient(
    0deg,
    transparent,
    transparent 2px,
    rgba(255, 255, 255, 0.018) 2px,
    rgba(255, 255, 255, 0.018) 4px
  );
  opacity: 0.55;
}

.matrix-lightbox-vignette {
  position: absolute;
  inset: 0;
  background: radial-gradient(
    ellipse at center,
    transparent 32%,
    rgba(0, 0, 0, 0.42) 78%,
    rgba(0, 0, 0, 0.72) 100%
  );
  opacity: 0.88;
}

.matrix-lightbox-panel {
  position: relative;
  z-index: 10;
  display: flex;
  flex-direction: column;
  width: min(90vw, 1200px);
  max-height: 80vh;
  padding: 40px 15px 15px;
  border: 2px solid var(--cyber-red);
  border-radius: 2px;
  background: #000;
  box-shadow:
    0 0 30px rgba(255, 40, 81, 0.32),
    0 24px 64px rgba(0, 0, 0, 0.65);
  transform: scale(0.95);
  transition: transform 0.5s cubic-bezier(0.19, 1, 0.22, 1);
}

.matrix-lightbox-backdrop.is-open .matrix-lightbox-panel {
  transform: scale(1);
}

.matrix-lightbox-hud {
  position: absolute;
  top: 12px;
  left: 15px;
  display: flex;
  gap: 10px;
  font-family: var(--font-mono), ui-monospace, monospace;
  font-size: 10px;
  letter-spacing: 0.1em;
  color: var(--cyber-red);
}

.matrix-lightbox-close {
  position: absolute;
  top: 10px;
  right: 15px;
  border: none;
  background: none;
  color: var(--text-mineral);
  font-family: var(--font-mono), ui-monospace, monospace;
  font-size: 11px;
  letter-spacing: 0.15em;
  cursor: pointer;
  transition: color 0.3s ease, text-shadow 0.3s ease;
}

.matrix-lightbox-close:hover,
.matrix-lightbox-close:focus-visible {
  color: var(--cyber-red);
  text-shadow: 0 0 10px rgba(255, 40, 81, 0.5);
  outline: none;
}

.matrix-lightbox-stage {
  display: flex;
  align-items: center;
  justify-content: center;
  overflow: hidden;
  min-height: 0;
  width: 100%;
}

.matrix-lightbox-image-stage {
  position: relative;
  display: inline-block;
  max-width: 100%;
  line-height: 0;
}

.matrix-lightbox-image-stage .article-image-media {
  filter: none;
}

.matrix-lightbox-image {
  display: block;
  max-width: 100%;
  max-height: calc(80vh - 55px);
  object-fit: contain;
}

@media (max-width: 768px) {
  .article-image-node {
    margin: 2rem 0;
  }

  .article-image-overlay {
    width: 18%;
    min-width: 40px;
    max-width: 96px;
  }

  .article-image-overlay--lightbox {
    width: 16%;
    min-width: 44px;
    max-width: 108px;
  }

  .matrix-lightbox-hud__res {
    display: none;
  }

  .matrix-lightbox-hud {
    top: 10px;
    left: 10px;
    font-size: 9px;
  }

  .matrix-lightbox-close {
    top: 8px;
    right: 10px;
    font-size: 10px;
  }

  .matrix-lightbox-panel {
    width: 95vw;
    padding: 35px 10px 10px;
  }

  .matrix-lightbox-field__canvas {
    opacity: 0.78;
  }

}

@media (prefers-reduced-motion: reduce) {
  .article-image-frame,
  .article-image-media,
  .matrix-lightbox-backdrop,
  .matrix-lightbox-panel,
  .matrix-lightbox-rgb-beam {
    transition: none;
    animation: none;
  }

  .article-image-frame:hover,
  .article-image-frame:focus-visible {
    transform: none;
  }

  .matrix-lightbox-backdrop.is-open .matrix-lightbox-panel {
    transform: none;
  }
}
/* ==========================================================================
   ARTICLE GALLERY — NEURAL GALLERY TERMINAL
   Namespace : .article-gallery-* / .matrix-gallery-*
   ========================================================================== */

.article-gallery-stack {
  margin: 2.5rem 0;
  width: 100%;
  max-width: 100%;
  padding: clamp(12px, 2vw, 18px);
  border: 1px solid rgba(255, 40, 81, 0.28);
  border-radius: 2px;
  background: linear-gradient(180deg, rgba(10, 10, 12, 0.98) 0%, rgba(5, 5, 8, 0.98) 100%);
  box-shadow: 0 12px 42px rgba(0, 0, 0, 0.55);
}

.article-gallery-stack__hud {
  display: flex;
  flex-wrap: wrap;
  gap: 6px 10px;
  margin-bottom: 14px;
  font-family: var(--font-mono), ui-monospace, monospace;
  font-size: 0.68rem;
  letter-spacing: 0.12em;
  color: var(--cyber-red);
  text-transform: uppercase;
}

.article-gallery-stack__meta {
  color: var(--text-mineral);
}

/* Collage multi-cadres — disposition type maquette éditoriale */
.article-gallery-collage {
  display: grid;
  grid-template-columns: 1.4fr 1fr 0.82fr;
  grid-template-rows: minmax(128px, 1.05fr) minmax(92px, 0.72fr) minmax(100px, 0.8fr);
  gap: 10px;
  min-height: clamp(300px, 44vw, 440px);
  padding: 2px;
}

.article-gallery-collage__cell {
  position: relative;
  display: block;
  width: 100%;
  height: 100%;
  min-height: 0;
  margin: 0;
  padding: 0;
  border: none;
  background: none;
  cursor: zoom-in;
  overflow: visible;
}

.article-gallery-collage__frame {
  display: block;
  width: 100%;
  height: 100%;
  min-height: 100%;
  padding: clamp(6px, 1.2vw, 9px);
  border: 1px solid rgba(255, 40, 81, 0.38);
  border-radius: 2px;
  background: #0a0a0c;
  box-shadow: 0 10px 28px rgba(0, 0, 0, 0.5);
  overflow: hidden;
  transition:
    border-color 0.35s cubic-bezier(0.165, 0.84, 0.44, 1),
    box-shadow 0.35s cubic-bezier(0.165, 0.84, 0.44, 1),
    transform 0.35s cubic-bezier(0.165, 0.84, 0.44, 1);
}

.article-gallery-collage__cell:hover .article-gallery-collage__frame,
.article-gallery-collage__cell:focus-visible .article-gallery-collage__frame {
  border-color: rgba(255, 40, 81, 0.82);
  box-shadow:
    0 14px 36px rgba(0, 0, 0, 0.58),
    0 0 20px rgba(255, 40, 81, 0.14);
  transform: translateY(-2px);
  outline: none;
}

.article-gallery-collage__stage {
  display: block;
  width: 100%;
  height: 100%;
  min-height: 100%;
}

.article-gallery-collage__media {
  display: block;
  width: 100%;
  height: 100%;
  min-height: 100%;
  object-fit: cover;
}

.article-gallery-collage__index {
  position: absolute;
  left: 10px;
  bottom: 10px;
  z-index: 4;
  padding: 2px 5px;
  background: rgba(0, 0, 0, 0.78);
  color: var(--cyber-red);
  font-family: var(--font-mono), ui-monospace, monospace;
  font-size: 0.62rem;
  letter-spacing: 0.1em;
  line-height: 1.2;
}

.article-gallery-collage__cell--feature {
  grid-column: 1;
  grid-row: 1 / 3;
}

.article-gallery-collage__cell--alpha {
  grid-column: 2 / 4;
  grid-row: 1;
}

.article-gallery-collage__cell--beta {
  grid-column: 2;
  grid-row: 2;
}

.article-gallery-collage__cell--gamma {
  grid-column: 3;
  grid-row: 2 / 4;
}

.article-gallery-collage__cell--delta {
  grid-column: 1;
  grid-row: 3;
}

.article-gallery-collage__cell--more {
  grid-column: 2;
  grid-row: 3;
}

.article-gallery-collage__more-panel {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  width: 100%;
  height: 100%;
  min-height: 100%;
  padding: 12px;
  border: 1px dashed rgba(255, 40, 81, 0.45);
  border-radius: 2px;
  background:
    linear-gradient(145deg, rgba(255, 40, 81, 0.08) 0%, rgba(10, 10, 12, 0.96) 55%),
    #0a0a0c;
  transition:
    border-color 0.35s ease,
    background 0.35s ease,
    transform 0.35s ease;
}

.article-gallery-collage__cell--more:hover .article-gallery-collage__more-panel,
.article-gallery-collage__cell--more:focus-visible .article-gallery-collage__more-panel {
  border-color: rgba(255, 40, 81, 0.85);
  background:
    linear-gradient(145deg, rgba(255, 40, 81, 0.16) 0%, rgba(10, 10, 12, 0.94) 55%),
    #0a0a0c;
  transform: translateY(-2px);
  outline: none;
}

.article-gallery-collage__more-count {
  color: var(--cyber-red);
  font-family: var(--font-mono), ui-monospace, monospace;
  font-size: clamp(1.1rem, 2.4vw, 1.45rem);
  font-weight: 600;
  letter-spacing: 0.08em;
  line-height: 1;
}

.article-gallery-collage__more-label {
  margin-top: 6px;
  color: var(--text-mineral);
  font-family: var(--font-mono), ui-monospace, monospace;
  font-size: 0.62rem;
  letter-spacing: 0.14em;
}

.article-gallery-collage--slots-1 .article-gallery-collage__cell--feature {
  grid-column: 1 / -1;
  grid-row: 1 / -1;
  min-height: clamp(220px, 50vw, 360px);
}

.article-gallery-collage--slots-2 .article-gallery-collage__cell--feature {
  grid-column: 1;
  grid-row: 1 / -1;
}

.article-gallery-collage--slots-2 .article-gallery-collage__cell--alpha {
  grid-column: 2 / 4;
  grid-row: 1 / -1;
}

.article-gallery-collage--slots-3 .article-gallery-collage__cell--gamma {
  grid-column: 3;
  grid-row: 1 / 3;
}

.article-gallery-collage--slots-3 .article-gallery-collage__cell--alpha {
  grid-column: 2 / 4;
  grid-row: 1;
}

.article-gallery-collage--slots-3 .article-gallery-collage__cell--beta {
  grid-column: 2 / 4;
  grid-row: 2 / 4;
}

.article-gallery-collage--slots-4 .article-gallery-collage__cell--delta {
  display: none;
}

.article-gallery-collage .article-image-overlay {
  width: 16%;
  min-width: 40px;
  max-width: 104px;
}

.article-gallery-hero {
  width: 100%;
}

.article-gallery-hero__frame {
  display: block;
  width: 100%;
  margin: 0;
  padding: clamp(8px, 1.5vw, 12px);
  border: 1px solid rgba(255, 40, 81, 0.35);
  border-radius: 2px;
  background: #0a0a0c;
  cursor: zoom-in;
  overflow: hidden;
  transition:
    border-color 0.4s cubic-bezier(0.165, 0.84, 0.44, 1),
    box-shadow 0.4s cubic-bezier(0.165, 0.84, 0.44, 1),
    transform 0.4s cubic-bezier(0.165, 0.84, 0.44, 1);
}

.article-gallery-hero__frame:hover,
.article-gallery-hero__frame:focus-visible {
  border-color: rgba(255, 40, 81, 0.78);
  box-shadow:
    0 14px 48px rgba(0, 0, 0, 0.65),
    0 0 24px rgba(255, 40, 81, 0.12);
  transform: translateY(-2px);
  outline: none;
}

.article-gallery-hero__media {
  width: 100%;
  height: auto;
}

.article-gallery-hero__caption {
  margin: 0.75rem 0 0;
  color: var(--text-mineral);
  font-family: var(--font-mono), ui-monospace, monospace;
  font-size: 0.78rem;
  letter-spacing: 0.06em;
  text-align: center;
}

.article-gallery-rail {
  margin-top: 14px;
  position: relative;
}

.article-gallery-rail__scroll {
  display: flex;
  gap: 10px;
  overflow-x: auto;
  padding: 4px 2px 8px;
  scroll-snap-type: x mandatory;
  scrollbar-width: thin;
  scrollbar-color: rgba(255, 40, 81, 0.45) transparent;
}

.article-gallery-rail__scroll::-webkit-scrollbar {
  height: 4px;
}

.article-gallery-rail__scroll::-webkit-scrollbar-thumb {
  background: rgba(255, 40, 81, 0.45);
  border-radius: 2px;
}

.article-gallery-rail__thumb {
  position: relative;
  flex: 0 0 auto;
  width: 72px;
  height: 72px;
  padding: 0;
  border: 1px solid rgba(255, 255, 255, 0.12);
  border-radius: 2px;
  background: #0a0a0c;
  cursor: pointer;
  overflow: hidden;
  scroll-snap-align: center;
  transition:
    border-color 0.3s ease,
    transform 0.3s ease,
    box-shadow 0.3s ease;
}

.article-gallery-rail__thumb:hover,
.article-gallery-rail__thumb:focus-visible {
  border-color: rgba(255, 40, 81, 0.65);
  transform: translateY(-2px);
  box-shadow: 0 8px 20px rgba(0, 0, 0, 0.45);
  outline: none;
}

.article-gallery-rail__thumb--active {
  border-color: var(--cyber-red);
  box-shadow: 0 0 0 1px rgba(255, 40, 81, 0.35);
}

.article-gallery-rail__thumb-media {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  filter: grayscale(0.22) contrast(1.02);
  transition: filter 0.35s ease;
}

.article-gallery-rail__thumb--active .article-gallery-rail__thumb-media,
.article-gallery-rail__thumb:hover .article-gallery-rail__thumb-media {
  filter: grayscale(0) contrast(1.04);
}

.article-gallery-rail__thumb-index {
  position: absolute;
  left: 4px;
  bottom: 4px;
  padding: 1px 4px;
  background: rgba(0, 0, 0, 0.72);
  color: var(--cyber-red);
  font-family: var(--font-mono), ui-monospace, monospace;
  font-size: 0.58rem;
  letter-spacing: 0.08em;
  line-height: 1.2;
}

.article-gallery-stack__caption {
  margin: 0.9rem 0 0;
  color: var(--text-mineral);
  font-family: var(--font-mono), ui-monospace, monospace;
  font-size: 0.8rem;
  letter-spacing: 0.06em;
  text-align: center;
}

.article-gallery-collage__cell:not(.article-gallery-collage__cell--feature) .article-image-overlay,
.article-gallery-thumb .article-image-overlay,
.article-gallery-rail .article-image-overlay,
.matrix-gallery-dock .article-image-overlay,
.matrix-gallery-filmstrip .article-image-overlay {
  display: none !important;
}

/* ==========================================================================
   MATRIX GALLERY — Immersive lightbox (mobile-first filmstrip)
   ========================================================================== */

/* Mobile : plein écran. Desktop : panneau centré, void field visible autour. */
.matrix-lightbox-panel--immersive {
  position: relative;
  width: 100vw;
  max-width: 100vw;
  height: calc(100dvh - var(--shell-offset));
  max-height: calc(100dvh - var(--shell-offset));
  padding: 0;
  border: none;
  border-radius: 0;
  background: transparent;
  box-shadow: none;
  transform: none;
}

.matrix-lightbox-backdrop.is-open .matrix-lightbox-panel--immersive {
  transform: none;
}

.matrix-gallery-deck {
  position: relative;
  display: flex;
  flex-direction: column;
  width: 100%;
  height: 100%;
  min-height: 0;
}

.matrix-gallery-deck__chrome {
  position: relative;
  z-index: 40;
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 10px;
  padding: 12px 14px;
  flex-shrink: 0;
  background: linear-gradient(
    180deg,
    rgba(0, 0, 0, 0.72) 0%,
    rgba(0, 0, 0, 0.35) 72%,
    transparent 100%
  );
  pointer-events: none;
}

.matrix-gallery-deck__hud,
.matrix-gallery-deck__actions {
  pointer-events: auto;
}

.matrix-gallery-deck__hud {
  display: flex;
  flex-wrap: wrap;
  gap: 4px 10px;
  font-family: var(--font-mono), ui-monospace, monospace;
  font-size: 0.62rem;
  letter-spacing: 0.1em;
  text-transform: uppercase;
}

.matrix-gallery-deck__label {
  color: var(--cyber-red);
}

.matrix-gallery-deck__counter,
.matrix-gallery-deck__res,
.matrix-gallery-deck__mode {
  color: rgba(255, 255, 255, 0.72);
}

.matrix-gallery-deck__mode {
  color: var(--text-mineral);
}

.matrix-gallery-deck__actions {
  display: flex;
  align-items: center;
  gap: 6px;
  flex-shrink: 0;
}

.matrix-gallery-deck__pill {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  border: 1px solid rgba(255, 255, 255, 0.18);
  border-radius: 2px;
  background: rgba(0, 0, 0, 0.55);
  backdrop-filter: blur(6px);
  color: rgba(255, 255, 255, 0.82);
  font-family: var(--font-mono), ui-monospace, monospace;
  font-size: 0.6rem;
  letter-spacing: 0.1em;
  padding: 6px 10px;
  cursor: pointer;
  transition: color 0.3s ease, border-color 0.3s ease, background 0.3s ease;
}

.matrix-gallery-deck__close {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 40px;
  min-height: 34px;
  border: 1px solid rgba(255, 40, 81, 0.42);
  border-radius: 2px;
  background: rgba(0, 0, 0, 0.62);
  backdrop-filter: blur(6px);
  color: rgba(255, 255, 255, 0.92);
  font-family: var(--font-mono), ui-monospace, monospace;
  font-size: 0.82rem;
  font-weight: 600;
  letter-spacing: 0.08em;
  line-height: 1;
  padding: 8px 14px;
  cursor: pointer;
  transition: color 0.3s ease, border-color 0.3s ease, background 0.3s ease, box-shadow 0.3s ease;
}

.matrix-gallery-deck__pill-label {
  line-height: 1;
}

.matrix-gallery-deck__led {
  width: 7px;
  height: 7px;
  border-radius: 50%;
  background: var(--cyber-red);
  box-shadow: 0 0 6px rgba(255, 40, 81, 0.65);
  transition: background 0.3s ease, box-shadow 0.3s ease;
}

.matrix-gallery-deck__led--auto.is-on {
  background: var(--color-neon-green);
  box-shadow: 0 0 8px rgba(0, 255, 136, 0.75);
}

.matrix-gallery-deck__led--grid {
  width: 0;
  height: 0;
  margin: 0;
  opacity: 0;
  box-shadow: none;
}

.matrix-gallery-deck__led--grid.is-on {
  width: 7px;
  height: 7px;
  margin: 0;
  opacity: 1;
  background: var(--color-neon-green);
  box-shadow: 0 0 8px rgba(0, 255, 136, 0.75);
}

.matrix-gallery-deck__pill.is-active {
  border-color: rgba(255, 255, 255, 0.28);
  color: rgba(255, 255, 255, 0.95);
}

.matrix-gallery-deck__pill--auto.is-active {
  border-color: rgba(0, 255, 136, 0.35);
}

.matrix-gallery-deck__pill--grid.is-active {
  border-color: rgba(0, 255, 136, 0.35);
}

.matrix-gallery-deck__pill:hover,
.matrix-gallery-deck__pill:focus-visible {
  color: rgba(255, 255, 255, 0.95);
  border-color: rgba(255, 40, 81, 0.55);
  outline: none;
}

.matrix-gallery-deck__close:hover,
.matrix-gallery-deck__close:focus-visible {
  color: var(--cyber-red);
  border-color: rgba(255, 40, 81, 0.85);
  box-shadow: 0 0 14px rgba(255, 40, 81, 0.28);
  outline: none;
}

.matrix-gallery-viewer {
  position: relative;
  display: grid;
  grid-template-columns: auto 1fr auto;
  align-items: stretch;
  width: 100%;
  height: 100%;
  min-height: 0;
  padding: 0 4px 10px;
}

.matrix-gallery-viewer__stage {
  position: relative;
  grid-column: 1 / -1;
  grid-row: 1;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 100%;
  height: 100%;
  min-height: 0;
  overflow: hidden;
  border-radius: 2px;
  /* letterbox void — logos / posters / backdrops all sit clean */
  background:
    radial-gradient(ellipse 70% 55% at 50% 45%, rgba(0, 212, 255, 0.04), transparent 70%),
    #050508;
}

.matrix-gallery-viewer__media-wrap {
  /* Flex-center the frame so object-fit:contain never crops */
  position: relative;
  display: flex;
  align-items: center;
  justify-content: center;
  box-sizing: border-box;
  /* Room for chrome + filmstrip + caption */
  width: min(100%, 96vw);
  height: min(100%, calc(100dvh - var(--shell-offset, 0px) - 168px));
  max-width: 100%;
  max-height: 100%;
  padding: 8px 12px 96px;
  animation: matrix-gallery-crossfade 0.32s cubic-bezier(0.165, 0.84, 0.44, 1);
}

@keyframes matrix-gallery-crossfade {
  from {
    opacity: 0;
    transform: scale(1.015);
  }
  to {
    opacity: 1;
    transform: scale(1);
  }
}

.matrix-gallery-viewer__image {
  display: block;
  /* CRITICAL — never cover-crop mixed gallery (poster/backdrop/logo) */
  width: auto;
  height: auto;
  max-width: 100%;
  max-height: 100%;
  object-fit: contain;
  object-position: center;
  filter: grayscale(0.04) contrast(1.02);
  /* crisp logos on dark void */
  image-rendering: auto;
}

/* Aspect-aware polish (set by GalleryCommandDeck data-fit) */
.matrix-gallery-viewer__media-wrap[data-fit="portrait"] .matrix-gallery-viewer__image {
  max-height: 100%;
  max-width: min(100%, 56vh);
}

.matrix-gallery-viewer__media-wrap[data-fit="wide"] .matrix-gallery-viewer__image,
.matrix-gallery-viewer__media-wrap[data-fit="logo"] .matrix-gallery-viewer__image {
  max-width: 100%;
  max-height: min(100%, 72vh);
}

.matrix-gallery-viewer__media-wrap[data-fit="logo"] {
  /* logos often need breathing room + softer pad */
  padding-inline: clamp(16px, 6vw, 64px);
}

.matrix-gallery-viewer__media-wrap[data-fit="logo"] .matrix-gallery-viewer__image {
  filter: none;
  /* slight glow plate behind transparent-ish logos */
  background: radial-gradient(
    ellipse at center,
    rgba(255, 255, 255, 0.04),
    transparent 68%
  );
}

.matrix-gallery-viewer__scrim {
  position: absolute;
  inset: auto 0 0;
  height: 42%;
  background: linear-gradient(
    180deg,
    transparent 0%,
    rgba(0, 0, 0, 0.35) 38%,
    rgba(0, 0, 0, 0.82) 100%
  );
  pointer-events: none;
}

.matrix-gallery-viewer__caption {
  position: absolute;
  left: 14px;
  right: 14px;
  bottom: calc(88px + env(safe-area-inset-bottom, 0px));
  z-index: 12;
  margin: 0;
  color: rgba(255, 255, 255, 0.88);
  font-family: var(--font-mono), ui-monospace, monospace;
  font-size: 0.72rem;
  letter-spacing: 0.06em;
  text-align: center;
  text-shadow: 0 2px 12px rgba(0, 0, 0, 0.8);
}

.matrix-gallery-filmstrip {
  position: absolute;
  left: 50%;
  bottom: calc(8px + env(safe-area-inset-bottom, 0px));
  z-index: 14;
  width: min(92vw, 560px);
  transform: translateX(-50%);
}

.matrix-gallery-filmstrip__scroll {
  display: flex;
  gap: 8px;
  overflow-x: auto;
  padding: 4px 2px;
  scroll-snap-type: x mandatory;
  scrollbar-width: none;
}

.matrix-gallery-filmstrip__scroll::-webkit-scrollbar {
  display: none;
}

.matrix-gallery-filmstrip__thumb {
  position: relative;
  flex: 0 0 auto;
  width: clamp(52px, 14vw, 68px);
  height: clamp(52px, 14vw, 68px);
  padding: 0;
  border: 2px solid rgba(255, 255, 255, 0.28);
  border-radius: 2px;
  background: #0a0a0c;
  cursor: pointer;
  overflow: hidden;
  scroll-snap-align: center;
  box-shadow: 0 6px 18px rgba(0, 0, 0, 0.45);
  transition: border-color 0.3s ease, transform 0.3s ease, box-shadow 0.3s ease;
}

.matrix-gallery-filmstrip__thumb--active {
  border-color: var(--cyber-red);
  box-shadow:
    0 0 0 1px rgba(255, 40, 81, 0.45),
    0 8px 22px rgba(0, 0, 0, 0.55);
  transform: translateY(-3px);
}

.matrix-gallery-filmstrip__thumb-media {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.matrix-gallery-filmstrip__thumb-index {
  display: none;
}

.matrix-gallery-viewer__arrow {
  position: relative;
  z-index: 16;
  grid-row: 1;
  align-self: end;
  margin-bottom: calc(24px + env(safe-area-inset-bottom, 0px));
  width: clamp(40px, 11vw, 52px);
  height: clamp(40px, 11vw, 52px);
  padding: 0;
  border: none;
  background: transparent;
  color: rgba(255, 255, 255, 0.92);
  font-size: clamp(2rem, 8vw, 2.8rem);
  font-weight: 300;
  line-height: 1;
  text-shadow: 0 2px 16px rgba(0, 0, 0, 0.75);
  cursor: pointer;
  transition: color 0.3s ease, transform 0.3s ease;
}

.matrix-gallery-viewer__arrow--prev {
  grid-column: 1;
  justify-self: start;
  margin-left: 2px;
}

.matrix-gallery-viewer__arrow--next {
  grid-column: 3;
  justify-self: end;
  margin-right: 2px;
}

.matrix-gallery-viewer__arrow:hover,
.matrix-gallery-viewer__arrow:focus-visible {
  color: var(--cyber-red);
  transform: scale(1.08);
  outline: none;
}

.matrix-gallery-grid-overlay {
  position: absolute;
  inset: 0;
  z-index: 25;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 48px 12px 12px;
  background: rgba(0, 0, 0, 0.88);
  backdrop-filter: blur(4px);
}

.matrix-gallery-grid-overlay__inner {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(96px, 1fr));
  gap: 10px;
  width: 100%;
  max-height: 100%;
  overflow-y: auto;
  padding: 4px;
}

.matrix-gallery-grid-overlay__cell {
  aspect-ratio: 1;
  padding: 0;
  border: 1px solid rgba(255, 255, 255, 0.14);
  border-radius: 2px;
  background: #0a0a0c;
  overflow: hidden;
  cursor: pointer;
  transition: border-color 0.3s ease;
}

.matrix-gallery-grid-overlay__cell img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.matrix-gallery-grid-overlay__cell--active {
  border-color: var(--cyber-red);
  box-shadow: 0 0 0 2px rgba(255, 40, 81, 0.35);
}

@media (min-width: 768px) {
  .article-gallery-rail__thumb {
    width: 84px;
    height: 84px;
  }

}

@media (max-width: 768px) {
  .article-gallery-stack {
    margin: 2rem 0;
    padding: 10px;
  }

  .article-gallery-collage {
    grid-template-columns: 1fr 1fr;
    grid-template-rows: auto;
    min-height: auto;
    gap: 8px;
  }

  .article-gallery-collage__cell--feature,
  .article-gallery-collage__cell--alpha,
  .article-gallery-collage__cell--beta,
  .article-gallery-collage__cell--gamma,
  .article-gallery-collage__cell--delta,
  .article-gallery-collage__cell--more {
    grid-column: auto;
    grid-row: auto;
    min-height: 128px;
  }

  .article-gallery-collage__cell--feature {
    grid-column: 1 / -1;
    min-height: clamp(200px, 56vw, 280px);
  }

  .article-gallery-collage--slots-2 .article-gallery-collage__cell--alpha {
    grid-column: auto;
  }

  .matrix-gallery-deck__res {
    display: none;
  }

  .matrix-gallery-deck__chrome {
    padding: 10px 10px 8px;
  }

  .matrix-gallery-filmstrip {
    width: min(78vw, 420px);
  }

  .matrix-gallery-viewer {
    padding: 0 0 6px;
  }

  .matrix-gallery-viewer__caption {
    bottom: calc(80px + env(safe-area-inset-bottom, 0px));
    font-size: 0.66rem;
  }
}

@media (min-width: 769px) {
  .matrix-lightbox-panel--immersive {
    width: min(88vw, 1040px);
    max-width: min(88vw, 1040px);
    height: auto;
    max-height: 82vh;
    padding: 38px 14px 14px;
    border: 2px solid var(--cyber-red);
    border-radius: 2px;
    background: #000;
    box-shadow:
      0 0 30px rgba(255, 40, 81, 0.32),
      0 24px 64px rgba(0, 0, 0, 0.65);
    transform: scale(0.95);
    transition: transform 0.5s cubic-bezier(0.19, 1, 0.22, 1);
  }

  .matrix-lightbox-backdrop.is-open .matrix-lightbox-panel--immersive {
    transform: scale(1);
  }

  .matrix-gallery-deck {
    height: auto;
    max-height: calc(82vh - 52px);
  }

  .matrix-gallery-deck__chrome {
    padding: 0 0 10px;
    background: none;
  }

  .matrix-gallery-deck__label {
    color: var(--cyber-red);
  }

  .matrix-gallery-deck__counter,
  .matrix-gallery-deck__res,
  .matrix-gallery-deck__mode {
    color: var(--text-mineral);
  }

  .matrix-gallery-deck__pill {
    background: rgba(10, 10, 12, 0.92);
    border-color: rgba(255, 40, 81, 0.28);
    color: var(--text-mineral);
  }

  .matrix-gallery-deck__close {
    min-width: 44px;
    min-height: 38px;
    font-size: 0.9rem;
    padding: 9px 16px;
  }

  .matrix-gallery-viewer {
    height: clamp(380px, 62vh, 580px);
    min-height: 380px;
    max-height: calc(82vh - 110px);
    padding: 0 6px 6px;
  }

  .matrix-gallery-viewer__stage {
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 100%;
    max-height: 100%;
    border: 1px solid rgba(255, 40, 81, 0.22);
  }

  .matrix-gallery-viewer__media-wrap {
    width: 100%;
    height: 100%;
    max-height: 100%;
    padding: 12px 16px 88px;
  }

  .matrix-gallery-viewer__image {
    /* Desktop immersive — never crop logos / posters / backdrops */
    width: auto;
    height: auto;
    max-width: 100%;
    max-height: 100%;
    object-fit: contain;
    object-position: center;
  }

  .matrix-gallery-filmstrip {
    width: min(78%, 520px);
  }

  .matrix-gallery-filmstrip__thumb {
    width: 64px;
    height: 64px;
  }

  .matrix-gallery-viewer__arrow {
    margin-bottom: calc(28px + env(safe-area-inset-bottom, 0px));
    color: rgba(255, 255, 255, 0.88);
  }

  .matrix-gallery-viewer__caption {
    bottom: calc(84px + env(safe-area-inset-bottom, 0px));
  }
}

@media (prefers-reduced-motion: reduce) {
  .article-gallery-collage__frame,
  .article-gallery-collage__more-panel,
  .article-gallery-hero__frame,
  .article-gallery-rail__thumb,
  .matrix-gallery-viewer__media-wrap,
  .matrix-gallery-viewer__arrow,
  .matrix-gallery-filmstrip__thumb,
  .matrix-gallery-deck__pill,
  .matrix-lightbox-panel--immersive {
    transition: none;
    animation: none;
  }

  .matrix-lightbox-backdrop.is-open .matrix-lightbox-panel--immersive {
    transform: none;
  }

  .article-gallery-collage__cell:hover .article-gallery-collage__frame,
  .article-gallery-collage__cell:focus-visible .article-gallery-collage__frame,
  .article-gallery-hero__frame:hover,
  .article-gallery-hero__frame:focus-visible,
  .article-gallery-rail__thumb:hover {
    transform: none;
  }
}
/* ==========================================================================
   ARTICLE VIDEO — SIGNAL STREAM TERMINAL
   Namespace : .article-video-* / .matrix-video-*
   ========================================================================== */

.article-video-node {
  margin: 2.5rem 0;
  width: 100%;
  max-width: 100%;
  padding: clamp(12px, 2vw, 18px);
  border: 1px solid rgba(255, 40, 81, 0.28);
  border-radius: 2px;
  background: linear-gradient(180deg, rgba(10, 10, 12, 0.98) 0%, rgba(5, 5, 8, 0.98) 100%);
  box-shadow: 0 12px 42px rgba(0, 0, 0, 0.55);
}

.article-video-node__hud {
  display: flex;
  flex-wrap: wrap;
  gap: 6px 10px;
  margin-bottom: 14px;
  font-family: var(--font-mono), ui-monospace, monospace;
  font-size: 0.68rem;
  letter-spacing: 0.12em;
  color: var(--cyber-red);
  text-transform: uppercase;
}

.article-video-node__meta {
  color: var(--text-mineral);
}

.article-video-stage-wrap {
  width: 100%;
}

.article-video-stage {
  position: relative;
  width: 100%;
  aspect-ratio: var(--video-aspect, 16 / 9);
  overflow: hidden;
  border-radius: 2px;
  background: #050508;
}

.article-video-stage__poster-layer {
  position: absolute;
  inset: 0;
  z-index: 12;
}

.article-video-stage__poster-layer .article-video-poster {
  height: 100%;
  border: none;
}

.article-video-stage__native,
.article-video-stage__youtube {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  border: none;
  background: #000;
  object-fit: contain;
  z-index: 8;
}

.article-video-stage__caption {
  position: absolute;
  left: 14px;
  right: 14px;
  bottom: calc(68px + env(safe-area-inset-bottom, 0px));
  z-index: 10;
  margin: 0;
  color: rgba(255, 255, 255, 0.88);
  font-family: var(--font-mono), ui-monospace, monospace;
  font-size: 0.72rem;
  letter-spacing: 0.06em;
  text-align: center;
  text-shadow: 0 2px 12px rgba(0, 0, 0, 0.8);
  pointer-events: none;
}

.article-video-stage .matrix-video-stage__native,
.article-video-stage .matrix-video-stage__youtube,
.article-video-stage .matrix-video-stage__hls,
.article-video-stage .matrix-video-stage__mkv {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  border: none;
  background: #000;
  object-fit: contain;
  display: block;
  z-index: 8;
}

.matrix-video-stage .matrix-video-stage__mkv {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  border: none;
  background: #000;
  object-fit: contain;
  display: block;
  z-index: 8;
}

/*
 * External movi-player subtitle overlay (MkvWasmEngine).
 * Styles live in movi-player's shadow DOM only when using <movi-player>;
 * our canvas + setSubtitleOverlay path does not get them. Without this,
 * the karaoke left-pad (padding-left from measured full sentence) often
 * mis-centers and pushes cues to the right. Force classic centered subs.
 *
 * STACKING (critical): canvas .matrix-video-stage__mkv is z-index 8.
 * Overlay MUST be > 8 so cues are not painted under the video, and
 * < controls (typically 13–14) so the HUD stays clickable.
 */
.matrix-video-stage__mkv-subs {
  position: absolute !important;
  inset: 0 !important;
  z-index: 12 !important;
  pointer-events: none !important;
  text-align: center !important;
}

.matrix-video-stage__mkv-subs .movi-subtitle-anchor {
  display: block !important;
  width: 100% !important;
  max-width: 100% !important;
  box-sizing: border-box !important;
  text-align: center !important;
  /* Kill karaoke left-pad written inline by CanvasRenderer.renderSubtitles */
  padding-left: 0 !important;
  padding-right: 0 !important;
  margin: 0 !important;
}

.matrix-video-stage__mkv-subs .movi-subtitle-block {
  display: inline-block !important;
  max-width: 92% !important;
  margin-left: auto !important;
  margin-right: auto !important;
  box-sizing: border-box !important;
  text-align: center !important;
  padding: 4px 12px;
  border-radius: 4px;
  pointer-events: none;
}

.matrix-video-stage__mkv-subs .movi-subtitle-line {
  display: block !important;
  width: 100%;
  text-align: center !important;
  white-space: pre-wrap;
  overflow-wrap: break-word;
  word-wrap: break-word;
  line-height: 1.35;
  color: #fff;
  font-weight: 600;
  text-shadow:
    0 0 4px #000,
    0 1px 2px #000,
    1px 1px 2px #000,
    -1px -1px 2px #000;
}

.matrix-video-stage__mkv-subs .movi-subtitle-static,
.matrix-video-stage__mkv-subs .movi-subtitle-new {
  text-align: inherit;
}

/* Axe 2 / P5 — native HTML TextTrack cues (MP4/HLS external VTT) */
.article-video-stage video::cue,
.matrix-video-stage video::cue {
  color: #fff;
  background: rgba(8, 8, 8, 0.72);
  font-family: system-ui, sans-serif;
  font-weight: 600;
  line-height: 1.35;
  text-shadow: 0 0 4px #000, 0 1px 2px #000;
}

/* Origin badge on media cards (vault_only / hybrid) */
.admin-media-picker__name em {
  font-style: normal;
  font-size: 10px;
  letter-spacing: 0.04em;
}

.admin-media-picker__card[data-origin="vault"] .admin-media-picker__ph,
.admin-media-picker__card[data-origin="hybrid"] .admin-media-picker__ph {
  outline: 1px solid rgba(108, 182, 255, 0.45);
}

.article-video-stage .matrix-video-playlist {
  z-index: 13;
}

.article-video-poster {
  position: relative;
  display: block;
  width: 100%;
  height: 100%;
  margin: 0;
  padding: 0;
  border: 1px solid rgba(255, 40, 81, 0.35);
  border-radius: 2px;
  background: #0a0a0c;
  cursor: pointer;
  overflow: hidden;
  transition:
    border-color 0.4s cubic-bezier(0.165, 0.84, 0.44, 1),
    box-shadow 0.4s cubic-bezier(0.165, 0.84, 0.44, 1),
    transform 0.4s cubic-bezier(0.165, 0.84, 0.44, 1);
}

.article-video-poster:hover,
.article-video-poster:focus-visible {
  border-color: rgba(255, 40, 81, 0.78);
  box-shadow:
    0 14px 48px rgba(0, 0, 0, 0.65),
    0 0 24px rgba(255, 40, 81, 0.12);
  transform: translateY(-2px);
  outline: none;
}

.article-video-poster__media {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  filter: grayscale(0.12) contrast(1.03);
}

/* MKV / source without poster: no empty <img src=""> — solid void plate */
.article-video-poster__media--void {
  object-fit: unset;
  filter: none;
  background:
    radial-gradient(
      ellipse 70% 50% at 50% 40%,
      rgba(255, 40, 81, 0.08) 0%,
      transparent 65%
    ),
    #0a0a0c;
}

.article-video-poster__scrim {
  position: absolute;
  inset: 0;
  background: linear-gradient(
    180deg,
    rgba(0, 0, 0, 0.15) 0%,
    rgba(0, 0, 0, 0.42) 58%,
    rgba(0, 0, 0, 0.72) 100%
  );
  pointer-events: none;
}

/* Source badge — visitor-facing only when showSourceBadge; bottom-right corner */
.article-video-node__badge {
  position: absolute;
  top: auto;
  left: auto;
  right: 10px;
  bottom: 10px;
  z-index: 3;
  padding: 3px 7px;
  border: 1px solid rgba(255, 40, 81, 0.45);
  border-radius: 2px;
  background: rgba(0, 0, 0, 0.72);
  color: var(--cyber-red);
  font-family: var(--font-mono), ui-monospace, monospace;
  font-size: 0.58rem;
  letter-spacing: 0.12em;
  pointer-events: none;
}

.article-video-play {
  position: absolute;
  left: 50%;
  top: 50%;
  z-index: 4;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 8px;
  transform: translate(-50%, -50%);
  pointer-events: none;
}

/* Cyber-red CTA — matches site signal aesthetic */
.article-video-play__icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: clamp(56px, 15vw, 72px);
  height: clamp(56px, 15vw, 72px);
  border: 2px solid rgba(255, 40, 81, 0.88);
  border-radius: 50%;
  color: #ff2851;
  font-size: clamp(1.15rem, 3.2vw, 1.4rem);
  background: rgba(8, 0, 4, 0.55);
  text-shadow: 0 0 18px rgba(255, 40, 81, 0.55);
  box-shadow:
    0 0 0 1px rgba(255, 40, 81, 0.25),
    0 0 28px rgba(255, 40, 81, 0.35),
    0 10px 32px rgba(0, 0, 0, 0.55);
  transition:
    border-color 0.18s ease,
    box-shadow 0.18s ease,
    background 0.18s ease,
    color 0.18s ease;
}

.article-video-poster:hover .article-video-play__icon,
.article-video-poster:focus-visible .article-video-play__icon {
  color: #fff;
  background: rgba(255, 40, 81, 0.88);
  border-color: #ff2851;
  box-shadow:
    0 0 0 1px rgba(255, 255, 255, 0.2),
    0 0 36px rgba(255, 40, 81, 0.55),
    0 12px 36px rgba(0, 0, 0, 0.6);
}

.article-video-play__label {
  color: #ff2851;
  font-family: var(--font-mono), ui-monospace, monospace;
  font-size: 0.72rem;
  letter-spacing: 0.18em;
  text-shadow: 0 0 12px rgba(255, 40, 81, 0.45);
}

.article-video-poster:hover .article-video-play__label,
.article-video-poster:focus-visible .article-video-play__label {
  color: rgba(255, 255, 255, 0.95);
}

/* Boot / arming after LIRE — keep visual continuity until first frame */
.video-shell__stage-arming {
  position: absolute;
  inset: 0;
  z-index: 16;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 10px;
  background: rgba(5, 5, 8, 0.42);
  pointer-events: none;
  font-family: var(--font-mono), ui-monospace, monospace;
  font-size: 0.68rem;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: rgba(255, 40, 81, 0.9);
}

.video-shell__stage-arming-dot {
  width: 10px;
  height: 10px;
  border-radius: 50%;
  background: #ff2851;
  box-shadow: 0 0 16px rgba(255, 40, 81, 0.7);
  animation: video-arming-pulse 1s ease-in-out infinite;
}

@keyframes video-arming-pulse {
  0%,
  100% {
    opacity: 0.35;
    transform: scale(0.85);
  }
  50% {
    opacity: 1;
    transform: scale(1.15);
  }
}

/* Gesture retry — play() after async load needs a real click sometimes */
.video-shell__stage-gesture-play {
  position: absolute;
  inset: 0;
  z-index: 17;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 10px;
  border: none;
  background: rgba(5, 5, 8, 0.35);
  cursor: pointer;
  font-family: var(--font-mono), ui-monospace, monospace;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: #ff2851;
}

.video-shell__stage-gesture-play:hover .article-video-play__icon,
.video-shell__stage-gesture-play:focus-visible .article-video-play__icon {
  color: #fff;
  background: rgba(255, 40, 81, 0.88);
  border-color: #ff2851;
}

@media (prefers-reduced-motion: reduce) {
  .video-shell__stage-arming-dot {
    animation: none;
  }
}

.article-video-caption {
  margin: 0.9rem 0 0;
  color: var(--text-mineral);
  font-family: var(--font-mono), ui-monospace, monospace;
  font-size: 0.8rem;
  letter-spacing: 0.06em;
  text-align: center;
}

/* ==========================================================================
   BROADCAST CHAMBER — lightbox vidéo dédiée
   ========================================================================== */

.matrix-video-broadcast-backdrop {
  top: 0;
  height: 100dvh;
  z-index: 10001;
}

.matrix-video-broadcast-panel {
  position: relative;
  z-index: 10;
  width: 100vw;
  max-width: 100vw;
  height: calc(100dvh - var(--shell-offset));
  max-height: calc(100dvh - var(--shell-offset));
  padding: 0;
  border: none;
  border-radius: 0;
  background: transparent;
  box-shadow: none;
  transform: none;
}

.matrix-lightbox-backdrop.is-open .matrix-video-broadcast-panel {
  transform: none;
}

.matrix-video-deck {
  display: flex;
  flex-direction: column;
  width: 100%;
  height: 100%;
  min-height: 0;
}

.matrix-video-stage {
  position: relative;
  flex: 1;
  min-height: 0;
  width: 100%;
  aspect-ratio: var(--video-aspect, 16 / 9);
  background: #050508;
  overflow: hidden;
}

.matrix-video-stage__poster-layer {
  position: absolute;
  inset: 0;
  z-index: 12;
}

.matrix-video-stage__poster-layer .article-video-poster {
  height: 100%;
  border: none;
}

.matrix-video-stage__native,
.matrix-video-stage__youtube {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  border: none;
  background: #000;
  object-fit: contain;
}

.matrix-video-stage__youtube {
  z-index: 8;
}

.matrix-video-stage__caption {
  position: absolute;
  left: 14px;
  right: 14px;
  bottom: calc(68px + env(safe-area-inset-bottom, 0px));
  z-index: 10;
  margin: 0;
  color: rgba(255, 255, 255, 0.88);
  font-family: var(--font-mono), ui-monospace, monospace;
  font-size: 0.72rem;
  letter-spacing: 0.06em;
  text-align: center;
  text-shadow: 0 2px 12px rgba(0, 0, 0, 0.8);
  pointer-events: none;
}

.matrix-video-engine--loading,
.matrix-video-engine--error {
  position: absolute;
  left: 50%;
  top: 50%;
  z-index: 11;
  transform: translate(-50%, -50%);
  padding: 10px 14px;
  border: 1px solid rgba(255, 40, 81, 0.45);
  border-radius: 2px;
  background: rgba(0, 0, 0, 0.82);
  color: var(--cyber-red);
  font-family: var(--font-mono), ui-monospace, monospace;
  font-size: 0.68rem;
  letter-spacing: 0.1em;
}

.matrix-video-engine--error {
  color: #ff6b6b;
  border-color: rgba(255, 107, 107, 0.45);
}

/* Legacy overlay controls — no longer mounted */
.matrix-video-controls {
  display: none;
}

/* Playlist — EXTERNAL under deck (not absolute over stage) */
.matrix-video-playlist {
  position: relative;
  z-index: 13;
  width: 100%;
  margin: 0;
  transform: none;
}

.matrix-video-playlist__scroll {
  display: flex;
  gap: 10px;
  overflow-x: auto;
  padding: 4px 2px 6px;
  scroll-snap-type: x mandatory;
  scrollbar-width: thin;
  scrollbar-color: rgba(255, 40, 81, 0.45) transparent;
}

.matrix-video-playlist__scroll::-webkit-scrollbar {
  height: 4px;
}

.matrix-video-playlist__scroll::-webkit-scrollbar-thumb {
  background: rgba(255, 40, 81, 0.4);
  border-radius: 2px;
}

.matrix-video-playlist__thumb {
  position: relative;
  flex: 0 0 auto;
  display: flex;
  flex-direction: column;
  width: clamp(112px, 22vw, 148px);
  min-height: 88px;
  padding: 0;
  border: 1px solid rgba(255, 255, 255, 0.14);
  border-radius: 2px;
  background: #0a0a0c;
  cursor: pointer;
  overflow: hidden;
  scroll-snap-align: start;
  transition:
    border-color 0.14s ease,
    box-shadow 0.14s ease;
}

.matrix-video-playlist__thumb--active {
  border-color: var(--cyber-red);
  box-shadow:
    0 0 0 1px rgba(255, 40, 81, 0.35),
    0 0 18px rgba(255, 40, 81, 0.12);
}

.matrix-video-playlist__thumb:hover,
.matrix-video-playlist__thumb:focus-visible {
  border-color: rgba(255, 40, 81, 0.65);
  outline: none;
}

.matrix-video-playlist__thumb-media {
  display: block;
  width: 100%;
  height: 56px;
  object-fit: cover;
  background: #050508;
}

.matrix-video-playlist__thumb-media--void {
  background:
    radial-gradient(
      ellipse 80% 60% at 50% 40%,
      rgba(255, 40, 81, 0.1) 0%,
      transparent 70%
    ),
    #0a0a0c;
}

.matrix-video-playlist__thumb-index {
  position: absolute;
  left: 4px;
  top: 4px;
  padding: 1px 4px;
  background: rgba(0, 0, 0, 0.8);
  color: var(--cyber-red);
  font-family: var(--font-mono), ui-monospace, monospace;
  font-size: 0.55rem;
  letter-spacing: 0.08em;
}

.matrix-video-playlist__thumb-meta {
  display: flex;
  flex-direction: column;
  gap: 2px;
  padding: 6px 7px 7px;
  text-align: left;
}

.matrix-video-playlist__thumb-label {
  color: rgba(255, 255, 255, 0.9);
  font-family: var(--font-mono), ui-monospace, monospace;
  font-size: 0.58rem;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.matrix-video-playlist__thumb-sub {
  color: rgba(255, 255, 255, 0.45);
  font-family: var(--font-mono), ui-monospace, monospace;
  font-size: 0.52rem;
  letter-spacing: 0.06em;
  text-transform: uppercase;
}

@media (min-width: 769px) {
  /* Boxed fallback only — immersive chamber owns 100dvh and must not inherit 82vh */
  .matrix-video-broadcast-panel:not(.matrix-video-broadcast-panel--immersive) {
    width: min(88vw, 1040px);
    max-width: min(88vw, 1040px);
    height: auto;
    max-height: 82vh;
    padding: 38px 14px 14px;
    border: 2px solid var(--cyber-red);
    border-radius: 2px;
    background: #000;
    box-shadow:
      0 0 30px rgba(255, 40, 81, 0.32),
      0 24px 64px rgba(0, 0, 0, 0.65);
    transform: scale(0.95);
    transition: transform 0.5s cubic-bezier(0.19, 1, 0.22, 1);
  }

  .matrix-lightbox-backdrop.is-open
    .matrix-video-broadcast-panel:not(.matrix-video-broadcast-panel--immersive) {
    transform: scale(1);
  }

  .matrix-video-broadcast-panel:not(.matrix-video-broadcast-panel--immersive)
    .matrix-video-deck:not(.video-shell--chamber):not(.video-shell--fs) {
    max-height: calc(82vh - 52px);
  }

  .matrix-video-broadcast-panel:not(.matrix-video-broadcast-panel--immersive)
    .matrix-video-stage {
    min-height: clamp(360px, 58vh, 540px);
    max-height: calc(82vh - 120px);
  }
}

@media (max-width: 768px) {
  .article-video-node {
    margin: 2rem 0;
    padding: 10px;
  }
}

@media (prefers-reduced-motion: reduce) {
  .article-video-poster,
  .matrix-video-broadcast-panel {
    transition: none;
  }

  .article-video-poster:hover,
  .article-video-poster:focus-visible {
    transform: none;
  }

  .matrix-lightbox-backdrop.is-open .matrix-video-broadcast-panel {
    transform: none;
  }
}
/* ==========================================================================
   VIDEO SHELL — EXTERNAL CONTROL DECK (2026-08-01)
   Stage = image only · Deck = under stage · Playlist = under deck
   ========================================================================== */

.video-shell {
  --video-signal: #ff2851;
  --video-void: #0a0a0c;
  --video-deck-bg: rgba(6, 6, 9, 0.98);
  --video-border: rgba(255, 40, 81, 0.35);
  --video-border-hot: rgba(255, 40, 81, 0.78);
  width: 100%;
  max-width: 100%;
  /* Modes: normal + document fullscreen only (WIDE removed) */
}

.video-shell__stage {
  position: relative;
  width: 100%;
  aspect-ratio: var(--video-aspect, 16 / 9);
  overflow: hidden;
  border: 1px solid var(--video-border);
  border-radius: 2px;
  background: #050508;
  box-shadow: inset 0 0 0 1px rgba(255, 40, 81, 0.06);
}

/*
 * TRUE DOCUMENT FULLSCREEN — cinema mode
 * Stage = full viewport · chrome overlays · auto-hide on idle
 */
.video-shell--fs,
.video-shell:fullscreen,
.video-shell:-webkit-full-screen {
  position: relative;
  display: block;
  width: 100%;
  height: 100%;
  max-width: none;
  margin: 0;
  background: #000;
  padding: 0;
  box-sizing: border-box;
  overflow: hidden;
  cursor: none;
}

.video-shell--fs.is-chrome-visible,
.video-shell:fullscreen.is-chrome-visible,
.video-shell:-webkit-full-screen.is-chrome-visible {
  cursor: default;
}

/* Stage fills every pixel of the FS element */
.video-shell--fs .video-shell__stage,
.video-shell:fullscreen .video-shell__stage,
.video-shell:-webkit-full-screen .video-shell__stage {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  max-height: none;
  min-height: 0;
  flex: none;
  aspect-ratio: auto;
  border: none;
  border-radius: 0;
  box-shadow: none;
  background: #000;
  overflow: hidden;
}

/* Video surface — max screen, letterbox if needed (contain, not crop) */
.video-shell--fs .matrix-video-stage__mkv,
.video-shell--fs .matrix-video-stage__native,
.video-shell--fs .article-video-stage__native,
.video-shell--fs video,
.video-shell--fs canvas.matrix-video-stage__mkv,
.video-shell:fullscreen .matrix-video-stage__mkv,
.video-shell:fullscreen video,
.video-shell:fullscreen canvas.matrix-video-stage__mkv {
  position: absolute !important;
  inset: 0 !important;
  width: 100% !important;
  height: 100% !important;
  max-width: 100%;
  max-height: 100%;
  object-fit: contain;
  object-position: center;
  background: #000;
}

.video-shell--fs .matrix-video-stage__mkv-root {
  position: absolute !important;
  inset: 0 !important;
  width: 100% !important;
  height: 100% !important;
}

/* HUD + deck = floating overlays (not layout rows) */
.video-shell--fs .video-shell__stage-hud {
  z-index: 22;
  transition:
    opacity 0.28s ease,
    transform 0.28s ease;
}

.video-shell--fs .video-control-deck,
.video-shell:fullscreen .video-control-deck,
.video-shell:-webkit-full-screen .video-control-deck {
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;
  z-index: 22;
  flex: none;
  margin: 0;
  border: none;
  border-top: 1px solid rgba(255, 40, 81, 0.28);
  border-radius: 0;
  background: linear-gradient(
    0deg,
    rgba(0, 0, 0, 0.92) 0%,
    rgba(4, 4, 7, 0.88) 70%,
    rgba(4, 4, 7, 0.55) 100%
  );
  padding-bottom: calc(12px + env(safe-area-inset-bottom, 0px));
  box-shadow: none;
  transition:
    opacity 0.28s ease,
    transform 0.28s ease;
}

/* Idle → chrome gone (cinema). Hover / move → reappears via .is-chrome-visible */
.video-shell--fs.is-chrome-hidden .video-shell__stage-hud,
.video-shell--fs.is-chrome-hidden .video-control-deck {
  opacity: 0;
  pointer-events: none;
}

.video-shell--fs.is-chrome-hidden .video-shell__stage-hud {
  transform: translateY(-10px);
}

.video-shell--fs.is-chrome-hidden .video-control-deck {
  transform: translateY(14px);
}

.video-shell--fs.is-chrome-visible .video-shell__stage-hud,
.video-shell--fs.is-chrome-visible .video-control-deck {
  opacity: 1;
  pointer-events: auto;
  transform: none;
}

/* Hide editorial chrome noise in true FS */
.video-shell--fs .video-control-deck__eyebrow {
  display: none;
}

.video-shell--fs .video-control-deck__meta {
  opacity: 0.85;
}

@media (prefers-reduced-motion: reduce) {
  .video-shell--fs .video-shell__stage-hud,
  .video-shell--fs .video-control-deck,
  .video-shell--chamber .video-shell__stage-hud,
  .video-shell--chamber .video-control-deck,
  .video-shell--chamber .video-shell__playlist {
    transition: none;
  }
}

/*
 * BROADCAST POPUP — chrome in flow under the video.
 * Overlay layers at bottom:0 stacked playlist on the dock.
 */
.video-shell--chamber {
  position: relative;
  display: flex;
  flex-direction: column;
  width: 100%;
  height: 100%;
  max-width: none;
  max-height: none;
  margin: 0;
  background: #050508;
  padding: 0;
  box-sizing: border-box;
  overflow: hidden;
}

.video-shell--chamber .video-shell__stage {
  position: relative;
  flex: 1 1 auto;
  width: 100%;
  height: auto;
  max-height: none;
  min-height: 0;
  aspect-ratio: auto;
  border: none;
  border-radius: 0;
  box-shadow: none;
  background: #000;
  overflow: hidden;
}

.video-shell--chamber .matrix-video-stage__mkv,
.video-shell--chamber .matrix-video-stage__native,
.video-shell--chamber .article-video-stage__native,
.video-shell--chamber video,
.video-shell--chamber canvas.matrix-video-stage__mkv,
.video-shell--chamber .matrix-video-stage__mkv-root {
  position: absolute !important;
  inset: 0 !important;
  width: 100% !important;
  height: 100% !important;
  max-width: 100%;
  max-height: 100%;
  object-fit: contain;
  object-position: center;
  background: #000;
}

.video-shell[data-engine="youtube"] .video-shell__stage-hud {
  pointer-events: auto;
  min-height: 52px;
  background: #050508;
}

.video-control-deck__btn--yt {
  letter-spacing: 0.08em;
}

.video-shell--chamber .video-shell__stage-hud {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: center;
  gap: 10px;
  flex-wrap: nowrap;
  z-index: 16;
  padding: 10px 12px;
}

.video-shell--chamber .video-shell__stage-hud-main {
  min-width: 0;
  display: flex;
  align-items: center;
  gap: 8px;
}

.video-shell--chamber .video-shell__stage-hud-label {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.video-shell--chamber .video-shell__stage-close {
  pointer-events: auto;
  margin-left: 0;
  flex-shrink: 0;
  min-width: 40px;
  min-height: 40px;
}

.video-shell--chamber .video-control-deck {
  position: relative;
  flex: 0 0 auto;
  z-index: 5;
  margin: 0;
  border: none;
  border-top: 1px solid rgba(255, 40, 81, 0.28);
  border-radius: 0;
  background: #0a0a0c;
  padding: 10px 12px calc(10px + env(safe-area-inset-bottom, 0px));
  box-shadow: none;
}

.video-shell--chamber[data-playlist="1"] .video-control-deck {
  padding-bottom: 8px;
}

.video-shell--chamber .video-control-deck__eyebrow,
.video-shell--chamber .video-control-deck__meta {
  display: none;
}

.video-shell--chamber .video-control-deck__commands {
  flex-wrap: nowrap;
  gap: 6px;
  min-height: 40px;
}

.video-shell--chamber .video-shell__playlist {
  position: relative;
  flex: 0 0 auto;
  z-index: 5;
  margin: 0;
  max-height: none;
  overflow: hidden;
  padding: 0 10px calc(10px + env(safe-area-inset-bottom, 0px));
  background: #0a0a0c;
  border-top: 1px solid rgba(255, 40, 81, 0.1);
}

.video-shell--chamber .matrix-video-playlist__thumb {
  width: 92px;
  min-height: 0;
}

.video-shell--chamber .matrix-video-playlist__thumb-media {
  height: 48px;
}

.video-shell--chamber .matrix-video-playlist__thumb-meta {
  padding: 4px 6px 5px;
}

.video-shell--chamber .matrix-video-playlist__thumb-sub {
  display: none;
}

/* Stage HUD — top chrome inside stage border, above canvas (ST zone free) */
.video-shell__stage-hud {
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  z-index: 15;
  display: flex;
  flex-wrap: nowrap;
  align-items: center;
  gap: 8px 10px;
  padding: 10px 12px;
  pointer-events: none;
  background: linear-gradient(
    180deg,
    rgba(0, 0, 0, 0.72) 0%,
    rgba(0, 0, 0, 0.28) 70%,
    transparent 100%
  );
  font-family: var(--font-mono), ui-monospace, monospace;
  font-size: 0.62rem;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--video-signal);
}

.video-shell__stage-hud-main {
  min-width: 0;
  display: flex;
  align-items: center;
  gap: 8px;
  flex: 1 1 auto;
}

.video-shell__stage-hud-label {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.video-shell__stage-hud-count {
  flex-shrink: 0;
  color: rgba(255, 255, 255, 0.5);
  font-variant-numeric: tabular-nums;
}

.video-shell__stage-hud-meta {
  flex-shrink: 0;
  color: rgba(255, 255, 255, 0.55);
}

.video-shell__stage-close {
  pointer-events: auto;
  margin-left: auto;
  border: 1px solid rgba(255, 40, 81, 0.45);
  border-radius: 2px;
  background: rgba(0, 0, 0, 0.75);
  color: var(--video-signal);
  font-family: var(--font-mono), ui-monospace, monospace;
  font-size: 0.7rem;
  letter-spacing: 0.08em;
  padding: 6px 10px;
  min-height: 36px;
  cursor: pointer;
}

.video-shell__stage-close:hover,
.video-shell__stage-close:focus-visible {
  border-color: var(--video-signal);
  outline: 1px solid rgba(255, 40, 81, 0.5);
  outline-offset: 2px;
}

.video-shell__stage-close--exit-fs {
  border-color: rgba(255, 40, 81, 0.75);
  background: rgba(255, 40, 81, 0.16);
  font-weight: 600;
  letter-spacing: 0.14em;
}

/* ── EXTERNAL CONTROL DECK ─────────────────────────────────────────── */
.video-control-deck {
  position: relative;
  z-index: 14;
  margin-top: 0;
  border: 1px solid rgba(255, 40, 81, 0.28);
  border-top: none;
  border-radius: 0 0 2px 2px;
  background: var(--video-deck-bg);
  padding: 10px 12px 12px;
  box-shadow: 0 10px 28px rgba(0, 0, 0, 0.45);
}

.video-control-deck__eyebrow {
  font-family: var(--font-mono), ui-monospace, monospace;
  font-size: 0.52rem;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: rgba(255, 40, 81, 0.55);
  margin-bottom: 8px;
}

.video-control-deck__timeline-row {
  width: 100%;
  margin-bottom: 10px;
}

.video-control-deck__timeline {
  -webkit-appearance: none;
  appearance: none;
  width: 100%;
  height: 4px;
  border-radius: 1px;
  background: linear-gradient(
    90deg,
    rgba(255, 40, 81, 0.15),
    rgba(255, 255, 255, 0.12)
  );
  outline: none;
  cursor: pointer;
  accent-color: var(--video-signal);
}

.video-control-deck__timeline::-webkit-slider-thumb {
  -webkit-appearance: none;
  width: 12px;
  height: 12px;
  border-radius: 1px;
  background: var(--video-signal);
  border: 1px solid rgba(255, 255, 255, 0.35);
  box-shadow: 0 0 10px rgba(255, 40, 81, 0.45);
  cursor: pointer;
}

.video-control-deck__timeline::-moz-range-thumb {
  width: 12px;
  height: 12px;
  border-radius: 1px;
  background: var(--video-signal);
  border: 1px solid rgba(255, 255, 255, 0.35);
  cursor: pointer;
}

.video-control-deck__commands {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px;
  min-height: 44px;
}

.video-control-deck__spacer {
  flex: 1 1 auto;
  min-width: 8px;
}

.video-control-deck__btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 5px;
  min-height: 40px;
  min-width: 40px;
  padding: 8px 10px;
  border: 1px solid rgba(255, 255, 255, 0.14);
  border-radius: 2px;
  background: rgba(10, 10, 12, 0.95);
  color: rgba(255, 255, 255, 0.88);
  font-family: var(--font-mono), ui-monospace, monospace;
  font-size: 0.62rem;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  cursor: pointer;
  transition:
    color 0.14s ease,
    border-color 0.14s ease,
    box-shadow 0.14s ease;
}

.video-control-deck__btn:hover,
.video-control-deck__btn:focus-visible,
.video-control-deck__btn.is-open,
.video-control-deck__btn.is-active {
  color: var(--video-signal);
  border-color: rgba(255, 40, 81, 0.55);
  outline: none;
  box-shadow: 0 0 0 1px rgba(255, 40, 81, 0.2);
}

.video-control-deck__btn:focus-visible {
  outline: 2px solid rgba(255, 40, 81, 0.75);
  outline-offset: 2px;
}

.video-control-deck__btn:disabled,
.video-control-deck__btn.is-locked {
  opacity: 0.92;
  cursor: default;
  border-color: rgba(255, 40, 81, 0.4);
  color: rgba(255, 255, 255, 0.75);
}

.video-control-deck__btn--play {
  min-width: 44px;
  font-size: 0.75rem;
}

.video-control-deck__btn--fs.is-active,
.video-control-deck__btn--close {
  border-color: rgba(255, 40, 81, 0.55);
  color: var(--video-signal);
}

.video-control-deck__volume {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  min-height: 40px;
  padding: 0 4px 0 0;
}

.video-control-deck__btn--vol {
  min-width: 48px;
}

.video-control-deck__volume-slider {
  -webkit-appearance: none;
  appearance: none;
  width: clamp(56px, 12vw, 96px);
  height: 4px;
  border-radius: 1px;
  background: linear-gradient(
    90deg,
    rgba(255, 40, 81, 0.35),
    rgba(255, 255, 255, 0.14)
  );
  outline: none;
  cursor: pointer;
  accent-color: var(--video-signal);
}

.video-control-deck__volume-slider::-webkit-slider-thumb {
  -webkit-appearance: none;
  width: 11px;
  height: 11px;
  border-radius: 1px;
  background: var(--video-signal);
  border: 1px solid rgba(255, 255, 255, 0.35);
  box-shadow: 0 0 8px rgba(255, 40, 81, 0.4);
  cursor: pointer;
}

.video-control-deck__volume-slider::-moz-range-thumb {
  width: 11px;
  height: 11px;
  border-radius: 1px;
  background: var(--video-signal);
  border: 1px solid rgba(255, 255, 255, 0.35);
  cursor: pointer;
}

.video-control-deck__volume-pct {
  font-family: var(--font-mono), ui-monospace, monospace;
  font-size: 0.55rem;
  letter-spacing: 0.06em;
  color: rgba(255, 255, 255, 0.45);
  min-width: 2.2em;
  text-align: right;
  font-variant-numeric: tabular-nums;
}

.video-control-deck__btn-tag {
  color: rgba(255, 40, 81, 0.9);
}

.video-control-deck__btn-lock {
  font-size: 0.5rem;
  letter-spacing: 0.12em;
  color: var(--video-signal);
  border: 1px solid rgba(255, 40, 81, 0.4);
  padding: 1px 4px;
  border-radius: 1px;
}

.video-control-deck__time {
  font-family: var(--font-mono), ui-monospace, monospace;
  font-size: 0.68rem;
  letter-spacing: 0.06em;
  color: rgba(255, 255, 255, 0.7);
  white-space: nowrap;
  font-variant-numeric: tabular-nums;
}

.video-control-deck__time-num {
  font-variant-numeric: tabular-nums;
}

.video-control-deck__time-sep {
  color: rgba(255, 255, 255, 0.35);
}

.video-control-deck__menu-wrap {
  position: relative;
}

.video-control-deck__popover {
  position: absolute;
  bottom: calc(100% + 6px);
  left: 0;
  z-index: 20;
  min-width: 160px;
  max-width: min(280px, 80vw);
  max-height: 240px;
  overflow: auto;
  margin: 0;
  padding: 4px;
  list-style: none;
  border: 1px solid rgba(255, 40, 81, 0.4);
  border-radius: 2px;
  background: rgba(6, 6, 9, 0.98);
  box-shadow:
    0 12px 32px rgba(0, 0, 0, 0.7),
    0 0 0 1px rgba(255, 40, 81, 0.12);
}

.video-control-deck__option {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  width: 100%;
  text-align: left;
  border: none;
  border-radius: 1px;
  background: transparent;
  color: rgba(255, 255, 255, 0.85);
  font-family: var(--font-mono), ui-monospace, monospace;
  font-size: 0.62rem;
  letter-spacing: 0.04em;
  padding: 8px 10px;
  min-height: 36px;
  cursor: pointer;
}

.video-control-deck__option:hover,
.video-control-deck__option:focus-visible,
.video-control-deck__option.is-active {
  background: rgba(255, 40, 81, 0.12);
  color: #fff;
  outline: none;
}

.video-control-deck__option.is-active {
  box-shadow: inset 2px 0 0 var(--video-signal);
}

.video-control-deck__option-lang {
  color: rgba(255, 40, 81, 0.75);
  font-size: 0.52rem;
  letter-spacing: 0.08em;
}

.video-control-deck__meta {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 4px 6px;
  margin-top: 10px;
  padding-top: 8px;
  border-top: 1px solid rgba(255, 40, 81, 0.14);
  font-family: var(--font-mono), ui-monospace, monospace;
  font-size: 0.58rem;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: rgba(255, 255, 255, 0.55);
}

.video-control-deck__meta-clip {
  color: var(--video-signal);
  font-weight: 600;
}

.video-control-deck__meta-title {
  max-width: min(42vw, 280px);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  color: rgba(255, 255, 255, 0.88);
}

.video-control-deck__meta-sep {
  color: rgba(255, 40, 81, 0.35);
}

.video-control-deck__meta-lock.is-locked {
  color: var(--video-signal);
}

.video-shell__playlist {
  margin-top: 12px;
}

.video-shell__caption,
.article-video-caption {
  margin: 12px 0 0;
  color: rgba(255, 255, 255, 0.72);
  font-family: var(--font-mono), ui-monospace, monospace;
  font-size: 0.72rem;
  letter-spacing: 0.08em;
  text-align: center;
  text-transform: uppercase;
}

/* ST overlay: bottom margin only (external deck = no dock compensation) */
.matrix-video-stage__mkv-subs {
  /* keep z-index 12 from earlier rule */
  padding-bottom: 18px !important;
}

/* Boxed broadcast fallback — flex rows. Chamber / FS overlay their own chrome. */
.matrix-video-deck.video-shell:not(.video-shell--chamber):not(.video-shell--fs) {
  display: flex;
  flex-direction: column;
  gap: 0;
  height: 100%;
  min-height: 0;
  max-height: 100%;
}

.matrix-video-deck:not(.video-shell--chamber):not(.video-shell--fs)
  .video-shell__stage {
  flex: 1 1 auto;
  min-height: 0;
  aspect-ratio: auto;
  height: 100%;
}

.matrix-video-deck:not(.video-shell--chamber):not(.video-shell--fs)
  .video-control-deck {
  flex: 0 0 auto;
  border-left: none;
  border-right: none;
  border-bottom: none;
}

.matrix-video-deck:not(.video-shell--chamber):not(.video-shell--fs)
  .video-shell__playlist {
  flex: 0 0 auto;
  margin-top: 0;
  max-height: 96px;
  overflow: hidden;
}

/* Popup: full-bleed on mobile, inset card on desktop */
.matrix-video-broadcast-panel--immersive {
  width: 100% !important;
  max-width: 100% !important;
  height: 100% !important;
  max-height: 100% !important;
  padding: 0 !important;
  border: none !important;
  border-radius: 0 !important;
  background: #050508 !important;
  box-shadow: none !important;
  transform: none !important;
}

.matrix-lightbox-backdrop.is-open .matrix-video-broadcast-panel--immersive {
  transform: none !important;
}

.matrix-video-broadcast-panel--immersive .matrix-video-deck.video-shell {
  max-height: 100%;
  height: 100%;
}

.matrix-video-broadcast-panel--immersive .video-shell__stage {
  min-height: 0;
  max-height: none;
}

@media (min-width: 769px) {
  .matrix-video-broadcast-panel--immersive {
    width: min(1080px, calc(100% - 40px)) !important;
    max-width: min(1080px, calc(100% - 40px)) !important;
    height: min(820px, calc(100% - 40px)) !important;
    max-height: min(820px, calc(100% - 40px)) !important;
    border: 1px solid rgba(255, 40, 81, 0.38) !important;
    border-radius: 4px !important;
    box-shadow:
      0 0 0 1px rgba(0, 0, 0, 0.6),
      0 28px 80px rgba(0, 0, 0, 0.72) !important;
  }
}

@media (max-width: 768px) {
  .video-control-deck__commands {
    gap: 6px;
  }

  .video-control-deck__btn {
    min-height: 40px;
    padding: 7px 8px;
    font-size: 0.58rem;
  }

  .video-shell--chamber .video-control-deck__volume-slider,
  .video-shell--chamber .video-control-deck__volume-pct {
    display: none;
  }

  .video-shell--chamber .matrix-video-playlist__thumb-label {
    font-size: 0.5rem;
  }
}

@media (max-width: 640px) {
  .video-control-deck__volume-slider {
    width: 52px;
  }

  .video-control-deck__volume-pct {
    display: none;
  }
}

@media (prefers-reduced-motion: reduce) {
  .video-shell,
  .video-control-deck__btn,
  .matrix-video-playlist__thumb {
    transition: none;
  }
}

/* =========================================================================
   ARTICLE SOURCES BLOCK — Traçabilité éditoriale (public frontend)
   - Sans sources : plaque cover + titre + intro dans le même cadre
   - Avec sources : kicker + header + chaque source en carte encadrée
   ========================================================================= */

.article-sources-block {
  --asb-red: var(--cyber-red, #ff2851);
  --asb-border: rgba(255, 40, 81, 0.16);
  --asb-panel: rgba(10, 10, 13, 0.78);
  --asb-line: rgba(255, 255, 255, 0.08);
  --asb-glow: rgba(255, 40, 81, 0.14);

  margin: 2.75rem 0 2.25rem;
  padding: 0;
  width: 100%;
  min-width: 0;
  box-sizing: border-box;
  border-top: 1px solid var(--asb-border);
  position: relative;
}

.article-sources-block::before {
  content: "";
  position: absolute;
  top: -1px;
  left: 0;
  width: 3.5rem;
  height: 2px;
  background: linear-gradient(90deg, var(--asb-red), transparent);
  opacity: 0.9;
}

/* —— Header —— */
.article-sources-block__header {
  margin: 0 0 1.35rem;
  padding-top: 1.15rem;
}

.article-sources-block__header--slim {
  margin-bottom: 0.85rem;
}

.article-sources-block__header-top {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 0.75rem 1rem;
  margin-bottom: 0.55rem;
  flex-wrap: wrap;
}

.article-sources-block__kicker {
  margin: 0;
  font-family: var(--font-mono), ui-monospace, monospace;
  font-size: 0.6rem;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: var(--asb-red);
  opacity: 0.9;
}

.article-sources-block__count {
  margin: 0;
  font-family: var(--font-mono), ui-monospace, monospace;
  font-size: 0.58rem;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: rgba(255, 255, 255, 0.38);
  padding: 0.2rem 0.5rem;
  border: 1px solid rgba(255, 255, 255, 0.08);
  border-radius: 999px;
  background: rgba(255, 255, 255, 0.02);
}

.article-sources-block__title {
  margin: 0 0 0.65rem;
  font-family: var(--font-mono), ui-monospace, monospace;
  font-size: clamp(1.05rem, 3.8vw, 1.35rem);
  font-weight: 800;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--text-pure, #fff);
  line-height: 1.2;
}

.article-sources-block__intro {
  margin: 0;
  font-size: 0.94rem;
  line-height: 1.65;
  color: rgba(255, 255, 255, 0.58);
  max-width: 58ch;
}

/* =========================================================================
   MODE CONTEXT (0 source) — plaque magazine : cover + titre + intro
   ========================================================================= */

.article-sources-context {
  display: grid;
  grid-template-columns: 1fr;
  gap: 1rem 1.25rem;
  align-items: center;
  padding: 1rem 1.05rem;
  background:
    radial-gradient(120% 90% at 0% 0%, rgba(255, 40, 81, 0.07) 0%, transparent 55%),
    linear-gradient(165deg, rgba(16, 16, 20, 0.96) 0%, rgba(7, 7, 10, 0.98) 100%);
  border: 1px solid rgba(255, 40, 81, 0.28);
  border-radius: 5px;
  box-shadow:
    0 0 0 1px rgba(0, 0, 0, 0.55),
    0 0 0 4px rgba(255, 40, 81, 0.06),
    0 18px 40px rgba(0, 0, 0, 0.38),
    inset 0 1px 0 rgba(255, 255, 255, 0.04);
  position: relative;
  overflow: hidden;
}

.article-sources-context::before {
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  height: 1px;
  background: linear-gradient(
    90deg,
    transparent 0%,
    rgba(255, 40, 81, 0.55) 18%,
    rgba(255, 255, 255, 0.12) 55%,
    transparent 100%
  );
  pointer-events: none;
}

.article-sources-context--with-cover {
  grid-template-columns: auto minmax(0, 1fr);
  gap: 1.1rem 1.35rem;
  padding: 1.05rem 1.2rem 1.05rem 1.05rem;
}

.article-sources-context__cover {
  margin: 0;
  flex-shrink: 0;
}

.article-sources-context__cover .article-sources-block__figure-frame {
  max-width: 7.25rem;
  width: 7.25rem;
}

.article-sources-context__body {
  min-width: 0;
  display: flex;
  flex-direction: column;
  justify-content: center;
  gap: 0.55rem;
  padding: 0.15rem 0.15rem 0.15rem 0;
}

.article-sources-context__title {
  margin: 0;
  font-family: var(--font-mono), ui-monospace, monospace;
  font-size: clamp(1.05rem, 3.5vw, 1.32rem);
  font-weight: 800;
  letter-spacing: 0.07em;
  text-transform: uppercase;
  color: var(--text-pure, #fff);
  line-height: 1.2;
}

.article-sources-context__intro {
  margin: 0;
  font-size: 0.92rem;
  line-height: 1.65;
  color: rgba(255, 255, 255, 0.62);
  max-width: 48ch;
}

.article-sources-context__meta {
  margin: 0.15rem 0 0;
  font-family: var(--font-mono), ui-monospace, monospace;
  font-size: 0.55rem;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: rgba(255, 255, 255, 0.32);
}

/* =========================================================================
   MODE LISTÉ — cover rail + cartes source
   ========================================================================= */

.article-sources-block__layout {
  min-width: 0;
}

.article-sources-block__layout--with-figure {
  display: grid;
  grid-template-columns: 7rem minmax(0, 1fr);
  gap: 1rem 1.2rem;
  align-items: start;
}

.article-sources-block__layout--list-only {
  display: block;
}

/* —— Figure / cover — double cadre —— */
.article-sources-block__figure {
  margin: 0;
  min-width: 0;
  width: 100%;
  display: flex;
  flex-direction: column;
  gap: 0.45rem;
}

.article-sources-block__figure-frame {
  position: relative;
  box-sizing: border-box;
  max-width: 7rem;
  width: 100%;
  padding: 5px;
  border-radius: 4px;
  isolation: isolate;
  background:
    linear-gradient(145deg, rgba(28, 28, 34, 0.98) 0%, rgba(8, 8, 11, 0.98) 100%);
  border: 1px solid rgba(255, 40, 81, 0.55);
  box-shadow:
    0 0 0 1px rgba(0, 0, 0, 0.65),
    0 0 0 3px rgba(255, 40, 81, 0.12),
    0 12px 28px rgba(0, 0, 0, 0.45),
    inset 0 1px 0 rgba(255, 255, 255, 0.06);
}

.article-sources-block__figure-frame::before,
.article-sources-block__figure-frame::after {
  content: "";
  position: absolute;
  width: 10px;
  height: 10px;
  pointer-events: none;
  z-index: 2;
  border-color: var(--asb-red);
  border-style: solid;
  opacity: 0.9;
}

.article-sources-block__figure-frame::before {
  top: 2px;
  left: 2px;
  border-width: 1.5px 0 0 1.5px;
}

.article-sources-block__figure-frame::after {
  right: 2px;
  bottom: 2px;
  border-width: 0 1.5px 1.5px 0;
}

.article-sources-block__figure-img {
  width: 100%;
  max-width: none;
  aspect-ratio: 3 / 4;
  object-fit: cover;
  display: block;
  border-radius: 1px;
  border: 1px solid rgba(255, 255, 255, 0.08);
  background: #050506;
  filter: grayscale(12%) contrast(1.07) saturate(0.95);
  box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.35);
}

.article-sources-block__figure-caption {
  margin: 0;
  max-width: 7rem;
  font-family: var(--font-mono), ui-monospace, monospace;
  font-size: 0.52rem;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  line-height: 1.4;
  color: rgba(255, 255, 255, 0.42);
  word-break: break-word;
}

/* —— List + source cards (un encadrement par source) —— */
.article-sources-list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 0.7rem;
  min-width: 0;
}

.article-source-card {
  display: grid;
  grid-template-columns: 2.25rem minmax(0, 1fr);
  gap: 0;
  padding: 0;
  background:
    linear-gradient(155deg, rgba(16, 16, 20, 0.95) 0%, rgba(8, 8, 11, 0.97) 100%);
  border: 1px solid rgba(255, 255, 255, 0.09);
  border-radius: 4px;
  overflow: hidden;
  box-shadow:
    0 0 0 1px rgba(0, 0, 0, 0.4),
    0 10px 24px rgba(0, 0, 0, 0.22),
    inset 0 1px 0 rgba(255, 255, 255, 0.03);
  transition:
    border-color 0.22s ease,
    box-shadow 0.22s ease,
    transform 0.22s ease;
  position: relative;
}

.article-source-card::before {
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  height: 1px;
  background: linear-gradient(
    90deg,
    rgba(255, 40, 81, 0.35) 0%,
    transparent 60%
  );
  pointer-events: none;
  opacity: 0.7;
}

.article-source-card:hover,
.article-source-card:focus-within {
  border-color: rgba(255, 40, 81, 0.35);
  box-shadow:
    0 0 0 1px rgba(0, 0, 0, 0.45),
    0 0 0 3px rgba(255, 40, 81, 0.08),
    0 14px 28px rgba(0, 0, 0, 0.3),
    inset 0 1px 0 rgba(255, 255, 255, 0.04);
}

.article-source-card--primary {
  border-color: rgba(255, 40, 81, 0.4);
  box-shadow:
    inset 3px 0 0 var(--asb-red),
    0 0 0 1px rgba(0, 0, 0, 0.4),
    0 12px 28px rgba(0, 0, 0, 0.28);
}

.article-source-card__rail {
  display: flex;
  align-items: flex-start;
  justify-content: center;
  padding: 0.95rem 0 0.8rem;
  background: linear-gradient(
    180deg,
    rgba(255, 40, 81, 0.1) 0%,
    transparent 72%
  );
  border-right: 1px solid rgba(255, 255, 255, 0.05);
}

.article-source-card__index {
  font-family: var(--font-mono), ui-monospace, monospace;
  font-size: 0.7rem;
  font-weight: 800;
  letter-spacing: 0.06em;
  color: var(--asb-red);
  opacity: 0.92;
  line-height: 1;
}

.article-source-card__body {
  min-width: 0;
  padding: 0.9rem 0.95rem 0.9rem 0.9rem;
}

.article-source-card__meta-row {
  display: flex;
  flex-wrap: wrap;
  gap: 0.35rem 0.4rem;
  margin-bottom: 0.5rem;
}

.article-source-card__type,
.article-source-card__role {
  font-family: var(--font-mono), ui-monospace, monospace;
  font-size: 0.52rem;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  padding: 0.18rem 0.42rem;
  border-radius: 2px;
  line-height: 1.3;
}

.article-source-card__type {
  color: var(--asb-red);
  border: 1px solid rgba(255, 40, 81, 0.28);
  background: rgba(255, 40, 81, 0.07);
}

.article-source-card__role {
  color: rgba(255, 255, 255, 0.48);
  border: 1px solid rgba(255, 255, 255, 0.08);
  background: rgba(255, 255, 255, 0.02);
}

.article-source-card__main {
  display: flex;
  gap: 0.75rem;
  align-items: flex-start;
  min-width: 0;
}

.article-source-card__thumb-wrap {
  flex-shrink: 0;
  width: 52px;
  height: 52px;
  border-radius: 3px;
  overflow: hidden;
  border: 1px solid rgba(255, 40, 81, 0.22);
  background: #0a0a0c;
  box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.4);
}

.article-source-card__thumb {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  filter: grayscale(28%) contrast(1.05);
}

.article-source-card__content {
  flex: 1;
  min-width: 0;
}

.article-source-card__title {
  margin: 0 0 0.4rem;
  font-size: 0.94rem;
  font-weight: 700;
  line-height: 1.35;
  color: var(--text-pure, #fff);
  word-break: break-word;
}

.article-source-card__title-link {
  color: inherit;
  text-decoration: none;
  transition: color 0.18s ease;
}

.article-source-card__title-link:hover,
.article-source-card__title-link:focus-visible {
  color: var(--asb-red);
  outline: none;
  text-decoration: underline;
  text-underline-offset: 0.18em;
  text-decoration-thickness: 1px;
}

.article-source-card__facts {
  display: flex;
  flex-wrap: wrap;
  gap: 0.35rem 0.9rem;
  margin-bottom: 0.4rem;
}

.article-source-card__fact {
  font-family: var(--font-mono), ui-monospace, monospace;
  font-size: 0.62rem;
  letter-spacing: 0.04em;
  color: rgba(255, 255, 255, 0.7);
}

.article-source-card__fact-label {
  color: rgba(255, 255, 255, 0.35);
  margin-right: 0.35rem;
  text-transform: uppercase;
  letter-spacing: 0.1em;
  font-size: 0.55rem;
}

.article-source-card__note {
  margin: 0 0 0.55rem;
  font-size: 0.82rem;
  line-height: 1.55;
  color: rgba(255, 255, 255, 0.52);
}

.article-source-card__actions {
  display: flex;
  flex-wrap: wrap;
  gap: 0.45rem 0.65rem;
  align-items: center;
}

.article-source-card__link,
.article-source-card__toggle {
  font-family: var(--font-mono), ui-monospace, monospace;
  font-size: 0.58rem;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  min-height: 34px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 0.35rem 0.7rem;
  border-radius: 2px;
  transition:
    color 0.2s ease,
    border-color 0.2s ease,
    background 0.2s ease;
}

.article-source-card__link {
  color: var(--asb-red);
  border: 1px solid rgba(255, 40, 81, 0.35);
  background: rgba(255, 40, 81, 0.06);
  text-decoration: none;
  gap: 0.35rem;
}

.article-source-card__link:hover,
.article-source-card__link:focus-visible {
  color: #fff;
  border-color: var(--asb-red);
  background: rgba(255, 40, 81, 0.16);
  outline: none;
}

.article-source-card__link-icon {
  font-size: 0.72rem;
  line-height: 1;
}

.article-source-card__toggle {
  color: rgba(255, 255, 255, 0.45);
  border: 1px solid rgba(255, 255, 255, 0.1);
  background: transparent;
  cursor: pointer;
}

.article-source-card__toggle:hover,
.article-source-card__toggle:focus-visible {
  color: var(--text-pure, #fff);
  border-color: rgba(255, 255, 255, 0.22);
  outline: 1px solid rgba(255, 40, 81, 0.4);
  outline-offset: 2px;
}

.article-source-card__details {
  margin-top: 0.7rem;
  padding: 0.6rem 0.7rem;
  border-top: 1px dashed rgba(255, 255, 255, 0.08);
  font-family: var(--font-mono), ui-monospace, monospace;
  font-size: 0.68rem;
  line-height: 1.55;
  color: rgba(255, 255, 255, 0.58);
  background: rgba(0, 0, 0, 0.22);
  border-radius: 2px;
}

.article-source-card__details p {
  margin: 0 0 0.35rem;
}

.article-source-card__details p:last-child {
  margin-bottom: 0;
}

.article-source-card__detail-label {
  display: inline-block;
  min-width: 5.25rem;
  color: rgba(255, 255, 255, 0.35);
  letter-spacing: 0.08em;
  text-transform: uppercase;
  margin-right: 0.35rem;
  font-size: 0.55rem;
}

.article-source-card__detail-url code {
  word-break: break-all;
  font-size: 0.62rem;
  color: rgba(255, 255, 255, 0.48);
}

/* Stub aperçu (éditeur only) */
.article-preview-sources-stub {
  margin: 1.5rem 0;
  padding: 0.85rem 1rem;
  border: 1px dashed rgba(255, 40, 81, 0.2);
  border-radius: 3px;
  background: rgba(255, 40, 81, 0.03);
}

/* —— Responsive —— */
@media (min-width: 768px) {
  .article-sources-block {
    margin: 3.25rem 0 2.5rem;
  }

  .article-sources-block__header {
    margin-bottom: 1.5rem;
    padding-top: 1.35rem;
  }

  .article-sources-block__title {
    font-size: 1.28rem;
    letter-spacing: 0.08em;
  }

  .article-sources-context {
    padding: 1.2rem 1.4rem 1.2rem 1.2rem;
  }

  .article-sources-context--with-cover {
    grid-template-columns: auto minmax(0, 1fr);
    gap: 1.35rem 1.6rem;
  }

  .article-sources-context__cover .article-sources-block__figure-frame {
    width: 8.25rem;
    max-width: 8.25rem;
  }

  .article-sources-context__title {
    font-size: 1.28rem;
  }

  .article-sources-context__intro {
    font-size: 0.96rem;
    max-width: 52ch;
  }

  .article-sources-block__layout--with-figure {
    grid-template-columns: 8.25rem minmax(0, 1fr);
    gap: 1.2rem 1.5rem;
  }

  .article-sources-block__figure-frame {
    max-width: 8.25rem;
  }

  .article-sources-block__figure-caption {
    max-width: 8.25rem;
    font-size: 0.55rem;
  }

  .article-sources-list {
    gap: 0.8rem;
  }

  .article-source-card {
    grid-template-columns: 2.5rem minmax(0, 1fr);
  }

  .article-source-card__body {
    padding: 1.05rem 1.1rem 1.05rem 1rem;
  }

  .article-source-card__thumb-wrap {
    width: 56px;
    height: 56px;
  }

  .article-source-card__title {
    font-size: 0.98rem;
  }
}

@media (max-width: 520px) {
  .article-sources-context--with-cover {
    grid-template-columns: 1fr;
    gap: 0.9rem;
    padding: 0.95rem;
  }

  .article-sources-context__cover .article-sources-block__figure-frame {
    width: 6.5rem;
    max-width: 6.5rem;
  }

  .article-sources-block__layout--with-figure {
    grid-template-columns: 5.5rem minmax(0, 1fr);
    gap: 0.75rem 0.9rem;
  }

  .article-sources-block__figure-frame,
  .article-sources-block__figure-caption {
    max-width: 5.5rem;
  }
}

@media (prefers-reduced-motion: reduce) {
  .article-source-card {
    transition: none;
  }
}

/* ==========================================================================
   Public article LEXIQUE — immersive terminal sheet (mobile-first 0.01%)
   Sticky chrome · scroll body · edge fades · neon glass
   ========================================================================== */

.article-lexique {
  --lx-cyan: #00d4ff;
  --lx-green: #00ff88;
  --lx-red: #ff2851;
  --lx-void: #07070a;
  --lx-panel: rgba(12, 14, 20, 0.94);
  --lx-border: rgba(0, 212, 255, 0.32);
  --lx-glow: 0 0 40px rgba(0, 212, 255, 0.12), 0 24px 64px rgba(0, 0, 0, 0.55);
}

/* ── Chip trigger ─────────────────────────────────────────────────────── */

.article-lexique__chip {
  position: fixed;
  z-index: 80;
  width: 52px;
  height: 52px;
  border-radius: 999px;
  border: 1px solid rgba(0, 255, 136, 0.65);
  background: radial-gradient(
    circle at 35% 30%,
    rgba(0, 255, 136, 0.18),
    rgba(10, 10, 12, 0.96) 55%
  );
  color: var(--lx-green);
  cursor: pointer;
  touch-action: manipulation;
  box-shadow:
    0 0 0 1px rgba(0, 0, 0, 0.5),
    0 0 22px rgba(0, 255, 136, 0.25),
    0 10px 28px rgba(0, 0, 0, 0.45);
  animation: lx-chip-in 0.28s cubic-bezier(0.22, 1, 0.36, 1) both;
}

.article-lexique__chip-ring {
  position: absolute;
  inset: -4px;
  border-radius: inherit;
  border: 1px solid rgba(0, 255, 136, 0.25);
  animation: lx-ring 1.8s ease-out infinite;
  pointer-events: none;
}

.article-lexique__chip-glyph {
  position: relative;
  font-family: ui-monospace, monospace;
  font-size: 1.2rem;
  font-weight: 800;
  line-height: 1;
}

.article-lexique__chip:active {
  transform: scale(0.94);
}

@keyframes lx-chip-in {
  from {
    opacity: 0;
    transform: scale(0.7) translateY(6px);
  }
  to {
    opacity: 1;
    transform: scale(1) translateY(0);
  }
}

@keyframes lx-ring {
  0% {
    transform: scale(0.92);
    opacity: 0.7;
  }
  100% {
    transform: scale(1.35);
    opacity: 0;
  }
}

/* ── Fullscreen sheet backdrop ────────────────────────────────────────── */

.article-lexique__sheet {
  position: fixed;
  inset: 0;
  z-index: 90;
  display: flex;
  align-items: flex-end;
  justify-content: center;
  padding: 0;
  background:
    radial-gradient(ellipse 80% 50% at 50% 100%, rgba(0, 212, 255, 0.08), transparent 55%),
    rgba(0, 0, 0, 0.62);
  backdrop-filter: blur(8px) saturate(1.15);
  -webkit-backdrop-filter: blur(8px) saturate(1.15);
  animation: lx-backdrop-in 0.22s ease-out both;
}

@keyframes lx-backdrop-in {
  from {
    opacity: 0;
  }
  to {
    opacity: 1;
  }
}

@media (min-width: 768px) {
  .article-lexique__sheet {
    align-items: center;
    padding: 1.5rem;
  }
}

/* ── Panel: flex column — head + surface sticky, body scrolls, foot sticky ─ */

.article-lexique__sheet-inner {
  position: relative;
  display: flex;
  flex-direction: column;
  width: 100%;
  max-width: 30rem;
  /* taller when long answers need room */
  max-height: min(82vh, 560px);
  min-height: min(42vh, 280px);
  border-radius: 1.1rem 1.1rem 0 0;
  border: 1px solid var(--lx-border);
  border-bottom: 0;
  background:
    linear-gradient(165deg, rgba(18, 22, 34, 0.98) 0%, rgba(8, 9, 14, 0.99) 55%, #06060a 100%);
  color: #ececf0;
  box-shadow: var(--lx-glow);
  overflow: hidden;
  animation: lx-sheet-up 0.34s cubic-bezier(0.22, 1, 0.36, 1) both;
  /* iOS safe area */
  padding-bottom: env(safe-area-inset-bottom, 0);
}

@keyframes lx-sheet-up {
  from {
    opacity: 0;
    transform: translateY(18%);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

@media (min-width: 768px) {
  .article-lexique__sheet-inner {
    border-radius: 0.85rem;
    border-bottom: 1px solid var(--lx-border);
    max-height: min(78vh, 540px);
    animation-name: lx-sheet-scale;
  }
}

@keyframes lx-sheet-scale {
  from {
    opacity: 0;
    transform: scale(0.94) translateY(12px);
  }
  to {
    opacity: 1;
    transform: scale(1) translateY(0);
  }
}

/* subtle scanline overlay */
.article-lexique__scanline {
  pointer-events: none;
  position: absolute;
  inset: 0;
  z-index: 1;
  opacity: 0.04;
  background: repeating-linear-gradient(
    0deg,
    transparent,
    transparent 2px,
    rgba(255, 255, 255, 0.06) 2px,
    rgba(255, 255, 255, 0.06) 3px
  );
}

/* ── Sticky header ────────────────────────────────────────────────────── */

.article-lexique__sheet-head {
  position: relative;
  z-index: 3;
  flex: 0 0 auto;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 0.5rem;
  padding: 0.85rem 0.85rem 0.55rem 1.1rem;
  background: linear-gradient(180deg, rgba(12, 14, 20, 0.98), rgba(12, 14, 20, 0.88));
  border-bottom: 1px solid rgba(255, 255, 255, 0.05);
}

.article-lexique__head-left {
  display: flex;
  flex-direction: column;
  gap: 0.15rem;
  min-width: 0;
}

.article-lexique__badge {
  display: inline-flex;
  align-items: center;
  gap: 0.4rem;
  font-family: ui-monospace, monospace;
  font-size: 0.68rem;
  letter-spacing: 0.2em;
  font-weight: 700;
  color: var(--lx-cyan);
}

.article-lexique__badge-dot {
  width: 6px;
  height: 6px;
  border-radius: 999px;
  background: var(--lx-green);
  box-shadow: 0 0 10px var(--lx-green);
  animation: lx-dot 1.4s ease-in-out infinite;
}

@keyframes lx-dot {
  0%,
  100% {
    opacity: 1;
  }
  50% {
    opacity: 0.35;
  }
}

.article-lexique__badge-sub {
  font-family: ui-monospace, monospace;
  font-size: 0.58rem;
  letter-spacing: 0.14em;
  color: rgba(155, 155, 165, 0.85);
  text-transform: uppercase;
}

.article-lexique__close {
  flex: 0 0 auto;
  width: 44px;
  height: 44px;
  border: 1px solid rgba(255, 255, 255, 0.08);
  border-radius: 0.5rem;
  background: rgba(255, 255, 255, 0.03);
  color: #b0b0b8;
  font-size: 1.55rem;
  line-height: 1;
  cursor: pointer;
  transition: color 0.15s, border-color 0.15s, background 0.15s;
}

.article-lexique__close:hover,
.article-lexique__close:focus-visible {
  color: #fff;
  border-color: rgba(0, 212, 255, 0.35);
  background: rgba(0, 212, 255, 0.08);
  outline: none;
}

/* ── Term surface (fixed under header) ────────────────────────────────── */

.article-lexique__surface-wrap {
  position: relative;
  z-index: 3;
  flex: 0 0 auto;
  padding: 0.55rem 1.15rem 0.65rem;
  background: linear-gradient(180deg, rgba(0, 255, 136, 0.04), transparent);
  border-bottom: 1px solid rgba(0, 255, 136, 0.1);
}

.article-lexique__surface {
  margin: 0;
  font-family: ui-monospace, monospace;
  font-size: clamp(0.82rem, 0.75rem + 0.35vw, 0.95rem);
  font-weight: 650;
  line-height: 1.4;
  color: var(--lx-green);
  text-shadow: 0 0 18px rgba(0, 255, 136, 0.25);
  word-break: break-word;
}

/* ── Scroll region with edge fades ────────────────────────────────────── */

.article-lexique__scroll {
  position: relative;
  z-index: 2;
  flex: 1 1 auto;
  min-height: 0; /* critical for nested flex scroll */
  display: flex;
  flex-direction: column;
}

.article-lexique__scroll::before,
.article-lexique__scroll::after {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  z-index: 2;
  height: 28px;
  pointer-events: none;
  opacity: 0;
  transition: opacity 0.18s ease;
}

.article-lexique__scroll::before {
  top: 0;
  background: linear-gradient(180deg, rgba(8, 9, 14, 0.95), transparent);
}

.article-lexique__scroll::after {
  bottom: 0;
  background: linear-gradient(0deg, rgba(8, 9, 14, 0.95), transparent);
}

.article-lexique__scroll--top::before {
  opacity: 1;
}

.article-lexique__scroll--bottom::after {
  opacity: 1;
}

.article-lexique__body-scroll {
  flex: 1 1 auto;
  min-height: 0;
  overflow-y: auto;
  overflow-x: hidden;
  -webkit-overflow-scrolling: touch;
  overscroll-behavior: contain;
  padding: 0.95rem 1.15rem 1rem;
  /* custom thin scrollbar */
  scrollbar-width: thin;
  scrollbar-color: rgba(0, 212, 255, 0.45) transparent;
}

.article-lexique__body-scroll::-webkit-scrollbar {
  width: 5px;
}

.article-lexique__body-scroll::-webkit-scrollbar-track {
  background: transparent;
}

.article-lexique__body-scroll::-webkit-scrollbar-thumb {
  background: linear-gradient(180deg, rgba(0, 212, 255, 0.55), rgba(0, 255, 136, 0.35));
  border-radius: 99px;
}

.article-lexique__body {
  margin: 0;
  font-size: clamp(0.95rem, 0.9rem + 0.25vw, 1.05rem);
  line-height: 1.65;
  color: #e8e8f0;
  letter-spacing: 0.01em;
}

/* ── Loading skeleton ─────────────────────────────────────────────────── */

.article-lexique__loading {
  display: flex;
  flex-direction: column;
  gap: 0.75rem;
  padding-top: 0.15rem;
}

.article-lexique__pulse {
  width: 100%;
  height: 2px;
  border-radius: 99px;
  background: linear-gradient(
    90deg,
    transparent,
    rgba(0, 212, 255, 0.15),
    rgba(0, 255, 136, 0.75),
    rgba(0, 212, 255, 0.15),
    transparent
  );
  background-size: 200% 100%;
  animation: lx-scan 1.1s linear infinite;
}

@keyframes lx-scan {
  from {
    background-position: 100% 0;
  }
  to {
    background-position: -100% 0;
  }
}

.article-lexique__loading-title {
  margin: 0;
  font-family: ui-monospace, monospace;
  font-size: 0.8rem;
  letter-spacing: 0.08em;
  color: rgba(0, 212, 255, 0.85);
  min-height: 1.2em;
}

.article-lexique__loading-title--swap {
  animation: lx-msg-in 0.35s ease-out both;
}

@keyframes lx-msg-in {
  from {
    opacity: 0;
    transform: translateY(6px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

/* Soft progress — pure UX, not real pipeline stage */
.article-lexique__progress {
  height: 3px;
  border-radius: 99px;
  background: rgba(255, 255, 255, 0.06);
  overflow: hidden;
}

.article-lexique__progress-fill {
  display: block;
  height: 100%;
  border-radius: inherit;
  background: linear-gradient(
    90deg,
    rgba(0, 212, 255, 0.35),
    rgba(0, 255, 136, 0.85),
    rgba(0, 212, 255, 0.45)
  );
  box-shadow: 0 0 12px rgba(0, 255, 136, 0.35);
  transition: width 0.55s cubic-bezier(0.22, 1, 0.36, 1);
}

.article-lexique__progress-fill--done {
  background: linear-gradient(
    90deg,
    rgba(0, 255, 136, 0.55),
    rgba(0, 255, 136, 0.95)
  );
  transition: width 0.28s cubic-bezier(0.22, 1, 0.36, 1);
}

.article-lexique__body--reveal {
  animation: lx-msg-in 0.32s ease-out both;
}

.article-lexique__skeleton {
  display: flex;
  flex-direction: column;
  gap: 0.55rem;
  margin-top: 0.25rem;
}

.article-lexique__skeleton span {
  display: block;
  height: 0.72rem;
  border-radius: 0.25rem;
  background: linear-gradient(
    90deg,
    rgba(255, 255, 255, 0.04),
    rgba(0, 212, 255, 0.1),
    rgba(255, 255, 255, 0.04)
  );
  background-size: 200% 100%;
  animation: lx-skel 1.2s ease-in-out infinite;
}

.article-lexique__skeleton span:nth-child(1) {
  width: 100%;
}
.article-lexique__skeleton span:nth-child(2) {
  width: 92%;
  animation-delay: 0.12s;
}
.article-lexique__skeleton span:nth-child(3) {
  width: 68%;
  animation-delay: 0.24s;
}

@keyframes lx-skel {
  0%,
  100% {
    background-position: 100% 0;
    opacity: 0.55;
  }
  50% {
    background-position: 0 0;
    opacity: 1;
  }
}

/* ── Sticky footer ────────────────────────────────────────────────────── */

.article-lexique__foot {
  position: relative;
  z-index: 3;
  flex: 0 0 auto;
  display: flex;
  flex-direction: column;
  justify-content: center;
  padding: 0.55rem 1.15rem calc(0.7rem + env(safe-area-inset-bottom, 0));
  background: linear-gradient(0deg, rgba(6, 6, 10, 0.98), rgba(10, 12, 18, 0.88));
  border-top: 1px solid rgba(0, 212, 255, 0.08);
}

/* Decorative only — no pipeline / IA / cache copy for visitors */
.article-lexique__foot-line {
  display: block;
  height: 1px;
  width: 100%;
  background: linear-gradient(
    90deg,
    transparent,
    rgba(0, 255, 136, 0.4),
    rgba(0, 212, 255, 0.3),
    transparent
  );
  opacity: 0.65;
}

/* reduced motion */
@media (prefers-reduced-motion: reduce) {
  .article-lexique__chip,
  .article-lexique__chip-ring,
  .article-lexique__sheet,
  .article-lexique__sheet-inner,
  .article-lexique__pulse,
  .article-lexique__skeleton span,
  .article-lexique__badge-dot,
  .article-lexique__loading-title--swap {
    animation: none !important;
  }
  .article-lexique__progress-fill {
    transition: none !important;
  }
}

/* Dock 3 portes — lead box en tête d’article.
   LPS cyan ⊥ COM violet. Jaquette display-only (cardImage → logo/poster → cover). */

.hub-visit-dock {
  margin: 0 0 1.85rem;
}

.hub-visit-dock__kicker {
  margin: 0 0 0.55rem;
  font-family: var(--font-mono), ui-monospace, monospace;
  font-size: 0.58rem;
  letter-spacing: 0.18em;
  color: rgba(0, 212, 255, 0.78);
}

.hub-visit-dock__frame {
  position: relative;
  isolation: isolate;
  display: grid;
  grid-template-columns: 1fr;
  border: 1px solid rgba(0, 212, 255, 0.28);
  background: rgba(6, 8, 12, 0.92);
  overflow: hidden;
  box-shadow:
    0 18px 40px rgba(0, 0, 0, 0.45),
    0 0 0 1px rgba(0, 212, 255, 0.06) inset;
}

.hub-visit-dock__atmosphere {
  position: absolute;
  inset: 0;
  z-index: 0;
  background-size: cover;
  background-position: center;
  filter: saturate(0.7) brightness(0.28);
  transform: scale(1.08);
  pointer-events: none;
}

.hub-visit-dock__atmosphere::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(
    90deg,
    rgba(6, 8, 12, 0.35) 0%,
    rgba(6, 8, 12, 0.82) 42%,
    rgba(6, 8, 12, 0.94) 100%
  );
}

@media (min-width: 640px) {
  .hub-visit-dock__frame {
    grid-template-columns: 9.4rem minmax(0, 1fr);
  }
}

.hub-visit-dock__jacket {
  position: relative;
  z-index: 1;
  aspect-ratio: 2 / 3;
  max-height: 16rem;
  background: #08090c;
  overflow: hidden;
}

.hub-visit-dock__jacket img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center top;
  display: block;
  filter: saturate(1.05) contrast(1.04);
}

.hub-visit-dock__ph {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 100%;
  height: 100%;
  min-height: 10rem;
  font-family: var(--font-mono), ui-monospace, monospace;
  font-size: 1.5rem;
  font-weight: 800;
  letter-spacing: 0.08em;
  color: rgba(0, 212, 255, 0.4);
}

@media (min-width: 640px) {
  .hub-visit-dock__jacket {
    max-height: none;
    aspect-ratio: auto;
    min-height: 100%;
  }
}

.hub-visit-dock__body {
  position: relative;
  z-index: 1;
  padding: 0.95rem 1rem 1.05rem;
  min-width: 0;
}

.hub-visit-dock__meta {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 0.4rem;
  margin-bottom: 0.4rem;
}

.hub-visit-dock__type {
  font-family: var(--font-mono), ui-monospace, monospace;
  font-size: 0.58rem;
  font-weight: 800;
  letter-spacing: 0.12em;
  color: #00d4ff;
}

.hub-visit-dock__bound {
  font-family: var(--font-mono), ui-monospace, monospace;
  font-size: 0.55rem;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: rgba(230, 240, 255, 0.4);
}

.hub-visit-dock__title {
  margin: 0;
  font-size: clamp(1.2rem, 2.4vw, 1.55rem);
  font-weight: 800;
  letter-spacing: -0.03em;
  line-height: 1.15;
  color: #fff;
}

.hub-visit-dock__desc {
  margin: 0.45rem 0 0;
  font-size: 0.84rem;
  line-height: 1.5;
  color: rgba(230, 240, 255, 0.58);
  display: -webkit-box;
  -webkit-line-clamp: 3;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

.hub-visit-dock__doors {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 0.55rem;
  margin-top: 0.95rem;
}

.hub-visit-dock__door {
  display: flex;
  flex-direction: column;
  gap: 0.12rem;
  padding: 0.6rem 0.65rem 0.65rem;
  text-decoration: none;
  border: 1px solid rgba(255, 255, 255, 0.08);
  background: rgba(0, 0, 0, 0.38);
  backdrop-filter: blur(8px);
  min-width: 0;
  transition: border-color 0.2s ease, box-shadow 0.2s ease, transform 0.2s ease;
}

.hub-visit-dock__door.is-lps {
  border-color: rgba(0, 212, 255, 0.32);
}

.hub-visit-dock__door.is-com {
  border-color: rgba(167, 139, 250, 0.36);
}

.hub-visit-dock__door.is-lps:hover {
  border-color: #00d4ff;
  box-shadow: 0 0 18px rgba(0, 212, 255, 0.16);
  transform: translateY(-1px);
}

.hub-visit-dock__door.is-com:hover {
  border-color: #a78bfa;
  box-shadow: 0 0 18px rgba(167, 139, 250, 0.16);
  transform: translateY(-1px);
}

.hub-visit-dock__door.is-ghost {
  opacity: 0.55;
  pointer-events: none;
}

.hub-visit-dock__door-kicker {
  font-family: var(--font-mono), ui-monospace, monospace;
  font-size: 0.52rem;
  letter-spacing: 0.14em;
  text-transform: uppercase;
}

.hub-visit-dock__door.is-lps .hub-visit-dock__door-kicker {
  color: #00d4ff;
}

.hub-visit-dock__door.is-com .hub-visit-dock__door-kicker {
  color: #a78bfa;
}

.hub-visit-dock__door-score {
  font-family: var(--font-mono), ui-monospace, monospace;
  font-size: 1.12rem;
  font-weight: 800;
  color: #fff;
  font-variant-numeric: tabular-nums;
}

.hub-visit-dock__door-cta {
  font-family: var(--font-mono), ui-monospace, monospace;
  font-size: 0.55rem;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: rgba(230, 240, 255, 0.5);
}

.hub-visit-dock__actions {
  display: flex;
  flex-wrap: wrap;
  gap: 0.45rem;
  margin-top: 0.9rem;
}

.hub-visit-dock__btn {
  display: inline-flex;
  align-items: center;
  min-height: 2.2rem;
  padding: 0.4rem 0.8rem;
  font-family: var(--font-mono), ui-monospace, monospace;
  font-size: 0.6rem;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  text-decoration: none;
  border-radius: 2px;
}

.hub-visit-dock__btn.is-write {
  color: #c4b5fd;
  border: 1px solid rgba(167, 139, 250, 0.45);
  background: rgba(167, 139, 250, 0.1);
}

.hub-visit-dock__btn.is-write:hover {
  color: #fff;
  border-color: #a78bfa;
}

.hub-visit-dock__btn.is-enter {
  color: #fff;
  border: 1px solid rgba(0, 212, 255, 0.5);
  background: rgba(0, 212, 255, 0.14);
}

.hub-visit-dock__btn.is-enter:hover {
  border-color: #00d4ff;
  box-shadow: 0 0 16px rgba(0, 212, 255, 0.2);
}

@media (prefers-reduced-motion: reduce) {
  .hub-visit-dock__door,
  .hub-visit-dock__btn {
    transition: none;
  }
}

.reveal-block{opacity:1!important;transform:none!important}
/* Shared recovery controls in public articles, HUBs and editorial previews. */
.matrix-video-engine--error { flex-direction: column; gap: 12px; text-align: center; }
.matrix-video-engine--error .video-control-deck__retry { display: inline-flex; align-items: center; justify-content: center; min-height: 44px; max-width: 100%; padding: 10px 16px; border: 1px solid #ff0055; border-radius: 4px; background: #151014; color: #fff; font: inherit; cursor: pointer; }
.matrix-video-engine--error .video-control-deck__retry:focus-visible { outline: 2px solid #00f0ff; outline-offset: 3px; }
.player-tools { padding:12px; color:#e8e5ec; background:#0d0b10; border:1px solid #ff005540; font:13px/1.5 system-ui,sans-serif; }
.player-tools__quick,.player-tools__settings { display:flex; flex-wrap:wrap; gap:10px; align-items:center; }
.player-tools__settings { padding:12px 0; }
.player-tools label { display:grid; gap:6px; min-width:0; }
.player-tools button,.player-recovery button { color:#fff; background:#21141e; border:1px solid #ff005570; border-radius:4px; min-height:44px; padding:8px 12px; cursor:pointer; font:inherit; }
.player-tools button[aria-pressed="true"] { border-color:#00f0ff; }
.player-tools button:disabled { opacity:.45;cursor:default; }
.player-tools select,.player-tools input { color:#fff;background:#151217;border:1px solid #634153;border-radius:3px;min-height:36px;max-width:100%;padding:6px; }
.player-tools summary { cursor:pointer;min-height:44px;display:list-item;align-content:center; }
.player-tools :focus-visible,.player-recovery :focus-visible { outline:2px solid #00f0ff;outline-offset:3px; }
.player-tools pre { white-space:pre-wrap;word-break:break-word;max-height:240px;overflow:auto; }
.player-tools__preview { width:200px;max-width:100%;height:auto; }
.player-recovery { padding:20px;background:#190a11;color:#fff; }
.video-shell [data-testid="mkv-subtitle-overlay"] { font-size:calc(clamp(14px,2.4vw,22px)*var(--player-sub-size,1))!important; }
.video-shell [data-testid="mkv-subtitle-overlay"] span { background:var(--player-sub-background,#000b)!important; }
.video-shell [data-testid="mkv-subtitle-overlay"] :is(span,div) { font-size:inherit!important; }
.video-shell video::cue { background:var(--player-sub-background,#000b);font-size:calc(18px*var(--player-sub-size,1)); }
.video-shell[data-subtitle-position="top"] [data-testid="mkv-subtitle-overlay"] { justify-content:flex-start!important;padding-top:5%!important; }
.video-shell[data-subtitle-position="middle"] [data-testid="mkv-subtitle-overlay"] { justify-content:center!important;padding-bottom:0!important; }
.player-pip-window { width:100%;max-width:none; }
.player-pip-controls { position:sticky;bottom:0;display:flex;gap:8px;justify-content:center; }
@media(max-width:600px){.player-tools__settings{display:grid;grid-template-columns:1fr}.player-tools button{max-width:100%;white-space:normal}}
/* Shared subtitle import, in the player, article editor and hub workspace. */
.subtitle-manager{margin:12px 0;padding:12px;border:1px solid #383342;border-radius:10px;background:#121016;color:#f5f3f7;min-width:0;font:14px/1.5 sans-serif;text-align:left}
.subtitle-manager summary{cursor:pointer;min-height:44px;display:flex;align-items:center;font-weight:700}
.subtitle-manager label{display:flex;flex-direction:column;gap:6px;margin:8px 0;min-width:0}
.subtitle-manager input,.subtitle-manager select,.subtitle-manager button{color:inherit;background:#211c29;border:1px solid #63536f;border-radius:6px;padding:8px;min-height:44px;max-width:100%;font:inherit;box-sizing:border-box}
.subtitle-manager input[type=file]{width:100%;font-size:12px}
.subtitle-manager button{cursor:pointer;white-space:normal;overflow-wrap:anywhere}
.subtitle-manager button:disabled{opacity:.55;cursor:default}
.subtitle-manager :is(button,input,select,summary):focus-visible{outline:2px solid #00e9ff;outline-offset:3px}
.subtitle-manager .subtitle-manager__check{flex-direction:row;align-items:center}
.subtitle-manager__check input{min-height:24px;width:24px;flex-shrink:0}
.subtitle-manager__fields,.subtitle-manager__actions{display:flex;gap:10px;flex-wrap:wrap;align-items:center}
.subtitle-manager__fields>label{flex:1 1 140px}
.subtitle-manager ul{padding-left:20px;margin:8px 0;overflow-wrap:anywhere}
.subtitle-manager li{padding:8px 0;border-top:1px solid #383342}
.subtitle-manager p{margin:8px 0;overflow-wrap:anywhere}
@media(max-width:420px){.subtitle-manager{padding:8px}.subtitle-manager__fields{display:block}.subtitle-manager__actions{align-items:stretch;flex-direction:column}}

/* Approved Pop-Sphere player UI. Playback engines and their source stay separate. */
@font-face{font-family:'Permanent Marker';src:url('/_lps/assets/19a7c947cc1fd559acd760a68b44674df5e76d42f989d8871736182959056f69/player-assets/PermanentMarker-Regular.woff2') format('woff2');font-weight:400;font-style:normal;font-display:swap}
.article-video-node:has(.player-modern){padding:0;border:0;border-radius:12px;background:none;box-shadow:none}
.article-video-node:has(.player-modern)>.article-video-node__hud{display:none}
dialog.video-shell.player-modern{--player-accent:#ff2851;--player-safe-bottom:112px;box-sizing:border-box;position:relative;inset:auto;display:flex;flex-direction:column;width:100%;max-width:100%;height:auto;max-height:none;margin:0;padding:0;border:1px solid #ffffff20;border-radius:12px;background:#0b0b0e;color:#f4f3f7;overflow:hidden;transform:none;box-shadow:0 12px 35px #0004;font:14px/1.45 system-ui,sans-serif;text-align:left;isolation:isolate}
.player-modern *{box-sizing:border-box}
dialog.player-modern:not([open]){display:none}
.player-modern .video-shell__stage{position:relative;width:100%;min-width:0;min-height:240px;aspect-ratio:var(--video-aspect,16/9);height:auto;flex:none;overflow:hidden;border:0;border-radius:0;background:#050507;container-type:inline-size}
.player-modern .video-shell__stage-hud{display:none}
dialog.player-modern.video-shell--chamber{height:100%;max-height:100%}
.player-modern.video-shell--chamber .video-shell__stage{flex:1;min-height:0;aspect-ratio:auto}
.player-modern .player-chrome{position:absolute;inset:0;z-index:20;pointer-events:none}
.player-modern .player-brand{position:absolute;top:clamp(14px,3cqw,24px);right:clamp(14px,3cqw,24px);width:clamp(112px,20cqw,190px);height:auto;max-width:40%;object-fit:contain;filter:drop-shadow(0 1px 0 #000) drop-shadow(0 0 2px #000) drop-shadow(0 2px 5px #000f);user-select:none;pointer-events:none}
.player-modern .player-heading{position:absolute;top:18px;left:20px;max-width:calc(100% - 225px);display:flex;align-items:center;gap:12px;text-shadow:0 1px 5px #000}
.player-modern .player-title{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:12px;font-weight:500;letter-spacing:.02em;color:#f5f5f8}
.player-modern button,.player-modern select,.player-modern input,.player-modern summary{font:inherit;accent-color:var(--player-accent)}
.player-modern button{cursor:pointer}
.player-modern :is(button,input,select,summary):focus-visible{outline:2px solid #00e9ff;outline-offset:3px}
.player-modern .player-controls{position:absolute;bottom:0;inset-inline:0;padding:26px 18px 12px;background:linear-gradient(0deg,#060608fc,#060608c9 68%,transparent);pointer-events:auto}
.player-modern .player-timeline{appearance:none;display:block;width:100%;min-width:0;height:24px;margin:0 0 2px;border:0;background:transparent;cursor:pointer}
.player-modern .player-timeline::-webkit-slider-runnable-track{height:3px;border-radius:4px;background:linear-gradient(to right,var(--player-accent) 0 var(--player-played),#ffffff70 var(--player-played) var(--player-buffered),#ffffff30 var(--player-buffered) 100%)}
.player-modern .player-timeline::-webkit-slider-thumb{appearance:none;width:10px;height:10px;margin-top:-3.5px;border:0;border-radius:50%;background:var(--player-accent)}
.player-modern .player-timeline::-moz-range-track{height:3px;background:#ffffff30}.player-modern .player-timeline::-moz-range-progress{height:3px;background:var(--player-accent)}.player-modern .player-timeline::-moz-range-thumb{width:10px;height:10px;border:0;border-radius:50%;background:var(--player-accent)}
.player-modern .player-command-row,.player-modern .player-transport,.player-modern .player-actions{display:flex;align-items:center;gap:3px;min-width:0}
.player-modern .player-transport{flex:1}.player-modern .player-control-spacer{flex:1}
.player-modern .player-icon{width:36px;height:40px;min-width:36px;min-height:40px;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;padding:0;border:0;border-radius:7px;background:transparent;color:#f7f7fa;pointer-events:auto}
.player-modern .player-icon svg{width:20px;height:20px;stroke-width:1.75;flex:none}
.player-modern .player-icon:hover,.player-modern .player-icon[aria-expanded=true],.player-modern .player-icon[aria-pressed=true]{background:#ffffff18}
.player-modern .player-icon[aria-pressed=true]{color:var(--player-accent)}
.player-modern .player-icon:disabled{opacity:.4;cursor:default}
.player-modern .player-volume{width:52px;min-width:0;height:4px;margin:0 8px 0 0;padding:0;border:0;background:none}
.player-modern .player-clock{padding:0 4px;color:#eeeef2;font-size:11px;font-variant-numeric:tabular-nums;white-space:nowrap}.player-modern .player-duration{color:#b8b8c3}
.player-modern .player-return{display:flex;align-items:center;gap:7px;min-height:44px;flex-shrink:0;padding:7px 10px;border:1px solid #ffffff30;border-radius:7px;color:#fff;background:#111116de;font-size:12px;pointer-events:auto}
.player-modern .player-return svg{width:17px;height:17px;stroke-width:1.75}
.player-modern .player-dismiss{position:absolute;right:18px;top:54px;background:#0b0b0dcc}
.player-modern .player-youtube-actions{position:absolute;right:18px;display:flex;gap:4px;background:#111115dd;border-radius:8px;pointer-events:auto}
.player-modern .player-track-panel,.player-modern .player-tools{position:absolute;bottom:92px;right:18px;z-index:30;width:320px;max-width:calc(100% - 36px);max-height:calc(100% - 110px);overflow:auto;overscroll-behavior:contain;padding:14px 16px;border:1px solid #ffffff25;border-radius:12px;background:#18181f;color:#f4f4f8;box-shadow:0 12px 35px #0007;pointer-events:auto;text-align:left;font:13px/1.5 system-ui,sans-serif;scrollbar-width:thin}
.player-modern .player-tools[hidden]{display:none}
.player-modern .player-panel-heading{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:10px}.player-modern .player-panel-heading strong{font-weight:500;font-size:13px}
.player-modern .player-track-panel label{display:grid;gap:8px}.player-modern .player-track-panel p{font-size:12px;color:#b8b8c5}
.player-modern .player-track-panel select,.player-modern .player-tools select,.player-modern .player-tools input{width:100%;min-width:0;min-height:40px;border:1px solid #ffffff25;border-radius:6px;padding:7px 8px;background:#24242d;color:#f7f7fa}
.player-modern .player-tools__settings{display:grid;grid-template-columns:1fr;gap:12px}.player-modern .player-tools__quick{display:flex;flex-direction:column;align-items:stretch;gap:8px;padding:8px 0}
.player-modern .player-tools :is(button:not(.player-icon),summary){min-height:44px;border-color:#ffffff25;background:#24242c;color:#f4f4f8;border-radius:6px}
.player-modern .player-tools summary{padding:10px;margin:6px 0}.player-modern .player-tools label{width:100%}
.player-modern .player-resume{position:absolute;z-index:22;bottom:120px;left:18px;max-width:calc(100% - 36px);min-height:44px;padding:8px 13px;border:1px solid #ffffff55;border-radius:7px;background:#15151de8;color:#fff;font:12px/1.4 system-ui,sans-serif}
.player-modern .player-notice{position:absolute;z-index:40;top:58px;left:14px;right:14px;display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:0;padding:10px 12px;border:1px solid #ffffff30;border-radius:9px;background:#18181ff5;color:#f5f5f8;font:12px/1.5 system-ui,sans-serif}
.player-modern .player-notice button{min-height:36px;border:0;border-radius:5px;background:#ffffff15;color:#fff}.player-modern .player-notice svg{width:16px;height:16px}.player-modern .player-notice button[aria-label]{margin-left:auto}
.player-modern .video-shell__caption{margin:0;padding:14px 18px;border-top:1px solid #ffffff18;background:#111115;color:#b8b8c3;font:12px/1.6 system-ui,sans-serif;letter-spacing:0;text-transform:none}
.player-modern .article-video-poster{border:0;border-radius:0;background:#08080b;box-shadow:none;transform:none}
.player-modern .article-video-poster__media{object-fit:contain;filter:none;transform:none}.player-modern .article-video-poster__scrim{background:linear-gradient(0deg,#060609b3,transparent 50%,#06060940)}
.player-modern .article-video-play{gap:12px}.player-modern .article-video-play__icon{display:grid;place-items:center;width:64px;height:64px;border:1px solid #ffffff95;border-radius:50%;background:#0a0a0dcc;color:#fff;box-shadow:0 4px 22px #0007;transform:none;font-size:0}
.player-modern .article-video-play__icon svg{width:25px;height:25px;stroke-width:1.75}.player-modern .article-video-play__label{font:12px/1.4 system-ui,sans-serif;letter-spacing:.025em;color:#fff;text-transform:none;text-shadow:0 1px 5px #000}
.player-modern .article-video-poster:is(:hover,:focus-visible) .article-video-play__icon{transform:none;background:#17171de8;border-color:#fff;box-shadow:0 4px 24px #0007}
.player-modern .article-video-node__badge{display:none}
.player-modern .video-shell__stage-arming,.player-modern .matrix-video-engine--loading{z-index:16;background:#09090bdb;color:#f0f0f5;font:13px/1.5 system-ui,sans-serif;letter-spacing:0}
dialog.player-modern:modal{position:fixed;inset:0;left:0;transform:none;width:min(1440px,calc(100vw - 40px));max-width:calc(100vw - 40px);height:calc(100dvh - 40px);max-height:calc(100dvh - 40px);margin:auto;overflow:hidden;box-shadow:0 24px 100px #000b}
.player-modern::backdrop{background:#030305eb;backdrop-filter:blur(8px)}
dialog.player-modern:modal .video-shell__stage,dialog.player-modern:fullscreen .video-shell__stage{flex:1;min-height:0;aspect-ratio:auto;height:100%;max-height:none}
.player-modern:modal .video-shell__playlist,.player-modern:modal .video-shell__caption{display:none}
dialog.player-modern:fullscreen{position:fixed;inset:0;width:100vw;max-width:100vw;height:100dvh;max-height:100dvh;margin:0;border:0;border-radius:0;padding:0}
.player-modern .video-shell__stage:fullscreen{position:fixed;inset:0;width:100vw;max-width:100vw;height:100dvh;max-height:100dvh;margin:0;border:0;border-radius:0;aspect-ratio:auto}
.player-modern.is-chrome-hidden .player-controls,.player-modern.is-chrome-hidden .player-heading{opacity:0;pointer-events:none}.player-modern.is-chrome-hidden .player-controls:focus-within{opacity:1;pointer-events:auto}
.player-modern .matrix-video-stage__mkv-root,.player-modern .matrix-video-stage__native,.player-modern video,.player-modern canvas.matrix-video-stage__mkv{object-fit:contain;width:100%;height:100%}
.player-modern [data-testid="mkv-subtitle-overlay"]{padding-bottom:var(--player-safe-bottom)!important;font-size:calc(clamp(18px,3cqw,28px)*var(--player-sub-size,1))!important}
.player-modern:not([data-subtitle-style=original]) [data-testid="mkv-subtitle-overlay"],.player-modern:not([data-subtitle-style=original]) [data-testid="mkv-subtitle-overlay"] :is(span,div){font-family:'Permanent Marker',cursive!important;font-weight:400!important;font-style:normal!important;color:#ff2851!important;line-height:1.35!important;-webkit-text-stroke:0!important;paint-order:normal;text-shadow:0 -.8px 0 #f5f5f5,.65px .3px 0 #d3d3d8,-.65px .3px 0 #d3d3d8,0 2px 3px #0009!important}
.player-modern:not([data-subtitle-style=original]) video::cue{font-family:'Permanent Marker',cursive;font-size:calc(clamp(18px,3cqw,28px)*var(--player-sub-size,1));font-weight:400;color:#ff2851;text-shadow:0 -.8px #f5f5f5,.65px .3px #d3d3d8,-.65px .3px #d3d3d8,0 2px 3px #0009}
@media(min-width:801px){.player-modern[data-playlist="1"]:not(:modal):not(:fullscreen):not(.video-shell--chamber){display:grid;grid-template-columns:minmax(0,1fr) 200px}.player-modern[data-playlist="1"]:not(:modal):not(:fullscreen) .video-shell__playlist{grid-column:2;grid-row:1;padding:12px;border-left:1px solid #ffffff18}.player-modern[data-playlist="1"]:not(:modal):not(:fullscreen) .matrix-video-playlist__scroll{flex-direction:column}.player-modern[data-playlist="1"]:not(:modal):not(:fullscreen) .matrix-video-playlist__thumb{width:100%;min-width:0;flex:none}.player-modern[data-playlist="1"] .video-shell__caption{grid-column:1/-1}}
@container(max-width:560px){.player-modern .player-controls{padding:18px 10px 8px}.player-modern .player-command-row{flex-wrap:wrap;gap:2px}.player-modern .player-transport,.player-modern .player-actions{width:100%;flex-basis:100%}.player-modern .player-actions{justify-content:flex-end}.player-modern .player-icon{width:44px;min-width:44px;height:44px;min-height:44px}.player-modern .player-volume{display:none}.player-modern .player-clock{font-size:11px}.player-modern .player-heading{left:14px;top:12px;max-width:calc(100% - 145px)}.player-modern .player-heading .player-title{display:none}.player-modern .player-brand{right:14px;top:16px;width:112px;max-width:44%}.player-modern .player-track-panel,.player-modern .player-tools{inset-inline:8px;bottom:8px;width:auto;max-width:none;max-height:calc(100% - 68px)}.player-modern [data-testid="mkv-subtitle-overlay"]{padding-bottom:160px!important;font-size:calc(18px*var(--player-sub-size,1))!important}.player-modern .player-resume{bottom:160px}}
@media(max-width:600px){.player-modern .video-shell__stage{min-height:300px}dialog.player-modern:modal{width:calc(100vw - 16px);max-width:calc(100vw - 16px);height:calc(100dvh - 16px);max-height:calc(100dvh - 16px);border-radius:9px}.player-modern .player-title{font-size:11px}.player-modern .matrix-video-playlist__thumb{min-width:140px}}
@media(prefers-reduced-motion:no-preference){.player-modern .player-icon{transition:background .15s ease,color .15s ease}.player-modern .player-controls,.player-modern .player-heading{transition:opacity .18s ease}}
@media(max-width:600px){.player-modern :is(select,input[type=number],input[type=text],input[type=file]){font-size:16px}}

/* Light stays behind the frame, and strictly inside empty bars in expanded modes. */
dialog.video-shell.player-modern{overflow:visible;--ambient-strength:.45;--ambient-left:70 16 34;--ambient-right:70 16 34;--ambient-top:30 20 40;--ambient-bottom:35 12 25}
dialog.player-modern::before{content:'';position:absolute;inset:0;z-index:-1;border-radius:inherit;pointer-events:none;background:radial-gradient(ellipse at 0 50%,rgb(var(--ambient-left)) 0,transparent 65%),radial-gradient(ellipse at 100% 50%,rgb(var(--ambient-right)) 0,transparent 65%),radial-gradient(ellipse at 50% 0,rgb(var(--ambient-top)) 0,transparent 65%),radial-gradient(ellipse at 50% 100%,rgb(var(--ambient-bottom)) 0,transparent 65%);filter:blur(30px);opacity:var(--ambient-strength)}
.player-modern .video-shell__stage{border-radius:11px}
.player-modern .video-shell__playlist{border-radius:0 11px 11px 0;background:#0b0b0e}
.player-modern .video-shell__caption{border-radius:0 0 11px 11px}
dialog.player-modern:modal{overflow:visible;--ambient-strength:.58}
dialog.player-modern:modal::before{filter:blur(40px)}
dialog.player-modern[data-ambience=immersive]{--ambient-strength:.72}
dialog.player-modern[data-ambience=off]::before,dialog.player-modern[data-fs="1"]::before{opacity:0}
.player-ambient-bars{position:absolute;inset:0;z-index:7;pointer-events:none;opacity:var(--ambient-strength)}
.player-modern[data-engine=mkv-wasm] .player-ambient-bars{z-index:10}
.player-modern video,.player-modern .matrix-video-stage__native:not(canvas){background:transparent}
.player-ambient-bars i{position:absolute;display:block;pointer-events:none}
.player-ambient-top,.player-ambient-bottom{left:0;right:0;height:var(--ambient-matte-y,0px)}
.player-ambient-top{top:0;background:radial-gradient(ellipse at 50% 100%,rgb(var(--ambient-top)),transparent 85%)}
.player-ambient-bottom{bottom:0;background:radial-gradient(ellipse at 50% 0,rgb(var(--ambient-bottom)),transparent 85%)}
.player-ambient-left,.player-ambient-right{top:var(--ambient-matte-y,0px);bottom:var(--ambient-matte-y,0px);width:var(--ambient-matte-x,0px)}
.player-ambient-left{left:0;background:radial-gradient(ellipse at 100% 50%,rgb(var(--ambient-left)),transparent 85%)}
.player-ambient-right{right:0;background:radial-gradient(ellipse at 0 50%,rgb(var(--ambient-right)),transparent 85%)}
.player-modern[data-ambience=off] .player-ambient-bars{opacity:0}
.player-modern .player-poster-settings{position:absolute;right:14px;bottom:14px;background:#0a0a0d80}
.player-modern .player-brand,.player-modern .player-heading,.player-modern .player-controls,.player-modern .player-return,.player-modern .player-dismiss,.player-modern .player-youtube-actions{z-index:1}
@media(min-width:801px){.player-modern[data-playlist="1"]:not(:modal) .video-shell__stage{border-radius:11px 0 0 11px}}
@media(max-width:600px){dialog.video-shell.player-modern{--ambient-strength:.32}dialog.player-modern[data-ambience=immersive]{--ambient-strength:.5}dialog.player-modern::before{filter:blur(20px)}}
@media(prefers-reduced-motion:no-preference){dialog.player-modern::before,.player-ambient-bars{transition:opacity .7s ease}.player-ambient-bars i{transition:background 1s ease}}

/* Essentiel image viewer. Scoped independently of video playback and CMS data. */
dialog.lps-image-viewer{box-sizing:border-box;position:fixed;inset:0;width:min(1480px,calc(100vw - 40px));max-width:calc(100vw - 40px);height:calc(100dvh - 40px);max-height:calc(100dvh - 40px);margin:auto;padding:0;overflow:visible;border:1px solid #ff2851;border-radius:13px;background:#0d0d11;color:#f3f3f7;font:14px/1.45 system-ui,sans-serif;text-align:left;box-shadow:0 0 5px #ff28518f,0 0 16px #ff28513d,0 24px 100px #000b}
dialog.lps-image-viewer:not([open]){display:none}
.lps-image-viewer::backdrop{background:#030305ed;backdrop-filter:blur(7px)}
.lps-image-viewer *{box-sizing:border-box}
.lps-image-viewer button,.lps-image-viewer select{font:inherit;color:inherit}
.lps-image-viewer button{cursor:pointer}
.lps-image-viewer button:disabled{cursor:default;opacity:.35}
.lps-image-viewer :is(button,select):focus-visible{outline:2px solid #00e9ff;outline-offset:3px}
.image-viewer-surface{--image-wash:32 20 33;--image-wash-strength:.45;position:relative;isolation:isolate;display:flex;flex-direction:column;height:100%;min-height:0;width:100%;border-radius:inherit;background:#0d0d11;overflow:visible;color:#f3f3f7}
.image-viewer-surface::before{content:'';position:absolute;inset:0;z-index:-1;border-radius:inherit;pointer-events:none;background:radial-gradient(ellipse at 15% 20%,rgb(var(--image-wash)),transparent 68%),radial-gradient(ellipse at 85% 75%,rgb(var(--image-wash)),transparent 70%);filter:blur(35px);opacity:var(--image-wash-strength)}
.image-viewer-surface[data-ambience=off]::before{opacity:0}.image-viewer-surface[data-ambience=immersive]{--image-wash-strength:.7}
.image-viewer-header{position:absolute;inset:0 0 auto;z-index:5;display:flex;align-items:flex-start;gap:14px;min-height:94px;padding:22px 24px 32px;border-radius:13px 13px 0 0;background:linear-gradient(#060608d9,transparent);pointer-events:none}
.image-viewer-heading{display:flex;align-items:center;gap:14px;min-width:0;flex:1}
.image-viewer-heading>span{font:19px/1.3 'Permanent Marker',cursive;white-space:nowrap}
.image-viewer-heading small{font-size:12px;color:#b4b4bf;font-variant-numeric:tabular-nums;white-space:nowrap}
.image-viewer-brand{width:clamp(112px,16vw,190px);height:auto;max-width:40%;object-fit:contain;filter:drop-shadow(0 1px 0 #000) drop-shadow(0 0 2px #000) drop-shadow(0 2px 5px #000f);pointer-events:none;user-select:none}
.image-viewer-header>[data-viewer-close]{position:absolute;right:18px;top:56px;pointer-events:auto}
.image-viewer-heading{text-shadow:0 1px 5px #000}
.lps-image-viewer .image-viewer-icon{display:inline-flex;align-items:center;justify-content:center;flex:0 0 36px;width:36px;height:40px;min-width:36px;padding:0;border:0;border-radius:7px;background:transparent;color:#f7f7fa;filter:drop-shadow(0 1px 3px #0008)}
.image-viewer-icon svg{width:20px;height:20px;stroke-width:1.75;flex:none}
.image-viewer-native-size>span{font-size:11px;font-weight:500;font-variant-numeric:tabular-nums;letter-spacing:-.03em}
.lps-image-viewer .image-viewer-icon:hover,.lps-image-viewer .image-viewer-fit:hover{background:#ffffff18}
.lps-image-viewer .image-viewer-icon:is([aria-pressed=true],[aria-expanded=true]){color:#ff2851;background:#ff285118}
.image-viewer-content{position:relative;flex:1;min-height:0;display:grid;grid-template-columns:minmax(0,1fr);overflow:hidden;background:#07070a;border-radius:inherit}
.image-viewer-stage{position:relative;min-width:0;min-height:0;overflow:hidden;touch-action:none;background:#07070a;isolation:isolate}
.image-viewer-surface[data-matte=light] .image-viewer-stage{background:#ededee}
.image-viewer-surface[data-matte=checker] .image-viewer-stage{background-color:#ccc;background-image:conic-gradient(#8e8e93 25%,transparent 0 50%,#8e8e93 0 75%,transparent 0);background-size:24px 24px}
.image-viewer-photo{position:absolute;left:50%;top:50%;max-width:none;max-height:none;object-fit:contain;user-select:none;transform-origin:center}
.image-viewer-surface[data-zoomed=true] .image-viewer-photo{cursor:grab}
.lps-image-viewer .image-viewer-prev,.lps-image-viewer .image-viewer-next{position:absolute;z-index:2;top:calc(50% - 22px);border:1px solid #ffffff20;background:#15151de8;box-shadow:0 4px 15px #0005}
.image-viewer-prev{left:12px}.image-viewer-next{right:12px}
.image-viewer-state{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);z-index:2;display:flex;flex-direction:column;align-items:center;gap:12px;width:max-content;max-width:calc(100% - 100px);max-height:100%;overflow:auto;margin:0;padding:16px;border:1px solid #ffffff25;border-radius:11px;background:#17171ff0;color:#f6f6f8;text-align:center;font-size:13px;overflow-wrap:anywhere}
.image-viewer-state>svg{width:28px;height:28px;color:#b8b8c5}
.image-viewer-state strong{font-size:14px;font-weight:500}.image-viewer-state span{font-size:12px;color:#c0c0cc}
.image-viewer-state button{display:flex;align-items:center;justify-content:center;gap:8px;min-height:44px;padding:8px 14px;border:1px solid #ffffff30;border-radius:7px;background:#282832}.image-viewer-state button svg{width:16px;height:16px}
.image-viewer-bottom{position:absolute;inset:auto 0 0;z-index:3;min-width:0;padding:42px 18px 12px;border:0;border-radius:0 0 13px 13px;background:linear-gradient(0deg,#060608fc,#060608c9 68%,transparent);pointer-events:none}
.image-viewer-bottom :is(button,.image-viewer-rail){pointer-events:auto}
.image-viewer-surface:has(.image-viewer-panel,.image-viewer-grid) .image-viewer-bottom{visibility:hidden}
.image-viewer-caption{display:flex;flex-wrap:wrap;align-items:baseline;gap:3px 12px;min-width:0;margin:0 0 7px}
.image-viewer-caption strong{font-weight:500;font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}
.image-viewer-caption>span{color:#b9b9c4;font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}
.image-viewer-caption small{font-size:12px;color:#b9b9c4;margin-left:auto}
.image-viewer-toolbar,.image-viewer-zoom,.image-viewer-actions{display:flex;align-items:center;gap:3px;min-width:0}
.image-viewer-toolbar{justify-content:space-between;gap:8px;flex-wrap:wrap}
.lps-image-viewer .image-viewer-fit{min-height:40px;min-width:64px;max-width:80px;border:0;border-radius:7px;padding:6px 8px;background:transparent;font-size:12px;font-variant-numeric:tabular-nums}
.image-viewer-rail{position:relative;display:flex;justify-content:safe center;align-items:center;gap:8px;max-width:100%;overflow-x:auto;overflow-y:hidden;overscroll-behavior:contain;padding:4px 2px;margin:8px 0 0;scrollbar-width:thin}
.lps-image-viewer .image-viewer-thumb{flex:0 0 72px;display:grid;place-items:center;width:72px;height:48px;min-width:0;padding:2px;border:2px solid transparent;border-radius:7px;background:#22222a;overflow:hidden}
.image-viewer-thumb img{width:100%;height:100%;object-fit:cover;display:block;border-radius:3px}.image-viewer-thumb>svg{width:22px;height:22px;color:#a0a0ae}
.lps-image-viewer .image-viewer-thumb[aria-pressed=true]{border-color:#ff2851}
.image-viewer-panel{position:absolute;z-index:6;right:18px;bottom:96px;width:320px;max-width:calc(100% - 36px);max-height:calc(100% - 200px);overflow:auto;overscroll-behavior:contain;padding:14px 16px;border:1px solid #ffffff25;border-radius:12px;background:#18181f;color:#f5f5fa;box-shadow:0 12px 35px #0007;touch-action:pan-y}
.image-viewer-panel-heading{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:0 0 10px}.image-viewer-panel-heading strong{font-size:13px;font-weight:500}
.image-viewer-panel dl{margin:0}.image-viewer-panel dt{font-size:11px;color:#b8b8c5;margin-top:12px}.image-viewer-panel dd{font-size:13px;margin:3px 0;white-space:pre-wrap;overflow-wrap:anywhere}
.image-viewer-options{display:grid;gap:12px}.image-viewer-options label{display:grid;gap:7px;font-size:13px}.image-viewer-options select{width:100%;min-height:44px;padding:7px 9px;border:1px solid #ffffff30;border-radius:7px;background:#292932}
.image-viewer-grid{position:absolute;z-index:5;inset:104px 12px 176px;overflow:auto;overscroll-behavior:contain;padding:14px 18px;border:1px solid #ffffff25;border-radius:12px;background:#101015f5;touch-action:pan-y}
.image-viewer-grid>.image-viewer-panel-heading{position:sticky;top:-14px;z-index:1;padding:8px 0;background:#101015}
.image-viewer-grid-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:12px;align-content:start}
.lps-image-viewer .image-viewer-grid-cell{display:flex;flex-direction:column;align-items:stretch;min-width:0;overflow:hidden;padding:5px;border:2px solid transparent;border-radius:9px;background:#1b1b23;text-align:left}
.image-viewer-grid-cell img{display:block;width:100%;height:auto;aspect-ratio:4/3;object-fit:cover;border-radius:4px}.image-viewer-grid-cell span{display:block;padding:8px 3px 4px;font-size:12px;overflow-wrap:anywhere}.image-viewer-grid-cell>svg{width:36px;height:90px;align-self:center}
.lps-image-viewer .image-viewer-grid-cell[aria-pressed=true]{border-color:#ff2851}
.image-viewer-more{display:block;min-height:44px;margin:12px auto 0;padding:8px 14px;border:1px solid #ffffff30;border-radius:8px;background:#272730}
.image-viewer-notice{position:absolute;z-index:9;inset:76px 14px auto;display:flex;align-items:center;gap:10px;justify-content:space-between;margin:0;padding:10px 12px;border:1px solid #ffffff30;border-radius:9px;background:#191921;color:#f4f4f8;font-size:13px}
.image-viewer-surface[data-layout=collection] .image-viewer-content{grid-template-columns:minmax(0,1fr) 160px}
.image-viewer-sidebar{display:flex;flex-direction:column;gap:10px;min-height:0;padding:110px 12px 126px;background:#101014;border-left:1px solid #ffffff18}.image-viewer-sidebar>span{font-size:12px;color:#babac8}.image-viewer-sidebar .image-viewer-rail{justify-content:start;flex-direction:column;overflow:auto;margin:0;gap:10px}.image-viewer-sidebar .image-viewer-thumb{width:100%;flex-basis:auto;min-height:64px;height:74px;flex-shrink:0}
.image-viewer-surface[data-layout=collection] .image-viewer-bottom{right:160px}
.image-viewer-surface[data-layout=immersive] .image-viewer-header{background:linear-gradient(#060608a6,transparent)}
.image-viewer-surface[data-layout=immersive] .image-viewer-content{border-radius:inherit}
.image-viewer-surface[data-layout=immersive] .image-viewer-bottom{padding-top:36px;background:linear-gradient(0deg,#060608e8,transparent)}
.image-viewer-surface[data-layout=immersive] :is(.image-viewer-caption,.image-viewer-bottom>.image-viewer-rail){display:none}
.image-viewer-surface:fullscreen{position:fixed;inset:0;width:100vw;height:100dvh;max-height:none;margin:0;border:0;border-radius:0;background:#0b0b0e}
.image-viewer-surface:fullscreen::before{display:none}
/* The same official brand on inline images and the gallery feature image. */
.article-image-overlay.lps-image-brand{top:clamp(10px,2.5%,22px);right:clamp(10px,2.5%,22px);width:clamp(100px,22%,190px);min-width:0;max-width:40%;filter:none;mix-blend-mode:normal}
.lps-image-brand .article-image-logo{width:100%;height:auto;aspect-ratio:2109/263;object-fit:contain;opacity:1;mix-blend-mode:normal;filter:drop-shadow(0 1px 0 #000) drop-shadow(0 0 2px #000) drop-shadow(0 2px 5px #000f)}
.article-image-frame{padding:0;border-color:#ff2851;border-radius:12px;background:#0c0c10;box-shadow:0 0 5px #ff28518f,0 0 16px #ff28513d,0 10px 30px #0004}
.article-image-frame:is(:hover,:focus-visible){transform:none;border-color:#ff2851;box-shadow:0 0 6px #ff2851ad,0 0 19px #ff28514d,0 10px 30px #0005}.article-image-frame:focus-visible{outline:2px solid #00e9ff;outline-offset:4px}
.article-image-frame .article-image-stage{overflow:hidden;border-radius:11px}
.article-image-caption,.article-gallery-stack__caption{font:12px/1.6 system-ui,sans-serif;color:#bcbcc8;letter-spacing:0;text-transform:none}
.article-gallery-stack__hud{border:0;font:12px/1.5 system-ui,sans-serif;letter-spacing:0;color:#bcbcc8}.article-gallery-stack__label{color:#e9e9ef}.article-gallery-stack__meta{font:inherit;color:#a9a9b8}
.article-gallery-collage__cell,.article-gallery-collage__frame{border-color:#ffffff20;border-radius:10px;box-shadow:none}.article-gallery-collage__cell:hover{transform:none;border-color:#ffffff50}.article-gallery-collage__index{font:11px/1.4 system-ui,sans-serif;letter-spacing:0;background:#111117d9;border:0;border-radius:5px}
.article-gallery-collage__cell:not(.article-gallery-collage__cell--more){border-color:#ff2851;box-shadow:0 0 0 1px #ff2851,0 0 5px #ff28518f,0 0 16px #ff28513d}
.article-gallery-collage__cell:not(.article-gallery-collage__cell--more):hover{box-shadow:0 0 0 1px #ff2851,0 0 6px #ff2851ad,0 0 19px #ff28514d}
@media(max-width:600px){
  dialog.lps-image-viewer{width:calc(100vw - 16px);max-width:calc(100vw - 16px);height:calc(100dvh - 16px);max-height:calc(100dvh - 16px);border-radius:13px}
  .image-viewer-surface{--image-wash-strength:.3}
  .image-viewer-header{min-height:92px;gap:8px;padding:16px 14px 28px;border-radius:10px 10px 0 0}
  .image-viewer-heading{flex-direction:column;align-items:flex-start;gap:2px}
  .image-viewer-heading>span{font-size:16px}.image-viewer-heading small{font-size:11px}
  .image-viewer-brand{width:112px;max-width:40%}
  .image-viewer-header>[data-viewer-close]{top:44px;right:8px}
  .lps-image-viewer .image-viewer-icon{width:44px;min-width:44px;height:44px;flex-basis:44px}
  .image-viewer-bottom{padding:36px 10px 8px}
  .image-viewer-caption{gap:2px 8px;margin-bottom:6px}.image-viewer-caption strong{font-size:12px}
  .image-viewer-caption>span{display:none}
  .image-viewer-caption small{font-size:11px;max-width:40%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .image-viewer-toolbar{justify-content:center;gap:4px}.image-viewer-actions,.image-viewer-zoom{gap:2px}
  .lps-image-viewer .image-viewer-fit{min-height:44px}
  .image-viewer-panel{inset:96px 8px auto;width:auto;max-width:none;max-height:calc(100% - 300px);padding:10px 12px}
  .image-viewer-options select{font-size:16px}
  .image-viewer-grid{inset:96px 8px 208px;padding:8px}
  .image-viewer-grid-list{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
  .image-viewer-prev{left:6px}.image-viewer-next{right:6px}
  .image-viewer-rail{gap:6px;margin-top:6px}
  .lps-image-viewer .image-viewer-thumb{flex-basis:64px;width:64px;height:46px}
  .image-viewer-surface[data-layout=collection] .image-viewer-content{grid-template-columns:minmax(0,1fr);grid-template-rows:minmax(0,1fr)}
  .image-viewer-sidebar{position:absolute;inset:auto 0 132px;height:66px;padding:6px 8px;border-left:0;border-top:0;background:#101014b3}
  .image-viewer-sidebar>span{display:none}
  .image-viewer-sidebar .image-viewer-rail{flex-direction:row;overflow-x:auto;overflow-y:hidden;gap:6px;padding:2px}
  .image-viewer-sidebar .image-viewer-thumb{width:64px;min-height:46px;height:46px;flex-basis:64px}
  .image-viewer-surface[data-layout=collection] .image-viewer-bottom{right:0}
}
@media(max-height:480px){
  .image-viewer-header{min-height:78px;padding-top:12px}.image-viewer-header>[data-viewer-close]{top:40px}
  .image-viewer-bottom .image-viewer-caption,.image-viewer-bottom>.image-viewer-rail{display:none}
  .image-viewer-bottom{padding-top:24px;padding-bottom:5px}
  .image-viewer-panel{top:12px;bottom:auto;max-height:calc(100% - 24px)}
  .image-viewer-grid{inset:12px 64px 72px}
  .image-viewer-surface:has(.image-viewer-panel) .image-viewer-header{visibility:hidden}
  .image-viewer-sidebar{padding-top:85px;padding-bottom:80px}
}
@media(prefers-reduced-motion:no-preference){.image-viewer-surface::before{transition:background .5s ease,opacity .35s ease}}
/* Photo-sized frames. Short formats keep their tools around the photo. */
.image-viewer-surface[data-external-chrome=true] .image-viewer-header{inset:auto auto calc(100% + 8px) 50%;transform:translateX(-50%);width:max(320px,100%);max-width:calc(100vw - 16px);min-height:60px;padding:10px 14px;background:none;border-radius:0}
.image-viewer-surface[data-external-chrome=true] .image-viewer-header>[data-viewer-close]{top:30px;right:8px}
.image-viewer-surface[data-external-chrome=true] .image-viewer-brand{width:clamp(112px,16vw,190px);max-width:40%}
.image-viewer-surface[data-external-chrome=true] .image-viewer-bottom{inset:calc(100% + 8px) auto auto 50%;transform:translateX(-50%);width:max(320px,100%);max-width:calc(100vw - 16px);padding:8px 10px;background:none;border-radius:0}
.image-viewer-surface[data-external-chrome=true] .image-viewer-sidebar{padding:12px}
.image-viewer-surface[data-external-chrome=true] .image-viewer-caption>span{display:none}
.image-viewer-surface[data-external-chrome=true] .image-viewer-toolbar{justify-content:center}
.image-viewer-surface[data-external-chrome=true] .image-viewer-sidebar .image-viewer-rail{min-height:0}
/* Siblings of the image stage: panels may exceed a narrow portrait without clipping. */
.image-viewer-surface>.image-viewer-panel{inset:50% auto auto 50%;transform:translate(-50%,-50%);width:320px;max-width:calc(100vw - 48px);max-height:calc(100dvh - 120px)}
.image-viewer-surface>.image-viewer-grid{inset:50% auto auto 50%;transform:translate(-50%,-50%);width:min(1000px,calc(100vw - 48px));height:min(600px,calc(100dvh - 120px));max-height:calc(100dvh - 120px)}
@media(max-width:600px){
  .image-viewer-surface[data-external-chrome=true] .image-viewer-header{min-height:60px;padding:10px}
  .image-viewer-surface[data-external-chrome=true] .image-viewer-header>[data-viewer-close]{top:28px}
  .image-viewer-surface[data-external-chrome=true] .image-viewer-sidebar{inset:auto 0 0;padding:6px 8px}
}

/* Public comment form: keyboard focus remains visible on the dark terminal. */
#respond :is(textarea,input,button):focus-visible{outline:2px solid var(--cyber-red,#ff2851);outline-offset:3px}
.comment-avatar{overflow:hidden;background:#000;flex-shrink:0}
.comment-avatar img{display:block;width:100%;height:100%;object-fit:cover}
.comment-identity{display:inline-flex;align-items:center;flex-wrap:wrap;gap:6px;min-width:0}
.comment-identity .comment-author-name.staff::after{content:none}
.comment-role{border:1px solid var(--cyber-red,#ff2851);color:var(--cyber-red,#ff2851);letter-spacing:.05em;border-radius:2px;padding:1px 4px;font:700 8px/1.4 var(--font-mono),monospace;white-space:nowrap}

/* Preserve the supplied image and member portrait colors, including on hover. */
.comments-terminal-wrap .comment-body-v8 .comment-avatar img{filter:none;opacity:1}

/* Approved Terminal affiné: colors follow the public site's own palette. */
#respond.lps-comment-composer{
  --composer-line:color-mix(in srgb,var(--text-mineral) 28%,transparent);
  --composer-surface:color-mix(in srgb,var(--color-void) 80%,var(--color-surface));
  position:relative;background:var(--composer-surface);color:var(--text-pure);
  scroll-margin-top:calc(var(--header-height,75px) + var(--topbar-height,28px) + 48px);
  border:1px solid var(--composer-line);border-radius:5px;padding:26px;
  margin:0 0 2.5rem;font-family:var(--font-mono),ui-monospace,monospace;
}
#respond.lps-comment-composer:focus-within{background:var(--composer-surface);border-color:var(--composer-line);box-shadow:none}
#respond.lps-comment-composer::before{content:"";position:absolute;top:-1px;left:26px;width:48px;height:2px;background:var(--cyber-red)}
#respond .lps-composer-heading{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:16px}
#respond .lps-composer-title-group{min-width:0}
#respond .lps-composer-eyebrow{display:flex;align-items:center;gap:8px;margin:0;color:var(--text-mineral);font:10px/1.5 var(--font-mono),monospace;letter-spacing:.12em}
#respond .lps-composer-eyebrow>span{width:5px;height:5px;flex-shrink:0;background:var(--cyber-red)}
#respond.lps-comment-composer h3{display:block;padding:0;margin:6px 0 0;border:0;color:var(--text-pure);font:400 17px/1.5 var(--font-mono),monospace;letter-spacing:-.04em;text-transform:none;overflow-wrap:anywhere}
#respond.lps-comment-composer h3 strong{font-weight:700}
#respond .lps-composer-cancel{display:inline-flex;align-items:center;justify-content:center;gap:5px;flex-shrink:0;background:transparent;border:0;min-height:32px;padding:6px 0 6px 6px;color:var(--text-mineral);font:11px/1.5 var(--font-mono),monospace;cursor:pointer}
#respond .lps-composer-cancel:hover{color:var(--text-pure)}
#respond .lps-composer-context{display:flex;gap:9px;align-items:flex-start;color:var(--text-mineral);font:12px/1.6 var(--font-mono),monospace;border-bottom:1px solid var(--composer-line);padding-bottom:17px;margin-bottom:19px}
#respond .lps-composer-context>svg{flex-shrink:0;color:var(--cyber-red);margin-top:2px}
#respond .lps-composer-context p{margin:0;overflow-wrap:anywhere;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden}
#respond .lps-composer-session{margin-bottom:16px;min-height:34px}
#respond .lps-composer-session p{margin:0;color:var(--text-mineral);font-size:12px;line-height:1.6}
#respond .lps-composer-session button{color:var(--cyber-red);text-decoration:underline;background:transparent;border:0;font:inherit;cursor:pointer}
#respond .lps-composer-writer{display:flex;align-items:center;gap:10px;flex-wrap:wrap;min-width:0}
#respond .lps-composer-writer .comment-avatar{width:34px;height:34px;border:1px solid var(--composer-line);border-radius:3px;box-shadow:none}
#respond .lps-composer-writer .comment-avatar img{filter:none;opacity:1}
#respond .lps-composer-writer-name{color:var(--text-pure);font-size:12px;line-height:1.5;overflow-wrap:anywhere;min-width:0}
#respond .lps-composer-writer .comment-role{font-size:9px;border-color:color-mix(in srgb,var(--cyber-red) 45%,transparent)}
#respond .lps-composer-field,#respond .lps-composer-guest label{display:block;color:var(--text-mineral);font:11px/1.5 var(--font-mono),monospace}
#respond.lps-comment-composer textarea,#respond .lps-composer-guest input{box-sizing:border-box;width:100%;margin-top:8px;padding:15px 16px;border:1px solid var(--composer-line);border-radius:3px;background:var(--color-void);color:var(--text-pure);font:13px/1.75 var(--font-mono),monospace;caret-color:var(--cyber-red);transition:border-color .16s}
#respond.lps-comment-composer textarea{display:block;resize:vertical;min-height:120px}
#respond.lps-comment-composer textarea::placeholder,#respond .lps-composer-guest input::placeholder{color:var(--text-mineral);opacity:1}
#respond.lps-comment-composer textarea:focus:not(:focus-visible),#respond .lps-composer-guest input:focus:not(:focus-visible){outline:none;border-color:var(--cyber-red)}
#respond.lps-comment-composer textarea:focus-visible,#respond .lps-composer-guest input:focus-visible{border-color:transparent;outline:2px solid var(--cyber-red);outline-offset:2px}
#respond .lps-composer-editor-meta{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;margin-top:8px;color:var(--text-mineral);font:11px/1.5 var(--font-mono),monospace}
#respond .lps-composer-counter{margin-left:auto;color:var(--text-pure);font-variant-numeric:tabular-nums;white-space:nowrap}
#respond .lps-composer-counter>span{color:var(--text-mineral)}
#respond .lps-composer-limit{color:var(--cyber-red)}
#respond .lps-composer-bottom{display:flex;justify-content:space-between;align-items:center;gap:18px;margin-top:22px}
#respond .lps-composer-assist{display:flex;flex-direction:column;gap:3px;color:var(--text-mineral);font:11px/1.5 var(--font-mono),monospace}
#respond .lps-composer-shortcut{font-size:10px}
#respond .lps-composer-send{display:inline-flex;align-items:center;justify-content:center;gap:12px;flex-shrink:0;min-height:44px;padding:11px 18px;border:1px solid var(--cyber-red);border-radius:3px;background:var(--cyber-red);color:var(--color-void);font:700 11px/1.5 var(--font-mono),monospace;letter-spacing:.06em;cursor:pointer;transition:background .16s,border-color .16s}
#respond .lps-composer-send:hover:not(:disabled){background:color-mix(in srgb,var(--cyber-red) 88%,var(--text-pure));border-color:color-mix(in srgb,var(--cyber-red) 88%,var(--text-pure))}
#respond .lps-composer-send:disabled{background:color-mix(in srgb,var(--cyber-red) 8%,var(--color-void));border-color:color-mix(in srgb,var(--cyber-red) 38%,var(--color-void));color:color-mix(in srgb,var(--cyber-red) 22%,var(--text-mineral));cursor:not-allowed}
#respond .lps-composer-feedback{margin:0;color:var(--text-mineral);font:12px/1.6 var(--font-mono),monospace;overflow-wrap:anywhere}
#respond .lps-composer-feedback:not(:empty){margin-top:16px;padding-top:14px;border-top:1px solid var(--composer-line)}
#respond .lps-composer-guest{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:12px}
#respond .lps-composer-guest input{min-width:0;margin-top:6px;padding:11px 12px}
@media(max-width:600px){
 #respond.lps-comment-composer{padding:20px 17px}
 #respond .lps-composer-heading{gap:10px}
 #respond.lps-comment-composer h3{font-size:16px}
 #respond.lps-comment-composer h3 strong{display:block}
 #respond .lps-composer-eyebrow{font-size:9px;letter-spacing:.08em}
 #respond .lps-composer-cancel{min-height:44px;font-size:10px}
 #respond .lps-composer-bottom{flex-direction:column;align-items:stretch;gap:15px}
 #respond .lps-composer-send{width:100%;min-height:46px}
 #respond.lps-comment-composer textarea,#respond .lps-composer-guest input{font-size:16px;padding:13px 12px}
 #respond.lps-comment-composer textarea{min-height:140px}
 #respond .lps-composer-guest{grid-template-columns:minmax(0,1fr)}
 #respond .lps-composer-shortcut{display:none}
}
@media(prefers-reduced-motion:reduce){#respond.lps-comment-composer textarea,#respond .lps-composer-send{transition:none}}

/* Animate an inherited value: ::first-letter itself cannot run animations. */
@property --lps-initial-glow {
  syntax: '<length>';
  inherits: true;
  initial-value: 5px;
}

.single-article-viewer .article-content p.lps-article-initial {
  display: flow-root;
  animation: lps-initial-pulse 6s ease-in-out infinite;
  animation-play-state: paused;
}

.single-article-viewer .article-content p.lps-article-initial--active {
  animation-play-state: running;
}

.single-article-viewer .article-content p.lps-article-initial::first-letter {
  float: left;
  font-size: 3.9em;
  font-weight: 900;
  line-height: .82;
  margin: .11em .16em 0 0;
  color: var(--cyber-red, #ff2851);
  text-shadow: 0 -1px 0 rgb(255 255 255 / .2),
    0 2px 1px rgb(0 0 0 / .65),
    0 0 var(--lps-initial-glow, 5px) color-mix(in srgb, var(--cyber-red, #ff2851) 40%, transparent);
}

@keyframes lps-initial-pulse {
  0%, 100% { --lps-initial-glow: 5px; }
  50% { --lps-initial-glow: 17px; }
}

@media (max-width: 600px) {
  .single-article-viewer .article-content p.lps-article-initial::first-letter {
    font-size: 3.4em;
    margin-right: .13em;
  }
}

@media (prefers-reduced-motion: reduce) {
  .single-article-viewer .article-content p.lps-article-initial {
    animation: none;
  }
}

/* Extend the existing Sources cards; their rail, colours and actions stay intact. */
.article-source-card--has-visual .article-source-card__body {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  grid-template-rows: auto 1fr;
  column-gap: 24px;
}
.article-source-card--has-visual .article-source-card__meta-row { grid-column: 1; grid-row: 1; }
.article-source-card--has-visual .article-source-card__main { grid-column: 1; grid-row: 2; }
.article-source-card--has-visual .article-source-card__details { grid-column: 1 / -1; }
.article-source-media {
  grid-column: 2; grid-row: 1 / span 2; align-self: center;
  display: block; position: relative; box-sizing: border-box; overflow: hidden;
  width: 108px; aspect-ratio: 3 / 4; padding: 0; margin: 0;
  border: 1px solid rgb(255 255 255 / .13); border-radius: 3px;
  background: #111114; color: #b4b4ba; cursor: zoom-in;
  box-shadow: 0 8px 22px rgb(0 0 0 / .25);
}
.article-source-media--landscape { width: 144px; aspect-ratio: 16 / 9; }
.article-source-media--logo { width: 88px; aspect-ratio: 1; padding: 10px; }
.article-source-media img { display: block; width: 100%; height: 100%; object-fit: contain; }
.article-source-media:hover { border-color: var(--cyber-red, #ff2851); }
.article-source-media:focus-visible { outline: 2px solid var(--cyber-red, #ff2851); outline-offset: 4px; }
.article-source-media:disabled { cursor: default; }
.article-source-media__fallback { display: block; padding: 8px; font: 10px/1.5 ui-monospace, monospace; overflow-wrap: anywhere; }
.article-source-media__zoom { position: absolute; right: 3px; bottom: 3px; padding: 1px 4px; background: rgb(0 0 0 / .8); color: #fff; font: 12px/1.3 sans-serif; }
.article-source-card--has-visual .article-source-card__title,
.article-source-card--has-visual .article-source-card__note { overflow-wrap: anywhere; }
.article-builder-source-visual { display: grid; gap: 10px; }
.article-builder-source-visual .article-builder-field__label { display: grid; gap: 6px; }
.article-builder-source-visual .article-builder-source-card__thumb-row { flex-wrap: wrap; }
.article-builder-source-visual__preview { width: 84px; aspect-ratio: 3 / 4; border: 1px solid #36363d; border-radius: 3px; overflow: hidden; background: #111114; }
.article-builder-source-visual__preview--landscape { width: 144px; aspect-ratio: 16 / 9; box-sizing: border-box; }
.article-builder-source-visual__preview--logo { aspect-ratio: 1; padding: 8px; box-sizing: border-box; }
.article-builder-source-visual__preview img { display: block; width: 100%; height: 100%; object-fit: contain; }
@media (max-width: 520px) {
  .article-source-card--has-visual .article-source-card__body { column-gap: 12px; }
  .article-source-media { width: 76px; }
  .article-source-media--landscape { width: 104px; }
  .article-source-media--logo { width: 68px; padding: 7px; }
}

.lps-presentation-frame{position:relative;box-sizing:border-box;overflow:hidden;border:1px solid rgba(215,74,116,.22);background-color:#0c0c0f;background-image:linear-gradient(rgba(215,74,116,.045) 1px,transparent 1px),linear-gradient(90deg,rgba(215,74,116,.045) 1px,transparent 1px);background-size:16px 16px;padding:20px;margin:24px 0;isolation:isolate}
.lps-presentation-live{position:relative;padding-top:16px}
.lps-presentation-label{position:absolute;top:-5px;left:0;color:#cba5b9;font:11px/1.3 ui-monospace,monospace;letter-spacing:.08em}
.lps-presentation-live>a{display:block;max-width:100%;margin:auto;text-align:center;outline-offset:5px}
.lps-presentation-frame img{display:block;width:100%;max-width:100%;height:auto;object-fit:contain;margin:auto}
.lps-presentation-top-banner{z-index:20;width:calc(100% - 2 * var(--article-gutter,24px));max-width:970px;margin:-5rem auto 1.5rem}
.lps-presentation-top-banner img{max-height:90px;width:auto}
.lps-presentation-bottom-banner{max-width:790px;margin:4rem auto}
.lps-presentation-top-banner .lps-presentation-live>a,.lps-presentation-bottom-banner .lps-presentation-live>a{max-width:728px}
.lps-presentation-sidebar-square,.lps-presentation-sidebar-vertical{width:100%;max-width:342px}
.lps-presentation-sidebar-square img{aspect-ratio:1/1}
.lps-presentation-sidebar-vertical img{aspect-ratio:1/2}
.lps-presentation-frame a:focus-visible{outline:2px solid #ff83a7;outline-offset:4px}
.lps-coming{position:relative;isolation:isolate;overflow:hidden;box-sizing:border-box;width:100%;max-width:728px;aspect-ratio:728/90;margin:auto;display:flex;align-items:center;justify-content:center;gap:28px;background:#100d14;container-type:inline-size;color:#f7edf3}
.lps-coming::before{content:"";position:absolute;z-index:-1;inset:0;background:radial-gradient(ellipse at 35% 50%,rgba(211,47,122,.17),transparent 67%)}
.lps-coming-scene{position:relative;flex-shrink:0;width:13%;aspect-ratio:92/70}
.lps-coming-scene canvas{position:absolute;inset:0;width:100%;height:100%}
.lps-coming-scene.is-orbit-gpu>div{display:none}
.lps-coming-aura{position:absolute;z-index:0;inset:3%;border-radius:50%;background:radial-gradient(ellipse,rgba(236,95,157,.2),transparent 66%)}
.lps-coming-core{position:absolute;z-index:2;width:49%;aspect-ratio:1;top:50%;left:50%;transform:translate(-50%,-50%);border-radius:50%;border:1px solid rgba(255,176,210,.45);background:radial-gradient(circle at 30% 25%,#d874a4 0%,#80334f 26%,#2c162a 58%,#110d16 80%);box-shadow:inset -8px -5px 16px rgba(4,3,7,.75),0 0 21px rgba(222,71,140,.16)}
.lps-coming-core::after{content:"";position:absolute;inset:12%;border-radius:50%;border:1px solid rgba(255,193,219,.13);transform:rotate(-35deg) scaleX(.55)}
.lps-coming-ring{position:absolute;inset:11% -6%;transform:rotate(-26deg) scaleY(.4);z-index:1;clip-path:polygon(-10% -10%,110% -10%,110% 50%,-10% 50%)}
.lps-coming-ring.second{inset:10% -6%;transform:rotate(42deg) scaleY(.45);opacity:.48}
.lps-coming-ring.front{z-index:3;clip-path:polygon(-10% 50%,110% 50%,110% 110%,-10% 110%)}
.lps-coming-ring::before{content:"";position:absolute;inset:0;border:1px solid rgba(255,178,211,.55);border-radius:50%}
.lps-coming-copy{position:relative;z-index:1}
.lps-coming-brand{display:block;color:#b4a3b0;font:11px/1.6 ui-monospace,monospace;letter-spacing:.21em}
.lps-coming-title{display:block;margin:4px 0 0;font:400 clamp(20px,5.3cqw,40px)/1 Impact,'Arial Narrow',Arial,sans-serif;letter-spacing:.075em;white-space:nowrap}
.lps-coming-title em{font:inherit;font-style:normal;color:transparent;-webkit-text-stroke:1px #ffbad6}
.lps-coming-tail{display:none}
.lps-presentation-sidebar-square .lps-coming{max-width:300px;aspect-ratio:1;display:block}
.lps-presentation-sidebar-vertical .lps-coming,.lps-presentation-feed-grid .lps-coming{max-width:300px;aspect-ratio:1/2;display:block}
.lps-presentation-archive-feed .lps-coming{max-width:600px;aspect-ratio:3/4;display:block}
.lps-presentation-sidebar-square .lps-coming-scene,.lps-presentation-archive-feed .lps-coming-scene{position:absolute;width:56%;height:52%;aspect-ratio:auto;top:8%;left:22%}
.lps-presentation-sidebar-vertical .lps-coming-scene,.lps-presentation-feed-grid .lps-coming-scene{position:absolute;width:82%;height:41%;aspect-ratio:auto;top:16%;left:9%}
.lps-presentation-sidebar-square .lps-coming-copy,.lps-presentation-archive-feed .lps-coming-copy{position:absolute;top:54%;width:100%;text-align:center}
.lps-presentation-sidebar-vertical .lps-coming-copy,.lps-presentation-feed-grid .lps-coming-copy{position:absolute;top:64%;width:100%;text-align:center}
.lps-presentation-sidebar-square .lps-coming-title,.lps-presentation-sidebar-vertical .lps-coming-title,.lps-presentation-feed-grid .lps-coming-title,.lps-presentation-archive-feed .lps-coming-title{font-size:clamp(24px,16cqw,52px);letter-spacing:.09em}
.lps-presentation-sidebar-square .lps-coming-title em,.lps-presentation-sidebar-vertical .lps-coming-title em,.lps-presentation-feed-grid .lps-coming-title em,.lps-presentation-archive-feed .lps-coming-title em{display:block;margin-top:5px}
.lps-presentation-sidebar-vertical .lps-coming-tail,.lps-presentation-feed-grid .lps-coming-tail{display:flex;align-items:center;justify-content:center;gap:9px;position:absolute;bottom:5%;left:12%;right:12%;font:11px/1.5 ui-monospace,monospace;color:#b4a3b0;letter-spacing:.16em}
.lps-coming-tail::before,.lps-coming-tail::after{content:"";height:1px;flex:1;background:linear-gradient(90deg,transparent,#744058)}
.lps-coming-tail::after{transform:rotate(180deg)}
@media(min-width:768px){.lps-presentation-frame[data-desktop-ready="false"]>.lps-presentation-live{display:none}.lps-presentation-frame[data-desktop-ready="true"]>.lps-coming{display:none}}
@media(max-width:767px){.lps-presentation-frame[data-mobile-ready="false"]>.lps-presentation-live{display:none}.lps-presentation-frame[data-mobile-ready="true"]>.lps-coming{display:none}.lps-presentation-top-banner{margin:1rem auto;width:min(300px,86vw)}.lps-presentation-frame{padding:12px}.lps-presentation-live>a{max-width:300px}.lps-presentation-top-banner img{width:100%;max-height:none;aspect-ratio:1/1}.lps-presentation-bottom-banner,.lps-presentation-sidebar-vertical{width:min(260px,72vw);margin:1rem auto}.lps-presentation-bottom-banner img{aspect-ratio:1/2}.lps-presentation-sidebar-square,.lps-presentation-sidebar-vertical{margin-inline:auto}.lps-presentation-top-banner .lps-coming{max-width:300px;aspect-ratio:1;display:block}.lps-presentation-bottom-banner .lps-coming{max-width:300px;aspect-ratio:1/2;display:block}.lps-presentation-top-banner .lps-coming-scene{position:absolute;width:56%;height:52%;top:8%;left:22%;aspect-ratio:auto}.lps-presentation-bottom-banner .lps-coming-scene{position:absolute;width:82%;height:41%;top:16%;left:9%;aspect-ratio:auto}.lps-presentation-top-banner .lps-coming-copy{position:absolute;top:54%;width:100%;text-align:center}.lps-presentation-bottom-banner .lps-coming-copy{position:absolute;top:64%;width:100%;text-align:center}.lps-presentation-top-banner .lps-coming-title,.lps-presentation-bottom-banner .lps-coming-title{font-size:clamp(24px,16cqw,52px);letter-spacing:.09em}.lps-presentation-top-banner .lps-coming-title em,.lps-presentation-bottom-banner .lps-coming-title em{display:block;margin-top:5px}.lps-presentation-top-banner[data-mobile-ready="true"]>.lps-coming,.lps-presentation-bottom-banner[data-mobile-ready="true"]>.lps-coming{display:none}}
@media(max-width:767px){.lps-presentation-sidebar-square{width:min(300px,86vw)}}

/* Signature satinée : silhouette stable, un anneau, aucun contexte WebGL en horizontal. */
@media(min-width:768px){
  :is(.lps-presentation-top-banner,.lps-presentation-bottom-banner) .lps-coming{gap:24px}
  :is(.lps-presentation-top-banner,.lps-presentation-bottom-banner) .lps-coming-scene{width:100px;height:68px;aspect-ratio:auto}
  :is(.lps-presentation-top-banner,.lps-presentation-bottom-banner) .lps-coming-aura{inset:0;background:radial-gradient(ellipse,rgba(189,70,122,.095),transparent 65%)}
  :is(.lps-presentation-top-banner,.lps-presentation-bottom-banner) .lps-coming-core{width:36px;height:36px;box-sizing:content-box;border-color:rgba(227,163,197,.3);background:radial-gradient(ellipse at 32% 22%,rgba(247,198,223,.6) 0%,rgba(165,87,125,.47) 10%,transparent 34%),radial-gradient(ellipse at 36% 30%,#905376 0%,#4c2946 36%,#24182c 66%,#100c18 85%);box-shadow:inset -5px -4px 8px #0009,inset 1px 1px 3px #f5a6cd38,0 0 20px #c0528320;animation:lps-satin-reflection 11s ease-in-out infinite alternate;animation-play-state:paused}
  :is(.lps-presentation-top-banner,.lps-presentation-bottom-banner) .lps-coming-core::after{inset:1px;border:0;transform:none;background-image:radial-gradient(rgba(255,199,233,.12) .5px,transparent .9px);background-size:3px 3px;opacity:.35}
  :is(.lps-presentation-top-banner,.lps-presentation-bottom-banner) .lps-coming-ring{inset:auto;top:50%;left:50%;width:86px;height:27px;box-sizing:content-box;transform:translate(-50%,-50%) rotate(-20deg);clip-path:polygon(-10% -20%,110% -20%,110% 50%,-10% 50%)}
  :is(.lps-presentation-top-banner,.lps-presentation-bottom-banner) .lps-coming-ring::before{border-color:rgba(211,145,180,.5)}
  :is(.lps-presentation-top-banner,.lps-presentation-bottom-banner) .lps-coming-ring.front{clip-path:polygon(-10% 50%,110% 50%,110% 120%,-10% 120%)}
  :is(.lps-presentation-top-banner,.lps-presentation-bottom-banner) .lps-coming-ring.front::before{border-color:rgba(220,167,197,.7)}
  :is(.lps-presentation-top-banner,.lps-presentation-bottom-banner) .lps-coming-ring.second{display:none}
  :is(.lps-presentation-top-banner,.lps-presentation-bottom-banner) .lps-coming.is-orbit-moving .lps-coming-core{animation-play-state:running}
}
@keyframes lps-satin-reflection{from{filter:brightness(.9)}to{filter:brightness(1.18)}}
@media(prefers-reduced-motion:reduce){:is(.lps-presentation-top-banner,.lps-presentation-bottom-banner) .lps-coming-core{animation:none}}

/* Le masque porte sur la surface complète, sans atténuer titre ou extrait.
   Son bord est fixe : le zoom de la photo reste à l'intérieur du masque. */
.single-article-viewer .article-hero-surface{
  position:absolute;
  inset:0;
  z-index:0;
  pointer-events:none;
  -webkit-mask-image:linear-gradient(to bottom,#000 0%,#000 48%,rgba(0,0,0,.97) 60%,rgba(0,0,0,.79) 72%,rgba(0,0,0,.4) 84%,rgba(0,0,0,.1) 93%,transparent 99%,transparent 100%);
  mask-image:linear-gradient(to bottom,#000 0%,#000 48%,rgba(0,0,0,.97) 60%,rgba(0,0,0,.79) 72%,rgba(0,0,0,.4) 84%,rgba(0,0,0,.1) 93%,transparent 99%,transparent 100%);
}
/* Le lecteur garde ses commandes accessibles dans les heroes vidéo. */
.single-article-viewer .article-hero-surface .article-hero-video-wrap{pointer-events:auto}
@media(max-width:767px){
  .single-article-viewer .article-hero-surface{
    -webkit-mask-image:linear-gradient(to bottom,#000 0%,#000 42%,rgba(0,0,0,.94) 58%,rgba(0,0,0,.65) 73%,rgba(0,0,0,.22) 87%,transparent 99%,transparent 100%);
    mask-image:linear-gradient(to bottom,#000 0%,#000 42%,rgba(0,0,0,.94) 58%,rgba(0,0,0,.65) 73%,rgba(0,0,0,.22) 87%,transparent 99%,transparent 100%);
  }
}
@media(prefers-reduced-motion:reduce){.single-article-viewer .article-hero-bg{animation:none}}

/* Keep an internal section link below the fixed public navigation. */
.article-block[id^="lps-block-"]{scroll-margin-top:160px}
