/* ---- feuille de la page / ---- */
.bande-programmes { background: var(--fond); padding: 1.6rem 0 .4rem; }
      .programmes { display: flex; flex-wrap: wrap; align-items: center; gap: 1.25rem 2.75rem; }
      .programmes-titre { margin: 0; font-family: var(--font-mono); font-size: .8rem; letter-spacing: .12em; text-transform: uppercase; color: var(--texte-2); }
      .programmes-liste { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; align-items: center; gap: 1.25rem 2.75rem; }
      .programmes-liste img { display: block; height: 56px; width: auto; }
      .pt-lien { display: inline-flex; flex-direction: column; line-height: 1.15; text-decoration: none; color: var(--encre-titre); padding-left: 1rem; border-left: 3px solid var(--accent); }
      .pt-statut { font-family: var(--font-mono); font-size: .72rem; letter-spacing: .1em; text-transform: uppercase; color: var(--texte-2); }
      .pt-nom { font-family: var(--font-titre); font-size: 1.35rem; font-weight: 500; letter-spacing: -.01em; }
      .pt-lien:hover .pt-nom { color: var(--accent-fonce); }
      /* Logos officiels fournis par Nicolas, tous a la meme hauteur (56 px, fichiers en 2x). */
      .pt-logo { display: block; }
      .programmes-liste img.pt-h40 { height: 40px; } /* logo OpenAI tres allonge, hauteur optique des autres */
      @media (max-width: 640px) {
        .programmes-titre { width: 100%; }
        .programmes-liste { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1rem; align-items: center; width: 100%; }
        .programmes-liste li { display: flex; justify-content: center; }
        .programmes-liste li.pt-large { grid-column: 1 / -1; }
        .programmes-liste img { height: auto !important; max-height: 40px; max-width: 100%; }
        .pt-nom { font-size: 1.15rem; }
      }

/* ---- feuille de la page / ---- */
.bande-clients { background: var(--fond); padding: 1.4rem 0 1rem; }
      .clients-logos { display: flex; flex-wrap: wrap; align-items: center; gap: 1.25rem 2.75rem; }
      .clients-titre { margin: 0; font-family: var(--font-mono); font-size: .8rem; letter-spacing: .12em; text-transform: uppercase; color: var(--texte-2); }
      .clients-liste { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; align-items: center; gap: 1.1rem 2.5rem; }
      /* Monochrome pour que treize chartes ne se battent pas ; couleurs au survol. */
      .clients-liste img { display: block; width: auto; filter: grayscale(1); opacity: .7; transition: filter .2s, opacity .2s; }
      .clients-liste li:hover img { filter: none; opacity: 1; }
      @media (max-width: 640px) {
        .clients-titre { width: 100%; }
        .clients-liste { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 1.4rem 1rem; align-items: center; width: 100%; }
        .clients-liste li { display: flex; justify-content: center; }
        .clients-liste img { width: auto; height: auto; max-width: 100%; max-height: calc(var(--h) * .9); }
      }

/* ---- feuille de la page / ---- */
.liste-stacks { display: grid; gap: 1.1rem; }
    /* 4,8 rem : la colonne etait taillee pour « IA » et « Cloud », et
       « Partenaire » venait buter contre sa pastille. */
    .groupe-stacks { display: grid; grid-template-columns: 4.8rem 1fr; gap: 0 0.9rem; align-items: start; }
    .stacks-label { font-size: 0.82rem; font-weight: 500; color: var(--texte-2); padding-top: 0.45rem; }
    .stacks-puces { display: flex; flex-wrap: wrap; gap: 0.6rem; }
    .certifs { grid-column: 1 / -1; margin-top: var(--pas-3); padding-top: var(--pas-3);
      border-top: 1px solid var(--bord); }
    .certifs-titre { margin: 0 0 1.5rem; font-size: 1.05rem; font-weight: 500; color: var(--encre); }
    /* 2 fr / 1 fr : Anthropic tient sur deux colonnes, OpenAI sur une, et les
       deux groupes finissent sur deux rangs, donc a la meme hauteur. */
    .certifs-groupes { display: grid; grid-template-columns: minmax(0, 2fr) minmax(0, 1fr);
      gap: 1.5rem; align-items: stretch; }
    .certif-groupe { background: var(--fond); border: 1px solid var(--bord);
      border-radius: var(--r-carte-l); padding: 1.5rem 1.6rem 1.7rem; }
    .certif-groupe-logo { display: block; height: 15px; width: auto;
      margin: 0 0 1.25rem; padding-bottom: 1.1rem; box-sizing: content-box;
      border-bottom: 1px solid var(--bord); opacity: 0.9; }
    /* Les lettres du logo OpenAI n'occupent qu'environ 55 % de sa hauteur. */
    .certif-groupe-logo-openai { height: 27px; }
    .liste-certifs { list-style: none; margin: 0; padding: 0; display: grid;
      grid-template-columns: repeat(auto-fit, minmax(15rem, 1fr)); gap: 1.4rem 2rem; }
    .liste-certifs li { display: grid; gap: 0.35rem; align-content: start; }
    .liste-certifs h3 { margin: 0; font-size: 1rem; font-weight: 500; line-height: 1.35;
      color: var(--encre-titre); }
    .liste-certifs p { margin: 0; font-size: 0.9rem; line-height: 1.55; color: var(--texte-2); }
    @media (max-width: 900px) {
      .certifs-groupes { grid-template-columns: 1fr; }
    }
