/* Design v4 commun avec premierachat.immo (31 octobre 2026) : pages blanches, Montserrat partout,
   rouge réservé aux actions, aux liens importants et au mot clé des titres.
   Couche finale (chargée après portal.css) : les données, les statuts et la symbologie cartographique restent inchangés. */
:root { --ui-border:var(--brand-border); --ui-muted:var(--brand-grey); --ui-radius:var(--radius-lg); }

/* ---------- Base ---------- */
body { font-family:var(--brand-sans); color:var(--brand-ink); background:var(--brand-light); -webkit-font-smoothing:antialiased; text-rendering:optimizeLegibility; }
::selection { background:var(--brand-red); color:#fff; }
h1,h2,h3 { color:var(--brand-black); font-weight:700; letter-spacing:-.015em; text-wrap:balance; }
p,li { text-wrap:pretty; }
strong,b { font-weight:700; }
.page-heading h1,.hero h2,.report-head h1,.portal-story h1,.auth-story h1,.portal-access h2,.auth-form h2,.profile-card h1,.profile-card h2,.section-label h2,.booking-text h2 { font-weight:800; letter-spacing:-.025em; }
/* Le mot clé d’un titre est rouge, dans la même police et la même graisse que le titre. */
.brand-display { font-family:inherit; font-size:1em; font-weight:inherit; letter-spacing:inherit; color:var(--brand-red); }
.auth-story .brand-display { color:var(--brand-red); }
.text-link,.card-footer a,.detail-links a { color:var(--brand-red); font-weight:600; }
.text-link:hover,.card-footer a:hover,.detail-links a:hover { color:var(--brand-red-dark); }

/* ---------- Surtitres : tiret rouge, capitales espacées ---------- */
.eyebrow { gap:.6rem; font-size:12px; font-weight:700; letter-spacing:.12em; text-transform:uppercase; color:var(--brand-red); }
.eyebrow::before { content:""; width:1.5rem; height:2px; background:currentColor; flex-shrink:0; }
.eyebrow .dot,.eyebrow .icon { display:none; }
.auth-story .eyebrow,.booking-text .eyebrow { color:#fff!important; }
.auth-story .eyebrow::before,.booking-text .eyebrow::before { background:var(--brand-red); }
.pyrite-context .section-eyebrow { color:var(--brand-red); letter-spacing:.12em; font-weight:700; }

/* ---------- Logotype texte (comme premierachat.immo) ---------- */
.brand { gap:0; }
.brand-name { display:block; font-weight:800; font-size:17px; line-height:1.15; letter-spacing:.06em; text-transform:uppercase; color:var(--brand-black); }
.brand-tag { display:block; margin-top:4px; font-size:11px; font-weight:600; line-height:1.3; letter-spacing:.12em; text-transform:uppercase; color:var(--brand-grey); }
.brand--light .brand-name { color:#fff; }
.brand--light .brand-tag { color:#b9bec4; }
.mobile-brand { flex-direction:column; align-items:flex-start; gap:0; }
.mobile-brand .brand-name { font-size:14px; }
.mobile-brand .brand-tag { font-size:9px; margin-top:2px; }

/* ---------- Boutons ---------- */
.button { min-height:48px; padding:0 22px; border-radius:var(--radius-sm); font-weight:700; font-size:14px; transition:background-color .18s ease,color .18s ease,border-color .18s ease,box-shadow .18s ease,transform .18s ease; }
.button:hover { background:var(--brand-red-dark); box-shadow:0 10px 24px -12px rgba(224,0,0,.6); }
.button:active { transform:translateY(1px); }
.button:disabled { box-shadow:none; transform:none; }
.button.secondary { background:#fff; color:var(--brand-black); border-color:var(--brand-line); }
.button.secondary:hover { background:#fff; color:var(--brand-red); border-color:var(--brand-red); box-shadow:none; }
.button.ghost { background:none; color:var(--brand-ink); }
.button.ghost:hover { background:var(--brand-light); color:var(--brand-red); box-shadow:none; }
.button.danger:hover { background:#fde3e0; box-shadow:none; }
.button.small { min-height:40px; padding:0 14px; font-size:13px; }
.filter-button { border-radius:var(--radius-sm); border-color:var(--ui-border); background:#fff; font-weight:600; transition:border-color .18s ease,color .18s ease,background-color .18s ease; }
.filter-button:not(.active):hover { border-color:var(--brand-red); color:var(--brand-red); }
.filter-button.active { background:var(--brand-black); border-color:var(--brand-black); color:#fff; }

/* ---------- Champs ---------- */
.form-field { font-weight:600; color:var(--brand-black); }
.form-field small { font-weight:400; }
.form-field input,.form-field select,.form-field textarea,.search-options input,.search-options select,.card-jump select,.team-map-filters input[type=search],.team-map-filters select { border:1px solid var(--brand-line); border-radius:var(--radius-sm); background:#fff; color:var(--brand-ink); font-weight:400; transition:border-color .15s ease,box-shadow .15s ease; }
.form-field input:hover,.form-field select:hover,.form-field textarea:hover,.search-options input:hover,.search-options select:hover,.card-jump select:hover,.team-map-filters input[type=search]:hover,.team-map-filters select:hover { border-color:var(--brand-line-hover); }
.form-field input:focus,.form-field select:focus,.form-field textarea:focus,.search-options input:focus,.search-options select:focus,.card-jump select:focus,.team-map-filters input[type=search]:focus,.team-map-filters select:focus { outline:none; border-color:var(--brand-red); box-shadow:0 0 0 3px rgba(224,0,0,.12); }
.form-field input[readonly] { background:var(--brand-light); color:var(--brand-grey); }
.search-box { border:1px solid var(--brand-line); border-radius:var(--radius-md); background:#fff; box-shadow:var(--shadow-soft); transition:border-color .15s ease,box-shadow .15s ease; }
.search-box:focus-within { border-color:var(--brand-red); box-shadow:0 0 0 3px rgba(224,0,0,.12); }
.search-field input:focus,.search-field input:focus-visible { outline:none; }
.suggestions { border-color:var(--ui-border); border-radius:var(--radius-md); box-shadow:var(--shadow-card); }
.suggestion:hover,.suggestion.focused { background:var(--brand-light); }
.fixed-radius { border-color:var(--ui-border); border-radius:var(--radius-sm); background:var(--brand-light); }

/* ---------- Espace de travail : barre latérale et barre du haut ---------- */
.sidebar { background:#fff; border-right:1px solid var(--ui-border); }
.sidebar .brand { padding:4px 0 22px; border-bottom:1px solid var(--ui-border); }
.sidebar .brand-name { font-size:16px; }
.nav-button { font-weight:600; color:var(--brand-ink); border-radius:var(--radius-sm); transition:background-color .18s ease,color .18s ease; }
.nav-button:hover { background:var(--brand-light); color:var(--brand-black); }
.nav-button.active,.nav-button.active:hover { background:var(--brand-light); color:var(--brand-black); box-shadow:inset 3px 0 0 var(--brand-red); }
.nav-button.active .icon { color:var(--brand-red); }
.nav-label { font-weight:700; letter-spacing:.12em; color:var(--brand-grey); }
.sidebar-note { background:var(--brand-light); border-color:var(--ui-border); border-radius:var(--radius-md); }
.sidebar-note p { color:var(--brand-grey); }
.sidebar-note .eyebrow { font-size:11px; letter-spacing:.1em; gap:.5rem; }
.sidebar-note .eyebrow::before { width:1rem; }
.topbar { background:rgba(255,255,255,.96); border-bottom:1px solid var(--ui-border); }
.breadcrumb { color:var(--brand-grey); }
.breadcrumb strong { color:var(--brand-black); font-weight:600; }
.top-pill { background:rgba(224,0,0,.07); color:var(--brand-red); font-weight:700; }
.top-pill .dot { display:none; }
.avatar { background:var(--brand-light-deep); border-color:var(--ui-border); color:var(--brand-black); font-weight:700; }
.user-info span { color:var(--brand-grey); }

/* ---------- Cartes et panneaux ---------- */
.hero,.report-head,.map-card,.profile-card,.registrations,.team-overview,.recent,.table-wrap,.portal-access { border-color:var(--ui-border); border-radius:var(--radius-lg); }
.hero p,.page-heading p,.section-label p,.report-meta,.card-title p,.card-note,.source-date,.stat-label,.recent-info p,.page-note,.sources-intro { color:var(--brand-grey); }
.hero-map-wrap { border-radius:var(--radius-md); }
.map-label { border-color:var(--ui-border); border-radius:var(--radius-sm); }
.category { border-color:var(--ui-border); border-radius:var(--radius-md); transition:border-color .2s ease,transform .25s var(--ease-out),box-shadow .25s ease; }
.category:hover { border-color:var(--brand-red); transform:translateY(-3px); box-shadow:var(--shadow-soft); }
.category strong,.recent-info strong,.card-title h3,.detail-title { color:var(--brand-black); font-weight:700; }
.category-icon.green,.category-icon.orange,.category-icon.purple,.category-icon.blue,.card-icon,.recent-icon { background:var(--brand-light); border-color:var(--ui-border); color:var(--brand-black); border-radius:var(--radius-sm); }
.recent-row { border-bottom-color:var(--ui-border); transition:background-color .18s ease; }
.recent-row:hover { background:var(--brand-light); }
.stat { border-color:var(--ui-border); border-radius:var(--radius-md); }
.stat-value { font-weight:800; letter-spacing:-.02em; font-variant-numeric:tabular-nums; }
.map-card:hover { box-shadow:var(--shadow-soft); }
.map-toolbar,.card-footer { background:#fafbfc; border-color:var(--ui-border); }
.source-date,.detail-row { border-color:var(--ui-border); }
.report-navigation { background:rgba(246,247,249,.96); border-color:var(--ui-border); }
.export-menu .export-options { border-color:var(--ui-border); border-radius:var(--radius-md); box-shadow:var(--shadow-card); }
.progress-track { background:var(--brand-border); border-radius:999px; }
.progress-track span { border-radius:999px; }

/* Encadrés : surface claire et filet rouge à gauche, comme les encadrés de premierachat.immo. */
.report-limit-note,.portal-opening,.sources-intro { background:var(--brand-light); border:0; border-left:3px solid var(--brand-red); border-radius:0 var(--radius-md) var(--radius-md) 0; color:var(--brand-ink); }
.sharing-notice,.registration-consents,.pyrite-context { background:var(--brand-light); }
.registration-consents .notice-accept-all { border-color:var(--ui-border); color:var(--brand-black); }

/* Tableaux */
.table-wrap th,.registrations-table th { background:var(--brand-light); font-size:12px; font-weight:700; letter-spacing:.04em; text-transform:uppercase; color:var(--brand-black); }
.table-wrap td,.registrations-table td { border-color:var(--ui-border); }
.table-wrap tbody tr,.registrations-table tbody tr { transition:background-color .15s ease; }
.table-wrap tbody tr:hover,.registrations-table tbody tr:hover { background:#fafbfc; }

/* Fenêtres, messages et bandeaux */
dialog { border-color:var(--ui-border); border-radius:var(--radius-lg); box-shadow:var(--shadow-card),0 30px 80px -30px rgba(17,19,21,.35); }
dialog::backdrop { background:rgba(17,19,21,.45); }
#toast { background:var(--brand-black); border-radius:var(--radius-sm); box-shadow:var(--shadow-card); font-size:14px; }
.mesure-banner { border-color:var(--ui-border); border-radius:var(--radius-md); box-shadow:var(--shadow-card); }
.mesure-title { font-weight:700; color:var(--brand-black); }
.booking-cta { background:var(--brand-black); border-radius:var(--radius-lg); box-shadow:var(--shadow-card); }
.leaflet-container { font-family:var(--brand-sans); }
/* Les calques de Leaflet (jusqu'à z-index 1000) et les étiquettes posées sur les cartes (.map-label, .map-stamp, z-index 500)
   restent confinés dans leur carte : la bulle de contact, la vidéo et les bandeaux passent toujours par-dessus. */
.leaflet-container,.hero-map-wrap,.map-frame { isolation:isolate; }

/* ---------- Connexion de l’équipe ---------- */
.auth-story { background:var(--brand-black); }
.auth-story h1 { color:#fff; }
.auth-story p { color:#c9ccd0; }
.auth-tags span { border-color:rgba(255,255,255,.22); border-radius:999px; color:#e6e8ea; font-weight:600; }
.auth-footer { letter-spacing:.12em; font-weight:600; }

/* ---------- Portail public ---------- */
.portal-page { background:#fff; display:flex; flex-direction:column; }
.portal-header { position:sticky; top:0; z-index:100; max-width:none; width:100%; min-height:76px; padding:12px max(5%,calc((100% - 1320px) / 2)); background:rgba(255,255,255,.96); border-bottom:1px solid var(--ui-border); backdrop-filter:saturate(1.4) blur(8px); }
.portal-header .brand { max-width:none; }
.portal-main { margin-top:56px; flex:1; }
.portal-story h1 { font-size:clamp(40px,4.4vw,60px); line-height:1.08; letter-spacing:-.025em; }
.portal-story h1 .brand-display { font-size:.6em; line-height:1.2; margin-top:16px; }
.portal-story>p { color:var(--brand-ink); }
.portal-steps { border-color:var(--brand-line); }
.portal-steps>div { border-color:var(--ui-border); }
.portal-steps>div>span { font-family:inherit; font-size:13px; font-weight:800; letter-spacing:.14em; color:var(--brand-red); }
.portal-sharing p,.portal-intro,.portal-access-note { color:var(--brand-grey); }
.portal-access { box-shadow:var(--shadow-card); }
.portal-access-note { border-color:var(--ui-border); }
.portal-auth-tabs { background:var(--brand-light-deep); border-radius:var(--radius-md); }
.portal-auth-tabs button { color:var(--brand-grey); }
.portal-auth-tabs button[aria-pressed="true"] { background:#fff; color:var(--brand-black); box-shadow:var(--shadow-soft); }
.portal-auth-tabs button:focus-visible { outline-color:var(--brand-red); }
.project-choices label { border-color:var(--brand-line); border-radius:var(--radius-sm); transition:border-color .15s ease,background-color .15s ease; }
.project-choices label:hover { border-color:var(--brand-line-hover); }
.project-choices label:has(:checked) { border-color:var(--brand-red); background:rgba(224,0,0,.05); }
/* Pied de page noir avec le logo Lefrançois, comme premierachat.immo. */
/* Marge droite de 96 px minimum : le bouton de discussion flottant ne couvre pas le lien Mesure d’audience. */
.portal-footer { max-width:none; width:100%; margin:0; padding:28px max(96px,5%,calc((100% - 1320px) / 2)) 28px max(5%,calc((100% - 1320px) / 2)); align-items:center; flex-wrap:wrap; background:var(--brand-black); color:#c9ccd0; border-top:0; }
.portal-footer a { color:#e6e8ea; }
.portal-footer a:hover { color:#fff; }
.portal-footer-logo { display:block; width:190px; height:auto; }

/* Consultation gratuite (clients) : bouton rouge de la barre du haut et du menu, fenêtre avec l’agenda intégré. */
.consult-top { min-height:40px; padding:0 16px; font-size:13px; }
.consult-side { width:100%; margin-top:auto; }
.video-side { width:100%; margin-top:auto; }
.video-side .icon { color:var(--brand-red); }
.video-side+.consult-side { margin-top:8px; }
.consult-side+.sidebar-note { margin-top:12px; }
dialog.modal-wide { width:min(880px,calc(100% - 32px)); }
.consult-intro { margin:0 0 14px; color:var(--brand-grey); }
.consult-frame { position:relative; border:1px solid var(--ui-border); border-radius:var(--radius-md); overflow:hidden; background:#fff; }
/* Message visible sous l'iframe (transparente) jusqu'à ce que l'agenda de Google s'affiche, ce qui prend quelques secondes. */
.consult-loading { position:absolute; inset:0; display:flex; align-items:center; justify-content:center; gap:10px; color:var(--brand-grey); font-size:14px; }
.consult-loading[hidden] { display:none; }
.consult-frame iframe { position:relative; display:block; width:100%; height:min(640px,calc(100dvh - 260px)); min-height:420px; border:0; }
.consult-fallback { margin:12px 0 0; font-size:13px; color:var(--brand-grey); }
.consult-fallback a { color:var(--brand-red); font-weight:600; }
@media(max-width:900px) and (min-width:651px) { .consult-side,.video-side { padding:0; } .consult-side span,.video-side span { display:none; } }
@media(max-width:650px) { .consult-side,.video-side { display:none; } .consult-top { padding:0 12px; } .consult-top span { display:none; } .consult-frame iframe { height:calc(100dvh - 230px); min-height:360px; } }

/* Vidéo de présentation (clients) : lecteur flottant en bas à droite, au-dessus de la bulle de contact (3,5 rem + marges).
   Il s'efface pendant que la bulle de contact est ouverte, puis revient. */
.video-dock { position:fixed; right:16px; bottom:84px; z-index:1100; width:min(376px,calc(100vw - 32px)); background:#fff; border:1px solid var(--ui-border); border-radius:16px; box-shadow:0 24px 48px -16px rgba(21,22,22,.35),0 2px 8px rgba(21,22,22,.08); overflow:hidden; animation:video-dock-in .45s cubic-bezier(.22,1,.36,1) both; transition:opacity .2s ease,transform .2s ease; }
@keyframes video-dock-in { from { opacity:0; transform:translateY(12px) scale(.97); } }
body:has(.el-contact__panel--open) .video-dock { opacity:0; transform:translateY(8px); pointer-events:none; }
.video-dock-head { display:flex; align-items:center; justify-content:space-between; gap:12px; padding:8px 8px 8px 14px; }
.video-dock-title { display:flex; align-items:center; gap:8px; min-width:0; font-size:14px; font-weight:700; color:var(--brand-black); }
.video-dock-title span { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.video-dock-title .icon { width:18px; height:18px; color:var(--brand-red); }
.video-dock-close { display:inline-flex; flex:none; align-items:center; justify-content:center; width:32px; height:32px; padding:0; border:0; border-radius:50%; background:transparent; color:var(--brand-grey); cursor:pointer; transition:background-color .18s ease,color .18s ease; }
.video-dock-close:hover { background:var(--brand-light); color:var(--brand-black); }
.video-dock-close:focus-visible,.video-dock-sound:focus-visible { outline:2px solid var(--brand-red); outline-offset:2px; }
.video-dock-close .icon { width:16px; height:16px; }
.video-dock-frame { position:relative; aspect-ratio:16/9; background:#151616; }
.video-dock-frame iframe { display:block; width:100%; height:100%; border:0; }
/* Son coupé : toute l'image devient le bouton « Activer le son » (pastille en bas à droite, loin des titres incrustés de la vidéo). */
.video-dock-sound { position:absolute; inset:0; display:flex; align-items:flex-end; justify-content:flex-end; padding:12px; border:0; background:linear-gradient(to top,rgba(21,22,22,.5),rgba(21,22,22,0) 55%); cursor:pointer; }
.video-dock-sound[hidden] { display:none; }
.video-dock-sound span { display:inline-flex; align-items:center; gap:7px; padding:7px 13px 7px 11px; border-radius:999px; background:rgba(21,22,22,.85); color:#fff; font:inherit; font-size:12px; font-weight:600; transition:background-color .18s ease; }
.video-dock-sound:hover span { background:var(--brand-red); }
.video-dock-sound .icon { width:16px; height:16px; }
.video-dock-foot { display:flex; align-items:center; justify-content:space-between; gap:12px; padding:10px 10px 10px 14px; font-size:13px; color:var(--brand-grey); }
.video-dock-foot>span { min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.video-dock-cta { flex:none; min-height:34px; padding:0 12px; font-size:12px; gap:6px; }
.video-dock-cta .icon { width:15px; height:15px; }
@media(max-width:650px) { .video-dock { bottom:calc(78px + 84px + env(safe-area-inset-bottom)); } }
@media print { .video-dock { display:none; } }
@media (prefers-reduced-motion:reduce) { .video-dock { animation:none; transition:none; } }

/* Bandeau de confidentialité unique (public/mesure.js) : discret, en bas à gauche, loin de la bulle de contact et de la vidéo.
   Dans l'espace connecté, il se place à droite du menu; sur téléphone, au-dessus de la barre du bas. */
.consent { position:fixed; z-index:6000; left:16px; bottom:16px; width:min(380px,calc(100vw - 32px)); padding:14px 16px; background:#fff; border:1px solid var(--ui-border); border-radius:14px; box-shadow:0 18px 40px -18px rgba(21,22,22,.35),0 2px 8px rgba(21,22,22,.06); font-family:var(--brand-sans); color:var(--brand-ink); animation:consent-in .35s cubic-bezier(.22,1,.36,1) both; }
@keyframes consent-in { from { opacity:0; transform:translateY(8px); } }
.consent [hidden] { display:none !important; }
.consent-title { margin:0 0 4px; font-size:13px; font-weight:700; color:var(--brand-black); }
.consent-text { margin:0 0 12px; font-size:12px; line-height:1.55; color:var(--brand-grey); }
.consent:not(.consent--detailed) .consent-details { display:none; }
.consent-details { display:grid; gap:8px; margin:0 0 12px; }
.consent-option { display:flex; gap:10px; align-items:flex-start; padding:10px 12px; border:1px solid var(--ui-border); border-radius:10px; font-size:12px; line-height:1.45; color:var(--brand-grey); cursor:pointer; }
.consent-option:has(input:checked) { border-color:var(--brand-red); }
.consent-option input { flex:none; width:16px; height:16px; margin:1px 0 0; accent-color:var(--brand-red); }
.consent-option strong { display:block; margin-bottom:2px; font-size:12.5px; color:var(--brand-black); }
.consent-note { margin:0; font-size:11.5px; color:var(--brand-grey); }
.consent-actions { display:flex; align-items:center; justify-content:flex-end; gap:8px; }
.consent-actions .button { min-height:34px; padding:0 14px; font-size:12px; }
.consent-more { margin-right:auto; padding:6px 0; border:0; background:none; font:inherit; font-size:12px; font-weight:600; color:var(--brand-black); text-decoration:underline; text-underline-offset:3px; cursor:pointer; }
.consent-more:hover { color:var(--brand-red); }
.consent-more:focus-visible,.consent-option input:focus-visible { outline:2px solid var(--brand-red); outline-offset:2px; }
body:has(.sidebar) .consent { left:calc(256px + 16px); }
@media(max-width:900px) and (min-width:651px) { body:has(.sidebar) .consent { left:calc(112px + 16px); } }
@media(max-width:650px) { .consent { left:10px; right:10px; bottom:calc(10px + env(safe-area-inset-bottom)); width:auto; } body:has(.sidebar) .consent { left:10px; bottom:calc(108px + env(safe-area-inset-bottom)); } }
@media print { .consent { display:none; } }
@media (prefers-reduced-motion:reduce) { .consent { animation:none; } }

/* Suivi des clients (équipe) : notes internes et infolettre, depuis le tableau « Clients inscrits ». */
.client-actions { display:flex; flex-wrap:wrap; gap:6px; }
.client-actions .button { min-height:36px; padding:0 10px; font-size:12px; gap:6px; }
.client-actions .button .icon { width:15px; height:15px; }
.client-notes { list-style:none; margin:20px 0 0; padding:0; display:grid; gap:12px; max-height:46dvh; overflow:auto; }
.client-note { padding:14px 16px; background:var(--brand-light); border-radius:var(--radius-md); }
.client-note-meta { display:flex; flex-wrap:wrap; align-items:center; gap:6px 10px; font-size:12px; color:var(--brand-grey); }
.client-note-meta strong { color:var(--brand-black); }
.client-note-meta .text-link { min-height:0; margin-left:auto; font-size:12px; }
.client-note p { margin:8px 0 0; font-size:14px; line-height:1.6; overflow-wrap:anywhere; }
.client-note-empty { color:var(--brand-grey); font-size:14px; }
#note-body { width:100%; resize:vertical; min-height:96px; padding:10px 12px; font:inherit; font-weight:400; border:1px solid var(--brand-line); border-radius:var(--radius-sm); }
#note-body:focus { outline:none; border-color:var(--brand-red); box-shadow:0 0 0 3px rgba(224,0,0,.12); }
.newsletter-subject { margin:0 0 12px; font-size:14px; }
.newsletter-subject span { display:block; font-size:11px; font-weight:700; letter-spacing:.1em; text-transform:uppercase; color:var(--brand-grey); }
.newsletter-preview { display:block; width:100%; height:min(460px,52dvh); border:1px solid var(--ui-border); border-radius:var(--radius-md); background:#f6f7f9; }
.newsletter-blocked { margin:12px 0 0; padding:12px 14px; background:var(--brand-light); border-left:3px solid var(--brand-red); border-radius:0 var(--radius-sm) var(--radius-sm) 0; font-size:13px; line-height:1.6; }

/* Contenu lu sans JavaScript (robots qui n’exécutent pas l’application) : voir lib/seo.js. */
.seo-fallback { max-width:760px; margin:40px auto; padding:0 20px; line-height:1.7; }
.seo-fallback h3 { margin:24px 0 8px; font-size:16px; }

/* ---------- Largeurs, petits écrans et mouvements réduits ---------- */
/* Montserrat est plus large qu’Urbanist : barre latérale de 256 px pour garder les libellés sur une ligne. */
@media(min-width:901px) { .sidebar { width:256px; padding-inline:20px; } .workspace { margin-left:256px; } .nav-button { padding-inline:12px; } #toast { left:calc(50% + 128px); } }
@media(max-width:900px) and (min-width:651px) { .sidebar .brand-name,.sidebar .brand-tag { display:none; } }
@media(max-width:650px) { .nav-button.active,.nav-button.active:hover { box-shadow:inset 0 3px 0 var(--brand-red); } }
@media(max-width:700px) { .portal-header { min-height:64px; padding:10px 20px; } .portal-header .brand-name { font-size:14px; } .portal-header .brand-tag { font-size:9px; } .portal-main { margin-top:8px; } .portal-story h1 { font-size:38px; } .portal-footer { padding:24px 20px 96px; align-items:flex-start; } }
@media (prefers-reduced-motion:reduce) { .button,.category,.nav-button,.filter-button,.recent-row { transition:none; } .category:hover,.button:active { transform:none; } }

/* Version anglaise (3.16.0) : sélecteur de langue (accueil public et barre du haut de l'espace) et repère « EN » pour l'équipe. */
.portal-header-actions { display:flex; align-items:center; gap:10px; }
.lang-switch { display:inline-flex; align-items:center; min-height:40px; padding:0 12px; border-radius:999px; color:var(--brand-ink); font-size:13px; font-weight:600; text-decoration:none; border:1px solid var(--ui-border); background:#fff; }
.lang-switch:hover { border-color:var(--brand-red); color:var(--brand-red); }
.lang-switch:focus-visible { outline:2px solid var(--brand-red); outline-offset:2px; }
.lang-tag { display:inline-block; margin:4px 0 0; font-size:11px; padding:2px 6px; border-radius:4px; background:#eef3f8; color:#315f86; font-weight:600; }
@media(max-width:650px) { .lang-top { min-height:36px; padding:0 10px; font-size:12px; } }
@media(max-width:700px) { .portal-header-actions { gap:6px; } .portal-header .lang-switch { min-height:36px; padding:0 10px; font-size:12px; } }
@media print { .lang-switch { display:none; } }
