/* Espace client Leadtonic :
   marine #0F1F46, vert lime #BFE514 / #74C400, Outfit + Bricolage Grotesque + JetBrains Mono,
   cartes à 18 px de rayon, bordure ligne et ombre douce. */

*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }

:root {
    --ink: #0F1F46;
    --ink-2: #3A4A6B;
    --ink-3: #6B7A98;
    --ink-4: #9AA7C0;
    --bg: #F7F8FB;
    --bg-3: #EFF3F8;
    --line: #E6EAF2;
    --line-2: #D0D7E2;
    --white: #fff;
    --green: #BFE514;
    --green-hover: #C9F042;
    --green-deep: #74C400;
    --green-ink: #4C8000;
    --green-soft: #F0FBC0;
    --blue: #0A91EB;
    --blue-soft: #E3F2FD;
    --amber: #B7791F;
    --amber-soft: #FFF4DB;
    --red: #C53030;
    --red-soft: #FDECEC;
    --radius: 18px;
    --shadow: 0 8px 24px -18px rgba(15, 31, 70, .22);
    --font: 'Outfit', -apple-system, BlinkMacSystemFont, sans-serif;
    --font-display: 'Bricolage Grotesque', 'Outfit', sans-serif;
    --font-mono: 'JetBrains Mono', ui-monospace, monospace;
    --side: 248px;
}

html { -webkit-text-size-adjust: 100%; }
body {
    font-family: var(--font);
    color: var(--ink);
    background: var(--bg);
    line-height: 1.5;
    font-size: 16px;
    -webkit-font-smoothing: antialiased;
}
a { color: inherit; }
img, video { max-width: 100%; display: block; }
button, input, select, textarea { font: inherit; color: inherit; }

/* ---------- Structure ---------- */
.shell { min-height: 100vh; display: flex; align-items: flex-start;
    /* le fond de la barre latérale descend jusqu'en bas même sur une page très longue */
    background: linear-gradient(90deg, var(--white) calc(var(--side) - 1px), var(--line) calc(var(--side) - 1px), var(--line) var(--side), transparent var(--side)); }
.sidebar {
    position: sticky; top: 0; height: 100vh; flex: none; width: var(--side);
    background: var(--white); border-right: 1px solid var(--line);
    display: flex; flex-direction: column; padding: 20px 14px; z-index: 50;
}
.main { flex: 1; min-width: 0; }
.topbar {
    position: sticky; top: 0; z-index: 40;
    display: flex; align-items: center; gap: 12px; justify-content: space-between;
    padding: 12px 32px; background: rgba(247, 248, 251, .92);
    backdrop-filter: blur(12px); -webkit-backdrop-filter: blur(12px);
    border-bottom: 1px solid var(--line);
}
.content { padding: 28px 32px 64px; max-width: 1180px; }

.logo { display: flex; align-items: center; gap: 10px; text-decoration: none; padding: 4px 8px 18px; }
.logo img { height: 34px; width: auto; }
.logo__name { font-family: var(--font-display); font-weight: 800; font-size: 1.2rem; line-height: 1; letter-spacing: -.01em; text-transform: uppercase; color: #0F437F; }
.logo__name span { color: #74C401; }
.logo__tag { display: block; font-family: var(--font-mono); font-size: .58rem; text-transform: uppercase; letter-spacing: .08em; color: var(--ink-3); margin-top: 4px; }

.nav { display: flex; flex-direction: column; gap: 1px; overflow-y: auto; min-height: 0; margin: 0 -6px; padding: 0 6px; }
.nav a {
    display: flex; align-items: center; gap: 12px; padding: 8px 12px; border-radius: 12px; flex: none;
    text-decoration: none; color: var(--ink-2); font-weight: 500;
}
.nav a:hover { background: var(--bg); color: var(--ink); }
.nav a.is-active { background: var(--ink); color: var(--white); }
.nav a.is-active svg { color: var(--green); }
.nav svg { width: 20px; height: 20px; flex: none; }
.nav__count { margin-left: auto; font-size: .75rem; font-weight: 700; background: var(--green); color: var(--ink); border-radius: 99px; padding: 1px 8px; }
.nav__sep { font-family: var(--font-mono); font-size: .65rem; text-transform: uppercase; letter-spacing: .08em; color: var(--ink-4); padding: 14px 12px 4px; flex: none; }
.nav__label { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.sidebar .logo { flex: none; }
.sidebar__foot { flex: none; }
.sidebar__foot { margin-top: auto; padding: 12px; border-top: 1px solid var(--line); font-size: .85rem; color: var(--ink-3); }
.sidebar__foot strong { display: block; color: var(--ink); font-weight: 600; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.sidebar__foot .links { display: flex; gap: 14px; margin-top: 8px; }
.linkbtn { background: none; border: 0; padding: 0; cursor: pointer; color: var(--ink-3); text-decoration: underline; text-underline-offset: 3px; font-size: .85rem; }
.linkbtn:hover { color: var(--ink); }

.topbar__title { font-family: var(--font-mono); font-size: .72rem; text-transform: uppercase; letter-spacing: .08em; color: var(--ink-3); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.topbar__title strong { color: var(--ink); font-weight: 500; }
.switcher { display: flex; align-items: center; gap: 8px; }
.switcher label { font-size: .8rem; color: var(--ink-3); white-space: nowrap; }
.switcher select { min-width: 180px; }
.burger { display: none; background: none; border: 0; padding: 6px; cursor: pointer; }
.burger svg { width: 24px; height: 24px; }
.mobile-logo { display: none; }

/* ---------- Typo ---------- */
.page-head { display: flex; align-items: flex-end; justify-content: space-between; gap: 16px; flex-wrap: wrap; margin-bottom: 24px; }
.eyebrow { display: inline-block; font-family: var(--font-mono); font-size: .72rem; font-weight: 500; text-transform: uppercase; letter-spacing: .08em; color: var(--green-ink); margin-bottom: 6px; }
h1 { font-family: var(--font-display); font-weight: 700; font-size: clamp(1.7rem, 3.4vw, 2.3rem); line-height: 1.1; letter-spacing: -.02em; }
h2 { font-family: var(--font-display); font-weight: 700; font-size: 1.2rem; letter-spacing: -.01em; line-height: 1.25; }
h3 { font-size: 1rem; font-weight: 600; }
.muted { color: var(--ink-3); }
.small { font-size: .875rem; }
.mono { font-family: var(--font-mono); font-size: .85em; }
.lead-text { color: var(--ink-2); font-size: 1.05rem; max-width: 640px; }
.back { display: inline-flex; gap: 6px; align-items: center; color: var(--ink-3); text-decoration: none; font-size: .9rem; margin-bottom: 10px; }
.back:hover { color: var(--ink); }
.prewrap { white-space: pre-wrap; overflow-wrap: anywhere; }

/* ---------- Cartes & grilles ---------- */
.card { background: var(--white); border: 1px solid var(--line); border-radius: var(--radius); box-shadow: var(--shadow); padding: 22px; min-width: 0; }
.card + .card { margin-top: 18px; }
/* Dans une grille, l'écart vient du gap : pas de marge en plus (cartes alignées, 18/10). */
.grid > .card + .card, .pack-grid > .card + .card { margin-top: 0; }
.card__head { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 16px; flex-wrap: wrap; }
.card--flush { padding: 0; overflow: hidden; }
.card--flush .card__head { padding: 18px 22px 0; }
.card--ink { background: var(--ink); color: var(--white); border-color: var(--ink); }
.card--ink .muted { color: var(--ink-4); }
.grid { display: grid; gap: 18px; }
.grid-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.grid-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.grid-main { grid-template-columns: minmax(0, 1.6fr) minmax(0, 1fr); align-items: start; }
.stack > * + * { margin-top: 18px; }

.kpis { display: grid; grid-template-columns: repeat(auto-fit, minmax(140px, 1fr)); gap: 14px; margin-bottom: 18px; }
.kpi { background: var(--white); border: 1px solid var(--line); border-radius: var(--radius); padding: 16px 18px; box-shadow: var(--shadow); }
.kpi__label { font-family: var(--font-mono); font-size: .68rem; text-transform: uppercase; letter-spacing: .08em; color: var(--ink-3); }
.kpi__value { font-family: var(--font-display); font-weight: 700; font-size: 1.75rem; letter-spacing: -.02em; line-height: 1.15; margin-top: 6px; white-space: nowrap; }
.kpi__delta { font-size: .8rem; margin-top: 2px; color: var(--ink-3); }
.kpi__delta.up { color: var(--green-ink); }
.kpi__delta.down { color: var(--red); }
.kpi--accent { background: var(--green); border-color: var(--green); }
.kpi--accent .kpi__label { color: var(--ink-2); }

/* ---------- Pastilles ---------- */
.pill { display: inline-flex; align-items: center; gap: 6px; font-size: .78rem; font-weight: 600; padding: 3px 10px; border-radius: 99px; white-space: nowrap; background: var(--bg-3); color: var(--ink-2); }
.pill::before { content: ''; width: 6px; height: 6px; border-radius: 50%; background: currentColor; opacity: .8; }
.pill.ok { background: var(--green-soft); color: var(--green-ink); }
.pill.pending { background: var(--blue-soft); color: #0B6FB3; }
.pill.warn { background: var(--amber-soft); color: var(--amber); }
.pill.bad { background: var(--red-soft); color: var(--red); }
.pill.plain::before { display: none; }
.pill.seg-A { background: var(--green-soft); color: var(--green-ink); }
.pill.seg-B { background: var(--blue-soft); color: #0B6FB3; }
.pill.seg-C { background: var(--amber-soft); color: var(--amber); }

/* ---------- Boutons & formulaires ---------- */
.btn {
    display: inline-flex; align-items: center; justify-content: center; gap: 8px;
    font-weight: 700; font-size: .92rem; border: 1px solid transparent; border-radius: 12px;
    padding: 10px 18px; cursor: pointer; text-decoration: none; transition: background .2s, transform .2s, border-color .2s;
    background: var(--green); color: var(--ink); white-space: nowrap; min-height: 42px;
}
.btn:hover { background: var(--green-hover); transform: translateY(-1px); }
.btn--ink { background: var(--ink); color: var(--white); }
.btn--ink:hover { background: #1b2f63; }
.btn--ghost { background: var(--white); border-color: var(--line-2); color: var(--ink); }
.btn--ghost:hover { background: var(--bg); border-color: var(--ink-4); }
.btn--danger { background: var(--white); border-color: #F1C4C4; color: var(--red); }
.btn--danger:hover { background: var(--red-soft); }
.btn--sm { padding: 6px 12px; font-size: .82rem; min-height: 34px; border-radius: 10px; }
.btn--block { width: 100%; }
.actions { display: flex; gap: 10px; flex-wrap: wrap; align-items: center; }

.field { display: flex; flex-direction: column; gap: 6px; margin-bottom: 14px; min-width: 0; }
.field label:not(.btn), .label { font-size: .85rem; font-weight: 600; color: var(--ink-2); }
.field .hint { font-size: .8rem; color: var(--ink-3); }
input:not([type]), input[type=text], input[type=email], input[type=password], input[type=date], input[type=search], input[type=file], input[type=tel], input[type=url], input[type=number], select, textarea {
    width: 100%; border: 1px solid var(--line-2); border-radius: 12px; background: var(--white);
    padding: 10px 12px; font-size: 16px; min-height: 44px; transition: border-color .2s, box-shadow .2s;
}
textarea { min-height: 110px; resize: vertical; line-height: 1.5; }
input:focus, select:focus, textarea:focus { outline: none; border-color: var(--green-deep); box-shadow: 0 0 0 3px rgba(191, 229, 20, .35); }
input[type=file] { padding: 8px; }
.form-row { display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: 0 14px; }
.check { display: flex; gap: 10px; align-items: flex-start; font-size: .92rem; color: var(--ink-2); margin-bottom: 14px; }
.check input { margin-top: 4px; width: 18px; height: 18px; accent-color: var(--green-deep); flex: none; }
.check__text ul { margin: 4px 0 0; padding-left: 20px; }
.check__text li { margin: 2px 0; }

details.admin-box { border: 1px dashed var(--line-2); border-radius: var(--radius); background: var(--white); margin-bottom: 18px; }
details.admin-box > summary { cursor: pointer; list-style: none; padding: 14px 18px; font-weight: 600; display: flex; align-items: center; gap: 10px; }
details.admin-box > summary::-webkit-details-marker { display: none; }
details.admin-box > summary::before { content: '+'; display: inline-grid; place-items: center; width: 22px; height: 22px; border-radius: 7px; background: var(--ink); color: var(--green); font-weight: 700; }
details.admin-box[open] > summary::before { content: '–'; }
details.admin-box .admin-box__body { padding: 0 18px 18px; }
.admin-tag { font-family: var(--font-mono); font-size: .62rem; text-transform: uppercase; letter-spacing: .08em; background: var(--ink); color: var(--green); padding: 2px 7px; border-radius: 6px; }

/* ---------- Alertes ---------- */
.flash { border-radius: 14px; padding: 12px 16px; margin-bottom: 16px; font-size: .95rem; border: 1px solid; }
.flash.ok { background: var(--green-soft); border-color: #DDF28A; color: #35590A; }
.flash.error { background: var(--red-soft); border-color: #F5C2C2; color: #8B1E1E; }
.flash.info { background: var(--blue-soft); border-color: #BCDDF5; color: #0B5A91; }
.copybox { display: flex; gap: 8px; margin-top: 10px; }
.copybox input { font-family: var(--font-mono); font-size: .8rem; }

/* ---------- Tableaux & listes ---------- */
.table-wrap { overflow-x: auto; -webkit-overflow-scrolling: touch; }
table.table { width: 100%; border-collapse: collapse; font-size: .92rem; }
.table th { text-align: left; font-family: var(--font-mono); font-weight: 500; font-size: .68rem; text-transform: uppercase; letter-spacing: .08em; color: var(--ink-3); padding: 12px 16px; border-bottom: 1px solid var(--line); white-space: nowrap; }
.table td { padding: 13px 16px; border-bottom: 1px solid var(--line); vertical-align: middle; }
.table tr:last-child td { border-bottom: 0; }
.table .num { text-align: right; font-variant-numeric: tabular-nums; white-space: nowrap; }
.table a.rowlink { text-decoration: none; font-weight: 600; }
.table a.rowlink:hover { text-decoration: underline; }
.table tbody tr:hover { background: #FBFCFD; }

.list { list-style: none; }
.list li { display: flex; align-items: center; gap: 12px; justify-content: space-between; padding: 12px 0; border-bottom: 1px solid var(--line); }
.list li:last-child { border-bottom: 0; }
.list a { text-decoration: none; }
/* Ligne cliquable (file de prestations équipe) : <a class="list__row card"> reste "inline" par
   défaut sans ceci, ce qui superpose les cartes au lieu de les empiler. */
.list a.list__row { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.list__main { min-width: 0; }
.list__main strong { display: block; font-weight: 600; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.empty { text-align: center; padding: 34px 16px; color: var(--ink-3); }
.empty strong { display: block; color: var(--ink); font-family: var(--font-display); font-size: 1.1rem; margin-bottom: 4px; }

.thumbs { display:flex; flex-wrap:wrap; gap:.4rem; margin-top:.5rem }
.thumbs img { width:72px; height:72px; object-fit:cover; border-radius:8px }
.error-text { color: var(--red); }

.gallery { display:grid; grid-template-columns:repeat(auto-fill,minmax(160px,1fr)); gap:.6rem }
.gallery img { width:100%; aspect-ratio:1; object-fit:cover; border-radius:10px }

dl.facts { display: grid; grid-template-columns: max-content 1fr; gap: 8px 18px; font-size: .95rem; }
dl.facts dt { color: var(--ink-3); }
dl.facts dd { font-weight: 500; min-width: 0; overflow-wrap: anywhere; }

/* ---------- Discussion ---------- */
.thread { list-style: none; display: flex; flex-direction: column; gap: 12px; margin-bottom: 16px; }
.msg { background: var(--bg); border-radius: 14px; padding: 12px 14px; }
.msg--admin { background: var(--green-soft); }
.msg__head { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; font-size: .82rem; color: var(--ink-3); margin-bottom: 4px; }
.msg__head strong { color: var(--ink); font-weight: 600; }

/* ---------- Listes simples ---------- */
.simple-list { list-style: none; }
.simple-list > li { border-bottom: 1px solid var(--line); }
.simple-list > li:last-child { border-bottom: 0; }
.doc-row { display: grid; grid-template-columns: minmax(0, 1.4fr) minmax(0, 1.2fr) minmax(0, 1fr) auto; gap: 12px; align-items: center; padding: 14px 22px; text-decoration: none; color: inherit; }
.doc-row:hover { background: #FBFCFD; }
.doc-row strong { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.doc-row > span > span { display: block; overflow: hidden; text-overflow: ellipsis; }

/* ---------- Pages publiques ---------- */
.public { min-height: 100vh; display: flex; flex-direction: column; }
.public__bar { display: flex; align-items: center; justify-content: space-between; padding: 14px 24px; background: var(--white); border-bottom: 1px solid var(--line); }
.public__bar .logo { padding: 0; }
/* 08/11 (Nicolas) : marque des pages publiques = celle des LP (.l4-tete__* de landing-v3.css, recopiée : ce fichier-là appartient aux LP), calée à gauche */
.pub-marque { display: flex; align-items: center; gap: 9px; text-decoration: none; min-width: 0; }
.pub-marque img { height: 30px; width: auto; display: block; }
.pub-marque__nom { font-family: 'Bricolage Grotesque', 'Outfit', sans-serif; font-weight: 800; font-size: 18px; letter-spacing: .02em; text-transform: uppercase; color: #0F437F; line-height: 1; }
.pub-marque__nom span { color: #74C401; }
.pub-marque__tag { margin-left: 4px; padding-left: 12px; border-left: 1px solid #DCE4F2; font-size: 10.5px; font-weight: 600; letter-spacing: .05em; text-transform: uppercase; color: #6B7A98; line-height: 1.2; }
@media (min-width: 1024px) { .pub-marque img { height: 34px; } .pub-marque__nom { font-size: 21px; } .pub-marque__tag { font-size: 11.5px; } }
@media (max-width: 719px) { .pub-marque__tag { max-width: 15em; } }
.public__main { flex: 1; width: 100%; max-width: 960px; margin: 0 auto; padding: 32px 20px 64px; }
.auth { max-width: 420px; margin: 6vh auto 0; }
.auth .card { padding: 30px; }
.auth h1 { font-size: 1.9rem; margin-bottom: 6px; }
.auth p.muted { margin-bottom: 22px; }
.auth p.auth__suite { margin: 22px 0 0; }   /* 08/11 (Nicolas) : le bouton « Continuer vers Apple / Google » ne colle plus au texte */
/* 20/10 soir : page d'activation R1 resserrée (Nicolas : trop de vide en haut) */
.public__main:has(.auth--quick) { padding-top: 16px; }
.auth--quick { margin-top: 0; }
.auth--quick input[readonly] { background: var(--bg-3); color: var(--ink-2); cursor: default; }
.auth--quick .eyebrow { display: block; margin-bottom: 6px; }
.auth--quick p.muted { margin-bottom: 18px; }
@media (max-width: 600px) { .public__main:has(.auth--quick) { padding: 10px 12px 40px; } .auth--quick .card { padding: 20px 18px; } .auth--quick h1 { font-size: 1.6rem; } }
.public__foot { text-align: center; font-size: .8rem; color: var(--ink-4); padding: 20px; }
.pdf-frame { width: 100%; height: 75vh; border: 1px solid var(--line); border-radius: 14px; background: var(--bg); }
.img-frame { border: 1px solid var(--line); border-radius: 14px; overflow: hidden; }

/* Menu réductible (administration) */
.side-toggle { display: inline-flex; background: none; border: 0; padding: 6px; border-radius: 8px; cursor: pointer; color: var(--ink-3); flex: none; }
.side-toggle:hover { background: var(--bg-3); color: var(--ink); }
.side-toggle:focus-visible { outline: 2px solid var(--ink); outline-offset: 2px; }
.side-toggle svg { width: 22px; height: 22px; }
.side-collapsed .side-toggle__chev { transform: translateX(-12px) scaleX(-1); transform-origin: 13.5px 12px; transform-box: view-box; }
.content--wide { max-width: none; }
.sr-only { position: absolute; width: 1px; height: 1px; margin: -1px; padding: 0; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0; }
.sidebar { transition: width .2s ease; }
@media (min-width: 901px) {
    html.side-collapsed { --side: 68px; }
    html.side-collapsed .sidebar { padding: 20px 8px; }
    html.side-collapsed .nav__label, html.side-collapsed .nav__chevron, html.side-collapsed .nav__count, html.side-collapsed .logo > span,
    html.side-collapsed .sidebar__foot, html.side-collapsed .nav__section > summary, html.side-collapsed .nav__lock { display: none; }
    html.side-collapsed .logo { justify-content: center; padding: 4px 0 8px; }
    html.side-collapsed .sidebar__head { flex-direction: column; align-items: center; gap: 4px; padding-bottom: 10px; }
    html.side-collapsed .sidebar__head .side-toggle { margin-top: 0; }
    html.side-collapsed .nav a, html.side-collapsed .nav__group > summary { justify-content: center; padding: 8px; }
    html.side-collapsed .nav__children, html.side-collapsed .nav__children .nav__children, html.side-collapsed .nav__section-body { padding-left: 0; margin-left: 0; border-left: 0; }
}

/* ---------- Mobile ---------- */
@media (max-width: 1080px) {
    .grid-main { grid-template-columns: minmax(0, 1fr); }
}
@media (max-width: 900px) {
    .side-toggle { display: none; }
    .shell { display: block; background: none; }
    .sidebar { position: fixed; inset: 0 auto 0 0; height: auto; transform: translateX(-100%); transition: transform .25s ease; }
    /* ombre seulement menu ouvert : repliée, elle débordait sur le bord gauche de l'écran (18/10) */
    .nav-open .sidebar { transform: none; box-shadow: 0 0 40px rgba(15, 31, 70, .2); }
    .nav-open .scrim { position: fixed; inset: 0; background: rgba(15, 31, 70, .35); z-index: 45; }
    .burger { display: block; }
    .mobile-logo { display: flex; align-items: center; gap: 8px; text-decoration: none; }
    .mobile-logo img { height: 26px; }
    .topbar { padding: 10px 16px; }
    .topbar__title { display: none; }
    .switcher label { display: none; }
    .switcher select { min-width: 0; max-width: 46vw; min-height: 38px; padding: 6px 10px; font-size: 14px; }
    .content { padding: 20px 16px 56px; }
    .grid-2, .grid-3 { grid-template-columns: minmax(0, 1fr); }
    .card { padding: 18px; }
    .card--flush .card__head { padding: 16px 18px 0; }
    .kpis { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
    .kpi { padding: 12px 14px; }
    .kpi__value { font-size: 1.35rem; }
    .table th, .table td { padding: 11px 12px; }
    .table .hide-sm { display: none; }
    .table .show-sm { display: block; margin: 2px 0 4px; }
    .doc-row { grid-template-columns: minmax(0, 1fr) auto; padding: 14px 18px; }
    .doc-row .hide-sm { display: none; }
    .pdf-frame { height: 60vh; }
    .page-head { margin-bottom: 18px; }
    .page-head .actions { width: 100%; }
}
@media (max-width: 420px) {
    .copybox { flex-direction: column; }
}

/* ---------- Utilitaires ---------- */
.auth p.note { margin: 18px 0 0; }
.mt { margin-top: 18px; }
.mt-s { margin-top: 8px; }
.mb { margin-bottom: 18px; }
.mb-0 { margin-bottom: 0; }
.nowrap { white-space: nowrap; }
.show-sm { display: none; }
.right { text-align: right; }
[hidden] { display: none !important; }
progress { width: 100%; height: 8px; accent-color: var(--green-deep); margin: 8px 0; }
details.card > summary { cursor: pointer; }

/* Aperçu d'un espace client par l'administrateur */
.impersonation { display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap;
    background: var(--ink); color: var(--white); padding: 10px 32px; font-size: .9rem; }
.impersonation svg { width: 16px; height: 16px; color: var(--green); vertical-align: -3px; margin-right: 4px; }
@media (max-width: 900px) { .impersonation { padding: 10px 16px; } }

/* Comptes */
.account-row { display: flex; gap: 16px; align-items: center; justify-content: space-between; flex-wrap: wrap; padding: 16px 22px; }
.account-row__main { display: flex; flex-direction: column; gap: 3px; min-width: 0; }
.account-row__main strong { overflow-wrap: anywhere; }
.account-row--nested { padding: 12px 0 0; margin-top: 12px; border-top: 1px dashed var(--line); }
.account-row--plain { padding: 12px 0; }
.client-row { padding: 18px 22px; }
.client-row__head { display: flex; justify-content: space-between; gap: 12px; align-items: flex-start; }
.btn[disabled] { opacity: .45; pointer-events: none; }
@media (max-width: 900px) {
    .account-row, .client-row { padding: 14px 18px; }
    .account-row--nested, .account-row--plain { padding-left: 0; padding-right: 0; }
    .account-row__actions, .account-row__actions .actions, .account-row__actions form, .account-row__actions .btn { width: 100%; }
}

/* Menu dépliant : sections (Canaux, Canal Mail) et groupes (Meta, Ads) */
.nav__section { flex: none; }
.nav__section > summary { list-style: none; cursor: pointer; display: flex; align-items: center; font-family: var(--font-mono); font-size: .65rem;
    text-transform: uppercase; letter-spacing: .08em; color: var(--ink-4); padding: 14px 12px 4px; border-radius: 8px; user-select: none; }
.nav__section > summary:hover { color: var(--ink-2); }
.nav__section-body { display: flex; flex-direction: column; gap: 1px; }
.nav summary::-webkit-details-marker { display: none; }
.nav__group { flex: none; }
.nav__group > summary { list-style: none; cursor: pointer; display: flex; align-items: center; gap: 12px; padding: 8px 12px; border-radius: 12px;
    color: var(--ink-2); font-weight: 500; user-select: none; }
.nav__group > summary:hover { background: var(--bg); color: var(--ink); }
.nav__group > summary svg { width: 20px; height: 20px; flex: none; }
.nav__chevron { margin-left: auto; width: 7px; height: 7px; border-right: 1.6px solid currentColor; border-bottom: 1.6px solid currentColor;
    transform: rotate(-45deg); transition: transform .2s; flex: none; opacity: .7; }
.nav__lock + .nav__chevron, .nav__count + .nav__chevron { margin-left: 10px; }
details[open] > summary > .nav__chevron { transform: rotate(45deg); }
.nav__section > summary .nav__chevron { width: 6px; height: 6px; }
.nav__children { display: flex; flex-direction: column; gap: 1px; margin: 1px 0 4px 21px; padding-left: 8px; border-left: 1px solid var(--line); }
.nav__children .nav__children { margin-left: 14px; }
.nav__children a, .nav__children .nav__group > summary { padding-top: 7px; padding-bottom: 7px; font-size: .94rem; }
.nav__children a svg, .nav__children summary svg { width: 18px; height: 18px; }
.nav__group[open] > summary .nav__count { display: none; }

/* Mon compte : onglets */
.tabs { display: flex; gap: 4px; overflow-x: auto; border-bottom: 1px solid var(--line); margin: 6px 0 22px; scrollbar-width: none; }
.tabs::-webkit-scrollbar { display: none; }
.tabs a { text-decoration: none; padding: 10px 14px; font-weight: 600; font-size: .92rem; color: var(--ink-3); border-bottom: 2px solid transparent; margin-bottom: -1px; white-space: nowrap; }
.tabs a:hover { color: var(--ink); }
.tabs a.is-active { color: var(--ink); border-bottom-color: var(--green-deep); }
/* Mode gestion (administrateur dans l'espace d'un client) */
.manage-bar { display: flex; align-items: center; gap: 10px 14px; flex-wrap: wrap; padding: 10px 32px; background: #1b2f63; color: var(--white); font-size: .9rem; }
.manage-bar__label { display: inline-flex; align-items: center; gap: 8px; }
.manage-bar__switch select { min-height: 36px; padding: 5px 34px 5px 10px; border-radius: 10px; border-color: transparent; font-weight: 600; color: var(--ink); max-width: 60vw; }
.manage-bar__actions { display: flex; gap: 8px; margin-left: auto; flex-wrap: wrap; }
.manage-bar__actions form { display: contents; }
.btn--on-ink { background: transparent; color: var(--white); border-color: rgba(255,255,255,.35); }
.btn--on-ink:hover { background: rgba(255,255,255,.1); }
@media (max-width: 900px) { .manage-bar { padding: 10px 16px; } .manage-bar__actions { margin-left: 0; } }

/* Mes clients */
.client-card { padding: 20px 22px; }
.client-card + .client-card { border-top: 1px solid var(--line); }
.client-card__head { display: flex; gap: 14px; align-items: flex-start; justify-content: space-between; flex-wrap: wrap; }
.client-card__head > .actions { width: 100%; }   /* boutons toujours sous les pastilles, fiche courte comprise (18/10) */
.client-card__name { font-family: var(--font-display); font-size: 1.25rem; font-weight: 700; text-decoration: none; }
.client-card__facts { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 8px; }
.client-card__people { margin-top: 14px; background: var(--bg); border-radius: 14px; padding: 4px 14px; }
.person { display: flex; gap: 10px 14px; align-items: center; justify-content: space-between; flex-wrap: wrap; padding: 10px 0; }
.person + .person { border-top: 1px solid var(--line); }
.person__main { display: flex; flex-direction: column; min-width: 0; }
.person__main strong { overflow-wrap: anywhere; }
.help-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; margin-bottom: 18px; }
.help-grid div { background: var(--white); border: 1px solid var(--line); border-radius: 14px; padding: 12px 14px; font-size: .88rem; color: var(--ink-2); }
.help-grid strong { display: block; color: var(--ink); margin-bottom: 2px; }
@media (max-width: 900px) { .help-grid { grid-template-columns: minmax(0, 1fr); } .client-card { padding: 16px 18px; } .client-card__head .actions, .client-card__head .actions form, .client-card__head .actions .btn { width: 100%; } }
.empty a { color: var(--green-ink); font-weight: 600; }

/* Messagerie */
.messenger { display: grid; grid-template-columns: 290px minmax(0, 1fr); gap: 18px; align-items: start; }
.messenger__list { display: flex; flex-direction: column; gap: 4px; }
.messenger__conv { display: flex; align-items: center; gap: 12px; padding: 12px; border-radius: 14px; text-decoration: none; background: var(--white); border: 1px solid var(--line); }
.messenger__conv svg { width: 20px; height: 20px; flex: none; color: var(--ink-3); }
.messenger__conv.is-active { border-color: var(--ink); box-shadow: var(--shadow); }
.messenger__conv-text { display: flex; flex-direction: column; min-width: 0; flex: 1; }
.messenger__conv-text .small { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.chat { list-style: none; display: flex; flex-direction: column; gap: 12px; margin-bottom: 18px; }
.chat__msg { display: flex; }
.chat__msg.is-mine { justify-content: flex-end; }
.chat__bubble { max-width: min(640px, 88%); background: var(--bg); border-radius: 16px 16px 16px 4px; padding: 12px 14px; }
.is-mine .chat__bubble { background: var(--green-soft); border-radius: 16px 16px 4px 16px; }
.is-decision .chat__bubble { background: var(--white); border: 1px solid var(--line); }
.chat__img { display: block; max-width: min(260px, 100%); height: auto; border-radius: 10px; margin: 4px 0 8px; }
.chat__audio { display: block; width: min(300px, 100%); margin: 4px 0 4px; }
.client-msg { margin-top: 14px; }
.client-msg__texte { white-space: pre-wrap; }
.client-msg__fichier { margin-top: 6px; }
.client-msg__photo { display: block; max-width: 240px; max-height: 240px; border-radius: 6px; }
.chat__head { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; font-size: .8rem; margin-bottom: 4px; }
.chat__about { display: inline-block; font-size: .8rem; font-weight: 600; color: var(--green-ink); margin-bottom: 4px; text-decoration: none; }
a.chat__about:hover { text-decoration: underline; }
.chat__form { border-top: 1px solid var(--line); padding-top: 16px; display: flex; flex-direction: column; gap: 8px; }
.chat__form .btn { align-self: flex-start; }
.inbox-row { display: grid; grid-template-columns: minmax(0, 1.1fr) minmax(0, 2fr) auto; gap: 14px; align-items: center; padding: 14px 22px; text-decoration: none; }
.inbox-row:hover { background: #FBFCFD; }
.inbox-row.is-unread { background: var(--green-soft); }
.inbox-row__who { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; }
.inbox-row__last { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.inbox-row__meta { display: flex; gap: 8px; align-items: center; }
.unread-banner { display: block; text-decoration: none; font-weight: 600; }
@media (max-width: 900px) {
    .stepper__status { display: none; }
    .stepper__label { font-size: .78rem; }
    .stepper__dot { width: 32px; height: 32px; }
    .stepper__step + .stepper__step::before { top: 15px; left: calc(-50% + 18px); right: calc(50% + 18px); }
    .ad-row__now { align-items: flex-start; }
    .messenger { grid-template-columns: minmax(0, 1fr); }
    .messenger__list { flex-direction: row; overflow-x: auto; padding-bottom: 4px; }
    .messenger__conv { flex: 0 0 auto; max-width: 70vw; }
    .messenger__conv-text .small { display: none; }
    .inbox-row { grid-template-columns: minmax(0, 1fr) auto; padding: 14px 18px; }
    .inbox-row__last { grid-column: 1 / -1; grid-row: 2; white-space: normal; }
}

/* Formulaire de commentaire */
.composer { border: 1px solid var(--line); border-radius: 14px; padding: 16px; background: var(--white); margin-top: 16px; }
.composer__buttons { display: flex; gap: 10px; flex-wrap: wrap; justify-content: flex-end; margin-top: 12px; }
@media (max-width: 600px) { .composer__buttons { flex-direction: column-reverse; } .composer__buttons .btn { width: 100%; } }

/* Demande d'avis / partage de fiche : QR et copie sur ordinateur */
.qr svg { width: 220px; height: 220px; }
.sms-desktop { margin-top: 1rem; }

/* --- Abonnement : invitation à activer, page d'explication, confirmation ---------------------- */
.activate { display: grid; grid-template-columns: minmax(0, 1.6fr) minmax(0, 1fr); gap: 28px; align-items: center;
    background: var(--ink); color: var(--white); border-radius: var(--radius); padding: 28px 30px; margin-bottom: 22px;
    box-shadow: 0 24px 50px -30px rgba(15, 31, 70, .6); position: relative; overflow: hidden; }
.activate::after { content: ""; position: absolute; right: -90px; top: -90px; width: 260px; height: 260px; border-radius: 50%;
    background: radial-gradient(circle, rgba(191, 229, 20, .28), transparent 65%); pointer-events: none; }
@media (max-width: 860px) { .activate { grid-template-columns: 1fr; padding: 24px 20px; gap: 20px; } }
.activate__eyebrow { font-family: var(--font-mono); font-size: .72rem; text-transform: uppercase; letter-spacing: .08em; color: var(--green); }
.activate h2 { font-family: var(--font-display); font-size: 1.6rem; line-height: 1.1; margin: 8px 0 10px; letter-spacing: -.01em; }
.activate p { color: #C9D3E8; }
.activate p strong { color: var(--white); }
.activate__steps { list-style: none; margin-top: 16px; display: grid; gap: 10px; }
.activate__steps li { display: grid; grid-template-columns: 110px 1fr; gap: 10px; align-items: baseline; }
.activate__steps b { color: var(--green); font-size: .92rem; }
.activate__steps span { color: #DCE3F0; font-size: .95rem; }
@media (max-width: 520px) { .activate__steps li { grid-template-columns: 1fr; gap: 2px; } }
.activate__side { background: rgba(255, 255, 255, .06); border: 1px solid rgba(255, 255, 255, .12); border-radius: 16px; padding: 20px; position: relative; z-index: 1; }
.activate__price { font-size: 1rem; color: var(--white) !important; }
.activate__price b { font-family: var(--font-display); font-size: 2.4rem; letter-spacing: -.02em; margin-right: 4px; }
.activate__terms { font-size: .88rem; margin: 6px 0 14px; }
.activate__btn { width: 100%; justify-content: center; }

.sub-banner { display: flex; align-items: center; justify-content: space-between; gap: 14px; flex-wrap: wrap;
    background: var(--green-soft); border-bottom: 1px solid #DDF28A; color: #35590A; padding: 10px 32px; font-size: .92rem; }
.sub-banner--admin { border: 1px solid #DDF28A; border-radius: 14px; margin-bottom: 18px; padding: 12px 16px; }
@media (max-width: 860px) { .sub-banner { padding: 10px 16px; } }
.sub-banner--quiet { background: var(--bg); border-bottom-color: var(--line); color: var(--ink-2); padding-top: 7px; padding-bottom: 7px; font-size: .86rem; }
.sub-banner--quiet a { color: var(--ink); font-weight: 600; }
/* Espace membre (17/10) : rubrique au-dessus du pack — cadenas au menu, page « disponible avec le pack X ». */
.nav__lock { margin-left: auto; display: inline-flex; color: var(--ink-4); }
.nav a .nav__lock svg, .nav__group > summary .nav__lock svg { width: 14px; height: 14px; }
.pack-locked { max-width: 620px; }
.pack-locked__icon { color: var(--ink-3); margin: 0 0 6px; }
.pack-locked__icon svg { width: 28px; height: 28px; }
.pack-locked__price b { font-family: var(--font-display); font-size: 1.8rem; letter-spacing: -.02em; margin-right: 2px; }

.sub-page { display: grid; grid-template-columns: minmax(0, 1.5fr) minmax(0, 1fr); gap: 32px; align-items: start; }
@media (max-width: 960px) { .sub-page { grid-template-columns: 1fr; } }
.sub-page h1 { font-family: var(--font-display); font-size: 2.1rem; line-height: 1.05; letter-spacing: -.02em; margin-bottom: 12px; }
.sub-lead { font-size: 1.05rem; color: var(--ink-2); margin-bottom: 22px; max-width: 60ch; }
.sub-h2 { font-family: var(--font-display); font-size: 1.2rem; margin: 26px 0 12px; }
.sub-phases { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; }
@media (max-width: 700px) { .sub-phases { grid-template-columns: 1fr; } }
.sub-phases > div { background: var(--white); border: 1px solid var(--line); border-radius: 14px; padding: 16px; }
.sub-phases b { display: block; color: var(--green-ink); font-size: .9rem; margin-bottom: 8px; }
.sub-phases ul { padding-left: 18px; display: grid; gap: 6px; font-size: .92rem; color: var(--ink-2); }
.sub-terms { list-style: none; display: grid; gap: 10px; }
.sub-terms li { padding-left: 16px; border-left: 3px solid var(--green); color: var(--ink-2); }
.sub-terms b { color: var(--ink); }
.sub-page__side { position: sticky; top: 20px; }
.sub-card__title { font-family: var(--font-display); font-weight: 700; font-size: 1.1rem; }
.sub-card__price { margin: 6px 0 2px; }
.sub-card__price b { font-family: var(--font-display); font-size: 2.4rem; letter-spacing: -.02em; margin-right: 4px; }
.sub-form { display: grid; gap: 14px; margin-top: 18px; }
.sub-check { display: flex; gap: 10px; align-items: flex-start; font-size: .92rem; color: var(--ink-2); }
.sub-check input { width: 18px; height: 18px; margin-top: 2px; accent-color: var(--ink); flex: none; }
.sub-card__btn { width: 100%; justify-content: center; }
.sub-done { max-width: 640px; margin: 20px auto; text-align: center; padding: 34px 28px; }
.sub-done h1 { font-family: var(--font-display); font-size: 2rem; margin: 12px 0 10px; }
.sub-done p { color: var(--ink-2); margin-bottom: 14px; }
.sub-done__check { display: inline-grid; place-items: center; width: 58px; height: 58px; border-radius: 50%; background: var(--green-deep); color: #fff; font-size: 1.7rem; }
.sub-done__steps { text-align: left; background: var(--ink); border-radius: 14px; padding: 18px; margin: 18px 0; }

/* --- Entretien de démarrage ---------------------------------------------------------------- */
.onb-cta { display: flex; align-items: center; justify-content: space-between; gap: 18px; flex-wrap: wrap;
    background: var(--green-soft); border: 1px solid #DDF28A; border-radius: var(--radius); padding: 22px 24px; margin-bottom: 22px; }
.onb-cta h2 { font-family: var(--font-display); font-size: 1.4rem; margin: 6px 0 4px; }
.onb-cta p { color: var(--ink-2); max-width: 60ch; }
.onb-cta__eyebrow { color: var(--green-ink); }
.onb-strip { display: flex; gap: 12px; align-items: center; background: var(--white); border: 1px solid var(--line); border-left: 4px solid var(--green-deep);
    border-radius: 14px; padding: 14px 16px; margin-bottom: 20px; box-shadow: var(--shadow); }
.onb-strip__icon { font-size: 1.4rem; }
.onb { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 28px; align-items: start; }
@media (max-width: 900px) { .onb { grid-template-columns: 1fr; } }
.onb__card form { margin-top: 14px; display: grid; gap: 12px; }
.onb-head { display: flex; justify-content: space-between; align-items: center; margin-bottom: 10px; }
.onb-head b { font-family: var(--font-display); font-size: 1.15rem; text-transform: capitalize; }
.onb-nav { display: flex; gap: 6px; }
.onb-nav button { width: 34px; height: 34px; border-radius: 50%; border: 1px solid var(--line-2); background: var(--white); cursor: pointer; font-size: 1.1rem; }
.onb-nav button:disabled { opacity: .35; cursor: default; }
.onb-dow, .onb-days { display: grid; grid-template-columns: repeat(7, 1fr); gap: 5px; text-align: center; }
.onb-dow span { font-family: var(--font-mono); font-size: .68rem; color: var(--ink-4); padding: 4px 0; }
.onb-day { aspect-ratio: 1; border-radius: 50%; border: 0; background: none; color: var(--ink-4); font: inherit; }
.onb-day.open { background: var(--blue-soft); color: var(--blue); font-weight: 700; cursor: pointer; }
.onb-day.on { background: var(--blue); color: var(--white); }
.onb-times-title { font-weight: 600; margin: 16px 0 8px; padding-top: 14px; border-top: 1px solid var(--line); }
.onb-times { display: grid; grid-template-columns: repeat(auto-fill, minmax(78px, 1fr)); gap: 8px; }
.onb-time { border: 1.5px solid var(--blue); color: var(--blue); background: var(--white); border-radius: 10px; padding: 9px 0; font: inherit; font-weight: 600; cursor: pointer; }
.onb-time:hover, .onb-time.on { background: var(--blue); color: var(--white); }
.onb-chosen { font-family: var(--font-display); font-weight: 700; }
.onb-booked { display: flex; gap: 18px; align-items: flex-start; }
.onb-booked h2 { font-family: var(--font-display); font-size: 1.4rem; margin-bottom: 6px; }
.onb-check { display: inline-grid; place-items: center; flex: none; width: 48px; height: 48px; border-radius: 50%; background: var(--green-deep); color: #fff; font-size: 1.4rem; }
.sub-done__next { margin-top: 8px; }

/* Admin Scraping */
.scraping-tabs { display: flex; gap: 8px; margin: 12px 0 18px; flex-wrap: wrap; }
.scraping-lead { background: var(--bg-3); border-radius: 12px; padding: 14px 18px; margin-bottom: 16px; }
.scraping-lead p { margin: 4px 0; }
.table tr.is-bad td { background: var(--red-soft); }
.scraping-filters { display: flex; gap: 8px; flex-wrap: wrap; align-items: end; margin-bottom: 14px; }
.scraping-memo h1, .scraping-memo h2 { font-size: 1.05rem; margin: 14px 0 6px; }
.scraping-memo pre { overflow-x: auto; font-size: .8rem; }
.scraping-filters--results .field select[multiple] { min-width: 240px; }
/* Campagnes de scraping (07/10/2026) */
.scraping-section { font-size: 1.05rem; margin: 22px 0 10px; }
.scraping-zones__head td { background: var(--bg-3); font-weight: 600; white-space: normal; }
.scraping-campaigns-links { margin-top: 12px; }
.scraping-zones tbody + tbody { border-top: 2px solid var(--line); }
.campaign-description { margin-top: 6px; }
.campaign-description ul { margin: 4px 0 8px 1.2em; padding-left: .4em; }
.campaign-edit { display: grid; gap: 10px; margin-top: 10px; }
.campaign-edit textarea { width: 100%; min-height: 260px; }
.scraping-campaign-active { margin: 6px 0; }
.scraping-range { display: flex; gap: 4px; }
.table.scraping-results td.scraping-results__name { min-width: 220px; }
.scraping-more summary { cursor: pointer; color: var(--ink-3); }
.scraping-more ul { margin: 4px 0 8px 16px; padding: 0; }
.table.scraping-batches td:first-child { min-width: 240px; }
.audit-map { max-width: 100%; height: auto; border-radius: 8px; }
.table tr.is-me td { background: var(--blue-soft); font-weight: 600; }

.contract { max-width: 760px; margin: 0 auto; line-height: 1.55; }
.contract h2 { margin-top: 1.4em; }
.contract__promise { font-weight: 600; color: var(--green-deep); }
/* 15/10 (Nicolas) : un seul défilement, celui de la page ; le contrat n'a plus de cadre défilant. */
.contract__text { border: 1px solid var(--line); border-radius: 12px; padding: 4px 18px 12px; margin: 16px 0 24px; background: #fff; }
.contract__text h2 { margin-top: .8em; font-size: 1.1rem; }
.contract__text ul { padding-left: 1.4em; margin: .4em 0 .8em; }
.contract__sign .label { display: block; font-weight: 600; margin-bottom: 6px; }
.sigpad { position: relative; max-width: 600px; }
.sigpad canvas { display: block; width: 100%; height: auto; aspect-ratio: 600 / 220; border: 2px dashed var(--line-2); border-radius: 12px; background: #fff; touch-action: none; cursor: crosshair; }
.sigpad.is-signed canvas { border-style: solid; border-color: var(--green-deep); }
.sigpad [data-signature-clear] { position: absolute; top: 8px; right: 8px; }
.contract__mandate { border: 1px solid var(--line, #dde3ee); border-radius: 12px; padding: 18px; margin-top: 24px; }
/* Lien de paiement /p/<code> (12/10/2026) : offre au choix en haut, puis mode de paiement ; plus de contrat */
.pay-offers, .pay-methods { border: 0; padding: 0; margin: 18px 0 0; }
.pay-offers legend, .pay-methods legend { font-weight: 700; font-size: 1.05rem; color: var(--ink); margin-bottom: 8px; padding: 0; }
.pay-offer { text-align: center; display: flex; flex-direction: column; align-items: center; gap: 2px; border: 2px solid var(--line-2); border-radius: 12px;
    padding: 14px 18px; margin-bottom: 10px; background: var(--white); cursor: pointer; }
.pay-offer:has(input:checked) { border-color: var(--green-deep); background: var(--green-soft); }
.pay-offer input { width: 20px; height: 20px; accent-color: var(--green-deep); margin: 0 0 4px; }
.pay-offer__name { font-size: 1.25rem; font-weight: 700; color: var(--ink); }
.pay-offer__desc { color: var(--ink-2); }
.pay-offer__price { font-size: 1.15rem; margin-top: 6px; }
.pay-offer__terms { color: var(--green-ink); font-weight: 600; font-size: .9rem; }
.pay-methods { display: flex; gap: 10px; flex-wrap: wrap; }
.pay-methods legend { width: 100%; }
.pay-method { flex: 1 1 140px; display: flex; gap: 8px; align-items: center; justify-content: center; border: 2px solid var(--line-2); border-radius: 12px;
    padding: 12px; min-height: 48px; font-weight: 600; background: var(--white); cursor: pointer; }
.pay-method:has(input:checked) { border-color: var(--green-deep); background: var(--green-soft); }
.pay-method input { width: 18px; height: 18px; accent-color: var(--green-deep); margin: 0; }
.pay-panel { margin-top: 16px; }
.pay-panel[hidden], .check__text li[hidden] { display: none; }
/* Sélecteur multi-campagnes de l'écran GMB (cases à cocher : sans JS, tactile) */
.scraping-campaign-pick { border: 1px solid var(--line, #d8d8d8); border-radius: 8px; padding: 6px 10px; margin: 0; min-width: 280px; max-width: 100%; max-height: 240px; overflow-y: auto; }
.scraping-campaign-pick legend { font-size: .8rem; padding: 0 4px; }
.scraping-campaign-pick__item { display: flex; gap: 8px; align-items: center; padding: 5px 0; min-height: 32px; cursor: pointer; }
.scraping-campaign-pick__item input { width: 18px; height: 18px; flex: none; }
.campaign-created { margin: 4px 0 0; }
/* Une colonne par filtre enregistré (campagnes, batchs) : en-tête sur plusieurs lignes pour que toutes tiennent à l'écran */
.table th.preset { white-space: normal; min-width: 76px; max-width: 120px; line-height: 1.25; }
.scraping-preset-list { list-style: none; margin: 6px 0 10px; padding: 0; display: flex; flex-direction: column; gap: 6px; }
.scraping-preset-list li { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; }
.scraping-preset-list li.is-editing .scraping-preset-name { font-weight: 700; }
.scraping-preset-name { min-width: 160px; }

/* GMB : tableau pleine largeur, défilement dans le cadre, en-tête et première colonne figés (07/10/2026) */
.table-scroll { overflow: auto; max-height: calc(100vh - 150px); min-height: 240px; -webkit-overflow-scrolling: touch; overscroll-behavior: contain; }
.table-scroll:focus-visible { outline: 2px solid var(--ink); outline-offset: -2px; }
.table-scroll thead th { position: sticky; top: 0; z-index: 3; background: var(--white); box-shadow: 0 1px 0 var(--line); }
.table.scraping-results td.scraping-results__name, .table.scraping-results th:first-child { position: sticky; left: 0; z-index: 2; background: var(--white); box-shadow: 1px 0 0 var(--line); }
.table.scraping-results th:first-child { z-index: 4; }
.table.scraping-results tbody tr:hover td.scraping-results__name { background: #FBFCFD; }
.table .dotcol { text-align: center; }
.dot { display: inline-block; width: 14px; height: 14px; border-radius: 50%; vertical-align: middle; border: 2px solid transparent; }
.dot--ok { background: var(--green); border-color: var(--green-ink); }
.dot--no { background: #E5484D; border-color: #A5282D; }
a.dot--ok:hover, a.dot--ok:focus-visible { outline: 2px solid var(--ink); outline-offset: 2px; }
.pager { scroll-margin-top: 70px; display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 8px 16px; margin: 10px 0; font-size: .9rem; }
.pager__links { display: flex; flex-wrap: wrap; align-items: center; gap: 4px; }
.pager a, .pager__off, .pager__gap { min-width: 34px; padding: 6px 10px; border-radius: 8px; text-align: center; text-decoration: none; }
.pager a { border: 1px solid var(--line); background: var(--white); color: var(--ink-2); }
.pager a:hover { background: var(--bg-3); color: var(--ink); }
.pager a.is-current { background: var(--ink); border-color: var(--ink); color: var(--white); font-weight: 700; }
.pager__off { color: var(--ink-4); }
.pager__gap { color: var(--ink-3); min-width: 0; padding-left: 4px; padding-right: 4px; }
@media (max-width: 900px) {
    .table-scroll { max-height: calc(100vh - 120px); }
    .table.scraping-results td.scraping-results__name { min-width: 140px; max-width: 170px; }
    .pager__page:not(.is-current) { display: none; }
}

/* Vérification des GMB (08/10/2026) : pastille du verdict, mention « vérifié par Nicolas », cases à cocher du filtre */
.table.scraping-results td.verdict { white-space: nowrap; }
.verdict-nicolas { display: block; margin-top: 2px; font-weight: 600; color: var(--ink); }
.scraping-verdict-pick { border: 1px solid var(--line, #d8d8d8); border-radius: 8px; padding: 6px 10px; margin: 0; display: flex; flex-wrap: wrap; gap: 4px 14px; max-width: 100%; }
.scraping-verdict-pick legend { font-size: .8rem; padding: 0 4px; }
.scraping-verdict-pick__item { display: flex; gap: 6px; align-items: center; min-height: 32px; cursor: pointer; }
.scraping-verdict-pick__item input { width: 18px; height: 18px; flex: none; }
/* Rubrique temporaire « Test SEO + GEO » (09/10/2026) */
.tsg-doc h3, .tsg-doc h4 { font-size: 1rem; margin: 20px 0 6px; }
.tsg-doc h3:first-child, .tsg-doc h4:first-child { margin-top: 0; }
.tsg-doc p { margin: 8px 0; }
.tsg-doc ul, .tsg-doc ol { margin: 6px 0 10px; padding-left: 20px; }
.tsg-doc .table-wrap { margin: 8px 0 14px; }

/* Statistiques des campagnes RCS et d'un destinataire (10/10/2026) */
.mt-l { margin-top: 28px; }
.row-actions { display: flex; gap: 8px; flex-wrap: wrap; }
.stats-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(170px, 1fr)); gap: 12px; margin-top: 16px; }
.stat { background: var(--white); border: 1px solid var(--line); border-radius: 14px; padding: 14px 16px; display: flex; flex-direction: column; gap: 4px; }
.stat__n { font-size: 1.5rem; font-weight: 700; line-height: 1.1; }
.stat__l { font-size: .85rem; color: var(--muted, #6B7A98); }
.stats-chart { display: block; max-width: none; }
.legend { display: flex; flex-wrap: wrap; gap: 6px 14px; margin: 10px 0 0; }
.legend__item { display: inline-flex; align-items: center; gap: 6px; }
/* Relecture des verdicts de l'IA (10/10/2026) */
.review-list { display: flex; flex-direction: column; gap: 12px; }
.review { padding: 16px 18px; }
.review.is-done { opacity: .6; }
.review__head { display: flex; justify-content: space-between; gap: 12px; align-items: flex-start; }
.review__head strong { display: block; }
.review__form { display: flex; flex-direction: column; gap: 8px; margin-top: 6px; }
.review__buttons { display: flex; flex-wrap: wrap; gap: 8px; }

/* Circuit de prospection (10/10/2026) : entonnoir par campagne de scraping, colonne Grille de l'écran GMB. */
.circuit-funnel { margin-top: 18px; }
.circuit-funnel__title { margin: 14px 16px 4px; font-size: 1.05rem; }
.circuit-funnel__lead { margin: 0 16px 10px; }
.scraping-results td.grille { white-space: nowrap; }
.grille__devant { display: block; font-size: .78rem; font-weight: 400; color: var(--muted, #667085); }
.circuit-funnel__name { min-width: 220px; }
.circuit-funnel .table th, .circuit-funnel .table td { padding-left: 10px; padding-right: 10px; }
.grille--mal { font-weight: 700; color: var(--danger, #b42318); }

/* Agenda (chantier 2) */
.agenda-week { display: grid; grid-template-columns: repeat(7, minmax(120px, 1fr)); gap: 8px; padding: 12px; min-width: 860px; }
.agenda-day { display: flex; flex-direction: column; gap: 6px; }
.agenda-day__head { font-weight: 700; font-size: 13px; padding-bottom: 4px; border-bottom: 1px solid var(--line, #e2e6ee); }
.agenda-free { font-size: 12px; color: #2f7d4f; background: #eef8f1; border-radius: 6px; padding: 4px 6px; }
.agenda-rdv { font-size: 13px; background: #0F1F46; color: #fff; border-radius: 8px; padding: 6px 8px; }
.agenda-rdv .small { color: #c9d2e6; }
.agenda-form { display: flex; flex-wrap: wrap; gap: 10px 16px; align-items: end; }
.agenda-form label { display: flex; flex-direction: column; gap: 4px; font-size: 13px; min-width: 160px; }
form.inline { display: inline; margin-left: 8px; }
/* CRM, chantier 3 : choix du canal, notes, fil chronologique */
.crm-canal { border: 0; padding: 0; margin: 0 0 10px; display: flex; flex-direction: row; flex-wrap: wrap; gap: 6px 16px; align-items: center; }
.crm-canal legend { font-size: 13px; font-weight: 600; margin-bottom: 4px; width: 100%; }
.crm-canal label { display: inline-flex; flex-direction: row; gap: 6px; align-items: center; justify-content: flex-start; width: auto; margin: 0; font-weight: 400; font-size: 14px; }
.crm-canal input[type=radio] { width: auto; height: auto; margin: 0; padding: 0; flex: none; box-shadow: none; }
.crm-canal p { width: 100%; margin: 0; }
.crm-note { border-top: 1px solid var(--line, #e2e6ee); padding-top: 8px; margin-top: 8px; }
.crm-note p { margin: 0 0 4px; overflow-wrap: anywhere; }
.crm-fil__date { white-space: nowrap; }

/* Inscription d'un membre (/inscription, 17/10/2026) */
.signup { max-width: 520px; }
.signup__results:empty { display: none; }
.signup__results { margin-top: 14px; }
.signup__list { list-style: none; margin: 0; padding: 0; border: 1px solid var(--line); border-radius: 14px; overflow: hidden; }
.signup__list li + li { border-top: 1px solid var(--line); }
.signup__list a { display: flex; flex-direction: column; gap: 2px; padding: 12px 14px; color: var(--ink); text-decoration: none; }
.signup__list a:hover, .signup__list a:focus-visible { background: var(--bg); }
.signup__list span { font-size: .85rem; color: var(--ink-3); }
.signup__manual { margin: 16px 0 0; }
.signup__place { display: flex; flex-direction: column; gap: 4px; padding: 16px; margin-bottom: 10px; border: 1px solid var(--line-2); border-radius: 14px; background: var(--bg); }
.signup__place-name { font-size: 1.1rem; }
.signup__group { border: 0; padding: 0; margin: 18px 0 4px; min-width: 0; }
.signup__group legend { font-weight: 700; margin-bottom: 10px; padding: 0; }
.hp { position: absolute; left: -10000px; width: 1px; height: 1px; overflow: hidden; }
/* Admin › Mes clients : membres (pack, état, origine, accès izyLocal) */
.member-filters { display: flex; flex-wrap: wrap; gap: 8px; margin: 0 0 16px; }
.member-filters a { text-decoration: none; }
.member-todo { margin-bottom: 18px; }
.member-todo ul { list-style: none; margin: 10px 0 0; padding: 0; }
.member-todo li { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 8px; padding: 10px 0; border-top: 1px solid var(--line); }
.member-todo form { display: inline; }
/* Espace membre, tâche 4 (17/10) : objectifs du mois (barres + texte « 2 / 4 »), état en tête du tableau de bord, page Avis. */
.goals { margin-bottom: 18px; }
.goal { margin-top: 12px; }
.goal__head { display: flex; justify-content: space-between; gap: 10px; align-items: baseline; font-size: .92rem; }
.goal progress { display: block; width: 100%; height: 10px; margin-top: 6px; border: 0; border-radius: 99px; background: var(--bg-3); accent-color: var(--green-deep); overflow: hidden; }
.goal progress::-webkit-progress-bar { background: var(--bg-3); border-radius: 99px; }
.goal progress::-webkit-progress-value { background: var(--green-deep); border-radius: 99px; }
.goal progress::-moz-progress-bar { background: var(--green-deep); border-radius: 99px; }
.goal--done .goal__count { color: var(--green-ink); }
.member-state p { margin: 0 0 10px; }
.member-state .member-next { margin: 12px 0 0; padding-top: 10px; border-top: 1px solid var(--line); }
.card--soft { background: var(--bg-3); box-shadow: none; }
#demander .check { margin-bottom: 8px; flex-wrap: wrap; }
/* Espace membre, tâche 5 (17/10) : Mes clients (CRM du membre) et Mes chantiers. Mobile d'abord. */
/* Onglets de statut de Mes clients : retour à la ligne plutôt qu’un défilement caché (18/10). */
.tabs--wrap { flex-wrap: wrap; overflow: visible; }
.tabs a .count { display: inline-block; min-width: 1.6em; margin-left: 4px; padding: 0 6px; border-radius: 99px; background: var(--bg-3); font-size: .78rem; text-align: center; }
.crm-search { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; }
.crm-search input[type=search] { flex: 1 1 100%; min-width: 0; }
.crm-search select { flex: 1 1 0; min-width: 0; }
@media (min-width: 720px) { .crm-search input[type=search] { flex: 1 1 240px; } .crm-search select { flex: 0 0 auto; } }
.crm-todo .list__row { padding: 10px 0; border-top: 1px solid var(--line); }
.crm-todo .list__row:first-child { border-top: 0; }
.crm-todo form, .crm-actions form { display: inline; }
.crm-actions { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; }
.crm-name { text-decoration: none; color: inherit; }
.crm-history { list-style: none; padding: 0; margin: 0; }
.crm-history li { padding: 8px 0; border-top: 1px solid var(--line); }
.crm-history li:first-child { border-top: 0; }
.prestation-text { margin: 6px 0; white-space: normal; overflow-wrap: anywhere; }

/* Espace membre (17/10) : page Abonnement, les trois packs côte à côte. */
.pack-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 16px; align-items: stretch; }
@media (max-width: 960px) { .pack-grid { grid-template-columns: 1fr; } }
.pack-card { display: flex; flex-direction: column; gap: 8px; position: relative; }
.pack-card.is-current { border-color: var(--green-deep); box-shadow: 0 0 0 1px var(--green-deep); }
.pack-card.is-selected { border-color: var(--ink); box-shadow: 0 0 0 2px var(--ink); }
.pack-card__tag { align-self: flex-start; }
.pack-card__title { font-family: var(--font-display); font-size: 1.25rem; margin: 0; }
.pack-card__price b { font-family: var(--font-display); font-size: 2rem; letter-spacing: -.02em; margin-right: 2px; }
.pack-card__text { color: var(--ink-2); font-size: .93rem; flex: 1; }
.pack-card__action .btn { width: 100%; justify-content: center; }

/* Espace membre (17/10, tâche 7) : publications (fiche et réseaux), comptes de réseaux sociaux, Mon site. */
.post-item { padding: 12px 0; border-top: 1px solid var(--line); }
.post-item:first-of-type { border-top: 0; }
.post-item__meta { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; margin: 0 0 6px; }
.post-item__text { margin: 6px 0; overflow-wrap: anywhere; }
.post-item__img { display: block; max-width: 100%; max-height: 320px; border-radius: 8px; margin: 6px 0; object-fit: cover; }
.social-list { list-style: none; padding: 0; margin: 16px 0; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 16px; }
@media (max-width: 960px) { .social-list { grid-template-columns: 1fr; } }
.social-item h2 { margin-bottom: 8px; }
.social-item__account { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; justify-content: space-between; margin-bottom: 8px; }
.social-item__account p { margin: 0; }
.site-secret summary { cursor: pointer; color: var(--ink-2); }
.site-secret code { font-size: 1.05rem; user-select: all; }

/* Espace membre (17/10, tâche 8) : assistant IA (fil mobile d'abord, photos, cartes d'actions). */
.assistant__thread { max-height: 62vh; overflow-y: auto; padding-right: 2px; }
.assistant__text { overflow-wrap: anywhere; }
.assistant__photos { display: flex; flex-wrap: wrap; gap: 6px; margin: 6px 0; }
.assistant__photos img { width: 84px; height: 84px; object-fit: cover; border-radius: 8px; }
.assistant__thinking { margin: 0 0 12px; font-style: italic; }
.assistant__tools { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; }
.assistant__tools [data-assistant-send] { margin-left: auto; }
.chat__form .assistant__tools .btn { align-self: center; }
.assistant__photo-btn { cursor: pointer; }
.assistant__error { color: #8B1E1E; margin: 0; }
.assistant-card { background: var(--white); border: 1px solid var(--line); border-radius: 12px; padding: 10px 12px; margin-top: 8px; }
.assistant-card--proposee { border-color: #BCDDF5; }
.assistant-card__actions { display: flex; gap: 8px; margin-top: 8px; }
.assistant-card__actions form { margin: 0; }
@media (max-width: 640px) { .assistant__thread { max-height: none; } .chat__bubble { max-width: 94%; } }

/* ---------- Livrables de l'espace membre (18/10) ---------- */
.livrable-body h1, .livrable-body h2, .livrable-body h3 { font-size: 1.08rem; margin: 16px 0 6px; }
.livrable-body h1:first-child, .livrable-body h2:first-child, .livrable-body h3:first-child { margin-top: 0; }
.livrable-body p { margin: 0 0 10px; }
.livrable-body ul, .livrable-body ol { margin: 4px 0 10px 1.2em; padding-left: .4em; }
.livrable-body table { width: 100%; border-collapse: collapse; font-size: .92rem; margin: 8px 0 12px; display: block; overflow-x: auto; }
.livrable-body th, .livrable-body td { border-bottom: 1px solid var(--line); padding: 6px 8px; text-align: left; }
.livrable-body blockquote { border-left: 3px solid var(--line); padding-left: 12px; color: var(--ink-2); margin: 8px 0; }
.livrable-files { display: grid; grid-template-columns: repeat(auto-fill, minmax(180px, 1fr)); gap: 12px; }
.livrable-files figure { margin: 0; }
.livrable-files img { width: 100%; border-radius: 10px; display: block; margin-bottom: 4px; }
.admin-decision .doc-row { grid-template-columns: minmax(0, 1fr) auto auto auto; }
.admin-decision .doc-row > span > span { white-space: normal; }
@media (max-width: 700px) { .admin-decision .doc-row { grid-template-columns: minmax(0, 1fr) auto; } }
.doc-row > span > span.pill { display: inline-flex; justify-self: start; }
[data-deliverables] .doc-row strong, [data-recent-deliverables] .doc-row strong { white-space: normal; }

/* --- Onboarding R1 (20/10) : page Bienvenue, tableau de bord d'attente, audit en préparation --- */
.onb-hero { background: var(--ink); color: #fff; border-radius: var(--radius); padding: 26px; margin-bottom: 18px; }
.onb-hero .eyebrow { color: #BFE514; }
.onb-hero h1 { color: #fff; font-size: 1.8rem; margin-bottom: 8px; }
.onb-hero p { color: #D0D7E2; }
.onb-engage { display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px; margin: 18px 0 0; }
.onb-engage div { background: #ffffff14; border-radius: 14px; padding: 12px; font-size: 14px; }
.onb-engage strong { display: block; color: #BFE514; margin-bottom: 2px; }
@media (max-width: 720px) { .onb-engage { grid-template-columns: 1fr; } }
.onb-tabs { display: flex; gap: 6px; margin-bottom: 14px; flex-wrap: wrap; }
.onb-tabs button { border: 1px solid var(--line-2); background: #fff; border-radius: 999px; padding: 7px 14px; cursor: pointer; font: inherit; }
.onb-tabs button.on { background: var(--ink); color: #fff; border-color: var(--ink); }
.onb-tuto { list-style: none; display: grid; gap: 14px; margin: 0; padding: 0; }
.onb-tuto li { display: flex; gap: 12px; }
.onb-tuto__n { flex: none; width: 30px; height: 30px; border-radius: 50%; background: var(--green); font-weight: 700; display: grid; place-items: center; }
.onb-tuto__t { flex: 1; min-width: 0; }
.onb-tuto__t p { margin-bottom: 8px; }
.onb-gshot { border: 1px solid var(--line-2); border-radius: 10px; overflow: hidden; max-width: 420px; font-family: Arial, sans-serif; font-size: 13px; color: #202124; }
.onb-gshot__bar { background: #f1f3f4; padding: 6px 8px; display: flex; gap: 4px; align-items: center; }
.onb-gshot__bar span { width: 8px; height: 8px; border-radius: 50%; background: #dadce0; }
.onb-gshot__bar em { font-style: normal; margin-left: 8px; color: #5f6368; }
.onb-gshot__body { padding: 10px; display: grid; gap: 6px; }
.onb-g-search { border: 1px solid #dfe1e5; border-radius: 20px; padding: 6px 12px; }
.onb-g-row { color: #3c4043; }
.onb-g-menu { border: 1px solid #e8eaed; border-radius: 8px; }
.onb-g-menu div { padding: 6px 10px; border-bottom: 1px solid #f1f3f4; }
.onb-g-input { border: 1px solid #1a73e8; border-radius: 4px; padding: 6px; }
.onb-g-btn { justify-self: end; background: #1a73e8; color: #fff; border-radius: 4px; padding: 5px 14px; }
.onb-g-hl { background: #FFF59D; outline: 2px solid #F9A825; border-radius: 4px; padding: 0 3px; font-weight: 700; }
.onb-mono { font-family: var(--font-mono); font-size: .92em; word-break: break-all; }
.onb-copy { display: flex; gap: 8px; align-items: center; background: var(--green-soft); border-radius: 12px; padding: 10px 12px; margin: 10px 0 16px; flex-wrap: wrap; }
.onb-wait { display: flex; gap: 14px; align-items: flex-start; }
.onb-wait__dot { flex: none; width: 12px; height: 12px; border-radius: 50%; background: var(--amber); margin-top: 7px; box-shadow: 0 0 0 6px var(--amber-soft); }
.onb-locked { display: grid; grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); gap: 12px; }
.onb-locked .card { margin: 0; opacity: .65; display: flex; gap: 10px; align-items: center; }
.onb-locked svg { width: 20px; height: 20px; flex: none; }
.onb-locked__lock { margin-left: auto; }

/* Page d'activation d'un espace R1 (templates/signup_r1.php depuis le 21/10, lien d'inscription) : formulaire pré-rempli. */
.recap { display: flex; flex-direction: column; gap: 6px; padding: 14px 16px; margin: 0 0 18px; border: 1px solid var(--line-2); border-radius: 14px; background: var(--bg); }
.recap > div { display: flex; justify-content: space-between; gap: 12px; }
.recap > div > span { color: var(--ink-3); font-size: .85rem; }
.recap > div > strong { text-align: right; overflow-wrap: anywhere; }
.recap > .small { display: block; margin-top: 4px; }

/* 20/10 soir : vraies captures du tuto (Bienvenue, ordinateur) */
.onb-shot { display: block; width: 100%; max-width: 560px; height: auto; border: 1px solid var(--line-2); border-radius: 10px; box-shadow: var(--shadow); }
.onb-shot--mobile { max-width: 300px; }
.onb-shot + .onb-shot { margin-top: 10px; }
.onb-address { border: 2px solid var(--green-deep); border-radius: 14px; padding: 14px 16px; margin: 6px 0 18px; background: var(--white); }
.onb-address__label { font-weight: 700; margin: 0 0 6px; }
.onb-copy--big { margin: 6px 0 8px; }
.onb-copy--big .onb-mono { font-size: 1.15rem; }
.onb-copy--step { margin: 8px 0 10px; }

/* 21/10 : bouton Google sobre (logo G, fond blanc, bordure) et séparateur « ou » (lien d'inscription, connexion) */
.btn-google { display: flex; align-items: center; justify-content: center; gap: 10px; width: 100%; min-height: 44px; padding: 10px 16px;
    background: #fff; color: #1f1f1f; border: 1px solid #747775; border-radius: 12px; font: inherit; font-weight: 500; text-decoration: none; cursor: pointer; }
.btn-google:hover { background: #f8f9fa; border-color: #5f6368; }
.btn-google:focus-visible { outline: 2px solid var(--ink); outline-offset: 2px; }
.btn-google__g { flex: none; }
.card > .btn-google + .btn-google { margin-top: 10px; }   /* 01/11 : Google puis Apple sur /connexion (sur /creer-compte, le « gap » du formulaire suffit) */
.or-sep { display: flex; align-items: center; gap: 12px; margin: 18px 0; color: var(--ink-4); font-size: .85rem; }
.or-sep::before, .or-sep::after { content: ""; flex: 1; border-top: 1px solid var(--line-2); }
.or-sep--big { margin: 26px 0; font-size: .95rem; text-transform: uppercase; letter-spacing: .08em; }
.form-section { font-size: 1.05rem; margin: 0 0 12px; }
.onb-hero--compact { padding: 18px 20px; margin-bottom: 14px; }
.onb-hero--compact h1 { font-size: 1.45rem; margin-bottom: 6px; }
.onb-hero--compact p { font-size: .95rem; margin: 0; }
.onb-addr-line { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 10px; margin: 4px 0 14px; }
.onb-addr { display: inline-flex; align-items: center; gap: 8px; }
.onb-addr .onb-mono { font-weight: 600; }
.onb-addr--step { display: flex; margin: 6px 0 10px; }
.onb-addr__mail { font-weight: 700; color: var(--ink); word-break: break-all; }
.onb-addr--big { gap: 12px; margin-top: 4px; }
.onb-addr--big .onb-addr__mail { font-size: 1.2rem; }
.onb-quiet { margin-top: 40px; background: transparent; box-shadow: none; border-style: dashed; }
.onb-quiet h2 { font-size: 1rem; color: var(--ink-2); }
.onb-tabs--small button { font-size: .85rem; padding: 6px 12px; }
.onb-em { font-weight: 700; text-decoration: underline; text-underline-offset: 3px; color: inherit; }
.signup-pitch { list-style: none; margin: 4px 0 18px; padding: 0; display: grid; gap: 6px; color: var(--ink-2); }
.signup-pitch li { padding-left: 22px; position: relative; }
.signup-pitch li::before { content: "✓"; position: absolute; left: 0; color: var(--green-deep); font-weight: 800; }
.or-sep--strong { color: var(--ink); font-weight: 800; font-size: 1.05rem; letter-spacing: .12em; margin: 28px 0; }
.or-sep--strong::before, .or-sep--strong::after { border-top: 2px solid var(--ink-4); }
/* CRM (21/10) : recherche d'une fiche, un seul champ avec suggestions. */
.crm-find { position: relative; margin-bottom: 20px; }
.crm-find input[type=search] { width: 100%; }
.crm-find__list { position: absolute; z-index: 30; top: calc(100% + 6px); left: 0; right: 0; max-height: 60vh; overflow-y: auto; list-style: none; margin: 0; padding: 6px;
    background: var(--white); border: 1px solid var(--line-2); border-radius: 14px; box-shadow: 0 16px 40px -20px rgba(15, 31, 70, .35); }
.crm-find__list a { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 10px; padding: 10px 12px; border-radius: 10px; color: var(--ink); text-decoration: none; }
.crm-find__list a small { flex-basis: 100%; color: var(--ink-3); }
.crm-find__list [aria-selected="true"] a { background: var(--green-soft); }
.crm-find__none { padding: 10px 12px; color: var(--ink-3); }

/* 25/10 : page de bienvenue (templates/member_welcome.php) : carte de la fiche comme dans le RCS, fenêtre « demande d'accès » */
.wel-hero h1 { overflow-wrap: anywhere; }
.wel-hero p { margin: 0; font-size: 1.05rem; }
/* Carte de la fiche aux mesures de l'image RCS « deux cartes » (bin/rcs-duel-visual.py, .id, image de 1080 px) à l'échelle 1 sur
   ordinateur, réduite sur téléphone. Les deux cadres de la page prennent toute la largeur de l'espace (render 'wide'). */
.wel-card__titre { font-family: 'Inter', Arial, sans-serif; font-size: .95rem; font-weight: 800; text-transform: uppercase; letter-spacing: .03em; text-align: center; margin: 2px 0 14px; }
.wel-id { display: flex; align-items: center; gap: 14px; padding: 12px 16px; border: 1px solid #E6EAF0; border-radius: 14px; background: #fff;
    font-family: 'Inter', Arial, sans-serif; color: #0F1F46; }
.wel-id__photo { width: 60px; height: 60px; border-radius: 10px; object-fit: cover; flex: none; }
.wel-id__lettre { display: flex; align-items: center; justify-content: center; background: #EEF2F8; font-weight: 800; font-size: 24px; }
.wel-id__tx { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 2px; }
.wel-id p { margin: 0; }
.wel-id__nom { font-size: 16px; font-weight: 600; line-height: 1.2;
    display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; overflow-wrap: anywhere; }
.wel-id__note { display: flex; align-items: center; flex-wrap: wrap; gap: 5px; font-size: 14px; font-weight: 600; line-height: 1.3; color: #55627E; }
.wel-id__note b { color: #1A73E8; font-weight: 600; }
.wel-id__etoiles { flex: none; width: 76px; height: 14px; }
.wel-id__lieu { font-size: 14px; font-weight: 600; line-height: 1.3; color: #55627E; }
.wel-id__g { flex: none; width: 30px; height: 30px; }
@media (max-width: 760px) {
    .wel-id { gap: 12px; padding: 10px 12px; }
    .wel-id__photo { width: 54px; height: 54px; }
    .wel-id__g { width: 26px; height: 26px; }
}
.wel-btn, [data-welcome-request-banner] .btn { white-space: normal; text-align: center; height: auto; }
.wel-form { margin-top: 20px; }
.wel-btn { width: 100%; justify-content: center; font-size: 1.15rem; padding: 18px 20px; }
/* 26/10 : adresse pas encore confirmée : « Confirmez votre adresse… » + « Renvoyer le mail » à la place du bouton */
.wel-verify { padding: 14px 16px; background: var(--bg); border-radius: 12px; }
.wel-verify p { margin: 0 0 12px; line-height: 1.5; }
/* 25/10 : barre d'alerte « audit gratuit » tout en haut de l'espace membre (au-dessus du menu), fermée par la croix pour la visite */
.wel-alert { position: relative; display: flex; align-items: center; justify-content: center; gap: 10px 18px; flex-wrap: wrap;
    background: var(--ink); color: #fff; padding: 10px 56px 10px 20px; font-size: .92rem; line-height: 1.4; }
.wel-alert__txt { display: inline-flex; align-items: center; gap: 10px; }
.wel-alert__ico { flex: none; display: grid; place-items: center; width: 22px; height: 22px; border-radius: 50%; background: #BFE514; color: var(--ink); font-weight: 800; font-size: 14px; }
.wel-alert strong { color: #BFE514; }
.wel-alert__btn { flex: none; }
.wel-alert__close { position: absolute; top: 50%; right: 12px; transform: translateY(-50%); margin: 0; }
.wel-alert__close button { background: none; border: 0; cursor: pointer; color: #fff; opacity: .8; font-size: 24px; line-height: 1; width: 34px; height: 34px; border-radius: 50%; }
.wel-alert__close button:hover { opacity: 1; background: rgba(255, 255, 255, .12); }
@media (max-width: 900px) { .wel-alert { justify-content: flex-start; padding: 10px 50px 12px 16px; } .wel-alert__close { top: 10px; transform: none; } }

/* 25/10 : tableau de bord du membre (templates/partials/member_dashboard.php) : fiche, activité, visibilité, villes, concurrents */
.dash-top { display: grid; grid-template-columns: minmax(0, 2fr) minmax(0, 1fr); gap: 18px; margin-bottom: 18px; }
.dash-top .card { margin: 0; }
.dash-fiche { max-width: none; }
.dash-act h2, .dash-vis h2, .dash-pair h2 { font-size: 1.05rem; margin: 0 0 12px; }
.dash-facts { display: grid; grid-template-columns: auto 1fr; gap: 8px 14px; margin: 0; font-size: .92rem; }
.dash-facts dt { color: var(--ink-3); }
.dash-facts dd { margin: 0; font-weight: 600; overflow-wrap: anywhere; }
.dash-vis { margin-bottom: 18px; }
.dash-vis__head p { margin: -6px 0 14px; }
.dash-vis__body { display: grid; grid-template-columns: minmax(0, 3fr) minmax(0, 2fr); gap: 20px; align-items: center; }
.dash-map__map { height: 360px; border-radius: 14px; overflow: hidden; background: #EFF3F8; }
.ap-pin--out { background: #EF4444; font-weight: 800; }
.dash-vis__stats { display: grid; gap: 14px; }
.dash-stat { display: flex; align-items: center; gap: 14px; }
.dash-stat strong { font-family: var(--font-display, inherit); font-size: 2.4rem; line-height: 1; min-width: 2.2ch; }
.dash-stat--top strong { color: #11B77F; }
.dash-stat span { color: var(--ink-2); font-size: .95rem; }
.dash-legend { display: flex; flex-wrap: wrap; gap: 8px 16px; margin: 4px 0 0; font-size: .85rem; color: var(--ink-3); }
.dash-legend span { display: inline-flex; align-items: center; gap: 6px; }
.dash-dot { width: 14px; height: 14px; border-radius: 50%; display: inline-block; border: 2px solid #fff; box-shadow: 0 1px 3px rgba(15, 23, 42, .3); }
.dash-dot--top { background: #11B77F; } .dash-dot--out { background: #EF4444; }
.dash-pair { margin-bottom: 18px; }
.dash-pair .card { margin: 0; }
.dash-list { list-style: none; margin: 0; padding: 0; display: grid; gap: 10px; }
.dash-list li { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 2px 12px; align-items: center; font-size: .92rem; }
.dash-list__nom { font-weight: 600; overflow-wrap: anywhere; }
.dash-list__nom small { display: block; font-weight: 400; }
.dash-list__val { color: var(--ink-2); white-space: nowrap; }
.dash-bar { grid-column: 1 / -1; height: 6px; border-radius: 3px; background: #F1D5D5; overflow: hidden; }
.dash-bar__fill { display: block; height: 100%; width: 0; background: #11B77F; }
.dash-wait { margin-bottom: 18px; }
@media (max-width: 900px) {
    .dash-top, .dash-vis__body { grid-template-columns: minmax(0, 1fr); }
    .dash-map__map { height: 300px; }
}
/* 25/10 : deux cartes côte à côte, « Vous » et « Votre concurrent », comme l'image RCS (même grille : aucun appel de plus) */
.dash-maps { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 18px; }
.dash-maps--seule { grid-template-columns: minmax(0, 1fr); }
.dash-map__qui { text-align: center; margin: 0 0 8px; line-height: 1.2; }
.dash-map__qui em { display: block; font-style: normal; font-size: .75rem; font-weight: 800; letter-spacing: .08em; text-transform: uppercase; color: var(--ink-3); }
.dash-map__qui span { font-weight: 800; font-size: 1.1rem; }
.dash-map__stat { text-align: center; margin: 10px 0 0; color: var(--ink-2); }
.dash-map__stat strong { display: block; font-size: 1.8rem; color: var(--ink); line-height: 1.1; }
.dash-map--rival .dash-map__stat strong { color: var(--ink); }
.dash-vis .dash-legend { justify-content: center; margin-top: 14px; }
@media (max-width: 900px) { .dash-maps { grid-template-columns: minmax(0, 1fr); } }
.dash-cta { margin: 0 0 18px; }   /* 25/10 : tableau de bord, audit pas encore demandé : juste le bouton */
/* 25/10 : guide « réautoriser les notifications » (partials/push_box.php) */
.push-guide { margin: 8px 0 12px; padding-left: 20px; line-height: 1.5; }
.push-guide li + li { margin-top: 4px; }
.push-guide__shot { display: block; width: 100%; max-width: 440px; height: auto; border: 1px solid var(--line-2); border-radius: 10px; margin: 4px 0 12px; }
.push-intro { font-size: 1.05rem; line-height: 1.5; margin: 0 0 10px; }   /* 25/10 : entre le titre de l'encadré et les étapes */
/* 25/10 : bas du menu : rond avec la photo du profil Google, sinon les initiales */
.sidebar__who { display: flex; align-items: center; gap: 10px; min-width: 0; }
.sidebar__who-tx { min-width: 0; }
.avatar { flex: none; width: 36px; height: 36px; border-radius: 50%; overflow: hidden; display: grid; place-items: center; background: var(--ink); color: #BFE514;
    font-weight: 700; font-size: .85rem; letter-spacing: .02em; }
.avatar img { width: 100%; height: 100%; object-fit: cover; display: block; }

/* 25/10 : haut du menu : logo + bouton plier / déplier (à droite ; dessous quand le menu est replié) */
.sidebar__head { display: flex; align-items: flex-start; justify-content: space-between; gap: 6px; }
.sidebar__head .logo { min-width: 0; }
.sidebar__head .side-toggle { margin-top: 6px; }

/* Offre Essentiel (25/10, Nicolas) : une sorte de devis, sections numérotées, tableau HT / TVA / TTC, bon pour accord. */
.ofr { max-width: 920px; padding: 0; overflow: hidden; }
.ofr-head { display: flex; justify-content: space-between; align-items: flex-start; gap: 20px; flex-wrap: wrap; padding: 24px 32px; border-bottom: 1px solid var(--line); background: var(--bg-3); }
.ofr-head__brand { display: flex; align-items: center; gap: 12px; }
.ofr-head__brand img { height: 40px; width: auto; }
.ofr-head__brand strong { display: block; font-family: var(--font-display); font-size: 1.2rem; line-height: 1.1; }
.ofr-head__brand span { font-size: .85rem; color: var(--ink-3); }
.ofr-head__meta { display: grid; grid-template-columns: auto auto; gap: 2px 14px; margin: 0; font-size: .9rem; }
.ofr-head__meta dt { color: var(--ink-3); }
.ofr-head__meta dd { margin: 0; font-weight: 600; }
.ofr-sec { padding: 26px 32px; border-bottom: 1px solid var(--line); }
.ofr-sec:last-child { border-bottom: 0; }
.ofr-sec h2 { display: flex; align-items: center; gap: 12px; font-size: 1.25rem; margin-bottom: 12px; }
.ofr-sec h3 { font-size: 1rem; margin: 18px 0 6px; }
.ofr-n { flex: none; display: inline-grid; place-items: center; width: 30px; height: 30px; border-radius: 50%; background: var(--ink); color: var(--green); font-size: .95rem; font-weight: 700; }
.ofr-callout { background: var(--green-soft); border-radius: 12px; padding: 12px 16px; margin: 10px 0 4px; color: var(--ink); }
.ofr-lines { list-style: none; margin: 0; padding: 0; }
.ofr-lines li { display: flex; gap: 10px; align-items: flex-start; padding: 9px 0; border-bottom: 1px solid var(--line); }
.ofr-lines li:last-child { border-bottom: 0; }
.ofr-lines li > span:last-child { display: flex; flex-direction: column; min-width: 0; }
.ofr-lines .pill { margin-top: 2px; flex: none; min-width: 92px; justify-content: center; }
.ofr-more { margin-top: 12px; }
.ofr-more summary { cursor: pointer; color: var(--ink-2); }
.ofr-cols { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 24px; }
.ofr-ticks { list-style: none; margin: 8px 0 0; padding: 0; }
.ofr-ticks li { position: relative; padding: 6px 0 6px 26px; display: flex; flex-direction: column; }
.ofr-ticks li::before { content: "✓"; position: absolute; left: 0; top: 5px; color: var(--green-ink); font-weight: 700; }
.ofr-how { border: 1px solid var(--line); border-radius: 14px; padding: 4px 18px 14px; margin-top: 14px; }
.ofr-how ol { margin: 8px 0 0; padding-left: 1.3em; }
.ofr-how li { margin: 6px 0; }
.ofr-table-wrap { overflow-x: auto; }
.ofr-table { width: 100%; border-collapse: collapse; font-size: .95rem; }
.ofr-table th, .ofr-table td { padding: 10px 12px; text-align: left; border-bottom: 1px solid var(--line); vertical-align: top; }
.ofr-table thead th { font-size: .8rem; text-transform: uppercase; letter-spacing: .04em; color: var(--ink-3); font-weight: 600; background: var(--bg-3); }
.ofr-table td:last-child, .ofr-table th:last-child { text-align: right; white-space: nowrap; }
.ofr-table tbody td span { display: block; margin-top: 2px; }
.ofr-table tfoot th { text-align: right; font-weight: 500; color: var(--ink-2); }
.ofr-table__total th, .ofr-table__total td { font-size: 1.1rem; font-weight: 700; color: var(--ink); border-bottom: 0; background: var(--green-soft); }
.ofr-terms { margin: 14px 0 0; padding-left: 1.2em; color: var(--ink-2); }
.ofr-terms li { margin: 4px 0; }
.ofr-pay-bloc { margin-top: 18px; padding-top: 18px; border-top: 1px solid var(--line); scroll-margin-top: 16px; }
.ofr-pay { max-width: 560px; }
.ofr-pay .pay-methods { margin-top: 4px; }
.ofr-secure { display: flex; gap: 12px; align-items: flex-start; border: 1px solid var(--line-2); background: var(--white); border-radius: 12px; padding: 12px 14px; margin: 0 0 4px; font-size: .9rem; color: var(--ink-2); }
.ofr-secure svg { flex: none; width: 22px; height: 22px; color: var(--green-ink); margin-top: 2px; }
.ofr-secure strong { display: block; color: var(--ink); }
.ofr-mandate { margin-top: 4px; }
.ofr-pay .check { margin-top: 16px; }
.ofr-cta { width: 100%; justify-content: center; font-size: 1.05rem; padding-top: 14px; padding-bottom: 14px; }
.ofr-pay .pay-panel:has(.ofr-cta) { margin-top: 4px; }
@media (max-width: 700px) {
    .ofr-head, .ofr-sec { padding-left: 18px; padding-right: 18px; }
    .ofr-cols { grid-template-columns: minmax(0, 1fr); gap: 0; }
    .ofr-lines .pill { min-width: 0; }
    .ofr-lines li { flex-direction: column; gap: 4px; }
}
.member-state { margin-bottom: 20px; }   /* 25/10 tard : l'état est en tête du tableau de bord, au-dessus de la fiche */
.wel-alert__btns { display: inline-flex; gap: 8px; flex-wrap: wrap; }   /* 25/10 : barre « Votre audit est prêt » (deux boutons) */
.wel-alert__btn--ghost { background: transparent; color: #fff; border: 1px solid rgba(255, 255, 255, .55); }
.wel-alert__btn--ghost:hover { background: rgba(255, 255, 255, .12); color: #fff; }
/* 25/10 tard (Nicolas) : offre plus courte en tête : tarif (avec ce qu'il comprend), bon pour accord, puis le détail ; bouton « haut de page » */
.ofr-page-head { margin-bottom: 14px; }
.ofr-head { padding-top: 16px; padding-bottom: 16px; }
.ofr-sec[data-ofr="tarif"] { padding-top: 20px; padding-bottom: 20px; }
.ofr-table__offre td { font-size: 1rem; }
.ofr-table__inclus td { padding-top: 6px; padding-bottom: 6px; border-bottom: 0; }
.ofr-table__inclus td:first-child { padding-left: 22px; }
.ofr-table__inclus a { margin-left: 4px; color: var(--ink-3); }
.ofr-tick { color: var(--green-ink); font-weight: 700; margin-right: 8px; }
.ofr-table tbody tr:last-child td { padding-bottom: 12px; border-bottom: 1px solid var(--line); }
.ofr-terms { margin-top: 10px; padding-left: 0; }
.ofr-sec[id] { scroll-margin-top: 16px; }
.ofr-table .ofr-tick, .ofr-table__offre td span { display: inline; }   /* la règle « tbody td span » les mettait à la ligne */
.ofr-head { align-items: center; }
.ofr-head__brand img { height: 30px; }
.ofr-head__brand strong { font-size: 1.05rem; }
.ofr-head__meta { display: flex; flex-wrap: wrap; gap: 4px 18px; }
.ofr-head__meta > div { display: flex; gap: 6px; }
.ofr-sec[data-ofr="tarif"] h2 { margin-bottom: 8px; }
.ofr-table__offre td { padding-top: 10px; padding-bottom: 8px; }
.ofr-table tfoot th, .ofr-table tfoot td { padding-top: 7px; padding-bottom: 7px; }
@media (max-width: 700px) {   /* 25/10 tard : sur téléphone aussi, le tarif sans défiler (l'en-tête du devis double le titre de la page) */
    .ofr-head { display: none; }
    .ofr-sec[data-ofr="tarif"] { padding-top: 14px; }
    .ofr-table th, .ofr-table td { padding-left: 8px; padding-right: 8px; }
    .ofr-table thead { display: none; }
    .ofr-table__inclus td { font-size: .85rem; line-height: 1.3; padding-top: 4px; padding-bottom: 4px; }
    .ofr-table__inclus td:first-child { padding-left: 8px; }
    .ofr-table__inclus td:last-child { font-size: .78rem; }
    .ofr-tick { margin-right: 5px; }
    .ofr-terms { font-size: .8rem; }
}
/* 25/10 tard (Nicolas) : bandeau fixé en bas, sur toute la largeur de la partie droite (pas sur le menu), CTA vert qui ramène en haut */
.ofr-bar { position: fixed; left: var(--side); right: 0; bottom: 0; z-index: 30; display: flex; align-items: center; justify-content: center; gap: 12px 24px;
    flex-wrap: wrap; padding: 12px 24px; background: var(--ink); color: #fff; box-shadow: 0 -10px 24px -14px rgba(15, 31, 70, .45); transition: opacity .2s, transform .2s; }
.ofr-bar strong { color: var(--green); }
.ofr-bar__cta { flex: none; }
.ofr-bar.is-hidden { opacity: 0; pointer-events: none; transform: translateY(100%); }
.ofr { margin-bottom: 170px; }   /* la fin de la page n'est pas cachée par le bandeau (30/10 : page raccourcie, le bouton de paiement passait dessous) */
@media (max-width: 900px) { .ofr-bar { left: 0; padding: 10px 16px; gap: 8px 14px; } .ofr-bar__txt { font-size: .85rem; } }
.ofr-sans-eng { float: left; text-transform: uppercase; letter-spacing: .04em; font-weight: 800; color: var(--ink); }   /* 25/10 tard (Nicolas) : dans la ligne du total */
@media (max-width: 700px) { .ofr-sans-eng { float: none; display: block; text-align: left; font-size: .8rem; margin-bottom: 2px; } }
/* 25/10 tard (Nicolas) : bloc de paiement sur son modèle (liste des moyens, champs du prélèvement, cadenas, un seul bouton) */
.ofr-pm { max-width: 720px; background: var(--white); border-radius: 14px; box-shadow: 0 6px 24px -12px rgba(15, 31, 70, .3); padding: 20px 24px; }
.ofr-pm__title { font-weight: 700; margin: 0 0 10px; }
.ofr-pm__opt { display: flex; align-items: center; gap: 10px; padding: 8px 0; cursor: pointer; font-size: 1rem; }
.ofr-pm__opt input { width: 18px; height: 18px; margin: 0; accent-color: #5B4BDB; }
.ofr-pm__panel { padding: 4px 0 8px 30px; }
.ofr-pm__panel[hidden] { display: none; }
.ofr-pm__panel p { margin: 0 0 10px; }
.ofr-pm__req { font-size: .78rem; }
.ofr-pm__panel .field { max-width: 560px; }
.ofr-pm__lock { display: flex; gap: 8px; align-items: flex-start; margin: 14px 0 0; color: var(--ink-3); font-size: .9rem; }
.ofr-pm__lock svg { flex: none; width: 16px; height: 16px; margin-top: 3px; }
.ofr-pm__actions { display: flex; gap: 12px; flex-wrap: wrap; margin-top: 18px; }
.ofr-pm__cta:disabled { background: #9A9A9A; color: #fff; cursor: not-allowed; }
.ofr-pm__cancel { background: var(--white); color: var(--ink); border: 1px solid var(--line-2); }
.ofr-pm__legal { margin: 12px 0 0; font-size: .78rem; color: var(--ink-3); }
.ofr-pm__legal[hidden], .ofr-pm__legal span[hidden] { display: none; }
@media (max-width: 700px) { .ofr-pm { padding: 16px; } .ofr-pm__panel { padding-left: 0; } }
.ofr-pay-bloc .ofr-pm { max-width: none; background: none; border-radius: 0; box-shadow: none; padding: 0; }   /* 30/10 : fusionné avec le bloc de l’offre */
.ofr-pm__opt input:focus { box-shadow: none; outline: none; }
.ofr-pm__opt input:focus-visible { outline: 2px solid var(--ink); outline-offset: 2px; }
/* 25/10 tard (Nicolas) : fenêtre au retour du paiement (offre activée, on se met au boulot) */
.ofr-done { max-width: 560px; width: calc(100% - 32px); border: 0; border-radius: 18px; padding: 30px 30px 26px; box-shadow: 0 24px 60px -20px rgba(15, 31, 70, .5); color: var(--ink); }
.ofr-done::backdrop { background: rgba(15, 31, 70, .55); }
.ofr-done:not([open]) { display: none; }
.ofr-done__close { position: absolute; top: 10px; right: 14px; font-size: 26px; line-height: 1; text-decoration: none; color: var(--ink-3); padding: 4px 8px; }
.ofr-done__check { display: grid; place-items: center; width: 52px; height: 52px; border-radius: 50%; background: var(--green); color: var(--ink); font-size: 26px; font-weight: 800; margin-bottom: 14px; }
.ofr-done h2 { font-size: 1.35rem; line-height: 1.25; margin: 0 0 10px; }
.ofr-done h3 { font-size: 1.05rem; margin: 18px 0 8px; }
.ofr-done__test { background: var(--amber-soft); color: var(--amber); border-radius: 10px; padding: 8px 12px; font-size: .88rem; }
.ofr-done__steps { list-style: none; margin: 0 0 14px; padding: 0; }
.ofr-done__steps li { display: grid; grid-template-columns: 120px 1fr; gap: 10px; padding: 8px 0; border-bottom: 1px solid var(--line); font-size: .93rem; }
.ofr-done__steps li:last-child { border-bottom: 0; }
.ofr-done__actions { display: flex; gap: 10px; flex-wrap: wrap; margin-top: 16px; }
@media (max-width: 600px) { .ofr-done { padding: 24px 18px 20px; } .ofr-done__steps li { grid-template-columns: 1fr; gap: 2px; } }
.ofr-done[open] { position: fixed; inset: 0; margin: auto; height: fit-content; max-height: calc(100vh - 32px); overflow-y: auto; }   /* centrée */
.ofr-done__close:focus { outline: none; }
.ofr-done__close:focus-visible { outline: 2px solid var(--ink); outline-offset: 2px; border-radius: 6px; }
.ofr-done h2:focus { outline: none; }   /* le focus d'ouverture va au titre (plus de bouton, 26/10) */

/* 26/10 : fiche CRM, onglets « Audit » et « Offre » : la page du membre dans un cadre (templates/layout_apercu.php, sans menu) */
body.apercu { --side: 0px; }
.crm-apercu { display: block; width: 100%; height: calc(100vh - 230px); min-height: 560px; border: 1px solid var(--line); border-radius: 14px; background: var(--bg); }
.crm-apercu__note { margin: -10px 0 12px; }

/* 26/10 : fiche CRM, « Envoyer l'offre Essentiel » et « Envoyer l'audit » côte à côte */
.crm-send-row { display: flex; flex-wrap: wrap; gap: 10px; align-items: center; margin-bottom: 14px; }

/* 08/11 (Nicolas, façon Brevo) : bas du menu latéral de l'espace SaaS : « Paramètres », puis le compte ; son menu s'ouvre au-dessus (Mon profil, Mon offre, Se déconnecter) */
.sidebar__foot--cm { padding: 8px 12px 12px; }
.cm { display: flex; flex-direction: column; gap: 4px; }
.cm__param { display: flex; align-items: center; gap: 12px; min-height: 44px; padding: 0 12px; border-radius: 12px; color: var(--ink); text-decoration: none; font-weight: 500; font-size: .95rem; }
.cm__param svg, .cm__item svg { width: 20px; height: 20px; flex: none; }
.cm__param:hover, .cm__param.is-active { background: var(--bg-3); }
.cm__menu { position: relative; }
.cm__btn { display: flex; align-items: center; gap: 10px; min-height: 52px; padding: 6px 12px; border-radius: 12px; background: transparent; color: var(--ink); cursor: pointer; list-style: none; }   /* 08/11 : vert au survol et ouvert seulement */
.cm__btn::-webkit-details-marker { display: none; }
.cm__btn:hover, .cm__menu[open] .cm__btn { background: var(--green-soft); }
.cm__btn:focus-visible { outline: 2px solid var(--ink); outline-offset: 2px; }
.cm__nom { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-weight: 600; font-size: .95rem; color: var(--ink); }
.cm__panneau { position: absolute; left: calc(100% + 18px); bottom: 0; z-index: 70; width: 280px;   /* 08/11 (Nicolas, comme Brevo) : à droite du menu, aligné en bas */
    padding: 6px; background: var(--white); border: 1px solid var(--line); border-radius: 14px; box-shadow: 0 12px 32px rgba(15, 31, 70, .14); }
.cm__entete { display: flex; align-items: center; gap: 10px; padding: 10px; border-radius: 10px; color: var(--ink); text-decoration: none; border-bottom: 1px solid var(--line); margin-bottom: 4px; }
.cm__entete strong { display: block; color: var(--ink); font-weight: 700; font-size: .95rem; }
.cm__entete small { display: block; color: var(--ink-3); font-size: .8rem; overflow-wrap: anywhere; }
.cm__entete:hover, .cm__item:hover { background: var(--bg); }
.cm__item { display: flex; align-items: center; gap: 12px; width: 100%; min-height: 44px; padding: 0 10px; border: 0; border-radius: 10px; background: none; color: var(--ink); font: inherit; font-weight: 600; font-size: .95rem; text-align: left; text-decoration: none; cursor: pointer; }
.cm form { margin: 0; padding-top: 4px; border-top: 1px solid var(--line); margin-top: 4px; }
@media (max-width: 900px) { .cm__panneau { left: 0; bottom: calc(100% + 8px); width: max(100%, 240px); } }   /* menu latéral en tiroir sur téléphone : le menu s'ouvre au-dessus, pas hors de l'écran */

/* 09/11 (Nicolas, au dessin de Brevo) : menu latéral de l'espace SaaS : plus étroit, fond vert très léger, liens plus à gauche et moins gras, entrée active en vert clair,
   logo plus petit et LEADTONIC plus grand à la même hauteur, bouton de réduction plus foncé et plus petit (qui n'apparaît qu'au survol quand le menu est réduit),
   photo du compte plus petite. Admin et anciens clients agence : inchangés. */
html:has(.sidebar--saas):not(.side-collapsed) { --side: 224px; }
.sidebar--saas { background: #F6FAF0; border-right-color: #E4ECD8; padding: 18px 10px; }
.sidebar--saas .sidebar__head { align-items: center; padding: 0 4px 0 6px; margin-bottom: 14px; }
.sidebar--saas .logo { padding: 0; gap: 8px; align-items: center; }
.sidebar--saas .logo img { height: 26px; }
.sidebar--saas .logo__name { font-size: 1.45rem; line-height: 26px; }
.sidebar--saas .side-toggle { margin-top: 0; padding: 5px; color: var(--ink); }
.sidebar--saas .side-toggle svg { width: 18px; height: 18px; }
.sidebar--saas .side-toggle:hover { background: #E8F1DC; }
.sidebar--saas .nav { margin: 0; padding: 0; gap: 2px; }
.sidebar--saas .nav a { gap: 12px; padding: 9px 10px; border-radius: 10px; color: var(--ink); font-weight: 400; font-size: .95rem; }
.sidebar--saas .nav a svg { width: 20px; height: 20px; color: var(--ink); }
.sidebar--saas .nav a:hover { background: #ECF4E2; }
.sidebar--saas .nav a.is-active { background: var(--green-soft); color: var(--ink); font-weight: 500; }
.sidebar--saas .nav a.is-active svg { color: var(--ink); }
.sidebar--saas .nav__sep { padding-left: 10px; }
.sidebar--saas .sidebar__foot--cm { padding: 8px 0 4px; border-top-color: #E4ECD8; }
.sidebar--saas .cm__param { padding: 0 10px; font-weight: 400; }
.sidebar--saas .cm__param:hover, .sidebar--saas .cm__param.is-active { background: #ECF4E2; }
.sidebar--saas .cm__btn { padding: 6px 10px; min-height: 44px; }
.sidebar--saas .cm__btn .avatar { width: 28px; height: 28px; font-size: .7rem; }
.sidebar--saas .cm__nom { font-weight: 500; }
@media (min-width: 901px) {
    /* menu réduit : le logo seul ; au survol de l'en-tête, le bouton pour déplier prend sa place */
    /* 09/11 (Nicolas : « tout le menu saute ») : logo et bouton superposés dans une zone de hauteur fixe ; seule leur visibilité change, rien ne bouge */
    html.side-collapsed .sidebar--saas .sidebar__head { position: relative; flex-direction: row; justify-content: center; align-items: center; padding: 0; height: 36px; min-height: 0; }
    html.side-collapsed .sidebar--saas .sidebar__head .logo { padding: 0; }
    html.side-collapsed .sidebar--saas .side-toggle { display: inline-flex; position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); opacity: 0; pointer-events: none; }
    html.side-collapsed .sidebar--saas .sidebar__head:hover .logo, html.side-collapsed .sidebar--saas .sidebar__head:has(:focus-visible) .logo { visibility: hidden; }
    html.side-collapsed .sidebar--saas .sidebar__head:hover .side-toggle, html.side-collapsed .sidebar--saas .sidebar__head:has(:focus-visible) .side-toggle { opacity: 1; pointer-events: auto; }
}
/* 09/11 (Nicolas, comme Brevo) : items du menu principal un peu plus grands et plus gras, icônes aussi ; l'entrée active en gras avec un petit tiret vert sur le bord droit
   du menu (déplié comme réduit) */
.sidebar--saas .nav a { position: relative; gap: 13px; padding: 10px 12px; font-size: 1rem; font-weight: 500; }
.sidebar--saas .nav a svg { width: 22px; height: 22px; stroke-width: 2; }
.sidebar--saas .nav a.is-active { font-weight: 700; }
.sidebar--saas .nav a.is-active svg { stroke-width: 2.3; }
.sidebar--saas .nav a.is-active::after { content: ""; position: absolute; right: -10px; top: 50%; width: 4px; height: 26px; transform: translateY(-50%); border-radius: 3px 0 0 3px; background: var(--green-deep); }
@media (min-width: 901px) { html.side-collapsed .sidebar--saas .nav a.is-active::after { right: -8px; } }
.sidebar--saas .sd-side { margin-right: -10px; padding-right: 10px; }   /* le conteneur du menu masque ce qui dépasse : sa zone va jusqu'au bord, pour que le tiret ne soit pas rogné */
@media (min-width: 901px) { html.side-collapsed .sidebar--saas .sd-side { margin-right: -8px; padding-right: 8px; } }
