/* ============================================================
   AI COMPANION ATLAS — STYLES REDACTIONNELS (assets/prose.css)

   Applique automatiquement le design au contenu des articles et
   des pages, sans avoir a ajouter de classe dans le HTML colle.

   PRINCIPE — tout est cible sur `:not([class])` :
     <p>texte</p>            -> mis en forme ici
     <p class="card-desc">   -> ignore, le design system decide

   Aucun composant existant (.section, .card, .btn, .hero…) n'est
   donc affecte : on peut coller une mise en page complete dans une
   page, elle s'affiche a l'identique.

   Charge AVANT assets/atlas.css : en cas d'egalite de specificite,
   c'est toujours le design system qui gagne.
   ============================================================ */

:root{
  --prose-max:48rem;        /* largeur de lecture (padding inclus) */
  --prose-fg:#c9d3e6;       /* corps de texte — plus clair que --fg-muted */
  --prose-lead:#a7b4cc;     /* chapo / legendes */
  --prose-space:1.15rem;    /* respiration entre paragraphes */
}

/* ------------------------------------------------------------
   CONTENEUR
   Pas de max-width sur .entry-content lui-meme : ce sont les
   enfants directs SANS classe qui sont ramenes a la largeur de
   lecture. Un bloc avec classe (.section, .hero…) reste donc
   pleine largeur, sans marge negative ni scroll horizontal.
   ------------------------------------------------------------ */
.entry-content{
  padding:3.5rem 0 4.5rem;
  color:var(--prose-fg);
  font-size:1.02rem;
  line-height:1.75;
}

/* Page construite en sections du design system (/rankings/, /contact/…) :
   `.section` porte deja son propre rythme vertical, 4rem en mobile et 5.5rem
   au-dela de 768px. La respiration redactionnelle ci-dessus s'y AJOUTERAIT —
   9rem sous la nav et 10rem avant le pied de page. On l'annule, et ces pages
   retrouvent exactement le rythme de la home, qui n'a pas de .entry-content.

   Le contenu redactionnel pur (privacy, un post colle en HTML nu) n'a pas de
   .section : il garde la respiration, c'est elle qui le decolle de la nav. */
.entry-content:has(> .section){ padding-top:0;padding-bottom:0; }
.entry-content > :not([class]){
  max-width:var(--prose-max);
  margin-left:auto;
  margin-right:auto;
  padding-left:1rem;
  padding-right:1rem;
}
.entry-content > :not([class]):first-child{ margin-top:0; }
.entry-content > :not([class]):last-child{ margin-bottom:0; }

/* ------------------------------------------------------------
   TITRES
   scroll-margin-top compense la nav sticky : sans ca, une ancre
   (#faq, #rankings…) amene le titre sous la barre de navigation.
   ------------------------------------------------------------ */
.entry-content h1:not([class]),
.entry-content h2:not([class]),
.entry-content h3:not([class]),
.entry-content h4:not([class]),
.entry-content h5:not([class]),
.entry-content h6:not([class]){
  font-family:var(--font-display);
  color:var(--fg);
  line-height:1.2;
  letter-spacing:-.02em;
  scroll-margin-top:5rem;
}
.entry-content h1:not([class]){ font-size:clamp(1.9rem,4.5vw,2.75rem);margin:0 0 1.1rem;letter-spacing:-.03em; }
.entry-content h2:not([class]){ font-size:clamp(1.45rem,3vw,1.85rem);margin:2.75rem 0 .9rem; }
.entry-content h3:not([class]){ font-size:1.2rem;margin:2rem 0 .7rem; }
.entry-content h4:not([class]){ font-size:1.02rem;margin:1.6rem 0 .5rem; }
.entry-content h5:not([class]),
.entry-content h6:not([class]){
  font-size:.82rem;margin:1.5rem 0 .5rem;
  text-transform:uppercase;letter-spacing:.14em;color:var(--brand);
}

/* Filet degrade sous les h2, pour rythmer les longs articles */
.entry-content h2:not([class])::after{
  content:"";display:block;width:2.5rem;height:2px;margin-top:.7rem;
  border-radius:2px;background:var(--grad);
}

/* ------------------------------------------------------------
   PARAGRAPHES
   ------------------------------------------------------------ */
.entry-content p:not([class]){ margin:0 0 var(--prose-space); }

/* Chapo : premier paragraphe suivant directement le h1 */
.entry-content h1:not([class]) + p:not([class]){
  font-size:1.12rem;line-height:1.7;color:var(--prose-lead);margin-bottom:1.9rem;
}

.entry-content strong:not([class]),
.entry-content b:not([class]){ color:var(--fg);font-weight:600; }
.entry-content em:not([class]){ font-style:italic; }
.entry-content small:not([class]){ font-size:.85em;color:var(--fg-muted); }
.entry-content mark:not([class]){
  background:rgba(var(--brand-rgb),.22);color:var(--fg);
  padding:.1em .3em;border-radius:4px;
}
.entry-content abbr:not([class]){ text-decoration:underline dotted;cursor:help; }
.entry-content sup:not([class]),
.entry-content sub:not([class]){ font-size:.72em;line-height:0; }

/* ------------------------------------------------------------
   LISTES
   Le reset global (style.css) supprime puces et retraits :
   on les retablit uniquement pour le texte redactionnel.
   ------------------------------------------------------------ */
.entry-content ul:not([class]),
.entry-content ol:not([class]){ margin:0 0 var(--prose-space);padding-left:1.3rem; }
.entry-content ul:not([class]){ list-style:disc; }
.entry-content ol:not([class]){ list-style:decimal; }
.entry-content ul:not([class]) li::marker{ color:var(--brand); }
.entry-content ol:not([class]) li::marker{ color:var(--brand);font-weight:600; }
/* Le retrait de puce se decide sur la LISTE, pas sur le <li>.
   Un `li:not([class])` matchait aussi les puces de .atlas-pros / .atlas-cons /
   .atlas-points, dont les <li> n'ont pas de classe : avec (0,2,1) il battait le
   `.atlas-pros > li` (0,1,1) de review.css, ecrasait son padding-left:1.9rem,
   et la coche ::before en position absolue passait sous le premier caractere. */
.entry-content ul:not([class]) > li,
.entry-content ol:not([class]) > li{ margin:.4rem 0;padding-left:.2rem; }

/* Listes imbriquees : on annule la largeur de lecture heritee */
.entry-content li:not([class]) > ul:not([class]),
.entry-content li:not([class]) > ol:not([class]){
  margin:.4rem 0 .2rem;max-width:none;padding-left:1.2rem;
}
.entry-content li:not([class]) > ul:not([class]){ list-style:circle; }

.entry-content dl:not([class]){ margin:0 0 var(--prose-space); }
.entry-content dt:not([class]){ color:var(--fg);font-weight:600;margin-top:.9rem; }
.entry-content dd:not([class]){ margin:.25rem 0 0;padding-left:1rem;border-left:2px solid var(--border); }

/* ------------------------------------------------------------
   CITATIONS
   ------------------------------------------------------------ */
.entry-content blockquote:not([class]){
  margin:2rem auto;padding:1.15rem 1.35rem;
  border-left:3px solid var(--brand);
  border-radius:0 12px 12px 0;
  background:var(--card);
  color:var(--fg);font-size:1.03rem;
}
.entry-content blockquote:not([class]) p:not([class]):last-child{ margin-bottom:0; }
.entry-content blockquote:not([class]) cite{
  display:block;margin-top:.6rem;font-size:.82rem;font-style:normal;color:var(--fg-muted);
}

/* ------------------------------------------------------------
   MEDIAS
   ------------------------------------------------------------ */
.entry-content img:not([class]),
.entry-content video:not([class]){
  border-radius:14px;border:1px solid var(--border);margin:1.75rem auto;
}
.entry-content figure:not([class]){ margin:2rem auto; }
.entry-content figure:not([class]) img{
  border-radius:14px;border:1px solid var(--border);margin:0 auto;
}
.entry-content figcaption{
  margin-top:.6rem;font-size:.8rem;color:var(--fg-muted);text-align:center;line-height:1.5;
}
.entry-content iframe:not([class]){
  display:block;width:100%;aspect-ratio:16/9;height:auto;
  border:0;border-radius:14px;margin:1.75rem auto;
}

/* ------------------------------------------------------------
   CODE
   ------------------------------------------------------------ */
.entry-content code:not([class]){
  font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
  font-size:.86em;color:var(--brand-tint);
  background:rgba(255,255,255,.06);border:1px solid var(--border);
  padding:.12em .4em;border-radius:6px;
}
.entry-content pre:not([class]){
  margin:1.75rem auto;padding:1.1rem 1.25rem;
  background:var(--bg-2);border:1px solid var(--border);border-radius:12px;
  overflow-x:auto;font-size:.86rem;line-height:1.6;
}
.entry-content pre:not([class]) code{
  background:none;border:0;padding:0;color:var(--fg);font-size:inherit;
}

/* ------------------------------------------------------------
   TABLEAUX (comparatifs de prix, de fonctionnalites…)
   ------------------------------------------------------------ */
.entry-content table:not([class]){
  width:100%;margin:1.9rem auto;border-collapse:collapse;
  font-size:.9rem;background:var(--card);
  border:1px solid var(--border);border-radius:12px;overflow:hidden;
}
.entry-content table:not([class]) th,
.entry-content table:not([class]) td{
  padding:.75rem .9rem;text-align:left;border-bottom:1px solid var(--border);
}
.entry-content table:not([class]) thead th{
  font-family:var(--font-display);font-size:.78rem;font-weight:600;
  text-transform:uppercase;letter-spacing:.1em;color:var(--fg);
  background:rgba(var(--brand-rgb),.10);
}
.entry-content table:not([class]) tbody tr:last-child td{ border-bottom:0; }
.entry-content table:not([class]) tbody tr:hover{ background:rgba(255,255,255,.03); }

/* Sur mobile le tableau devient scrollable plutot que d'ecraser le texte */
@media(max-width:640px){
  .entry-content table:not([class]){ display:block;overflow-x:auto;white-space:nowrap; }
}

/* ------------------------------------------------------------
   DIVERS
   ------------------------------------------------------------ */
.entry-content hr:not([class]){
  margin:2.75rem auto;border:0;height:1px;
  background:linear-gradient(90deg,transparent,var(--border),transparent);
}
.entry-content details:not([class]){
  margin:0 auto var(--prose-space);padding:.9rem 1.1rem;
  border:1px solid var(--border);border-radius:12px;background:var(--card);
}
.entry-content details:not([class]) summary{
  cursor:pointer;font-family:var(--font-display);font-weight:600;color:var(--fg);
}
.entry-content details:not([class])[open] summary{ margin-bottom:.7rem; }

/* Accessibilite : focus clavier visible sur les liens du contenu */
.entry-content a:focus-visible{
  outline:2px solid var(--brand-2);outline-offset:2px;border-radius:3px;
}

/* ============================================================
   COMPATIBILITE BLOCS GUTENBERG

   Les blocs natifs sortent avec une classe (`wp-block-heading`,
   `wp-block-list`…) et echapperaient donc aux regles `:not([class])`
   ci-dessus. On leur applique ici la meme mise en forme, pour que
   le rendu soit identique qu'on colle du HTML brut ou qu'on utilise
   l'editeur. Ces classes sont propres a WordPress : aucun risque de
   collision avec le design system.
   ============================================================ */
.entry-content > .wp-block-heading,
.entry-content > .wp-block-list,
.entry-content > .wp-block-quote,
.entry-content > .wp-block-image,
.entry-content > .wp-block-code,
.entry-content > .wp-block-preformatted,
.entry-content > .wp-block-table,
.entry-content > .wp-block-separator,
.entry-content > .wp-block-details,
.entry-content > .wp-block-embed{
  max-width:var(--prose-max);
  margin-left:auto;
  margin-right:auto;
  padding-left:1rem;
  padding-right:1rem;
}

h1.wp-block-heading,
h2.wp-block-heading,
h3.wp-block-heading,
h4.wp-block-heading,
h5.wp-block-heading,
h6.wp-block-heading{
  font-family:var(--font-display);
  color:var(--fg);
  line-height:1.2;
  letter-spacing:-.02em;
  scroll-margin-top:5rem;
}
h1.wp-block-heading{ font-size:clamp(1.9rem,4.5vw,2.75rem);margin:0 0 1.1rem;letter-spacing:-.03em; }
h2.wp-block-heading{ font-size:clamp(1.45rem,3vw,1.85rem);margin:2.75rem 0 .9rem; }
h3.wp-block-heading{ font-size:1.2rem;margin:2rem 0 .7rem; }
h4.wp-block-heading{ font-size:1.02rem;margin:1.6rem 0 .5rem; }
h5.wp-block-heading,
h6.wp-block-heading{
  font-size:.82rem;margin:1.5rem 0 .5rem;
  text-transform:uppercase;letter-spacing:.14em;color:var(--brand);
}
h2.wp-block-heading::after{
  content:"";display:block;width:2.5rem;height:2px;margin-top:.7rem;
  border-radius:2px;background:var(--grad);
}

.entry-content ul.wp-block-list,
.entry-content ol.wp-block-list{ margin:0 0 var(--prose-space);padding-left:1.3rem; }
.entry-content ul.wp-block-list{ list-style:disc; }
.entry-content ol.wp-block-list{ list-style:decimal; }
.entry-content .wp-block-list li::marker{ color:var(--brand); }
.entry-content .wp-block-list li{ margin:.4rem 0;padding-left:.2rem; }
.entry-content .wp-block-list ul,
.entry-content .wp-block-list ol{ margin:.4rem 0 .2rem;padding-left:1.2rem;max-width:none;list-style:circle; }

.entry-content .wp-block-quote{
  padding:1.15rem 1.35rem;
  border-left:3px solid var(--brand);
  border-radius:0 12px 12px 0;
  background:var(--card);
  color:var(--fg);font-size:1.03rem;
}
.entry-content .wp-block-quote cite{
  display:block;margin-top:.6rem;font-size:.82rem;font-style:normal;color:var(--fg-muted);
}

.entry-content .wp-block-image img{
  border-radius:14px;border:1px solid var(--border);margin:0 auto;
}
.entry-content .wp-block-image figcaption,
.entry-content .wp-block-embed figcaption{
  margin-top:.6rem;font-size:.8rem;color:var(--fg-muted);text-align:center;line-height:1.5;
}

.entry-content .wp-block-code,
.entry-content .wp-block-preformatted{
  padding:1.1rem 1.25rem;
  background:var(--bg-2);border:1px solid var(--border);border-radius:12px;
  overflow-x:auto;font-size:.86rem;line-height:1.6;color:var(--fg);
}

.entry-content .wp-block-table table{
  width:100%;border-collapse:collapse;font-size:.9rem;background:var(--card);
  border:1px solid var(--border);border-radius:12px;overflow:hidden;
}
.entry-content .wp-block-table th,
.entry-content .wp-block-table td{
  padding:.75rem .9rem;text-align:left;border-bottom:1px solid var(--border);
}
.entry-content .wp-block-table thead th{
  font-family:var(--font-display);font-size:.78rem;font-weight:600;
  text-transform:uppercase;letter-spacing:.1em;color:var(--fg);
  background:rgba(var(--brand-rgb),.10);
}
.entry-content .wp-block-table tbody tr:last-child td{ border-bottom:0; }

.entry-content .wp-block-separator{
  border:0;height:1px;margin-top:2.75rem;margin-bottom:2.75rem;
  background:linear-gradient(90deg,transparent,var(--border),transparent);
}

.entry-content .wp-block-details{
  padding:.9rem 1.1rem;
  border:1px solid var(--border);border-radius:12px;background:var(--card);
}
.entry-content .wp-block-details summary{
  cursor:pointer;font-family:var(--font-display);font-weight:600;color:var(--fg);
}

/* Alignements Gutenberg : on laisse respirer les images larges */
.entry-content > .alignwide{ max-width:64rem;margin-left:auto;margin-right:auto; }
.entry-content > .alignfull{ max-width:none;padding-left:0;padding-right:0; }
