/* Cockpit DSE unique et adaptatif */
.dse-icon { width: 20px; height: 20px; flex: 0 0 auto; vertical-align: middle; }
body:not(.dse-public) { --accent: #0860ed; --bg: #f2f5fa; --nav: #0c223e; --shadow: 0 3px 16px rgba(16, 36, 62, .04); }
body:not(.dse-public) .app-shell { grid-template-columns: 224px minmax(0, 1fr); }
body:not(.dse-public) .topbar { gap: 20px; }
body:not(.dse-public) .brand { color: var(--text); text-decoration: none; font-size: .95rem; }
.brand small, .cockpit-profil small { display: block; color: var(--muted); font-weight: 400; font-size: .75rem; margin-top: 3px; }
body:not(.dse-public) .brand-mark { background: #07576b; }
.cockpit-recherche-globale { display: flex; align-items: center; gap: 8px; margin-left: auto; background: var(--bg); border: 1px solid var(--line); border-radius: 8px; padding: 8px 12px; color: var(--muted); max-width: 340px; }
.cockpit-recherche-globale input { width: 100%; min-width: 0; border: 0; background: transparent; font: inherit; font-size: .85rem; color: var(--text); }
.cockpit-profil { position: relative; }
.cockpit-profil summary { display: flex; align-items: center; gap: 10px; cursor: pointer; font-size: .85rem; list-style: none; }
.cockpit-profil summary::-webkit-details-marker { display: none; }
.cockpit-avatar { display: grid; place-items: center; width: 38px; height: 38px; border-radius: 50%; background: var(--nav); color: white; font-weight: 700; }
.cockpit-profil > a { position: absolute; right: 0; top: 48px; background: white; border: 1px solid var(--line); box-shadow: var(--shadow); padding: 14px; border-radius: 10px; white-space: nowrap; color: var(--text); }
body:not(.dse-public) .sidebar { display: flex; flex-direction: column; gap: 24px; padding: 18px 12px; }
body:not(.dse-public) .nav-link { font-size: .9rem; gap: 12px; }
body:not(.dse-public) .nav-link.active { background: var(--accent); box-shadow: 0 4px 14px #0860ed33; }
.cockpit-sidebar-bas { margin-top: auto; display: grid; gap: 16px; }
.cockpit-sidebar-bas button { border: 0; background: transparent; font: inherit; cursor: pointer; text-align: left; width: 100%; }
.cockpit-sidebar-bas small { border-top: 1px solid #ffffff33; padding: 16px 10px 0; color: #c6d4e6; font-size: .75rem; }
body:not(.dse-public) .cockpit-menu-reduit { grid-template-columns: 76px minmax(0, 1fr); }
.cockpit-menu-reduit .nav-link > span, .cockpit-menu-reduit .cockpit-sidebar-bas small { display: none; }
.cockpit-menu-reduit .nav-link { justify-content: center; }
.cockpit-menu-reduit .nav-public-choix { position: absolute; left: 76px; background: var(--nav); width: 220px; z-index: 25; }
.cockpit-menu-reduit .nav-public-choix .nav-link > span { display: block; }
body:not(.dse-public) .btn { display: inline-flex; align-items: center; justify-content: center; gap: 8px; text-decoration: none; font-size: .85rem; min-height: 38px; }
body:not(.dse-public) a:focus-visible, body:not(.dse-public) button:focus-visible, body:not(.dse-public) summary:focus-visible { outline: 3px solid #529cff; outline-offset: 3px; }
.cockpit-compteurs { list-style: none; padding: 0; margin: 0; display: grid; grid-template-columns: repeat(auto-fit, minmax(170px, 1fr)); gap: 12px; }
.cockpit-compteur { height: 100%; display: flex; gap: 14px; align-items: center; text-decoration: none; color: var(--text); padding: 16px; }
.cockpit-compteur.selectionne { background: #edf4ff; border-color: #a6c9ff; }
.cockpit-compteur-icone { width: 44px; height: 44px; display: grid; place-items: center; background: #e9f0fb; color: var(--accent); border-radius: 50%; flex: 0 0 auto; }
.cockpit-compteur strong { display: block; font-size: 1.8rem; line-height: 1.15; }
.cockpit-compteur span span { display: block; font-size: .9rem; margin-top: 4px; }
.cockpit-compteur small { color: var(--muted); font-size: .75rem; }
.cockpit-sites-synthese { display: grid; grid-template-columns: 1.1fr 1fr; gap: 16px; }
.cockpit-sites-synthese h2 { display: flex; align-items: center; gap: 10px; font-size: .95rem; }
.cockpit-sites-synthese h2 svg { color: var(--accent); }
.cockpit-sites-synthese p { font-size: .85rem; }
.cockpit-moyenne { margin: 16px 0; color: var(--nav); }
.cockpit-moyenne .cockpit-mini-jauge { display: flex; gap: 18px; }
.cockpit-moyenne small { font-size: 1.4rem; font-weight: 700; }
.cockpit-moyenne .cockpit-jauge { height: 10px; }
.cockpit-sites-raccourcis { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 16px; }
.cockpit-mes-sites .cockpit-filtres { grid-template-columns: repeat(auto-fit, minmax(145px, 1fr)); gap: 12px; padding: 14px; box-shadow: none; }
.cockpit-mes-sites .cockpit-recherche { grid-column: auto; }
.cockpit-mes-sites .cockpit-champ > span { font-size: .75rem; color: var(--muted); }
.cockpit-mode-affichage { display: flex; gap: 6px; align-self: end; }
.cockpit-mode-affichage [aria-pressed="true"] { background: var(--accent); color: white; }
.cockpit-mes-sites .cockpit-tableau table { border-collapse: separate; border-spacing: 0 8px; background: transparent; }
.cockpit-mes-sites .cockpit-tableau th { text-transform: none; letter-spacing: 0; border: 0; }
.cockpit-mes-sites .cockpit-tableau td { background: white; border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); font-size: .85rem; padding: 14px 10px; }
.cockpit-mes-sites .cockpit-tableau td:first-child { border-left: 4px solid var(--line); border-radius: 10px 0 0 10px; }
.cockpit-mes-sites .cockpit-tableau td:last-child { border-right: 1px solid var(--line); border-radius: 0 10px 10px 0; }
.cockpit-site-identite { display: flex; align-items: center; gap: 12px; }
.cockpit-site-avatar { width: 44px; height: 44px; border-radius: 10px; background: #edf2f8; display: grid; place-items: center; font-weight: 700; color: var(--nav); flex: 0 0 auto; }
.cockpit-mes-sites .cockpit-actions { margin: 0; }
.cockpit-mes-sites .icon-btn { color: var(--muted); padding: 5px; }
.cockpit-resultats-sites { margin: 0; font-size: .8rem; }
.cockpit-vue-cartes table, .cockpit-vue-cartes tbody { display: block; }
.cockpit-vue-cartes thead { display: none; }
.cockpit-vue-cartes tbody { display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: 16px; }
.cockpit-mes-sites .cockpit-vue-cartes tr { display: flex; flex-direction: column; background: white; padding: 14px; border: 1px solid var(--line); border-radius: 12px; }
.cockpit-mes-sites .cockpit-vue-cartes td { display: block; border: 0; padding: 6px 0; }
.cockpit-mes-sites .cockpit-vue-cartes td:first-child, .cockpit-mes-sites .cockpit-vue-cartes td:last-child { border: 0; border-radius: 0; }
.cockpit-vue-cartes td[data-label]:not(:first-child)::before { content: attr(data-label) " : "; color: var(--muted); font-size: .8rem; }
@media (max-width: 1100px) {
  .topbar-actions .status { font-size: .75rem; }
  .cockpit-recherche-globale { max-width: 250px; }
  .cockpit-mes-sites .cockpit-tableau:not(.cockpit-vue-cartes) table { min-width: 760px; }
}
@media (max-width: 760px) {
  body:not(.dse-public) .app-shell, body:not(.dse-public) .cockpit-menu-reduit { grid-template-columns: 1fr; grid-template-rows: auto auto auto; }
  body:not(.dse-public) .topbar { height: auto; min-height: 72px; flex-wrap: wrap; padding: 12px 16px; gap: 12px; }
  .cockpit-recherche-globale { order: 3; max-width: none; width: 100%; margin: 0; }
  .topbar-actions { margin-left: auto; }
  .topbar-actions .status, .cockpit-profil summary > span:last-child { display: none; }
  body:not(.dse-public) .sidebar { padding: 8px; min-height: 0; gap: 0; }
  .cockpit-sidebar-bas { display: none; }
  .cockpit-menu-reduit .nav-link > span { display: inline; }
  .cockpit-sites-synthese { grid-template-columns: 1fr; }
  .cockpit-compteurs { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .cockpit-compteur { padding: 12px; gap: 10px; }
  .cockpit-compteur-icone { width: 32px; height: 32px; }
  .cockpit-compteur strong { font-size: 1.4rem; }
  .cockpit-mes-sites .cockpit-tableau:not(.cockpit-vue-cartes) table { min-width: 0; }
  .cockpit-mes-sites .cockpit-tableau tr { border: 1px solid var(--line); border-radius: 12px; background: white; margin-bottom: 10px; padding: 12px; }
  .cockpit-mes-sites .cockpit-tableau td, .cockpit-mes-sites .cockpit-tableau td:first-child, .cockpit-mes-sites .cockpit-tableau td:last-child { border: 0; border-radius: 0; padding: 5px 0; }
  .cockpit-mes-sites td:first-child::before { content: none; }
  .cockpit-vue-cartes tbody { grid-template-columns: minmax(0, 1fr); }
  .cockpit-site-identite strong { overflow-wrap: anywhere; }
}
.cockpit { display: grid; gap: 1.25rem; }
.cockpit h2 { margin: .25rem 0; font-size: 1.15rem; }
.cockpit-entete { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; gap: .75rem; }
.cockpit-resume { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 1rem; }
.cockpit-resume .card h2 { font-size: .95rem; color: var(--muted, #5b6b7f); text-transform: uppercase; letter-spacing: .04em; }
.cockpit-cartes { display: grid; grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); gap: 1rem; }
.cockpit-carte { display: flex; flex-direction: column; gap: .35rem; text-decoration: none; color: inherit; transition: transform .15s ease, box-shadow .15s ease; }
.cockpit-carte:hover, .cockpit-carte:focus-visible { transform: translateY(-2px); box-shadow: 0 8px 22px rgba(16, 36, 62, .12); }
.cockpit-carte-icone { font-size: 1.6rem; }
.cockpit-badge { display: inline-block; padding: .15rem .6rem; border-radius: 999px; font-size: .8rem; font-weight: 600; background: #e8edf3; color: var(--nav, #10243e); }
.cockpit-badge.actif { background: #dff5ec; color: #0d7a52; }
.cockpit-badge.situation { background: #fff3d6; color: #8a5a00; }
.cockpit-jauge { height: .7rem; border-radius: 999px; background: #e8edf3; overflow: hidden; }
.cockpit-jauge span { display: block; height: 100%; background: var(--progression-couleur, currentColor); border-radius: inherit; }
.cockpit-pliant { min-width: 0; border: 1px solid var(--line); border-radius: 12px; overflow: hidden; }
.cockpit-pliant > summary { cursor: pointer; list-style: none; padding: 1rem; font-weight: 600; }
.cockpit-pliant > summary::-webkit-details-marker { display: none; }
.cockpit-pliant > summary::before { content: "▶"; display: inline-block; margin-right: .6rem; }
.cockpit-pliant[open] > summary::before { content: "▼"; }
.cockpit-pliant > summary:focus-visible { outline: 2px solid currentColor; outline-offset: -3px; }
.cockpit-pliant-contenu { padding: 0 1rem 1rem; }
.cockpit-progression > summary, .cockpit-progression-resume {
  border-inline-start: 6px solid var(--progression-couleur, var(--line, transparent));
  background: color-mix(in srgb, var(--progression-couleur, transparent) 12%, transparent);
}
.cockpit-progression-libelle { display: inline-block; margin-inline-start: .6rem; font-size: .85em; font-weight: 400; }
.cockpit-etapes { list-style: none; margin: 0; padding: 0; display: grid; gap: .5rem; }
.cockpit-etape { display: flex; gap: .75rem; align-items: flex-start; padding: .65rem .85rem; border-radius: 10px; background: #fff; border: 1px solid #e3e8ef; }
.cockpit-etape p { margin: .25rem 0 0; }
.cockpit-etape.attention { border-color: #f0c36d; background: #fffaf0; }
.cockpit-etape.termine { border-color: #bfe8d6; }
.cockpit-etape.active { outline: 2px solid var(--accent, #19a974); }
.cockpit-picto { font-size: 1.15rem; line-height: 1.4; }
.cockpit-alerte { color: #8a5a00; margin: .35rem 0; }
.cockpit-actions { display: flex; flex-wrap: wrap; gap: .6rem; align-items: center; }
.cockpit-site { display: flex; flex-wrap: wrap; gap: .5rem; align-items: center; }
.cockpit-fil { display: flex; flex-wrap: wrap; gap: .4rem; list-style: none; margin: 0; padding: 0; }
.cockpit-fil a { display: inline-block; padding: .3rem .7rem; border-radius: 999px; background: #eef2f6; color: inherit; text-decoration: none; font-size: .85rem; }
.cockpit-fil li.active a { background: var(--accent, #19a974); color: #fff; }
.cockpit-formulaire { display: grid; gap: .9rem; }
.cockpit-champ { display: grid; gap: .3rem; }
.cockpit-champ input, .cockpit-champ textarea { width: 100%; padding: .55rem .7rem; border: 1px solid #cfd8e3; border-radius: 8px; font: inherit; box-sizing: border-box; }
.cockpit-champ input[type="color"] { width: 4rem; height: 2.5rem; padding: .15rem; }
.cockpit-connexion { max-width: 560px; margin: 2rem auto; text-align: center; }
.cockpit-connexion .cockpit-actions { justify-content: center; }
@media (max-width: 640px) {
  .cockpit-cartes { grid-template-columns: 1fr 1fr; }
  .cockpit-entete { flex-direction: column; align-items: flex-start; }
}
@media (max-width: 400px) { .cockpit-cartes { grid-template-columns: 1fr; } }

/* Mes sites : liste filtrable pour un grand nombre de sites */
.cockpit-filtres { display: grid; grid-template-columns: repeat(auto-fit, minmax(170px, 1fr)); gap: .75rem; align-items: end; }
.cockpit-filtres .cockpit-recherche { grid-column: 1 / -1; }
.cockpit-champ select { width: 100%; padding: .5rem .6rem; border: 1px solid #cfd8e3; border-radius: 8px; font: inherit; background: #fff; }
.cockpit-tableau { overflow-x: auto; }
.cockpit-tableau table { width: 100%; border-collapse: collapse; background: #fff; border-radius: 10px; overflow: hidden; }
.cockpit-tableau th, .cockpit-tableau td { padding: .6rem .75rem; text-align: left; border-bottom: 1px solid #e3e8ef; vertical-align: middle; }
.cockpit-tableau th { font-size: .8rem; text-transform: uppercase; letter-spacing: .04em; color: var(--muted, #5b6b7f); }
.cockpit-mini-jauge { display: inline-flex; align-items: center; gap: .4rem; min-width: 7rem; }
.cockpit-mini-jauge .cockpit-jauge { flex: 1; height: .45rem; }
.cockpit-pagination { display: flex; gap: .75rem; align-items: center; justify-content: center; }
.sr-only { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
@media (max-width: 700px) {
  .cockpit-tableau thead { display: none; }
  .cockpit-tableau tr { display: grid; gap: .3rem; padding: .6rem 0; border-bottom: 1px solid #e3e8ef; }
  .cockpit-tableau td { border: 0; padding: .15rem .75rem; }
  .cockpit-tableau td[data-label]::before { content: attr(data-label) " : "; color: var(--muted, #5b6b7f); font-size: .85rem; }
}

/* Ecriture : apercu, resultat, administration */
.cockpit-actions { display: flex; flex-wrap: wrap; gap: .5rem; margin: .75rem 0; }
.cockpit-edition .form-field { display: flex; flex-direction: column; gap: .25rem; margin-bottom: .75rem; }
.cockpit-edition input, .cockpit-edition textarea { width: 100%; padding: .5rem; border: 1px solid var(--border, #d0d7de); border-radius: 6px; font: inherit; }
.cockpit-diff { width: 100%; border-collapse: collapse; margin: .5rem 0; }
.cockpit-diff th, .cockpit-diff td { border: 1px solid var(--border, #d0d7de); padding: .5rem; text-align: left; vertical-align: top; white-space: pre-wrap; }
.cockpit-diff td.avant { background: #fff5f5; }
.cockpit-diff td.apres { background: #f0fff4; }
.cockpit-resultat.ok { border-left: 4px solid #2da44e; }
.cockpit-resultat.erreur { border-left: 4px solid #cf222e; }
.cockpit-admin { grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: 1rem; }
.cockpit-liste { list-style: none; padding: 0; margin: 0; display: grid; gap: .4rem; }
.cockpit-form-inline { display: flex; flex-wrap: wrap; gap: .4rem; align-items: center; margin: .2rem 0; }
.cockpit-table { width: 100%; border-collapse: collapse; }
.cockpit-table th, .cockpit-table td { padding: .5rem; border-bottom: 1px solid var(--border, #d0d7de); text-align: left; vertical-align: top; }
.sr-only { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
@media (max-width: 700px) { .cockpit-table thead { display: none; } .cockpit-table td { display: block; border: 0; } .cockpit-table tr { display: block; border-bottom: 1px solid var(--border, #d0d7de); } }
.cockpit-statut-dialogue {
  width: min(520px, calc(100% - 32px));
  max-height: calc(100vh - 32px);
  overflow: auto;
  border: 1px solid var(--line);
  border-radius: 14px;
  padding: 24px;
  color: var(--text);
}
.cockpit-statut-dialogue::backdrop { background: rgba(6, 22, 38, .58); }
.cockpit-statut-dialogue form { display: grid; gap: 16px; margin-bottom: 16px; }
.cockpit-statut-dialogue label { display: grid; gap: 8px; }
.cockpit-statut-dialogue select { padding: 10px; font: inherit; width: 100%; }

body:not(.dse-public) #app-header { position: sticky; top: 0; z-index: 30; }
.cockpit-mes-sites [data-resultat-statut]:empty { display: none; }
.cockpit-mes-sites .cockpit-filtres .cockpit-recherche { grid-column: auto; }
@media (max-width: 760px) {
  .cockpit-mes-sites .cockpit-tableau thead { display: none; }
  .cockpit-mes-sites .cockpit-tableau tr { display: grid; }
  .cockpit-mes-sites .cockpit-tableau td:first-child::before { content: none; }
  .cockpit-mes-sites .cockpit-tableau td[data-label]:not(:first-child)::before { content: attr(data-label) " : "; color: var(--muted); font-size: .85rem; }
}

/* Constructeur DSE */
.cockpit-medias [hidden] { display: none !important; }
.cockpit-media-fichier { display: grid; place-items: center; gap: 10px; padding: 20px; min-height: 120px; background: var(--bg); border-radius: 10px; }
.cockpit-media-fichier small { color: var(--muted); }
.cockpit-site-selection { padding: 12px 0; border-top: 1px solid #ffffff33; margin-top: 10px; }
.cockpit-site-selection > small { display: block; text-transform: uppercase; font-size: .65rem; color: #adbed5; padding: 0 10px 8px; letter-spacing: .06em; }
.cockpit-site-selection > a { display: flex; align-items: center; gap: 10px; padding: 12px 10px; border: 1px solid #ffffff33; background: #ffffff0c; color: white; border-radius: 10px; text-decoration: none; }
.cockpit-site-selection strong { font-size: .8rem; }
.cockpit-site-selection small { display: block; font-size: .7rem; margin-top: 4px; }
.cockpit-site-selection span { min-width: 0; overflow-wrap: anywhere; }
.cockpit-nav-globale { display: grid; gap: 6px; padding-top: 14px; margin-top: 8px; border-top: 1px solid #ffffff33; }
.cockpit-menu-reduit .cockpit-site-selection > small, .cockpit-menu-reduit .cockpit-site-selection a span { display: none; }
.cockpit-menu-reduit .cockpit-site-selection a { justify-content: center; }
.cockpit-site-banniere { display: flex; align-items: center; gap: 24px; background: linear-gradient(115deg, #10243e, #174660); color: white; box-shadow: none; padding: 28px; min-height: 180px; }
.cockpit-site-monogramme { display: grid; place-items: center; width: 84px; height: 84px; background: #ffffff18; border: 1px solid #ffffff33; border-radius: 18px; font-size: 2rem; font-weight: 750; flex: 0 0 auto; }
.cockpit-site-identification { flex: 1; min-width: 0; overflow-wrap: anywhere; }
.cockpit-site-identification h1 { margin: 0; font-size: 1.6rem; }
.cockpit-site-identification p { margin: 8px 0; font-size: .9rem; color: #dfebf8; }
.cockpit-site-banniere .cockpit-public-site { align-self: start; border: 1px solid #ffffff66; background: #ffffff14; color: white; white-space: nowrap; }
.cockpit-site-metriques { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 12px; }
.cockpit-site-metrique { display: flex; flex-direction: column; align-items: flex-start; gap: 10px; padding: 16px; }
.cockpit-site-metrique h2 { font-size: .85rem; margin: 0; }
.cockpit-site-metrique .metric { margin: 0; font-size: 1.7rem; }
.cockpit-metrique-icone { display: grid; place-items: center; background: #edf4ff; color: var(--accent); width: 36px; height: 36px; border-radius: 10px; }
.cockpit-site-metrique p { margin: 0; font-size: .8rem; }
.cockpit-metrique-etat { font-size: .95rem; }
.cockpit-site-metrique .cockpit-jauge { width: 100%; color: var(--nav); }
.cockpit-site-metrique .cockpit-lien-texte { margin-top: auto; }
.cockpit-lien-texte { display: inline-flex; align-items: center; gap: 8px; color: var(--accent); text-decoration: none; font-size: .8rem; font-weight: 600; padding: 6px 0; }
.cockpit-site-pilotage { display: grid; grid-template-columns: 1.2fr 1fr; gap: 16px; align-items: start; }
.cockpit-site-pilotage h2 { display: flex; align-items: center; gap: 10px; font-size: 1rem; }
.cockpit-site-pilotage h2 svg { color: var(--accent); }
.cockpit-site-prochaines ol { padding: 0; list-style: none; margin: 16px 0 0; counter-reset: prochaine; }
.cockpit-site-prochaines li { display: flex; align-items: center; gap: 12px; padding: 14px 0; border-top: 1px solid var(--line); counter-increment: prochaine; }
.cockpit-site-prochaines li::before { content: counter(prochaine); display: grid; place-items: center; background: #edf4ff; color: var(--accent); width: 30px; height: 30px; border-radius: 50%; flex: 0 0 auto; font-weight: 700; }
.cockpit-site-prochaines li > div { flex: 1; min-width: 0; }
.cockpit-site-prochaines li strong { font-size: .9rem; }
.cockpit-site-prochaines p { font-size: .8rem; margin: 6px 0; }
.cockpit-site-detail { display: grid; gap: 16px; }
.cockpit-site-infos { display: grid; grid-template-columns: auto minmax(0, 1fr); gap: 12px 20px; font-size: .85rem; }
.cockpit-site-infos dt { color: var(--muted); }
.cockpit-site-infos dd { margin: 0; overflow-wrap: anywhere; }
.cockpit-site-structure { display: flex; flex-wrap: wrap; gap: 12px; margin: 16px 0; }
.cockpit-site-raccourcis { display: flex; gap: 12px; flex-wrap: wrap; }
.cockpit-site-raccourcis .cockpit-cartes { width: 100%; margin-top: 12px; }
#progression-site { scroll-margin-top: 90px; }
@media (max-width: 760px) {
  .cockpit-site-banniere { flex-wrap: wrap; padding: 18px; gap: 16px; }
  .cockpit-site-identification h1 { font-size: 1.25rem; }
  .cockpit-site-monogramme { width: 52px; height: 52px; font-size: 1.2rem; }
  .cockpit-site-banniere .cockpit-public-site { width: 100%; }
  .cockpit-site-metriques { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .cockpit-site-pilotage { grid-template-columns: minmax(0, 1fr); }
  .cockpit-site-prochaines li { flex-wrap: wrap; }
  .cockpit-site-prochaines li .btn { margin-left: 42px; }
  .cockpit-site-selection { padding: 0; margin: 0; border: 0; }
  .cockpit-site-selection > small { display: none; }
  .cockpit-site-selection > a { padding: 6px 10px; }
  .cockpit-nav-globale { display: flex; padding: 0; margin: 0; border: 0; }
  .cockpit-menu-reduit .cockpit-site-selection a span { display: block; }
}
.constructeur-onglets { display: flex; flex-wrap: wrap; gap: 8px; margin: 12px 0; }
.constructeur-grille { display: grid; grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); gap: 16px; }
.constructeur-carte header, .constructeur-editeur-entete { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 8px; }
.constructeur-carte label { display: grid; gap: 4px; margin: 8px 0; }
.constructeur-boutons { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 8px; }
.constructeur-creer { display: flex; flex-wrap: wrap; align-items: end; gap: 12px; }
.constructeur-creer label { display: grid; gap: 4px; flex: 1 1 260px; }
.constructeur-badge--actif { background: #d9f5e6; color: #0b6b3a; }
.constructeur-badge--brouillon { background: #fff2cc; color: #7a5a00; }
.constructeur-badge--inactif { background: #eceff3; color: #555; }
.constructeur-type { font-size: .75rem; text-transform: uppercase; letter-spacing: .05em; color: var(--muted, #667); margin-right: 6px; }
.constructeur-arbre, .constructeur-arbre ul { list-style: none; padding-left: 0; margin: 0; }
.constructeur-arbre ul { padding-left: 18px; border-left: 2px solid var(--line, #dde); margin: 6px 0 6px 6px; }
.constructeur-noeud { margin: 6px 0; }
.constructeur-noeud-entete { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; padding: 6px 8px; border: 1px solid var(--line, #dde); border-radius: 8px; background: rgba(0,0,0,.02); }
.constructeur-outils { display: inline-flex; flex-wrap: wrap; gap: 4px; margin-left: auto; }
.btn-mini { padding: 2px 8px; font-size: .8rem; min-height: 0; }
.constructeur-ajout { display: flex; flex-wrap: wrap; gap: 6px; margin: 6px 0 6px 18px; }
.constructeur-ajout select, .constructeur-ajout input, .constructeur-outils select { padding: 4px 6px; font: inherit; font-size: .85rem; }
.constructeur-apercus-cadres { display: flex; flex-wrap: wrap; gap: 16px; align-items: flex-start; }
.constructeur-apercus-cadres figure { margin: 0; display: grid; gap: 6px; }
.constructeur-apercus-cadres figure:first-child { flex: 1 1 520px; }
.constructeur-apercu { border: 1px solid var(--line, #dde); border-radius: 8px; background: #fff; height: 520px; }
.constructeur-apercu--ordinateur { width: 100%; }
.constructeur-apercu--mobile { width: 375px; max-width: 100%; }
.constructeur-medias { display: grid; grid-template-columns: repeat(auto-fill, minmax(140px, 1fr)); gap: 12px; }
.constructeur-media { margin: 0; display: grid; gap: 6px; border: 1px solid var(--line, #dde); border-radius: 8px; padding: 8px; }
.constructeur-media img, .constructeur-logo img { width: 100%; height: 110px; object-fit: contain; background: #f6f7f9; border-radius: 6px; }
.constructeur-logo img { width: 220px; }
.constructeur-medias--mini { display: flex; gap: 4px; flex-wrap: wrap; }
.constructeur-medias--mini img { width: 48px; height: 48px; object-fit: contain; background: #f6f7f9; border-radius: 4px; }
.constructeur-dialogue form label { display: grid; gap: 6px; }
.constructeur-dialogue input, .constructeur-dialogue textarea { padding: 8px; font: inherit; width: 100%; }
.constructeur-design-zone { display: grid; gap: 16px; align-items: start; }
.constructeur--plein-ecran { position: fixed; inset: 0; z-index: 1000; overflow: auto; background: var(--bg, #f5f6fa); padding: 12px; }
.constructeur--plein-ecran > .cockpit-site-titre { display: none; }
.constructeur-barre-visuelle { position: sticky; top: -12px; z-index: 2; padding: 12px; background: var(--surface, #fff); border-bottom: 1px solid var(--line, #dde); display: flex; gap: 12px; align-items: center; justify-content: space-between; flex-wrap: wrap; }
.constructeur-espace-visuel { display: grid; grid-template-columns: minmax(240px, 320px) minmax(0, 1fr); gap: 12px; align-items: start; }
.constructeur-espace-visuel > aside { max-height: calc(100vh - 140px); overflow: auto; position: sticky; top: 90px; }
.constructeur-espace-visuel .constructeur-design-zone--ouverte { grid-template-columns: minmax(0, 1fr) minmax(260px, 340px); }
.constructeur-espace-visuel [data-c-panneau] { grid-column: 2; grid-row: 1; }
.constructeur-espace-visuel .constructeur-apercus { grid-column: 1; grid-row: 1; }
.constructeur-noeud-entete[draggable="true"] { cursor: grab; }
.constructeur--apercu-seul .constructeur-espace-visuel { grid-template-columns: 1fr; }
.constructeur--apercu-seul .constructeur-espace-visuel > aside, .constructeur--apercu-seul [data-c-panneau] { display: none; }
.constructeur--apercu-seul .constructeur-design-zone--ouverte { grid-template-columns: 1fr; }
@media (max-width: 900px) {
  .constructeur-espace-visuel, .constructeur-espace-visuel .constructeur-design-zone--ouverte { grid-template-columns: 1fr; }
  .constructeur-espace-visuel > aside { position: static; max-height: 35vh; }
  .constructeur-espace-visuel [data-c-panneau], .constructeur-espace-visuel .constructeur-apercus { grid-column: 1; grid-row: auto; }
}
.constructeur-design-zone--ouverte { grid-template-columns: minmax(300px, 380px) minmax(0, 1fr); }
.constructeur-apercu-cadre { overflow: hidden; border: 1px solid var(--line, #dde); border-radius: 8px; background: #f6f7f9; min-height: 300px; }
.constructeur-apercu-cadre .constructeur-apercu { border: 0; border-radius: 0; display: block; }
.design-panneau { display: grid; gap: 10px; max-height: 80vh; overflow: auto; position: sticky; top: 8px; }
.design-entete { display: flex; justify-content: space-between; align-items: center; gap: 8px; }
.design-onglets { display: flex; flex-wrap: wrap; gap: 4px; }
.design-groupe { border: 1px solid var(--line, #dde); border-radius: 8px; padding: 6px 10px; }
.design-groupe summary { cursor: pointer; font-weight: 600; }
.design-grille { display: grid; grid-template-columns: repeat(auto-fill, minmax(140px, 1fr)); gap: 8px; margin-top: 8px; }
.design-champ { display: grid; gap: 4px; font-size: .85rem; }
.design-champ input, .design-champ select { padding: 4px 6px; font: inherit; font-size: .85rem; width: 100%; min-width: 0; }
.design-couleur, .design-nombre { display: flex; gap: 4px; align-items: center; }
.design-couleur input[type=color] { width: 34px; height: 30px; padding: 0; flex: none; }
.design-herite { font-size: .75rem; }
.design-appareil { display: grid; gap: 8px; }
.design-actions { position: sticky; bottom: 0; background: inherit; padding-top: 6px; }
@media (max-width: 1100px) { .constructeur-design-zone--ouverte { grid-template-columns: 1fr; } .design-panneau { position: static; max-height: none; } }
.alerte-erreur { color: #a11; } .alerte-succes { color: #0b6b3a; }
@media (max-width: 640px) { .constructeur-outils { margin-left: 0; } .constructeur-arbre ul { padding-left: 8px; } }
.cockpit-import-media h2 { display: flex; align-items: center; gap: 8px; }
.cockpit-import-media h2 svg { width: 20px; height: 20px; }
.cockpit-import-champs { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 12px; }
.cockpit-import-champs input[type="file"] { max-width: 100%; }
.cockpit-import-media progress { width: 100%; height: 10px; }
.cockpit-surtitre { margin: 0; font-size: .8rem; font-weight: 600; letter-spacing: .06em; text-transform: uppercase; color: var(--muted, #64748b); }
.cockpit-clients-liste { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: 8px; }
.cockpit-clients-liste a { display: inline-flex; align-items: center; gap: 8px; }
.cockpit-clients-liste small { opacity: .75; }

/* Gestion transverse des contenus (tous les sites du perimetre) */
.cockpit-contenus-tuiles { display: grid; grid-template-columns: repeat(auto-fill, minmax(210px, 1fr)); gap: 10px; }
.cockpit-contenus-tuile { display: flex; gap: 10px; align-items: flex-start; padding: 12px; border: 1px solid var(--border, #e2e8f0); border-radius: 10px; color: inherit; text-decoration: none; background: var(--surface, #fff); }
.cockpit-contenus-tuile:hover, .cockpit-contenus-tuile:focus-visible { border-color: var(--primary, #2563eb); box-shadow: 0 2px 8px rgba(15, 23, 42, .08); }
.cockpit-contenus-tuile svg { flex: 0 0 22px; width: 22px; height: 22px; color: var(--primary, #2563eb); }
.cockpit-contenus-tuile span { display: flex; flex-direction: column; gap: 2px; }
.cockpit-contenus-tuile small { opacity: .75; }
.cockpit-contenus-onglets { display: flex; flex-wrap: wrap; gap: 8px; margin: 12px 0; }
.cockpit-contenus-onglets .badge { margin-left: 6px; }
.cockpit-synchro { margin-bottom: 12px; }
.cockpit-synchro-entete { display: flex; flex-wrap: wrap; gap: 12px; justify-content: space-between; align-items: flex-start; }
.cockpit-synchro-entete h2 { display: flex; align-items: center; gap: 8px; margin: 0 0 4px; }
.cockpit-synchro-detail { margin-top: 8px; }
.cockpit-synchro-detail ul { margin: 6px 0 0; padding-left: 18px; max-height: 240px; overflow: auto; overflow-wrap: anywhere; }
.cockpit-contenus-site { display: block; }
.cockpit-contenus-site small { display: block; opacity: .7; }
.cockpit-contenus-vignette img { width: 56px; height: 56px; object-fit: contain; border-radius: 6px; background: #f1f5f9; }
.cockpit-contenus-vignette svg { width: 28px; height: 28px; opacity: .6; }
.cockpit-contenus-actions { display: flex; flex-wrap: wrap; gap: 6px; }
.cockpit-contenus-actions .btn { display: inline-flex; align-items: center; gap: 4px; white-space: nowrap; }
.cockpit-contenus-actions svg { width: 16px; height: 16px; }

/* Synchronisations (administration globale) */
.cockpit-synchro-reglage { display: flex; flex-wrap: wrap; gap: 10px; align-items: flex-end; margin: 12px 0 6px; }
.cockpit-synchro-reglage .cockpit-champ { min-width: 140px; flex: 1 1 140px; }
.cockpit-synchro-reglage [hidden] { display: none; }
.cockpit-restauration-apercu ul ul { margin: 4px 0 8px; font-size: .9rem; }
.cockpit-restauration-apercu del { color: #a33; }
.cockpit-restauration-apercu ins { color: #17663a; text-decoration: none; font-weight: 600; }
.cockpit-restauration-apercu li { overflow-wrap: anywhere; }
@media (max-width: 640px) { .cockpit-synchro-entete .btn, .cockpit-synchro-reglage .btn { width: 100%; } }
.constructeur-selection{outline:2px solid var(--couleur-primaire,#7c3aed);outline-offset:2px}
.constructeur-cotes{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.5rem}
.constructeur-cotes input{width:100%;min-width:0}
[data-builder-palette]{display:flex;flex-wrap:wrap;gap:.4rem;margin-bottom:1rem}
[data-builder-palette] p{flex-basis:100%;margin:.25rem 0}
[data-builder-volet]{padding-top:1rem}
[data-builder-volet][hidden]{display:none}
[data-builder-valeurs] .design-actions{border:0;margin:0;padding:0}
[data-builder-valeurs] textarea{width:100%;min-width:0;font:inherit}
.constructeur--plein-ecran > .cockpit-entete{display:none}

/* Galerie des sites */
.galerie-filtres { display: flex; flex-wrap: wrap; gap: .75rem; align-items: flex-end; }
.galerie-filtres label { display: flex; flex-direction: column; gap: .25rem; font-weight: 600; flex: 1 1 10rem; }
.galerie-filtres label:first-child { flex: 2 1 14rem; }
.galerie-compte { margin: .75rem 0; color: #555; }
.galerie-grille { list-style: none; margin: 0; padding: 0; display: grid; gap: 1rem; grid-template-columns: repeat(auto-fill, minmax(16rem, 1fr)); }
.galerie-carte { display: flex; flex-direction: column; background: #fff; border: 1px solid #e3e6ec; border-radius: 12px; overflow: hidden; box-shadow: 0 1px 3px rgba(0,0,0,.06); }
.galerie-carte:focus-within { outline: 3px solid #2563eb; outline-offset: 2px; }
.galerie-visuel { height: 9rem; display: flex; align-items: center; justify-content: center; background: #f4f6fa; }
.galerie-visuel img { max-width: 80%; max-height: 7rem; object-fit: contain; }
.galerie-initiales { font-size: 2.5rem; font-weight: 700; color: #3b4b6b; }
.galerie-corps { padding: .9rem 1rem .5rem; flex: 1; }
.galerie-corps h3 { margin: 0 0 .4rem; font-size: 1.1rem; }
.galerie-statut { display: inline-block; padding: .15rem .6rem; border-radius: 999px; font-size: .85rem; background: color-mix(in srgb, var(--statut, #64748b) 18%, #fff); color: #1f2937; border: 1px solid var(--statut, #94a3b8); }
.galerie-statut-vide { border-style: dashed; }
.galerie-domaine { margin: .5rem 0 0; color: #475569; word-break: break-all; }
.galerie-actions { display: flex; flex-wrap: wrap; gap: .5rem; padding: .75rem 1rem 1rem; }
.galerie-actions .btn { flex: 1 1 auto; text-align: center; }
.galerie-pagination { display: flex; gap: 1rem; align-items: center; justify-content: center; margin: 1.25rem 0; }
.galerie-message:empty { display: none; }
.galerie-humain { margin-top: 1.5rem; padding: .9rem 1rem; border-left: 4px solid #2563eb; background: #f1f5ff; border-radius: 6px; }
@media (max-width: 600px) {
  .galerie-filtres label { flex-basis: 100%; }
  .galerie-filtres .btn { width: 100%; }
  .galerie-grille { grid-template-columns: 1fr; }
}

/* Ouverture d'un site : retour immediat, etat LOADING et squelette progressif. */
.dse-spinner{display:inline-block;width:22px;height:22px;flex:0 0 auto;border:3px solid #dce5ee;border-top-color:var(--accent);border-radius:50%;animation:spin .8s linear infinite;vertical-align:middle}
.dse-spinner-petit{width:14px;height:14px;border-width:2px}
a.is-chargement,a[aria-disabled="true"]{pointer-events:none;opacity:.75;cursor:progress}
.cockpit-ouverture-statut{display:flex;align-items:center;gap:14px;margin-bottom:16px}
.cockpit-ouverture-statut p{margin:0}
.cockpit-ouverture-titre{font-weight:600;font-size:1.05rem}
.cockpit-squelette{display:grid;gap:14px}
.cockpit-squelette-grille{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:14px}
.cockpit-squelette-bloc{height:96px;border-radius:12px;background:linear-gradient(90deg,#eef2f6 25%,#f7f9fb 50%,#eef2f6 75%);background-size:200% 100%;animation:dse-squelette 1.4s ease-in-out infinite}
.cockpit-squelette-entete{height:64px}
.cockpit-squelette-large{height:180px}
@keyframes dse-squelette{0%{background-position:200% 0}100%{background-position:-200% 0}}
@media (prefers-reduced-motion: reduce){.dse-spinner,.cockpit-squelette-bloc{animation-duration:3s}}
