/* Cockpit DSE unique et adaptatif */
[data-administration-droits] [hidden] { display: none !important; }
.droits-filtres { display: flex; flex-wrap: wrap; align-items: end; gap: 12px; margin: 16px 0; }
.droits-filtres label { display: grid; gap: 6px; flex: 1 1 180px; min-width: 0; }
.droits-filtres input, .droits-filtres select { width: 100%; min-width: 0; padding: 9px; border: 1px solid var(--line); border-radius: 8px; font: inherit; }
.droits-tableau { overflow-x: auto; }
.droits-tableau table { width: 100%; }
[data-groupe-droits] > summary { cursor: pointer; padding: 8px 0; }
.droits-compteur, [data-desactives-groupe] { display: inline-block; margin-left: 12px; font-size: .85rem; }
.droits-compteur { color: #166534; font-weight: 600; }
[data-desactives-groupe] { color: #991b1b; }
.droits-etat { display: inline-block; border-radius: 6px; padding: 3px 8px; font-size: .8rem; font-weight: 600; margin: 4px; }
[data-etat-droit="actif"] .droits-etat, .droits-etat[data-etat-droit="actif"] { color: #166534; background: #dcfce7; }
[data-etat-droit="inactif"] .droits-etat, .droits-etat[data-etat-droit="inactif"] { color: #991b1b; background: #fee2e2; }
[data-ligne-droit][data-etat-droit="actif"] > td { background: #f0fdf4; }
[data-ligne-droit][data-etat-droit="inactif"] > td { background: #fff1f2; }
[data-ligne-droit] input[type="checkbox"] { accent-color: #166534; }
.droits-legende { font-size: .85rem; }
.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);
  /* Theme tokens: distinct defaults, ready for a future SharePoint-backed cockpit palette. */
  --cockpit-nav-admin-bg: #174667;
  --cockpit-nav-site-bg: #0a2c4d;
  --cockpit-nav-global-bg: #123956;
  --cockpit-nav-group-border: rgba(206, 226, 245, .2);
}
body:not(.dse-public) .app-shell { grid-template-columns: 224px minmax(0, 1fr); }
body:not(.dse-public) .topbar { gap: 20px; }
.topbar-actions { flex-wrap: wrap; justify-content: flex-end; }
.cockpit-version { display: inline-flex; align-items: center; flex-wrap: wrap; gap: 6px; font-size: .75rem; color: var(--muted); }
.cockpit-version > [role="status"]:empty { display: none; }
.cockpit-version > [role="status"] { max-width: 240px; }
body:not(.dse-public) .cockpit-version .btn { min-height: 28px; padding: 4px 8px; font-size: .75rem; }
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-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-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; }
/* Atelier : Design a gauche, apercu au centre, Structure a droite ; chaque cote se replie en bandeau. */
.constructeur-espace-visuel { display: grid; grid-template-columns: minmax(280px, 340px) minmax(0, 1fr) minmax(280px, 360px); gap: 12px; align-items: start; }
.constructeur-espace-visuel > aside { grid-row: 1; max-height: calc(100vh - 90px); overflow: auto; position: sticky; top: 64px; padding: 10px; display: grid; gap: 8px; align-content: start; }
.constructeur-espace-visuel > .constructeur-cote--design { grid-column: 1; }
.constructeur-espace-visuel > .constructeur-cote--structure { grid-column: 3; }
.constructeur-espace-visuel > .constructeur-design-zone { grid-column: 2; grid-row: 1; min-width: 0; grid-template-columns: minmax(0, 1fr); }
.constructeur-espace--design-replie { grid-template-columns: 44px minmax(0, 1fr) minmax(280px, 360px); }
.constructeur-espace--structure-replie { grid-template-columns: minmax(280px, 340px) minmax(0, 1fr) 44px; }
.constructeur-espace--design-replie.constructeur-espace--structure-replie { grid-template-columns: 44px minmax(0, 1fr) 44px; }
.constructeur-cote-entete { display: flex; align-items: center; justify-content: space-between; gap: 6px; padding-bottom: 6px; border-bottom: 2px solid var(--line, #dde); }
.constructeur-cote--structure .constructeur-cote-entete { flex-direction: row-reverse; }
.constructeur-cote-titre { font-size: .95rem; }
.constructeur-cote-bascule { width: 30px; height: 30px; flex: none; border: 1px solid var(--line, #d0d7e2); border-radius: 8px; background: #eef4ff; color: #3b5bdb; font-size: 1.1rem; font-weight: 800; line-height: 1; cursor: pointer; }
.constructeur-cote-bascule:hover { background: #dbe6ff; }
.constructeur-cote-corps { display: grid; gap: 8px; align-content: start; min-width: 0; }
.constructeur-cote--design [data-c-panneau]:not(:empty) ~ .constructeur-cote-vide { display: none; }
.constructeur-espace--design-replie > .constructeur-cote--design,
.constructeur-espace--structure-replie > .constructeur-cote--structure { padding: 6px 4px; overflow: hidden; cursor: default; }
.constructeur-espace--design-replie > .constructeur-cote--design .constructeur-cote-corps,
.constructeur-espace--structure-replie > .constructeur-cote--structure .constructeur-cote-corps { display: none; }
.constructeur-espace--design-replie > .constructeur-cote--design .constructeur-cote-entete,
.constructeur-espace--structure-replie > .constructeur-cote--structure .constructeur-cote-entete { flex-direction: column; border: 0; padding: 0; }
.constructeur-espace--design-replie > .constructeur-cote--design .constructeur-cote-titre,
.constructeur-espace--structure-replie > .constructeur-cote--structure .constructeur-cote-titre { writing-mode: vertical-rl; white-space: nowrap; margin-top: 8px; }
.constructeur-espace--design-replie > .constructeur-cote--design .constructeur-cote-bascule,
.constructeur-espace--structure-replie > .constructeur-cote--structure .constructeur-cote-bascule { transform: rotate(180deg); }
.constructeur-espace-visuel .constructeur-apercus { min-width: 0; padding: 8px; }
.constructeur-editeur .constructeur-noeud > .constructeur-ajout { display: none; }
.constructeur-editeur .constructeur-noeud:has(> .constructeur-noeud-entete.constructeur-selection) > .constructeur-ajout,
.constructeur-editeur .constructeur-noeud > .constructeur-ajout:focus-within { display: flex; }
.constructeur-editeur .constructeur-editeur-entete h3 { margin: 2px 0; font-size: 1.05rem; }
.constructeur-boutons--compacts { gap: 4px; }
.constructeur-outils-barre { align-items: center; margin-top: 0; }
.constructeur-appareils { display: inline-flex; align-items: center; gap: 4px; padding: 4px 6px; border: 2px solid #c7d7fe; border-radius: 12px; background: #eef4ff; }
.constructeur-groupe-titre { font-size: .72rem; font-weight: 800; letter-spacing: .06em; text-transform: uppercase; color: #3b5bdb; padding: 0 6px 0 4px; }
.constructeur-groupe { display: inline-flex; align-items: center; gap: 4px; }
.constructeur-voir { padding: 3px 8px; border: 1px solid #cbd5e1; border-radius: 8px; background: #f8fafc; }
.constructeur-voir .constructeur-groupe-titre { color: #475569; }
.constructeur-voir label { display: inline-flex; align-items: center; gap: 4px; margin: 0 4px; font-size: .82rem; font-weight: 600; cursor: pointer; white-space: nowrap; }
.constructeur-voir input { margin: 0; accent-color: #3b5bdb; }
.constructeur-separateur { align-self: stretch; width: 2px; min-height: 28px; margin: 0 6px; border-radius: 2px; background: var(--line, #d0d7e2); }
@media (max-width: 760px) { .constructeur-separateur { display: none; } }
.constructeur-editeur [data-c-panneau]:empty { display: none; }
.constructeur-editeur .design-panneau { position: static; max-height: none; overflow: visible; border: 2px solid var(--couleur-primaire, #7c3aed); }
.constructeur-volet { border: 1px solid var(--line, #dde); border-radius: 8px; background: var(--surface, #fff); }
.constructeur-volet > summary { cursor: pointer; padding: 8px 10px; font-weight: 600; list-style: none; display: flex; gap: 6px; align-items: center; }
.constructeur-volet > summary::-webkit-details-marker { display: none; }
.constructeur-volet > summary::before { content: "▸"; transition: transform .15s; }
.constructeur-volet[open] > summary::before { transform: rotate(90deg); }
.constructeur-volet[open] > summary { border-bottom: 1px solid var(--line, #dde); }
.constructeur-volet > :not(summary) { margin: 8px 10px; }
.constructeur-editeur .constructeur-noeud { margin: 3px 0; }
.constructeur-editeur .constructeur-noeud-entete { gap: 4px; padding: 4px 6px; font-size: .88rem; cursor: pointer; }
.constructeur-editeur .constructeur-noeud-entete:hover { background: rgba(124, 58, 237, .06); }
.constructeur-noeud-entete[draggable="true"] { cursor: grab; }
.constructeur-noeud-entete.dse-depot-dans { outline: 2px dashed #16a34a; background: rgba(22,163,74,.1); }
.constructeur-noeud-entete.dse-depot-avant { box-shadow: inset 0 3px 0 #16a34a; }
.constructeur-noeud-entete.dse-depot-apres { box-shadow: inset 0 -3px 0 #16a34a; }
.constructeur-editeur .constructeur-noeud-entete .constructeur-outils { display: none; flex-basis: 100%; margin-left: 0; }
.constructeur-editeur .constructeur-noeud-entete:hover .constructeur-outils,
.constructeur-editeur .constructeur-noeud-entete:focus-within .constructeur-outils,
.constructeur-editeur .constructeur-noeud-entete.constructeur-selection .constructeur-outils { display: inline-flex; }
.constructeur-noeud-detail { flex-basis: 100%; font-size: .75rem; }
.constructeur-editeur .constructeur-arbre ul { padding-left: 10px; margin: 3px 0 3px 8px; }
.constructeur-editeur .constructeur-ajout { font-size: .85rem; }
.constructeur-replier { border: 0; background: none; padding: 0 2px; cursor: pointer; font-size: .9rem; line-height: 1; color: var(--muted, #667); transition: transform .15s; }
.constructeur-noeud--replie > .constructeur-noeud-entete .constructeur-replier { transform: rotate(-90deg); }
.constructeur-noeud--replie > ul, .constructeur-noeud--replie > .constructeur-ajout { display: none; }
.constructeur-type--section { color: #2b87da; } .constructeur-type--ligne { color: #1fa88f; } .constructeur-type--colonne { color: #8f42ec; } .constructeur-type--module { color: #4c5866; }
.constructeur-noeud--section > .constructeur-noeud-entete { border-left: 3px solid #2b87da; }
.constructeur-noeud--ligne > .constructeur-noeud-entete { border-left: 3px solid #29c4a9; }
.constructeur-noeud--colonne > .constructeur-noeud-entete { border-left: 3px solid #8f42ec; }
.constructeur-noeud--module > .constructeur-noeud-entete { border-left: 3px solid #4c5866; }
.constructeur-noeud-entete[draggable="true"] { cursor: grab; }
.constructeur--apercu-seul .constructeur-espace-visuel { grid-template-columns: 1fr; }
.constructeur--apercu-seul .constructeur-espace-visuel > aside { display: none; }
.constructeur--apercu-seul .constructeur-espace-visuel > .constructeur-design-zone { grid-column: 1; }
@media (max-width: 1200px) and (min-width: 901px) {
  .constructeur-espace-visuel { grid-template-columns: minmax(240px, 280px) minmax(0, 1fr) minmax(240px, 290px); }
}
@media (max-width: 900px) {
  .constructeur-espace-visuel, .constructeur-espace-visuel[class*="-replie"] { grid-template-columns: 1fr; }
  .constructeur-espace-visuel > aside, .constructeur-espace-visuel > .constructeur-design-zone { grid-column: 1; grid-row: auto; }
  .constructeur-espace-visuel > aside { position: static; max-height: none; }
  .constructeur-espace-visuel > aside .constructeur-cote-entete { flex-direction: row !important; }
  .constructeur-espace-visuel > aside .constructeur-cote-titre { writing-mode: horizontal-tb !important; margin: 0 !important; }
}
.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: 0; background: #fff; }
.design-groupe > summary { cursor: pointer; font-weight: 700; display: flex; align-items: center; gap: .5rem; padding: 9px 12px; list-style: none; user-select: none; border-radius: 8px; }
.design-groupe > summary::-webkit-details-marker { display: none; }
.design-groupe > summary::before { content: "▸"; color: #7c3aed; transition: transform .15s; }
.design-groupe[open] > summary::before { transform: rotate(90deg); }
.design-groupe > summary:hover { background: #f5f3ff; }
.design-groupe[open] > summary { border-bottom: 1px solid var(--line, #dde); border-radius: 8px 8px 0 0; background: #faf5ff; }
.design-groupe > .design-grille { padding: 0 10px 10px; }
.design-groupe-compte { margin-left: auto; min-width: 20px; padding: 0 6px; border-radius: 999px; background: #7c3aed; color: #fff; font-size: .72rem; line-height: 20px; text-align: center; }
.design-champ-tete { display: flex; align-items: center; justify-content: space-between; gap: 4px; }
.design-champ-tete .design-reset { flex: none; padding: 0 6px; min-height: 0; line-height: 1.4; font-size: .8rem; }
.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-outils { display: flex; flex-wrap: wrap; gap: 4px; }
.design-outil { min-width: 36px; min-height: 36px; display: inline-flex; align-items: center; justify-content: center; }
.design-outil[aria-pressed="true"] { color: #fff; background: var(--dse-c, #7c3aed); border-color: var(--dse-c, #7c3aed); }
.design-outil:focus-visible { outline: 2px solid currentColor; outline-offset: 2px; }
.design-icone--souligne { text-decoration: underline; }
.design-icone--non-souligne { text-decoration: line-through; }
.design-icone--italique { font-style: italic; }
.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}}
/* Indicateur global « DemainSite Écosystème travaille… » : visible pendant toute navigation ou appel long. */
.dse-travail{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);z-index:1000;display:flex;align-items:center;gap:14px;max-width:min(420px,calc(100vw - 32px));padding:18px 24px;background:#fff;color:var(--text,#16263a);border:1px solid #dce5ee;border-left:4px solid var(--accent);border-radius:10px;box-shadow:0 12px 32px #0f1f3333,0 0 0 100vmax #0f1f331a}
.dse-travail[hidden]{display:none}
.dse-travail .dse-spinner{width:28px;height:28px}
.dse-travail strong{display:block;font-size:1rem}
.dse-travail small{display:block;font-size:.82rem;color:#4a5d73;overflow-wrap:anywhere}
/* Menu du site selectionne : groupes et fonctions de construction imbriquees. */
.cockpit-nav-groupe{display:block;padding:8px;border:1px solid var(--cockpit-nav-group-border);border-radius:14px;box-shadow:inset 0 1px rgba(255,255,255,.05)}
.cockpit-nav-administration{background:var(--cockpit-nav-admin-bg)}
.cockpit-nav-site{background:var(--cockpit-nav-site-bg)}
.cockpit-nav-global{background:var(--cockpit-nav-global-bg)}
.cockpit-nav-groupe + .cockpit-nav-groupe{margin-top:4px}
.cockpit-nav-accordeon{display:flex;align-items:center;justify-content:space-between;gap:8px;min-height:38px;padding:7px 10px;color:#f0f6fc;font-size:.68rem;font-weight:750;letter-spacing:.06em;text-transform:uppercase;list-style:none;cursor:pointer;border-radius:8px}
.cockpit-nav-accordeon::-webkit-details-marker{display:none}
.cockpit-nav-accordeon::marker{content:""}
.cockpit-nav-accordeon:hover{background:rgba(255,255,255,.1)}
.cockpit-nav-accordeon:focus-visible{outline:3px solid #b8d8ff;outline-offset:1px}
.cockpit-nav-chevron{display:grid;place-items:center;width:20px;height:20px;flex:0 0 auto}
.cockpit-nav-chevron::before{content:">";font-size:1.1rem;line-height:1}
.cockpit-nav-groupe[open] .cockpit-nav-chevron::before{content:"v"}
.cockpit-nav-contenu{display:grid;align-content:start;gap:6px;margin-top:6px}
.cockpit-nav-site-attente{margin:8px 10px;color:#d1e4f5;font-size:.8rem}
.cockpit-nav-groupe .nav-link{min-width:0}
.cockpit-nav-groupe .nav-link:hover:not(.active){background:rgba(255,255,255,.12);color:#fff}
.cockpit-nav-groupe .nav-link:focus-visible{outline-color:#b8d8ff;outline-offset:1px}
.cockpit-nav-groupe .nav-link svg{color:currentColor}
.cockpit-nav-site .cockpit-site-selection{padding:0;margin:0 0 4px;border-top:0}
.cockpit-site-statut{display:inline-block;margin-top:6px;padding:1px 8px;border-radius:999px;font-size:.65rem;font-style:normal;background:#ffffff1f;color:#dbe6f3}
.cockpit-site-statut.est-actif{background:#1f9d5533;color:#c6f2d7}
.cockpit-site-selection > a{background:rgba(255,255,255,.08);border-color:rgba(206,226,245,.24)}
.cockpit-nav-construire{display:grid;gap:4px}
.cockpit-nav-enfants{display:grid;gap:2px;margin-left:18px;padding-left:10px;border-left:2px solid #ffffff33}
.cockpit-nav-enfants[hidden]{display:none}
.cockpit-nav-enfants .nav-link{padding-top:6px;padding-bottom:6px;font-size:.85rem}
.nav-link.is-parent-actif{background:#ffffff14;font-weight:600}
.cockpit-usages-site{display:grid;gap:12px}
.cockpit-usages-site h2,.cockpit-usages-apercu h3{margin:0;font-size:1rem}
.cockpit-usages-site form{display:flex;align-items:end;flex-wrap:wrap;gap:12px}
.cockpit-usages-site .cockpit-champ{min-width:min(220px,100%);flex:1}
.cockpit-usages-site select,.cockpit-usages-site input[type=date]{min-height:40px;border:1px solid var(--line);border-radius:8px;padding:8px 10px;background:#fff;color:var(--text);font:inherit}
.cockpit-usages-liste{display:grid;gap:8px;margin:0;padding:0;list-style:none}
.cockpit-usages-liste li{display:flex;justify-content:space-between;gap:12px;padding:10px 12px;background:var(--bg);border-radius:8px}
.cockpit-usages-liste small{color:var(--muted)}
.cockpit-usages-apercu{display:grid;gap:8px;padding:14px;border:1px solid var(--line);border-radius:10px;background:var(--bg)}
.cockpit-usages-apercu dl{display:grid;grid-template-columns:minmax(110px,auto) 1fr;gap:6px 12px;margin:0}
.cockpit-usages-apercu dd{margin:0;font-weight:600}
.cockpit-ecriture-erreur{color:#a61b1b}
.cockpit-menu-reduit .cockpit-site-statut{display:none}
.cockpit-menu-reduit .cockpit-nav-accordeon{padding:5px 2px;font-size:.55rem;letter-spacing:0}
.cockpit-menu-reduit .cockpit-nav-accordeon span:first-child{overflow-wrap:anywhere}
.cockpit-menu-reduit .cockpit-nav-enfants{margin-left:0;padding-left:0;border-left:0}
@media (max-width: 760px){
  .dse-travail{top:auto;bottom:12px;right:12px;left:12px;max-width:none}
  .cockpit-nav-groupe{display:block;padding:6px;border-radius:12px}
  .cockpit-nav-groupe + .cockpit-nav-groupe{margin-top:2px}
  .cockpit-nav-construire{display:grid;gap:4px}
  .cockpit-nav-enfants{display:flex;flex-wrap:wrap;margin-left:0;padding-left:8px}
  .cockpit-usages-site form{align-items:stretch}
  .cockpit-usages-site form .btn{width:100%}
  .cockpit-usages-apercu dl{grid-template-columns:1fr;gap:2px}
  .cockpit-usages-apercu dd{margin-bottom:6px}
}

/* Articles : chemin relatif au domaine principal du site selectionne */
.cockpit-chemin-saisie { display: flex; align-items: stretch; flex-wrap: wrap; gap: 0; }
.cockpit-chemin-domaine { display: inline-flex; align-items: center; padding: 0 .6rem; border: 1px solid var(--border, #d0d5dd); border-right: 0; border-radius: 8px 0 0 8px; background: var(--surface-2, #f2f4f7); color: var(--muted, #475467); font-size: .9rem; white-space: nowrap; }
.cockpit-chemin-saisie input { flex: 1 1 12rem; min-width: 0; }
.cockpit-chemin-domaine + input { border-top-left-radius: 0; border-bottom-left-radius: 0; }
.cockpit-chemin [data-chemin-apercu] { word-break: break-all; font-weight: 600; }
@media (max-width: 480px) {
  .cockpit-chemin-domaine { border-right: 1px solid var(--border, #d0d5dd); border-bottom: 0; border-radius: 8px 8px 0 0; width: 100%; }
  .cockpit-chemin-domaine + input { border-radius: 0 0 8px 8px; }
}
.dse-menus { display: grid; gap: 1rem; }
.dse-menus > header h1 { margin: 0 0 .35rem; }
.dse-menus > header p { margin: 0; color: var(--muted, #5e6878); }
.dse-menus__heading,.dse-menu-list-actions,.dse-menu-entry__row { display:flex; align-items:center; justify-content:space-between; gap:1rem; flex-wrap:wrap; }
.dse-menu-list-actions { justify-content:flex-start; }
.dse-menu-cards { display:grid; gap:1rem; grid-template-columns:repeat(auto-fit,minmax(min(100%,20rem),1fr)); }
.dse-menu-card dl { display:grid; grid-template-columns:auto 1fr; gap:.35rem .8rem; }
.dse-menu-card dt { font-weight:600; }
.dse-menu-card dd { margin:0; }
.dse-menu-form { display:grid; gap:.85rem; }
.dse-menu-form label { display:grid; gap:.35rem; font-weight:600; }
.dse-menu-form input,.dse-menu-form textarea,.dse-menu-form select { width:100%; }
.dse-menu-form .dse-menu-check { display:flex; align-items:center; gap:.55rem; }
.dse-menu-form .dse-menu-check input { width:auto; }
.dse-menu-form [hidden] { display:none !important; }
.dse-menu-tree,.dse-menu-tree ol { list-style:none; padding-inline-start:1.1rem; }
.dse-menu-tree { padding:0; }
.dse-menu-entry { margin:.55rem 0; }
.dse-menu-entry__row { border:1px solid var(--border,#d8dee8); border-radius:.65rem; padding:.75rem; }
.dse-menu-entry__row > div:first-child { display:grid; gap:.2rem; }
.dse-menu-entry__row small { color:var(--muted,#5e6878); }
.dse-menu-actions { display:flex; flex-wrap:wrap; gap:.35rem; }
.dse-menu-preview { border:0; border-radius:.8rem; max-width:min(96vw,60rem); width:100%; }
.dse-menu-preview::backdrop { background:#14203399; }
.dse-menu-preview form { display:grid; gap:1rem; }
.dse-menu-preview header,.dse-menu-preview__sizes { display:flex; align-items:center; justify-content:space-between; gap:.5rem; flex-wrap:wrap; }
.dse-menu-preview__viewport { border:1px solid var(--border,#d8dee8); border-radius:.6rem; min-height:12rem; padding:1rem; overflow:auto; }
.dse-menu-preview__viewport ul { display:flex; align-items:flex-start; gap:1.2rem; list-style:none; margin:0; padding:0; }
.dse-menu-preview__viewport li { position:relative; }
.dse-menu-preview__viewport li ul { display:grid; gap:.5rem; padding:.6rem; }
.dse-menu-preview__viewport a { color:inherit; display:inline-block; padding:.45rem .6rem; }
.dse-menu-preview__viewport[data-size="tablet"] { max-width:48rem; margin-inline:auto; }
.dse-menu-preview__viewport[data-size="mobile"] { max-width:24rem; margin-inline:auto; }
.dse-menu-preview__viewport[data-size="mobile"] > ul { display:grid; gap:.3rem; }
.dse-menu-preview__viewport[data-size="mobile"] li ul { padding-inline-start:1rem; }
@media (max-width: 640px) {
  .dse-menu-entry__row { align-items:flex-start; }
  .dse-menu-actions { width:100%; }
}
.app-footer { margin-top:2rem; padding-top:1rem; border-top:1px solid var(--line, #dbe2ea); text-align:center; }
.app-footer__auteur { color:var(--text, #172033); font-weight:600; }
.constructeur-vue { display:flex; flex-wrap:wrap; align-items:center; gap:8px; margin:0 0 12px; }
.constructeur-vue input[type="search"] { flex:1 1 240px; min-height:38px; padding:0 12px; border:1px solid var(--line, #dbe2ea); border-radius:9px; font:inherit; }
.constructeur-vue select { min-height:38px; padding:0 10px; border:1px solid var(--line, #dbe2ea); border-radius:9px; font:inherit; background:#fff; }
.constructeur-vue__choix { display:flex; gap:4px; margin-inline-start:auto; }
.constructeur-carte[hidden] { display:none !important; }
.constructeur-vue-zone--liste .constructeur-grille { grid-template-columns:1fr; gap:8px; }
.constructeur-vue-zone--liste .constructeur-carte { display:grid; grid-template-columns:minmax(200px, 1.2fr) minmax(160px, 1fr) auto; align-items:center; gap:4px 16px; padding:10px 16px; }
.constructeur-vue-zone--liste .constructeur-carte > header { grid-column:1; justify-content:flex-start; }
.constructeur-vue-zone--liste .constructeur-carte > header h3 { margin:0; font-size:1rem; }
.constructeur-vue-zone--liste .constructeur-carte > p, .constructeur-vue-zone--liste .constructeur-carte > label { grid-column:2; margin:0; font-size:.9rem; }
.constructeur-vue-zone--liste .constructeur-carte > .constructeur-boutons { grid-column:3; grid-row:1 / span 4; margin:0; justify-content:flex-end; }
.constructeur-vue-zone--liste .constructeur-carte > .constructeur-boutons .btn { min-height:34px; padding:0 10px; font-size:.85rem; }
.constructeur-vue-zone--liste .constructeur-utilisations { grid-column:1 / -1; }
@media (max-width: 900px) {
  .constructeur-vue-zone--liste .constructeur-carte { grid-template-columns:1fr; }
  .constructeur-vue-zone--liste .constructeur-carte > * { grid-column:1 !important; grid-row:auto !important; }
  .constructeur-vue-zone--liste .constructeur-carte > .constructeur-boutons { justify-content:flex-start; }
}

/* Constructeur : case « structure de base » des formulaires de création */
.constructeur-structure-base { display: flex; align-items: center; gap: .4rem; flex-wrap: wrap; font-weight: normal; }
.constructeur-structure-base input { width: auto; margin: 0; }

/* Constructeur : menu d'ajout rapide (ligne, colonne, module) */
.constructeur-ajout-rapide { min-width: 0; max-width: 100%; box-sizing: border-box; }
/* Le dialogue s'adapte au contenu : jamais de barre de defilement horizontale. */
.constructeur-dialogue { width: min(560px, calc(100vw - 32px)); max-width: calc(100vw - 32px); overflow-x: hidden; box-sizing: border-box; }
.constructeur-dialogue:has(.constructeur-colonnes), .constructeur-dialogue:has(.constructeur-assistant) { width: min(680px, calc(100vw - 32px)); }
.constructeur-dialogue * { box-sizing: border-box; }
.constructeur-dialogue .c-aide-bloc { overflow-wrap: anywhere; }
.constructeur-ajout-rapide > p.muted { margin: .8rem 0 .3rem; font-weight: 600; text-transform: uppercase; font-size: .75rem; }
.constructeur-assistant { width: min(36rem, 92vw); max-width: 100%; box-sizing: border-box; overflow-x: hidden; }
.constructeur-assistant-etapes { display: flex; gap: .4rem; list-style: none; padding: 0; margin: .4rem 0 .8rem; font-size: .8rem; }
.constructeur-assistant-etapes li { flex: 1; padding: .3rem .5rem; border-bottom: 3px solid #d7dde5; color: #7a8594; }
.constructeur-assistant-etapes li.fait { border-color: #8fb3e0; color: #3f5a7a; }
.constructeur-assistant-etapes li.actif { border-color: #1f6feb; color: #1f2a37; font-weight: 600; }
.constructeur-colonnes { min-width: 0; }
.constructeur-corbeille { color: #b91c1c; border-color: #fca5a5; background: #fef2f2; }
.constructeur-corbeille:hover { background: #dc2626; color: #fff; border-color: #dc2626; }
.constructeur-suppression { max-width: min(480px, 92vw); }
.constructeur-suppression-choix { border: 1px solid #e5e7eb; border-radius: 8px; padding: .5rem .75rem; display: grid; gap: .5rem; }
.constructeur-suppression-choix label, .constructeur-suppression-ok { display: block; line-height: 1.4; }
.constructeur-suppression-ok { margin-top: .75rem; color: #b91c1c; font-weight: 600; }
.constructeur-desactives { margin: 0 0 .5rem; padding: .4rem .75rem; border: 1px dashed #9ca3af; border-radius: 8px; background: repeating-linear-gradient(45deg, #f9fafb, #f9fafb 8px, #f3f4f6 8px, #f3f4f6 16px); font-size: .9rem; }
.constructeur-desactives summary { cursor: pointer; font-weight: 600; color: #374151; }
.constructeur-desactives ul { list-style: none; margin: .5rem 0 0; padding: 0; display: grid; gap: .35rem; }
.constructeur-desactives li { display: flex; align-items: center; gap: .4rem; flex-wrap: wrap; }
.constructeur-suppression-actions { display: flex; justify-content: flex-end; gap: .5rem; margin-top: 1rem; }
.constructeur-btn-danger { background: #dc2626; color: #fff; border-color: #dc2626; }
.constructeur-btn-danger:hover { background: #b91c1c; }
.constructeur-colonnes-modeles { display: flex; flex-wrap: wrap; gap: .4rem; margin-bottom: .8rem; }
.constructeur-colonnes-apercu { display: flex; gap: 6px; margin: .4rem 0 .9rem; }
.constructeur-colonnes-apercu span { min-width: 0; overflow: hidden; padding: .55rem .3rem; border: 2px dashed #16a34a; background: #f0fdf4; color: #166534; border-radius: 6px; text-align: center; font-weight: 700; }
.constructeur-colonnes-apercu small { display: block; font-weight: 400; }
.constructeur-colonnes-champs { display: grid; grid-template-columns: repeat(auto-fill, minmax(110px, 1fr)); gap: .6rem; }
.constructeur-colonnes-champs input { min-width: 0; }
.constructeur-colonnes-champs span { display: flex; align-items: center; gap: .3rem; }
.constructeur-colonnes-champs input { width: 100%; }
.constructeur-colonnes-total { margin: .8rem 0 .3rem; color: #166534; }
.constructeur-colonnes-total.erreur { color: #b91c1c; }
.constructeur-assistant-grille { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .6rem; margin: .5rem 0 1rem; }
.constructeur-assistant-carte { display: flex; flex-direction: column; align-items: center; gap: .25rem; padding: .8rem .5rem; border: 1px solid #d7dde5; border-radius: .6rem; background: #fff; cursor: pointer; text-align: center; font: inherit; }
.constructeur-assistant-carte:hover, .constructeur-assistant-carte:focus-visible { border-color: #1f6feb; background: #f2f7ff; outline: none; }
.constructeur-assistant-icone { font-size: 1.6rem; line-height: 1; }
.constructeur-assistant-carte small { color: #6b7685; font-size: .75rem; }
.constructeur-assistant label { display: block; margin: .6rem 0; }
.constructeur-assistant label input { display: block; width: 100%; margin-top: .3rem; }
.constructeur-assistant-carte:disabled { opacity: .5; cursor: not-allowed; background: #f6f7f9; }
.constructeur-assistant-carte:disabled:hover { border-color: #d7dde5; background: #f6f7f9; }

/* Menu « Vue » de l'aperçu : Composition / Structure seule / Rendu visiteur */
.constructeur-vue-menu { position: relative; }
.constructeur-vue-menu > summary { list-style: none; cursor: pointer; white-space: nowrap; border: 1px solid #93c5fd; background: #eff6ff; color: #1e3a8a; font-weight: 600; }
.constructeur-vue-menu > summary::-webkit-details-marker { display: none; }
.constructeur-vue-menu[open] > summary { background: #dbeafe; }
.constructeur-vue-choix { position: absolute; top: calc(100% + 6px); right: 0; z-index: 40; display: grid; gap: 4px; width: 320px; padding: 6px; background: #fff; border: 1px solid #cbd5e1; border-radius: 10px; box-shadow: 0 10px 30px rgba(15, 23, 42, .18); }
.constructeur-vue-choix button { display: flex; gap: 10px; align-items: flex-start; width: 100%; padding: 8px 10px; text-align: left; border: 1px solid transparent; border-radius: 8px; background: none; cursor: pointer; font: inherit; color: #0f172a; }
.constructeur-vue-choix button > span:first-child { font-size: 1.2rem; line-height: 1.4; }
.constructeur-vue-choix button strong { display: block; font-size: .9rem; }
.constructeur-vue-choix button small { display: block; color: #64748b; font-size: .78rem; line-height: 1.3; }
.constructeur-vue-choix button:hover { background: #f1f5f9; }
.constructeur-vue-choix button.actif { background: #eff6ff; border-color: #93c5fd; }

/* Catalogue de modules : cartes par categorie (donnees SharePoint OBJ-MODULE-CATEGORIE) */
.constructeur-dialogue:has(.c-modules) { width: min(880px, 94vw); max-height: 88vh; }
.c-modules { display: grid; gap: 10px; }
.c-modules-entete { display: flex; justify-content: space-between; align-items: center; gap: 8px; }
.c-modules-entete h3 { margin: 0; font-size: 1.05rem; }
.c-modules-recherche { padding: 8px 10px; font: inherit; width: 100%; border: 1px solid var(--line, #ccd); border-radius: 8px; }
.c-modules-filtres { display: flex; flex-wrap: wrap; gap: 6px; }
.c-modules-filtre { border: 1px solid #ddd6fe; background: #f5f3ff; color: #4c1d95; border-radius: 999px; padding: 4px 10px; font: inherit; font-size: .85rem; cursor: pointer; }
.c-modules-filtre.actif { background: #7c3aed; border-color: #7c3aed; color: #fff; }
.c-modules-liste { overflow: auto; max-height: 60vh; display: grid; gap: 14px; padding-right: 4px; }
.c-modules-groupe h4 { margin: 0 0 6px; font-size: .9rem; color: #4c1d95; border-bottom: 1px solid #ede9fe; padding-bottom: 3px; }
.c-modules-grille { display: grid; grid-template-columns: repeat(auto-fill, minmax(118px, 1fr)); gap: 8px; }
.c-module-carte { display: grid; justify-items: center; gap: 6px; padding: 12px 6px; border: 1px solid var(--line, #dde); border-radius: 10px; background: #fff; cursor: pointer; font: inherit; text-align: center; }
.c-module-carte:hover, .c-module-carte:focus-visible { border-color: #7c3aed; background: #faf5ff; box-shadow: 0 2px 8px rgba(124, 58, 237, .18); }
.c-module-icone { font-size: 1.9rem; line-height: 1; }
.c-module-nom { font-size: .85rem; font-weight: 600; color: #1f2937; }
.c-modules [hidden] { display: none !important; }

/* Aide guidée des modules (textes SharePoint) et Pasc ARA IA */
.c-aide{display:block;font-weight:400;font-style:italic;font-size:.82rem;color:#42658a;margin:.15rem 0 .3rem}
.c-champ{display:grid;gap:6px;margin-bottom:14px}
.constructeur-dialogue form label.c-visibilite{display:flex;align-items:center;gap:8px;font-size:.9rem}
.constructeur-dialogue .c-visibilite input{width:auto}
.c-image-selection{margin:0}
.c-image-selection img{display:block;max-width:100%;max-height:180px;object-fit:contain;border-radius:6px}
.c-image-resultats{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:8px;margin-top:10px}
.c-image-option{display:grid;gap:6px;padding:8px;background:#fff;color:#26374b;border:1px solid #a6b3c3;border-radius:6px;cursor:pointer;overflow-wrap:anywhere}
.c-image-option[aria-pressed=true]{border:2px solid #2f6fdd}
.c-image-option img{width:100%;height:90px;object-fit:contain}
.design-bordure{padding:12px}
.design-panneau [hidden]{display:none!important}
.design-condition{min-width:0}
.design-espace-dessin{margin:12px;padding:12px;background:#fff3d6;border:2px dashed #a87918;text-align:center;font-size:.85rem;overflow-wrap:anywhere}
.design-espace-dessin>div{margin-top:8px;border:2px solid #467397;background:#e7f3ff;padding:8px}
.design-espace-dessin>div>div{padding:12px;background:#e4f5ec;margin-top:6px}
.design-espace-dessin strong{display:block;background:white;border:1px solid #82a794;margin-top:8px;padding:10px}
.design-groupe>h4,.design-groupe>p.c-aide{margin:10px 12px}
.design-bordure h4{margin:12px 0 8px}
.design-bordure h5{margin:8px 0}
.design-cotes{display:grid;grid-template-columns:1fr 1.4fr 1fr;grid-template-rows:repeat(3,auto);gap:6px;margin:10px 0}
.design-cotes-haut{grid-area:1/2}
.design-cotes-gauche{grid-area:2/1}
.design-cotes-tous{grid-area:2/2;border:2px solid #8796a8!important;border-radius:0!important;min-height:56px}
.design-cotes-droite{grid-area:2/3}
.design-cotes-bas{grid-area:3/2}
.design-cotes [aria-pressed=true]{background:#e7efff!important;color:#184d9d!important;border-color:#2f6fdd!important;box-shadow:inset 0 0 0 1px #2f6fdd}
.design-coins-lies{display:flex;gap:8px;align-items:center}
.design-coins-lies input{width:auto}
.design-coins{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:16px;border:2px dashed #8796a8;border-radius:18px;padding:10px;margin-top:10px}
.design-coin--hautgauche{grid-area:1/1}
.design-coin--hautdroite{grid-area:1/2}
.design-coin--basgauche{grid-area:2/1}
.design-coin--basdroite{grid-area:2/2}
.design-bordure input[type=range]{width:100%;min-width:0;accent-color:#2f6fdd}
.design-bordure .design-grille{padding:0}
.design-coin .design-champ-tete{flex-wrap:wrap}
.c-aide-bloc{background:#eef5ff;border-left:3px solid #2f6fdd;border-radius:6px;padding:.5rem .7rem;margin:.4rem 0 .8rem;font-size:.9rem}
.c-ia{margin:.1rem 0 .3rem}
.c-ia-reponse{display:block;background:#f6f0ff;border-radius:6px;padding:.35rem .6rem;margin-bottom:.3rem;font-size:.82rem}

/* Bulle Pasc ARA IA au survol des icones d'action (textes SharePoint OBJ-AIDE-ACTION) */
.c-bulle-ia{position:fixed;z-index:10000;max-width:320px;padding:.55rem .75rem;background:#1e1b4b;color:#f5f3ff;border-radius:10px;box-shadow:0 10px 30px rgba(15,23,42,.3);font-size:.82rem;line-height:1.4;pointer-events:none}
.c-bulle-ia strong{display:block;color:#c4b5fd;margin-bottom:.2rem}
.c-bulle-ia p{margin:0}
.c-bulle-ia[hidden]{display:none}
.constructeur-colonnes-btn{font-weight:700;color:#4c1d95;border-color:#c4b5fd}
.design-statut{display:inline-flex;align-items:center;gap:.4rem;margin:.35rem 0 .2rem;flex-wrap:wrap}
.constructeur-avis{position:fixed;left:50%;bottom:24px;z-index:1000;transform:translateX(-50%);max-width:min(560px,92vw);padding:10px 18px;border-radius:10px;background:#065f46;color:#fff;font-weight:600;box-shadow:0 6px 20px #0004;animation:constructeur-avis .2s ease-out}
@keyframes constructeur-avis{from{opacity:0;transform:translate(-50%,8px)}}

/* Constructeur : selection groupee et visibilite par appareil */
.constructeur-coche { margin: 0 .25rem 0 0; cursor: pointer; flex: none; }
.constructeur-appareils { display: inline-flex; gap: 2px; margin-left: .25rem; }
.constructeur-appareil { border: 1px solid var(--bordure, #d0d7de); background: #fff; border-radius: 4px; font-size: .75rem; line-height: 1; padding: 2px 4px; cursor: pointer; }
span.constructeur-appareil { cursor: default; }
.constructeur-appareil--masque { opacity: .45; text-decoration: line-through; background: #fdecea; border-color: #f5b5ad; }
.constructeur-appareil:hover { border-color: #0b5cad; }
.constructeur-lot { position: sticky; top: 0; z-index: 3; display: flex; flex-wrap: wrap; align-items: center; gap: .35rem; padding: .5rem; margin: .25rem 0 .5rem; background: #eef5ff; border: 1px solid #b6d4fe; border-radius: 8px; }
.constructeur-lot[hidden] { display: none; }
.constructeur-lot-appareils { display: flex; flex-wrap: wrap; gap: .35rem; width: 100%; }
.constructeur-lot-appareil { display: inline-flex; align-items: center; gap: 2px; white-space: nowrap; }
.constructeur-guide-ligne { display: flex; align-items: flex-start; gap: .5rem; }
.constructeur-guide-ligne p { margin: 0; flex: 1; }
.constructeur-guide { max-width: min(720px, 92vw); }
.constructeur-guide dl { display: grid; gap: .5rem; margin: .75rem 0; max-height: 60vh; overflow-y: auto; }
.constructeur-guide dl > div { padding: .5rem .75rem; border: 1px solid #e3e8ef; border-radius: 8px; }
.constructeur-guide dt { font-weight: 600; }
.constructeur-guide dd { margin: .25rem 0 0; }
.constructeur-guide-icone { display: inline-block; min-width: 1.6em; text-align: center; }
/* Vue par appareil synchronisee : structure, apercu et panneau */
.constructeur-appareils--inactif { opacity: .45; filter: grayscale(1); }
.constructeur-appareil--courant { outline: 2px solid #0b5cad; outline-offset: 1px; }
.constructeur-vue-etat { display: inline-block; margin-left: .3rem; padding: 1px 8px; border-radius: 999px; font-size: .75rem; font-weight: 600; background: #fdecea; color: #a8321f; }
.constructeur-vue-etat--partiel { background: #fff4e0; color: #8a5300; }
.constructeur-noeud--hors-vue > .constructeur-noeud-entete { background: repeating-linear-gradient(135deg, #fafafa 0 8px, #f1f1f1 8px 16px); }
.constructeur-noeud--hors-vue > .constructeur-noeud-entete strong { color: #6b7280; text-decoration: line-through; text-decoration-color: #c0392b; }
.constructeur-noeud--filtre { display: none !important; }
.constructeur-filtre-vue { display: flex; flex-wrap: wrap; align-items: center; gap: .4rem; margin: .4rem 0; padding: .4rem .6rem; border: 1px solid #c7d7fe; border-radius: 10px; background: #f5f8ff; font-size: .85rem; }
.constructeur-filtre-vue select { font-size: .85rem; }
.design-visibilite { margin: .5rem 0; padding: .6rem; border: 1px solid #c7d7fe; border-radius: 10px; background: #f5f8ff; }
.design-visibilite p { margin: .3rem 0 .5rem; font-size: .85rem; }
.design-visibilite-appareils { display: grid; grid-template-columns: repeat(3, 1fr); gap: .35rem; margin-bottom: .4rem; }
.design-visibilite-app { display: flex; flex-direction: column; align-items: center; gap: 2px; padding: .35rem .2rem; border: 2px solid #1e8e3e; border-radius: 8px; background: #e9f7ee; font: inherit; font-size: .8rem; cursor: pointer; }
span.design-visibilite-app { cursor: default; }
.design-visibilite-app small { font-weight: 700; color: #1e6b35; }
.design-visibilite-app--masque { border-color: #c0392b; background: #fdecea; }
.design-visibilite-app--masque small { color: #a8321f; }
button.design-visibilite-app:hover { box-shadow: 0 0 0 2px #0b5cad55; }
