/*
 * CSS additionnel du site (hors export Framer) :
 * transitions d'apparition, ticker, menu mobile.
 */

/* ---------- Animations d'apparition ---------- */
[data-drz-reveal] {
    transition: opacity 0.7s cubic-bezier(0.27, 0, 0.51, 1), transform 0.7s cubic-bezier(0.27, 0, 0.51, 1);
}
[data-drz-reveal].drz-visible {
    opacity: 1 !important;
    transform: none !important;
}
@media (prefers-reduced-motion: reduce) {
    [data-drz-reveal] {
        transition: none;
        opacity: 1 !important;
        transform: none !important;
    }
}

/* ---------- Ticker de logos ---------- */
[data-drz-ticker].drz-visible {
    opacity: 1 !important;
}
[data-drz-ticker].drz-visible:not(.drz-ticker-run) {
    transform: none !important;
}
[data-drz-ticker].drz-ticker-run {
    animation: drz-marquee 10s linear infinite;
    width: max-content !important;
}
@keyframes drz-marquee {
    from { transform: translateX(0); }
    to   { transform: translateX(-33.3333%); }
}
@media (prefers-reduced-motion: reduce) {
    [data-drz-ticker].drz-ticker-run { animation: none; }
}

/* ---------- Accordéons Talks ---------- */
.drz-talk-desc {
    width: 100%;
    padding-top: 16px;
}
.drz-talk-desc p,
.drz-talk-desc ul,
.drz-talk-desc > div {
    font-family: "Satoshi", "Satoshi Placeholder", sans-serif;
    font-size: 14px;
    line-height: 1.6;
    color: var(--token-54190aea-d1b3-4689-b042-9d10e13e24af, rgb(15, 15, 15));
    margin-bottom: 10px;
}
.drz-talk-desc > div p {
    font-size: 14px;
    margin-bottom: 10px;
}
.drz-talk-desc ul {
    padding-left: 20px;
}
.framer-3t19dz {
    cursor: pointer;
}
.framer-3t19dz .framer-18t8f9p {
    transition: transform 0.3s ease;
}
.framer-3t19dz.drz-open .framer-18t8f9p {
    transform: rotate(180deg);
}

/* ---------- Section Conférences (page Talks) ---------- */
.drz-conf-section {
    max-width: 1200px;
    margin: 0 auto;
    padding: 0 48px 96px;
    font-family: "Satoshi", "Satoshi Placeholder", sans-serif;
}
.drz-conf-toolbar {
    margin-bottom: 40px;
}
.drz-conf-search {
    width: 100%;
    max-width: 520px;
    padding: 14px 18px;
    font: inherit;
    font-size: 15px;
    color: rgb(15, 15, 15);
    background: var(--token-6843a865-763e-4783-a437-1200a4c6b7ab, rgb(250, 250, 250));
    border: 1px solid rgb(232, 232, 232);
    border-radius: 8px;
    outline: none;
    transition: border-color 0.2s ease;
}
.drz-conf-search:focus {
    border-color: rgb(15, 15, 15);
    background: #fff;
}
.drz-conf-filters {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    margin-top: 18px;
}
.drz-conf-pill {
    font-family: inherit;
    font-size: 12px;
    line-height: 1;
    padding: 7px 12px;
    border-radius: 4px;
    color: rgb(15, 15, 15);
    background: var(--token-6843a865-763e-4783-a437-1200a4c6b7ab, rgb(250, 250, 250));
    border: 1px solid rgb(232, 232, 232);
    cursor: pointer;
    transition: background 0.2s ease, border-color 0.2s ease;
}
.drz-conf-pill:hover {
    border-color: rgb(15, 15, 15);
}
.drz-conf-pill.is-active {
    background: var(--token-8e02c278-bef3-4ec2-b2a8-df555cbd1b45, rgb(247, 250, 190));
    border-color: rgb(15, 15, 15);
}
.drz-conf-count {
    margin-top: 16px;
    font-size: 13px;
    color: rgba(15, 15, 15, 0.55);
}
.drz-conf-grid {
    display: flex;
    flex-direction: column;
    gap: 24px;
}
.drz-conf-card {
    display: flex;
    align-items: flex-start;
    gap: 24px;
    background: var(--token-6843a865-763e-4783-a437-1200a4c6b7ab, rgb(250, 250, 250));
    border-radius: 12px;
    padding: 24px;
    overflow: hidden;
}
.drz-conf-card[hidden] {
    display: none;
}
.drz-conf-img {
    flex-shrink: 0;
    width: 520px;
    aspect-ratio: 16 / 9;
    border-radius: 8px;
    overflow: hidden;
    background: var(--token-b0722cab-e282-4115-b20c-4d3f13899e94, rgb(227, 220, 207));
}
.drz-conf-img img {
    width: 100%;
    height: 100%;
    object-fit: contain;
    transition: transform 0.35s cubic-bezier(0.27, 0, 0.51, 1);
}
.drz-conf-card:hover .drz-conf-img img {
    transform: scale(1.03);
}
.drz-conf-body {
    display: flex;
    flex-direction: column;
    flex: 1;
    min-width: 0;
}
.drz-conf-tags {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
    margin-bottom: 12px;
}
.drz-conf-tag {
    font-size: 12px;
    line-height: 1;
    padding: 6px 10px;
    border-radius: 4px;
    color: rgb(15, 15, 15);
    background: var(--token-bb40f6f2-5c1e-4450-b0b5-3f011463cf27, rgb(215, 245, 248));
}
.drz-conf-body h3 {
    margin-bottom: 14px;
}
.drz-conf-desc p {
    font-size: 14px;
    line-height: 1.6;
    color: rgb(15, 15, 15);
    margin-bottom: 10px;
}
.drz-conf-empty {
    margin-top: 32px;
    font-size: 15px;
    color: rgba(15, 15, 15, 0.6);
}
@media (min-width: 810px) and (max-width: 1199.98px) {
    .drz-conf-img {
        width: 320px;
    }
}
@media (max-width: 809.98px) {
    .drz-conf-section {
        padding: 0 24px 64px;
    }
    .drz-conf-card {
        flex-direction: column;
        padding: 20px;
    }
    .drz-conf-img {
        width: 100%;
    }
}

/* ---------- Bascule desktop/tablette/mobile de la nav (et autres composants
   Framer réutilisant le même mécanisme) ---------- */
/* Ces classes hidden-* pilotent quelle variante (desktop/tablette/mobile) du
   nav (et d'autres blocs SSR-variant partagés) s'affiche selon la largeur de
   viewport. Le générateur Framer les redéfinit dans le CSS de CHAQUE page au
   lieu de site.css — donc toute page ajoutée à la main (pas exportée par
   Framer) sans son propre fichier assets/css/pages/<locale>-<slug>.css
   copiant ces règles voit LES TROIS variantes du nav superposées en même
   temps (bug rencontré sur /portfolio). On les définit ici une fois pour
   toutes pour que ce soit robuste peu importe la page. */
@media (min-width: 1200px) {
    .hidden-a1vwqw, .hidden-9jza5 { display: none !important; }
}
@media (min-width: 810px) and (max-width: 1199.98px) {
    .hidden-qd4a4c, .hidden-10bfaa4 { display: none !important; }
}
@media (max-width: 809.98px) {
    .hidden-1oo5vw1, .hidden-hbbylz { display: none !important; }
}

/* ---------- Titres de page ajoutés à la main ---------- */
/* La classe `.framer-styles-preset-1c3rpv4` ne fixe QUE des variables CSS
   (--framer-font-size etc.) ; la traduction en vraies propriétés se fait
   via des règles Framer scopées à `[data-framer-component-type=Text]`
   (wrapper que les pages exportées ont et qu'une page écrite à la main
   n'a pas) — d'où un h1 qui retombe à 16px par défaut du navigateur sur
   /portfolio, /ai-books, /actu. Plutôt que de reproduire ce wrapper
   fragile, on fixe les valeurs en dur ici (mesurées sur le h1 "Conférences"
   de /talks : 48px/400/Satoshi) et on les applique à ces pages.
   Bug repéré/à corriger ailleurs : toute nouvelle page à la main avec un
   h1 `framer-styles-preset-*` aura le même souci — utiliser cette classe
   à la place. */
.drz-page-title {
    font-family: "Satoshi", "Satoshi Placeholder", sans-serif !important;
    font-size: 48px !important;
    font-weight: 400 !important;
    letter-spacing: -0.02em !important;
    line-height: 1.2em !important;
    color: rgb(15, 15, 15) !important;
}
@media (max-width: 809.98px) {
    .drz-page-title {
        font-size: 32px !important;
    }
}
.drz-hero-heading {
    font-size: 27px !important;
    line-height: 1.25em !important;
}
@media (max-width: 809.98px) {
    .drz-hero-heading {
        font-size: 22px !important;
    }
}

/* ---------- Dropdown « Ressources » dans la nav ---------- */
.drz-nav-dropdown {
    position: relative;
}
.drz-nav-dropdown-toggle {
    display: flex;
    align-items: center;
    gap: 6px;
    font-family: "Satoshi", "Satoshi Placeholder", sans-serif;
    font-size: 18px;
    font-weight: 500;
    line-height: 28.8px;
    color: rgb(15, 15, 15);
    background: none;
    border: none;
    cursor: pointer;
    padding: 0;
}
.drz-nav-dropdown-toggle svg {
    transition: transform 0.2s ease;
}
.drz-nav-dropdown-toggle[aria-expanded="true"] svg {
    transform: rotate(180deg);
}
.drz-nav-dropdown-menu {
    display: none;
    position: absolute;
    top: calc(100% + 14px);
    left: 50%;
    transform: translateX(-50%);
    flex-direction: column;
    min-width: 180px;
    background: #fff;
    border-radius: 8px;
    box-shadow: 0 12px 32px rgba(0, 0, 0, 0.14);
    padding: 8px;
    z-index: 20;
}
.drz-nav-dropdown-menu.is-open {
    display: flex;
}
.drz-nav-dropdown-menu a {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 8px 10px;
    border-radius: 6px;
    font-size: 14px;
    color: rgb(15, 15, 15);
    text-decoration: none;
    white-space: nowrap;
}
.drz-nav-dropdown-menu a:hover {
    background: var(--token-bb40f6f2-5c1e-4450-b0b5-3f011463cf27, rgb(215, 245, 248));
}
.drz-nav-dropdown-menu img {
    width: 20px;
    height: 20px;
    object-fit: contain;
    border-radius: 4px;
    flex-shrink: 0;
}
/* Variante mobile : toujours dépliée, pas de bouton toggle */
.drz-nav-dropdown-mobile {
    display: flex;
    flex-direction: column;
    gap: 4px;
}
.drz-nav-dropdown-label {
    font-family: "Satoshi", "Satoshi Placeholder", sans-serif;
    font-size: 13px;
    color: rgba(15, 15, 15, 0.5);
    margin: 12px 0 0;
}
.drz-nav-dropdown-mobile a {
    display: flex;
    align-items: center;
    gap: 10px;
    font-family: "Satoshi", "Satoshi Placeholder", sans-serif;
    font-size: 24px;
    font-weight: 400;
    line-height: 33.6px;
    color: rgb(15, 15, 15);
    text-decoration: none;
    padding: 4px 0;
}
.drz-nav-dropdown-mobile img {
    width: 20px;
    height: 20px;
    object-fit: contain;
    border-radius: 4px;
}

/* ---------- Bascule de langue FR/EN dans la nav ---------- */
.drz-lang-toggle {
    display: flex;
    align-items: center;
    gap: 6px;
    margin-left: 16px;
    font-size: 18px;
    line-height: 1;
}
.drz-lang-link {
    opacity: 0.45;
    text-decoration: none;
    transition: opacity 0.2s ease;
}
.drz-lang-link:hover {
    opacity: 1;
}
.drz-lang-current {
    opacity: 1;
}
nav.drz-nav-open .drz-lang-toggle {
    margin: 16px 0 0;
}

/* ---------- Cartes vidéo /talks : la colonne de gauche (ex-"(01)") est en
   width:min-content dans le CSS Framer, calibrée pour 4 caractères ; une
   vraie date plus longue y retourne à la ligne lettre par lettre. */
.framer-1kvzra5, .framer-hdwi8h {
    width: max-content !important;
    white-space: nowrap;
}

/* ---------- Nav desktop : la liste de liens a une largeur figée (400px)
   héritée du design Framer d'origine (5 liens) ; avec 6 liens (+ Portfolio)
   son contenu déborde par-dessus le bouton Contact. On la laisse s'ajuster
   à son propre contenu et on ajoute un peu de respiration avant Contact. */
@media (min-width: 810px) {
    .framer-1p1fuhq .framer-1jcg1wh {
        width: auto;
        max-width: none;
        margin-right: 24px;
    }
    /* Le dernier lien (Blog) utilise flex:1 0 0 pour se dilater dans l'espace
       restant du conteneur figé à 400px d'origine ; sans cette largeur figée
       (voir règle ci-dessus) il n'a plus d'espace libre à occuper et retombe
       à sa base flex de 1px. On le repasse en taille naturelle comme les
       autres liens. */
    .framer-1p1fuhq .framer-400upe {
        flex: 0 0 auto;
        width: auto;
    }
}

/* ---------- Carrousel « Ils m'ont fait confiance » ---------- */
.drz-folio-section {
    max-width: 1200px;
    margin: 0 auto;
    padding: 96px 48px;
    font-family: "Satoshi", "Satoshi Placeholder", sans-serif;
}
.drz-folio-head {
    display: flex;
    align-items: flex-end;
    justify-content: space-between;
    gap: 24px;
    margin-bottom: 32px;
}
.drz-folio-pill {
    display: inline-block;
    font-size: 12px !important;
    line-height: 1;
    padding: 6px 10px;
    border-radius: 4px;
    background: var(--token-bb40f6f2-5c1e-4450-b0b5-3f011463cf27, rgb(215, 245, 248));
    color: rgb(15, 15, 15);
    margin-bottom: 14px;
}
.drz-folio-heading {
    font-size: 32px !important;
    font-weight: 500;
    color: rgb(15, 15, 15);
}
.drz-folio-arrows {
    display: flex;
    gap: 8px;
}
.drz-folio-arrow {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 40px;
    height: 40px;
    border-radius: 8px;
    border: none;
    cursor: pointer;
    color: rgb(15, 15, 15);
    background: var(--token-bb40f6f2-5c1e-4450-b0b5-3f011463cf27, rgb(215, 245, 248));
    transition: transform 0.2s ease, background 0.2s ease;
}
.drz-folio-arrow:hover {
    transform: translateY(-2px);
}
.drz-folio-viewport {
    overflow: hidden;
    border-radius: 12px;
    transition: height 0.35s ease;
}
.drz-folio-track {
    display: flex;
    align-items: flex-start;
    transition: transform 0.55s cubic-bezier(0.27, 0, 0.51, 1);
}
@media (prefers-reduced-motion: reduce) {
    .drz-folio-track { transition: none; }
}
.drz-folio-slide {
    flex: 0 0 100%;
    display: grid;
    grid-template-columns: 1.1fr 0.9fr;
    gap: 24px;
    box-sizing: border-box;
}
.drz-folio-card {
    background: var(--token-b0722cab-e282-4115-b20c-4d3f13899e94, rgb(227, 220, 207));
    border-radius: 12px;
    padding: 40px 44px;
    display: flex;
    flex-direction: column;
}
.drz-folio-paper {
    font-size: 13px !important;
    letter-spacing: 0.04em;
    margin-bottom: 18px;
    color: rgba(15, 15, 15, 0.7);
}
.drz-folio-quote {
    font-size: 22px !important;
    line-height: 1.35;
    color: rgb(15, 15, 15);
    margin: 0 0 24px;
}
.drz-folio-attrib {
    display: flex;
    align-items: center;
    gap: 14px;
    margin-bottom: 24px;
}
.drz-folio-attrib p {
    font-size: 13px !important;
    color: rgba(15, 15, 15, 0.7);
}
.drz-folio-logo {
    height: 34px;
    width: auto;
    max-width: 110px;
    object-fit: contain;
}
.drz-folio-body {
    margin-top: auto;
    font-size: 14px;
    line-height: 1.6;
    color: rgb(15, 15, 15);
}
.drz-folio-body p {
    font-size: 14px !important;
    line-height: 1.6;
    color: rgb(15, 15, 15);
    margin-bottom: 12px;
}
.drz-folio-body ul {
    font-size: 14px;
    line-height: 1.6;
    margin: 0 0 12px;
    padding-left: 20px;
}
.drz-folio-body a {
    color: inherit;
    text-decoration: underline;
}
.drz-folio-photo {
    border-radius: 12px;
    overflow: hidden;
    background: var(--token-6843a865-763e-4783-a437-1200a4c6b7ab, rgb(250, 250, 250));
    min-height: 320px;
    display: flex;
    align-items: center;
    justify-content: center;
}
.drz-folio-photo img {
    /* La plupart des photos sont carrées : on les affiche entières (pas de
       crop), le fond de la case sert de "letterbox" pour celles qui ne le
       sont pas tout à fait. */
    width: 100%;
    height: 100%;
    object-fit: contain;
}
.drz-folio-photo--logo img {
    /* Pas de photo pour ce témoignage : le logo du client sert de visuel,
       en retrait pour ne pas paraître écrasé/pixelisé. */
    width: 60%;
    height: 60%;
    object-fit: contain;
}
.drz-folio-footer {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 24px;
    margin-top: 28px;
}
.drz-folio-dots {
    display: flex;
    gap: 8px;
}
.drz-folio-dot {
    width: 8px;
    height: 8px;
    padding: 0;
    border-radius: 50%;
    border: none;
    cursor: pointer;
    background: rgb(215, 215, 210);
    transition: background 0.2s ease, transform 0.2s ease;
}
.drz-folio-dot.is-active {
    background: rgb(15, 15, 15);
    transform: scale(1.2);
}
.drz-folio-cta,
a.drz-folio-cta.framer-text {
    display: inline-block;
    padding: 14px 22px !important;
    font-size: 15px !important;
    background: var(--token-8e02c278-bef3-4ec2-b2a8-df555cbd1b45, rgb(247, 250, 190));
    color: rgb(15, 15, 15);
    border-radius: 8px;
    text-decoration: none;
    white-space: nowrap;
    transition: transform 0.25s cubic-bezier(0.27, 0, 0.51, 1);
}
.drz-folio-cta:hover {
    transform: translateY(-2px);
}
@media (max-width: 809.98px) {
    .drz-folio-section {
        padding: 64px 24px;
    }
    .drz-folio-slide {
        grid-template-columns: 1fr;
    }
    .drz-folio-card {
        padding: 28px 24px;
    }
    .drz-folio-photo {
        min-height: 220px;
        max-height: 320px;
    }
    .drz-folio-footer {
        flex-direction: column;
        align-items: flex-start;
    }
}

/* ---------- Publications (page Blog) ---------- */
.drz-pub-section {
    max-width: 1200px;
    margin: 0 auto;
    padding: 32px 48px 96px;
    font-family: "Satoshi", "Satoshi Placeholder", sans-serif;
    display: flex;
    flex-direction: column;
    gap: 72px;
}
.drz-pub-head {
    display: flex;
    align-items: flex-end;
    justify-content: space-between;
    gap: 24px;
    margin-bottom: 28px;
}
.drz-pub-heading {
    font-size: 28px !important;
    font-weight: 500;
    color: rgb(15, 15, 15);
    margin-bottom: 6px;
}
.drz-pub-head-label {
    font-size: 13px !important;
    letter-spacing: 0.05em;
    white-space: nowrap;
    color: rgb(15, 15, 15);
}
.drz-pub-list {
    display: flex;
    flex-direction: column;
    gap: 16px;
}
.drz-pub-row {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 28px;
    background: var(--token-6843a865-763e-4783-a437-1200a4c6b7ab, rgb(250, 250, 250));
    border-radius: 12px;
    padding: 28px 32px;
}
.drz-pub-content h3 {
    margin-bottom: 8px;
}
.drz-pub-content h3 a {
    color: inherit;
    text-decoration: none;
}
.drz-pub-content h3 a:hover {
    text-decoration: underline;
}
.drz-pub-venue {
    font-size: 13px !important;
    line-height: 1.5;
    color: rgba(15, 15, 15, 0.6);
    margin-bottom: 12px;
}
.drz-pub-venue a {
    color: inherit;
    text-decoration: underline;
}
.drz-pub-desc {
    font-size: 14px !important;
    line-height: 1.6;
    color: rgb(15, 15, 15);
    max-width: 720px;
    margin-bottom: 14px;
}
.drz-pub-link {
    display: inline-block;
    font-size: 13px !important;
    padding: 9px 14px;
    border-radius: 6px;
    background: var(--token-bb40f6f2-5c1e-4450-b0b5-3f011463cf27, rgb(215, 245, 248));
    color: rgb(15, 15, 15);
    text-decoration: none;
    transition: transform 0.2s ease;
}
.drz-pub-link:hover {
    transform: translateY(-2px);
}
.drz-pub-thumb {
    flex-shrink: 0;
    width: 132px;
}
.drz-pub-thumb img {
    width: 100%;
    aspect-ratio: 1 / 1;
    object-fit: cover;
    border-radius: 8px;
}
@media (max-width: 809.98px) {
    .drz-pub-section {
        padding: 16px 24px 64px;
        gap: 56px;
    }
    .drz-pub-row {
        flex-direction: column-reverse;
        padding: 24px;
    }
    .drz-pub-thumb {
        width: 96px;
    }
}

/* ---------- Conférences passées (bas de page Blog) ---------- */
.drz-past-talks {
    max-width: 1200px;
    margin: 0 auto;
    padding: 0 48px 96px;
    font-family: "Satoshi", "Satoshi Placeholder", sans-serif;
}
.drz-past-talks-head {
    margin-bottom: 24px;
    padding-top: 32px;
    border-top: 1px solid rgb(232, 232, 232);
}
.drz-past-talks-head h2 {
    font-size: 28px !important;
    font-weight: 500;
    color: rgb(15, 15, 15);
    margin-bottom: 6px;
}
@media (max-width: 809.98px) {
    .drz-past-talks {
        padding: 0 24px 64px;
    }
}

/* ---------- Section Programme / Bootcamp (page Enterprise AI) ---------- */
.drz-boot-section {
    max-width: 1200px;
    margin: 0 auto;
    padding: 32px 48px 96px;
    font-family: "Satoshi", "Satoshi Placeholder", sans-serif;
    display: flex;
    flex-direction: column;
    gap: 88px;
}
.drz-boot-thesis {
    background: rgb(15, 15, 15);
    border-radius: 12px;
    padding: 64px 56px;
    color: rgb(250, 250, 250);
}
.drz-boot-quote {
    font-size: 30px !important;
    line-height: 1.3;
    margin: 0 0 28px;
    color: var(--token-8e02c278-bef3-4ec2-b2a8-df555cbd1b45, rgb(247, 250, 190));
    max-width: 820px;
}
.drz-boot-body {
    font-size: 15px !important;
    line-height: 1.7;
    max-width: 820px;
    margin-bottom: 16px;
    color: rgba(250, 250, 250, 0.85);
}
.drz-boot-motto {
    font-size: 14px !important;
    font-style: italic;
    margin-top: 24px;
    color: rgba(250, 250, 250, 0.6);
}
.drz-boot-stats {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
    gap: 16px;
}
.drz-boot-stat {
    background: var(--token-6843a865-763e-4783-a437-1200a4c6b7ab, rgb(250, 250, 250));
    border-radius: 12px;
    padding: 24px;
    text-align: center;
}
.drz-boot-stat-value {
    font-size: 32px !important;
    color: rgb(15, 15, 15);
    margin-bottom: 4px;
}
.drz-boot-stat-label {
    font-size: 12.5px !important;
    line-height: 1.4;
    color: rgba(15, 15, 15, 0.6);
}
.drz-boot-head {
    display: flex;
    align-items: flex-end;
    justify-content: space-between;
    gap: 24px;
    margin-bottom: 32px;
}
.drz-boot-heading {
    font-size: 28px !important;
    font-weight: 500;
    color: rgb(15, 15, 15);
    margin-bottom: 8px;
}
.drz-boot-intro {
    font-size: 14px !important;
    line-height: 1.6;
    max-width: 640px;
    color: rgba(15, 15, 15, 0.65);
}
.drz-boot-head-label {
    font-size: 13px !important;
    letter-spacing: 0.05em;
    white-space: nowrap;
    color: rgb(15, 15, 15);
}
.drz-boot-parts {
    display: flex;
    flex-direction: column;
    gap: 16px;
}
.drz-boot-part {
    display: flex;
    gap: 24px;
    background: var(--token-6843a865-763e-4783-a437-1200a4c6b7ab, rgb(250, 250, 250));
    border-radius: 12px;
    padding: 28px 32px;
}
.drz-boot-part-num {
    font-size: 13px !important;
    color: rgba(15, 15, 15, 0.45);
    min-width: 40px;
}
.drz-boot-part-main {
    flex: 1;
}
.drz-boot-part-main h3 {
    margin-bottom: 6px;
}
.drz-boot-part-q {
    font-size: 14px !important;
    font-style: italic;
    color: rgba(15, 15, 15, 0.6);
    margin-bottom: 14px;
}
.drz-boot-points ul {
    list-style: none;
    padding: 0;
    margin: 0;
    display: flex;
    flex-direction: column;
    gap: 10px;
}
.drz-boot-points li {
    font-size: 14px !important;
    line-height: 1.6;
    color: rgb(15, 15, 15);
    padding-left: 18px;
    position: relative;
}
.drz-boot-points li::before {
    content: "·";
    position: absolute;
    left: 2px;
    font-weight: 700;
}
.drz-boot-capstone {
    margin-top: 24px;
    background: var(--token-b0722cab-e282-4115-b20c-4d3f13899e94, rgb(227, 220, 207));
    border-radius: 12px;
    padding: 36px 40px;
}
.drz-boot-capstone h3 {
    margin-bottom: 12px;
}
.drz-boot-capstone p {
    font-size: 14px !important;
    line-height: 1.65;
    max-width: 820px;
    color: rgb(15, 15, 15);
}
.drz-boot-objectives {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(250px, 1fr));
    gap: 16px;
}
.drz-boot-objective {
    background: var(--token-6843a865-763e-4783-a437-1200a4c6b7ab, rgb(250, 250, 250));
    border-radius: 12px;
    padding: 24px;
}
.drz-boot-verb {
    font-size: 18px !important;
    color: rgb(15, 15, 15);
    margin-bottom: 8px;
}
.drz-boot-objdesc {
    font-size: 13.5px !important;
    line-height: 1.55;
    color: rgba(15, 15, 15, 0.7);
}
.drz-boot-workshops {
    display: flex;
    flex-direction: column;
    gap: 10px;
}
.drz-boot-workshop {
    display: flex;
    align-items: center;
    gap: 16px;
    background: var(--token-6843a865-763e-4783-a437-1200a4c6b7ab, rgb(250, 250, 250));
    border-radius: 10px;
    padding: 16px 20px;
}
.drz-boot-workshop p {
    font-size: 14px !important;
    color: rgb(15, 15, 15);
}
.drz-boot-wcode {
    font-size: 12px !important;
    padding: 6px 10px;
    border-radius: 4px;
    background: var(--token-bb40f6f2-5c1e-4450-b0b5-3f011463cf27, rgb(215, 245, 248));
    color: rgb(15, 15, 15);
    flex-shrink: 0;
}
.drz-boot-cta-row {
    margin-top: 32px;
}
@media (max-width: 809.98px) {
    .drz-boot-section {
        padding: 16px 24px 64px;
        gap: 56px;
    }
    .drz-boot-thesis {
        padding: 40px 28px;
    }
    .drz-boot-quote {
        font-size: 24px !important;
    }
    .drz-boot-part {
        padding: 22px;
        gap: 14px;
    }
}

/* ---------- Page Actu / News ---------- */
.drz-news-page {
    max-width: 1200px;
    margin: 0 auto;
    padding: 160px 48px 120px;
    font-family: "Satoshi", "Satoshi Placeholder", sans-serif;
}
.drz-news-hero {
    display: flex;
    align-items: flex-end;
    justify-content: space-between;
    gap: 32px;
    margin-bottom: 56px;
}
.drz-news-intro {
    max-width: 560px;
    margin-top: 24px;
}
.drz-news-hero-label p {
    font-size: 14px;
    letter-spacing: 0.05em;
    white-space: nowrap;
    color: rgb(15, 15, 15);
}
.drz-news-grid {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 24px;
}
.drz-news-card {
    display: flex;
    flex-direction: column;
    background: var(--token-6843a865-763e-4783-a437-1200a4c6b7ab, rgb(250, 250, 250));
    border-radius: 12px;
    overflow: hidden;
}
.drz-news-card-featured {
    grid-column: 1 / -1;
    flex-direction: row;
}
.drz-news-card-featured .drz-news-img {
    flex: 0 0 44%;
    aspect-ratio: auto;
}
.drz-news-img {
    display: block;
    aspect-ratio: 1.91 / 1;
    overflow: hidden;
    background: var(--token-b0722cab-e282-4115-b20c-4d3f13899e94, rgb(227, 220, 207));
}
.drz-news-img img {
    width: 100%;
    height: 100%;
    object-fit: contain;
    transition: transform 0.35s cubic-bezier(0.27, 0, 0.51, 1);
}
.drz-news-card:hover .drz-news-img img {
    transform: scale(1.03);
}
.drz-news-body {
    display: flex;
    flex-direction: column;
    flex: 1;
    padding: 24px 28px 28px;
}
.drz-news-meta {
    display: flex;
    align-items: center;
    gap: 10px;
    font-size: 13px !important;
    color: rgba(15, 15, 15, 0.55);
    margin-bottom: 12px;
}
.drz-news-pill {
    display: inline-block;
    width: 22px;
    height: 22px;
    border-radius: 4px;
}
.drz-news-body h3 {
    margin-bottom: 10px;
}
.drz-news-body h3 a {
    color: inherit;
    text-decoration: none;
}
.drz-news-body h3 a:hover {
    text-decoration: underline;
}
.drz-news-event {
    font-size: 13.5px !important;
    color: rgb(15, 15, 15);
    background: var(--token-8e02c278-bef3-4ec2-b2a8-df555cbd1b45, rgb(247, 250, 190));
    border-radius: 6px;
    padding: 8px 12px;
    width: max-content;
    max-width: 100%;
    margin-bottom: 12px;
}
.drz-news-excerpt {
    font-size: 14px !important;
    line-height: 1.6;
    color: rgb(15, 15, 15);
    margin-bottom: 18px;
}
.drz-news-links {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
    margin-top: auto;
}
.drz-news-link {
    display: inline-block;
    font-size: 13px !important;
    padding: 9px 14px;
    border-radius: 6px;
    background: var(--token-bb40f6f2-5c1e-4450-b0b5-3f011463cf27, rgb(215, 245, 248));
    color: rgb(15, 15, 15);
    text-decoration: none;
    transition: transform 0.2s ease;
}
.drz-news-link:hover {
    transform: translateY(-2px);
}
.drz-news-link-alt {
    background: var(--token-b0722cab-e282-4115-b20c-4d3f13899e94, rgb(227, 220, 207));
}
.drz-news-follow {
    margin-top: 48px;
}
@media (max-width: 809.98px) {
    .drz-news-page {
        padding: 130px 24px 80px;
    }
    .drz-news-hero {
        flex-direction: column;
        align-items: flex-start;
        margin-bottom: 36px;
    }
    .drz-news-grid {
        grid-template-columns: 1fr;
    }
    .drz-news-card-featured {
        flex-direction: column;
    }
    .drz-news-card-featured .drz-news-img {
        flex: none;
        aspect-ratio: 1.91 / 1;
    }
}

/* ---------- CTA vers la bibliothèque AI Books ---------- */
.drz-library-cta {
    display: flex;
    align-items: center;
    justify-content: space-between;
    flex-wrap: wrap;
    gap: 24px;
    max-width: 1104px;
    margin: 0 auto 96px;
    padding: 40px 48px;
    background: var(--token-b0722cab-e282-4115-b20c-4d3f13899e94, rgb(227, 220, 207));
    border-radius: 12px;
    font-family: "Satoshi", "Satoshi Placeholder", sans-serif;
}
.drz-library-cta-title {
    font-size: 24px !important;
    margin-bottom: 6px;
    color: rgb(15, 15, 15);
}
.drz-library-cta-sub {
    font-size: 14px !important;
    line-height: 1.5;
    max-width: 520px;
    color: rgba(15, 15, 15, 0.7);
}
.drz-library-cta-btn {
    display: inline-block;
    padding: 14px 22px;
    font-size: 15px !important;
    background: var(--token-8e02c278-bef3-4ec2-b2a8-df555cbd1b45, rgb(247, 250, 190));
    color: rgb(15, 15, 15);
    border-radius: 8px;
    font-size: 15px;
    text-decoration: none;
    white-space: nowrap;
    transition: transform 0.25s cubic-bezier(0.27, 0, 0.51, 1);
}
.drz-library-cta-btn:hover {
    transform: translateY(-2px);
}
@media (max-width: 809.98px) {
    .drz-library-cta {
        margin: 0 24px 64px;
        padding: 28px 24px;
    }
}

/* ---------- Menu mobile ---------- */
/* En variante mobile fermée, la liste de liens est masquée ;
   la classe drz-nav-open (posée par main.js) l'affiche. */
nav.framer-v-1agoghs .framer-1p1fuhq,
nav.framer-v-mjwx9h .framer-1p1fuhq {
    display: none;
}
nav.drz-nav-open .framer-1p1fuhq {
    display: flex !important;
    position: absolute;
    top: 100%;
    left: 0;
    right: 0;
    width: auto !important;
    height: auto !important;
    flex-direction: column !important;
    align-items: stretch !important;
    gap: 4px;
    padding: 16px 24px 32px;
    background: rgb(255, 255, 255);
    box-shadow: 0 24px 40px rgba(0, 0, 0, 0.08);
    z-index: 50;
}
nav.drz-nav-open .framer-1p1fuhq div {
    height: auto !important;
    width: 100% !important;
    flex-direction: column !important;
    align-items: stretch !important;
}
nav.drz-nav-open .framer-1p1fuhq a {
    width: 100% !important;
    height: auto !important;
    justify-content: flex-start !important;
    padding: 12px 0 !important;
}
nav.drz-nav-open .framer-1p1fuhq a p {
    font-size: 18px !important;
}
html.drz-nav-lock,
html.drz-nav-lock body {
    overflow: hidden;
}
nav .framer-a6aaz5 {
    cursor: pointer;
}

/* ---------- Photo de héros (Talks / Portfolio / Blog) ---------- */
.drz-hero-photo {
    margin-top: 24px;
    max-width: 480px;
    border-radius: 16px;
    overflow: hidden;
}
.drz-hero-photo img {
    display: block;
    width: 100%;
    height: auto;
    object-fit: cover;
}
@media (max-width: 809.98px) {
    .drz-hero-photo {
        max-width: 100%;
    }
}

/* ---------- Page Blog (alignée visuellement sur Actu) ---------- */
.drz-blog-hero-wrap {
    max-width: 1200px;
    margin: 0 auto;
    padding: 160px 48px 0;
    font-family: "Satoshi", "Satoshi Placeholder", sans-serif;
}
.drz-blog-hero {
    display: flex;
    align-items: flex-end;
    justify-content: space-between;
    gap: 32px;
    flex-wrap: wrap;
}
.drz-blog-intro {
    max-width: 560px;
    margin-top: 24px;
}
@media (max-width: 809.98px) {
    .drz-blog-hero-wrap {
        padding: 130px 24px 0;
    }
    .drz-blog-hero {
        flex-direction: column;
        align-items: flex-start;
    }
}

/* ---------- Cartes Blog (même look que les cartes Actu) ---------- */
.drz-pub-row {
    display: flex;
    align-items: stretch;
    gap: 0;
    background: var(--token-6843a865-763e-4783-a437-1200a4c6b7ab, rgb(250, 250, 250));
    border-radius: 12px;
    overflow: hidden;
    padding: 0;
    transition: transform 0.2s ease;
}
.drz-pub-row:hover {
    transform: translateY(-2px);
}
.drz-pub-content {
    display: flex;
    flex-direction: column;
    flex: 1;
    padding: 24px 28px 28px;
}
.drz-pub-thumb {
    order: -1;
    flex: 0 0 300px;
    width: 300px;
    aspect-ratio: 1.91 / 1;
    margin: 0;
    overflow: hidden;
    background: var(--token-b0722cab-e282-4115-b20c-4d3f13899e94, rgb(227, 220, 207));
}
.drz-pub-thumb img {
    width: 100%;
    height: 100%;
    aspect-ratio: auto;
    border-radius: 0;
    object-fit: contain;
}
@media (max-width: 809.98px) {
    .drz-pub-row {
        flex-direction: column;
    }
    .drz-pub-thumb {
        flex: none;
        width: 100%;
        aspect-ratio: 1.91 / 1;
    }
}

/* ---------- Bloc héros titre + image (Talks / Portfolio / Blog, aligné sur Enterprise AI) ---------- */
.drz-hero-split {
    display: flex;
    align-items: flex-end;
    justify-content: space-between;
    gap: 32px;
    flex-wrap: wrap;
}
.drz-hero-split > .drz-hero-text {
    flex: 1 1 480px;
    min-width: 280px;
}
.drz-hero-split > .drz-hero-photo {
    margin-top: 0;
    flex: 0 1 480px;
}
@media (max-width: 809.98px) {
    .drz-hero-split {
        flex-direction: column !important;
        align-items: flex-start !important;
    }
    .drz-hero-split > .drz-hero-text,
    .drz-hero-split > .drz-hero-photo {
        flex: none !important;
        width: 100% !important;
    }
}

/* ---------- Footer : listes de liens en ligne plutôt qu'empilées ---------- */
footer nav[data-framer-name="Button Wrapper"] {
    display: flex !important;
    flex-direction: row !important;
    flex-wrap: wrap !important;
    align-items: flex-start !important;
    justify-content: flex-start !important;
    place-content: flex-start !important;
    gap: 8px 20px !important;
    height: auto !important;
    width: 100% !important;
}
footer nav[data-framer-name="Button Wrapper"] > div:first-child {
    flex-basis: 100% !important;
    width: 100% !important;
}

/* ---------- Paragraphes d'intro (gris, comme sur Talks/Enterprise AI) ---------- */
.drz-pf-intro p,
.drz-blog-intro p,
.drz-news-intro p,
.drz-books-intro p {
    color: rgb(110, 110, 110) !important;
}

/* ---------- Immunisation contre le re-formatage (linter/formatter) ---------- */
/* Le texte riche Framer (.framer-text) hérite souvent white-space:pre-wrap,
   ce qui rend visible en production tout retour à la ligne + indentation
   introduit par un formateur qui re-pretty-print un fichier .php normalement
   minifié sur une seule ligne (vécu 2x sur home.php pendant cette session).
   On neutralise ce risque une bonne fois pour toutes : les seuls retours à
   la ligne voulus passent par des <br> explicites, jamais par des retours
   à la ligne du code source. */
h1.framer-text,
h2.framer-text,
h3.framer-text,
p.framer-text {
    white-space: normal !important;
}
/* Exception : les libellés de boutons (.framer-daqbs) comptent sur
   white-space:pre pour tenir sur une seule ligne ("Réserver un appel",
   "Découvrir l'offre Bootcamp"...) — la règle générale ci-dessus les
   faisait sinon retomber à la ligne et se chevaucher avec l'icône. */
.framer-daqbs p.framer-text {
    white-space: pre !important;
}

/* ---------- Boutons : texte dupliqué au repos (effet hover Framer cassé) ---------- */
/* Chaque bouton .framer-daqbs empile 2 copies du texte (et de la flèche) pour
   un effet de glissement au survol piloté par le JS runtime de Framer, absent
   de cet export statique. Sans lui, la copie censée être hors-champ
   (position:absolute, bottom:-48px / -16px) reste visible et se superpose au
   texte normal ("Réserver un appel Réserver", "Découvrir l'offre Bootcamp
   Découvrir l'offre"...) sur TOUS les boutons du site (nav, footer, home,
   enterprise-ai, 404). On masque la copie dupliquée : le bouton reste
   cliquable et lisible, juste sans l'animation de survol. */
.framer-daqbs .framer-s9p603,
.framer-daqbs .framer-1f7u8hx {
    display: none !important;
}

/* ---------- Footer : 3 colonnes reconstruites proprement (Email / Navigation / Social) ---------- */
.drz-footer-cols {
    gap: 64px !important;
    flex-wrap: wrap;
    justify-content: flex-start !important;
    place-content: flex-start !important;
}
.drz-footer-col {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 12px;
    min-width: 160px;
}
.drz-footer-label {
    color: rgb(163, 163, 163) !important;
    margin: 0;
}
.drz-footer-row {
    display: flex;
    flex-direction: row;
    flex-wrap: wrap;
    gap: 8px 20px;
}
.drz-footer-link {
    color: rgb(255, 255, 255) !important;
    text-decoration: none;
}
.drz-footer-link:hover {
    text-decoration: underline;
}
.drz-footer-link.drz-footer-dim {
    color: rgb(133, 133, 133) !important;
}
@media (max-width: 809.98px) {
    .drz-footer-col {
        min-width: 0;
    }
}

/* ---------- Portrait Warith (home) : bords arrondis comme les autres images ---------- */
.framer-1cj657o {
    border-radius: 10px !important;
    overflow: hidden;
}

/* ---------- Talks — "Conférences passées" (cartes vidéo), reconstruit proprement ---------- */
/* Remplace l'ancienne structure Framer (double calque de texte en position
   absolue pour un effet hover sans JS ici, jamais pensée pour un mobile
   étroit — masquée sur mobile/tablette à l'origine, elle débordait
   massivement une fois affichée). Markup simple, responsive par design. */
.drz-talk-rows {
    display: flex;
    flex-direction: column;
}
.drz-talk-row {
    display: flex;
    align-items: center;
    gap: 20px;
    padding: 16px 0;
    border-top: 1px solid rgb(232, 232, 232);
    text-decoration: none;
    color: inherit;
}
.drz-talk-rows .drz-talk-row:last-child {
    border-bottom: 1px solid rgb(232, 232, 232);
}
.drz-talk-date {
    flex: 0 0 auto;
    width: 100px;
    font-family: "Satoshi", "Satoshi Placeholder", sans-serif;
    font-size: 15px;
    color: rgb(97, 97, 97);
}
.drz-talk-thumb {
    flex: 0 0 auto;
    width: 64px;
    height: 48px;
    border-radius: 6px;
    overflow: hidden;
    background: rgb(240, 240, 240);
}
.drz-talk-thumb img {
    width: 100%;
    height: 100%;
    object-fit: contain;
}
.drz-talk-title {
    flex: 1 1 auto;
    min-width: 0;
    font-family: "Satoshi", "Satoshi Placeholder", sans-serif;
    font-size: 16px;
    color: rgb(15, 15, 15);
}
.drz-talk-tag {
    flex: 0 0 auto;
    font-family: "Satoshi", "Satoshi Placeholder", sans-serif;
    font-size: 14px;
    color: rgb(97, 97, 97);
    white-space: nowrap;
}
.drz-talk-arrow {
    flex: 0 0 auto;
    color: rgb(97, 97, 97);
}
.drz-talk-row:hover .drz-talk-title {
    text-decoration: underline;
}
@media (max-width: 809.98px) {
    .drz-talk-row {
        flex-wrap: wrap;
        gap: 8px 16px;
        align-items: flex-start;
    }
    .drz-talk-date {
        width: auto;
        order: 1;
    }
    .drz-talk-thumb {
        order: 2;
    }
    .drz-talk-title {
        order: 4;
        flex-basis: 100%;
    }
    .drz-talk-tag {
        order: 3;
        margin-left: auto;
    }
    .drz-talk-arrow {
        display: none;
    }
}
