/* P32A : tokens institutionnels, composants, public, application, adaptations. */

/* P32B : composition du poste de pilotage, à partir des composants P32A. */
.pilotage-entete { display:flex; justify-content:space-between; align-items:center; gap:1.5rem; flex-wrap:wrap; margin-bottom:1.5rem; }
.pilotage-entete h1 { max-width:25ch; }
.pilotage-entete p { margin-bottom:.4rem; }
.pilotage-actions { display:flex; gap:.65rem; align-items:center; flex-wrap:wrap; }
.pilotage-actions form { margin:0; }
.pilotage-filtres { margin-bottom:1.5rem; }
.pilotage-filtres input,.pilotage-filtres select { width:100%; }
.pilotage-page summary { cursor:pointer; font-weight:600; padding:.4rem 0; }
.pilotage-kpis { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:1rem; margin-bottom:1.5rem; }
.pilotage-kpis .kpi-card:nth-child(-n+4) { background:#0B4F71; border:1px solid #0B4F71; }
.pilotage-kpis .kpi-card:nth-child(-n+4) span,.pilotage-kpis .kpi-card:nth-child(-n+4) strong { color:#fff; }
.pilotage-kpis .kpi-card:nth-child(-n+4) small { color:#EAF7FE; }
.pilotage-kpis strong { font-size:clamp(1.1rem,1.45vw,1.65rem); }
.pilotage-kpis small { margin-top:.5rem; font-size:.76rem; }
.pilotage-alertes { display:grid; grid-template-columns:1fr 2fr; gap:1.5rem; border:1px solid #b6cdd9; border-radius:.75rem; padding:1.5rem; background:#EAF7FE; margin-bottom:1.5rem; }
.pilotage-alertes h2 { margin-top:0; }
.pilotage-alertes-liste { display:grid; gap:.7rem; }
.pilotage-alerte { display:block; padding:1rem; border:1px solid #d4e2e9; border-radius:.5rem; background:white; text-decoration:none; }
.pilotage-alerte span { display:block; font-size:.8rem; color:#546777; margin-top:.4rem; }
.pilotage-graphiques { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:1.2rem; }
.pilotage-graphiques h2 { font-size:1.15rem; }
.pilotage-barres { max-height:24rem; overflow-y:auto; }
.pilotage-barre { margin-bottom:1rem; }
.pilotage-barre > strong { display:block; margin-bottom:.5rem; font-size:.87rem; }
.pilotage-barre span { display:flex; flex-wrap:wrap; justify-content:space-between; gap:.25rem; font-size:.76rem; }
.pilotage-barre svg { display:block; width:100%; height:10px; margin:.35rem 0 .65rem; }
.pilotage-page section[id] { scroll-margin-top:1rem; }
@media(max-width:1100px) { .pilotage-kpis { grid-template-columns:repeat(2,minmax(0,1fr)); } .pilotage-alertes { grid-template-columns:1fr; } }
@media(max-width:800px) { .pilotage-graphiques { grid-template-columns:1fr; } }
@media(max-width:450px) { .pilotage-kpis { gap:.6rem; } .pilotage-kpis .kpi-card { padding:.9rem; } .pilotage-kpis strong { font-size:1.1rem; } .pilotage-alertes { padding:1rem; } }

:root {
    --alkhar-bleu: #45B8F5;
    --alkhar-bleu-fonce: #0B4F71;
    --alkhar-fond: #EAF7FE;
    --alkhar-blanc: #FFFFFF;
    --alkhar-texte: #1D2D35;
    --alkhar-bord: #d4e2e9;
    --alkhar-nuit: #0B4F71;
    --alkhar-bleu-vif: #086991;
    --alkhar-bordure: #d4e2e9;
    --alkhar-rayon: .75rem;
    --alkhar-ombre: 0 8px 28px #0b4f710b;
    --bs-primary: #0B4F71;
}
* { box-sizing: border-box; }
body { margin: 0; font-family: system-ui, -apple-system, "Segoe UI", sans-serif; color: var(--alkhar-texte); background: #f4f8fb; line-height: 1.6; }
a { color: var(--alkhar-bleu-fonce); text-underline-offset: .2em; }
img, video, audio { max-width: 100%; }
h1, h2, h3, h4 { color: var(--alkhar-bleu-fonce); line-height: 1.25; letter-spacing: -.025em; }
h1 { font-size: clamp(1.65rem, 2.6vw, 2.5rem); margin: 0 0 1rem; }
h2 { font-size: clamp(1.2rem, 1.8vw, 1.55rem); margin: 1.25rem 0 .8rem; }
h3 { font-size: 1.15rem; }
p { margin-top: 0; }
:focus-visible { outline: 3px solid #086991; outline-offset: 4px; }
.lien-evitement { position: fixed; top: -10rem; left: 1rem; z-index: 100; background: #fff; color: #0B4F71; padding: .8rem 1rem; border-radius: .5rem; }
.lien-evitement:focus { top: .6rem; }
.texte-muted, .text-muted, .form-text, .aide { color: #546777; }
.sur-titre, .surtitre, .eyebrow, .kicker { font-size: .75rem; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; color: #0B4F71; }
.site-main { min-width: 0; min-height: 65vh; }
.conteneur, .site-main > .container, .site-main > .container-fluid,
.site-main > section:not(.hero-public):not(.page-auth), .panneau, .module-page { width: min(1180px, calc(100% - 2.5rem)); margin: 2rem auto; }
.panneau, .carte, .carte-public, .carte-cycle, .carte-actualite, .card, .kpi-card, .fiche, .bloc {
    background: #fff; border: 1px solid var(--alkhar-bord); border-radius: var(--alkhar-rayon); box-shadow: var(--alkhar-ombre); min-width: 0;
}
.panneau, .carte, .carte-public, .carte-cycle, .fiche, .bloc { padding: 1.25rem; }
.card-body { padding: 1.25rem; min-width: 0; }
.card-header { padding: .85rem 1.25rem; background: #f3f8fb; border-bottom: 1px solid var(--alkhar-bord); font-weight: 600; }
.card h2:first-child, .carte h2:first-child { margin-top: 0; }
.grille, .grille-cartes, .grille-public, .dashboard-grid, .liste-cartes { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 15rem), 1fr)); gap: 1rem; }
.deux-colonnes { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 25rem), 1fr)); gap: 1.25rem; }
.row > *, .grille > *, .grille-cartes > * { min-width: 0; }
.kpi-card { display: block; padding: 1.25rem; min-height: 116px; text-decoration: none; color: var(--alkhar-texte); border-top: 3px solid var(--alkhar-bleu); }
.kpi-card span, .kpi-card h2 { display: block; font-size: .82rem; font-weight: 600; color: #546777; margin: 0; }
.kpi-card strong { display: block; margin-top: .5rem; font-size: clamp(1.25rem, 2vw, 1.7rem); font-variant-numeric: tabular-nums; color: #0B4F71; overflow-wrap: anywhere; }
.kpi-card small { display: block; color: #546777; }
a.kpi-card:hover, .lien-module:hover { border-color: #0B4F71; background: #f5fbff; }
.lien-module { display: flex; justify-content: space-between; align-items: center; gap: .8rem; font-weight: 600; min-height: 4.5rem; text-decoration: none; }
.lien-module::after { content: "→"; }
.bouton, .btn { display: inline-flex; align-items: center; justify-content: center; gap: .45rem; min-height: 44px; padding: .6rem .9rem; border: 1px solid var(--alkhar-bord); border-radius: .5rem; font: inherit; font-weight: 600; text-decoration: none; cursor: pointer; background: #fff; color: #0B4F71; }
.bouton-principal, .bouton-primaire, .btn-primary { color: #fff; background: #0B4F71; border-color: #0B4F71; }
.bouton-principal:hover, .bouton-primaire:hover, .btn-primary:hover { color: #fff; background: #073e59; }
.bouton-secondaire, .btn-outline-primary, .btn-outline-secondary { background: #fff; color: #0B4F71; border-color: #b6cdd9; }
.bouton-secondaire:hover, .btn-outline-primary:hover, .btn-outline-secondary:hover { background: #EAF7FE; color: #0B4F71; }
.btn-danger, .bouton-danger { background: #a52d28; color: white; border-color: #a52d28; }
.btn-outline-danger { color: #a52d28; border-color: #a52d28; }
.btn-outline-light { background: transparent; border-color: #d6eaf4; color: #fff; }
.btn-outline-light:hover { background: #fff; color: #0B4F71; }
.bouton-large { width: 100%; }
.btn-sm { font-size: .85rem; padding: .45rem .65rem; }
button:disabled, .btn:disabled, [aria-disabled="true"] { opacity: .6; cursor: not-allowed; }
.actions, .form-actions, .barre-actions { display: flex; flex-wrap: wrap; gap: .65rem; }
.badge, .badge-statut { display: inline-block; padding: .3rem .6rem; border-radius: .35rem; font-size: .78rem; font-weight: 650; line-height: 1.35; background: #e5edf3; color: #344b59; }
.text-bg-success, .badge-succes { background: #e1f2e9; color: #155c3d; }
.text-bg-warning, .badge-attention { background: #fff0d3; color: #764500; }
.text-bg-danger, .badge-erreur { background: #fde9e7; color: #922820; }
.text-bg-secondary { background: #e5edf3; color: #344b59; }
.alert, .alerte, .alerte-info, .alerte-auth { padding: 1rem 1.25rem; border: 1px solid #aacddd; border-left: 4px solid #0B4F71; border-radius: .6rem; background: #EAF7FE; color: #0B4F71; margin: 1rem 0; overflow-wrap: anywhere; }
.alert-danger, .alerte-auth, .etat-refus { border-color: #d89d99; background: #fff1ef; color: #922820; }
.alert-warning { background: #fff8e8; color: #764500; border-color: #dbbf89; }
.alert-success { background: #edf8f1; color: #155c3d; border-color: #9bc5ac; }
.etat-vide, .empty-state, .etat-chargement, .etat-erreur, .etat-refus { padding: 1.5rem; border: 1px dashed #a9c2cf; border-radius: .75rem; }
label, .form-label { font-weight: 600; margin-bottom: .4rem; }
.formulaire-etroit, .formulaire-auth { display: grid; gap: 1rem; max-width: 32rem; }
.formulaire-etroit label, .formulaire-auth label { display: grid; gap: .4rem; }
input:not([type=hidden]):not([type=checkbox]):not([type=radio]):not([type=range]), select, textarea, .form-control, .form-select {
    max-width: 100%; min-height: 44px; padding: .65rem .8rem; font: inherit; color: var(--alkhar-texte); background-color: white; border: 1px solid #a9c2cf; border-radius: .5rem;
}
.formulaire-auth input, .formulaire-etroit input { width: 100%; }
input[type=checkbox], input[type=radio] { accent-color: #0B4F71; }
input[type=range] { accent-color: #0B4F71; width: 100%; }
textarea { min-height: 7rem; resize: vertical; }
fieldset { min-width: 0; padding: 1.25rem; border: 1px solid var(--alkhar-bord); border-radius: .75rem; }
legend { float: none; width: auto; font-size: 1rem; padding: 0 .35rem; font-weight: 600; }
.filtres, .filters, .grille-formulaire { display: grid; grid-template-columns: repeat(auto-fit,minmax(min(100%,12rem),1fr)); gap: .8rem; align-items: end; }
.table-responsive, .table-container, .table-wrapper { max-width: 100%; overflow-x: auto; border: 1px solid var(--alkhar-bord); border-radius: .65rem; background: #fff; }
table, .table, .tableau { width: 100%; border-collapse: collapse; color: var(--alkhar-texte); background: white; font-size: .9rem; margin: 0; }
th, td, .table th, .table td { padding: .85rem; border-bottom: 1px solid #e1e9ef; text-align: left; vertical-align: middle; }
thead th, .table thead th { background: #edf5fa; color: #0B4F71; font-weight: 650; white-space: nowrap; }
tbody tr:hover td { background: #f7fbfd; }
td { overflow-wrap: anywhere; }
.pagination { display: flex; flex-wrap: wrap; gap: .4rem; padding: 0; list-style: none; }
.pagination a, .pagination span { display: inline-grid; place-items: center; min-width: 44px; min-height: 44px; padding: .4rem; border: 1px solid var(--alkhar-bord); border-radius: .4rem; text-decoration: none; }
.pagination [aria-current=page] { background: #0B4F71; color: white; }
.permissions-compte summary { cursor: pointer; font-weight: 600; }
.permissions-compte ul { overflow-wrap: anywhere; }

/* Public et authentification. */
.barre { display: flex; align-items: center; justify-content: space-between; gap: 1rem; padding: 1rem max(1.25rem,calc((100% - 1180px)/2)); background: white; border-bottom: 1px solid var(--alkhar-bord); }
.marque { display: flex; align-items: center; gap: .75rem; text-decoration: none; }
.marque strong { display: block; font-size: 1.1rem; }
.marque-typographique { display: inline-flex; flex-direction: column; min-width: 0; color: #0B4F71; line-height: 1.1; letter-spacing: .055em; }
.marque-typographique strong { font-size: 1.25rem; font-weight: 850; }
.auth-icone { display: inline-grid; place-items: center; min-width: 5.8rem; height: 3rem; padding: .45rem; flex-shrink: 0; border-radius: .75rem; color: #fff; background: #0B4F71; font-size: .8rem; font-weight: 800; letter-spacing: .06em; }
.devise { display: block; font-size: .65rem; font-weight: 650; }
.navigation-principale { display: flex; gap: .65rem; flex-wrap: wrap; }
.site-footer, .app-footer { padding: 1.5rem; font-size: .8rem; color: #546777; }
.site-footer { display: flex; justify-content: space-between; flex-wrap: wrap; gap: 1rem; border-top: 1px solid var(--alkhar-bord); }
.hero-public { color: white; background: linear-gradient(115deg, #07344d, #0B4F71); padding: 4rem max(1.25rem,calc((100% - 1180px)/2)); }
.hero-public h1 { color: white; max-width: 900px; font-size: clamp(2rem,4vw,3.5rem); }
.hero-public .lead { max-width: 65ch; }
.devise-hero { letter-spacing: .04em; font-weight: 600; }
.carte-public > span { color: #0B4F71; text-transform: uppercase; font-size: .75rem; font-weight: 700; }
.carte-cycle { display: flex; flex-direction: column; gap: .3rem; }
.accueil-hero { display:grid; grid-template-columns:minmax(0,1.5fr) minmax(15rem,.75fr); gap:2rem; align-items:center; }
.accueil-hero-sur-titre { color:#d9edf8; }
.accueil-devise { font-weight:750; letter-spacing:.06em; }
.accueil-hero-parcours { padding:1.25rem; border:1px solid #ffffff44; border-radius:.75rem; background:#ffffff12; }
.accueil-hero-parcours .eyebrow { color:#d9edf8; }
.accueil-hero-parcours ul { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:.55rem; margin:0; padding:0; list-style:none; }
.accueil-hero-parcours li { padding:.45rem .6rem; border-radius:.35rem; background:#ffffff17; }
.accueil-section { width:min(1180px,calc(100% - 2.5rem)); margin:3.5rem auto; }
.accueil-section h2 { margin-top:.2rem; }
.accueil-introduction { color:#546777; max-width:65ch; }
.accueil-cycles,.accueil-actualites { display:grid; grid-template-columns:repeat(auto-fit,minmax(min(100%,15rem),1fr)); gap:1rem; }
.accueil-cycles .carte-cycle { min-height:9rem; padding:1.25rem; }
.accueil-cycles h3,.accueil-actualites h3 { margin:.2rem 0 .6rem; }
.accueil-cycles p,.accueil-actualites p { color:#546777; }
.carte-actualite { display:flex; flex-direction:column; padding:1.25rem; }
.carte-actualite > a:last-child { margin-top:auto; font-weight:650; }
.accueil-approche { padding:2rem; border-radius:1rem; background:#eaf7fe; }
.accueil-entete-avec-action { display:flex; justify-content:space-between; align-items:end; gap:1rem; margin-bottom:1rem; }
.site-footer-institutionnel > div { display:grid; gap:.2rem; }
.site-footer-institutionnel strong { color:#0B4F71; }
.site-footer-institutionnel nav { display:flex; flex-wrap:wrap; gap:1rem; }
.carte-cycle span { color: #546777; font-size: .85rem; }
.galerie-public, .medias-article { display: grid; gap: 1rem; grid-template-columns: repeat(auto-fit,minmax(min(100%,15rem),1fr)); }
.galerie-public img, .carte-actualite img { width: 100%; height: 190px; object-fit: cover; }
.carte-actualite > img, .carte-actualite > video { display:block; width:100%; aspect-ratio:16/9; object-fit:cover; background:#0b2635; border-radius:var(--alkhar-rayon) var(--alkhar-rayon) 0 0; }
.actualite-meta { color:#546777; font-size:.88rem; }
.medias-article img, .medias-article video { width: 100%; max-height: 520px; object-fit: contain; }
.medias-article figure { margin:0; min-width:0; }
.medias-article figcaption { margin-top:.5rem; color:#546777; font-size:.9rem; }
.medias-article video { aspect-ratio:16/9; background:#0b2635; }
.visuellement-masque { position:absolute; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip:rect(0,0,0,0); white-space:nowrap; border:0; }
.contenu-article { line-height: 1.8; }
.page-auth { width: min(1120px,calc(100% - 2.5rem)); margin: 3rem auto; display: grid; grid-template-columns: minmax(0,1fr) minmax(0,440px); gap: 2rem; align-items: center; }
.page-auth-simple { grid-template-columns: minmax(0,480px); justify-content: center; }
.auth-illustration { padding: 3rem; background: #0B4F71; color: white; border-radius: 1rem; }
.auth-illustration h1 { color: white; margin: 2rem 0 1rem; font-size: clamp(2rem,3vw,2.8rem); }
.auth-illustration p { color: #e0eff7; }
.auth-points { display: flex; flex-wrap: wrap; gap: .5rem; margin-top: 2rem; }
.auth-points span, .pastille { padding: .35rem .6rem; border-radius: .4rem; font-size: .75rem; background: #EAF7FE; color: #0B4F71; }
.carte-auth { padding: 2rem; border: 1px solid var(--alkhar-bord); border-radius: 1rem; background: white; box-shadow: var(--alkhar-ombre); }
.auth-entete { display: flex; align-items: center; gap: .8rem; margin-bottom: 1rem; }
.auth-entete h1 { font-size: 2rem; margin-bottom: 0; }
.auth-aide, .auth-actions { color: #546777; font-size: .95rem; }
.auth-actions { display: grid; gap: .65rem; margin-top: 1.25rem; }
.hero { padding: 3rem 0; }

/* Application privée : rail visible dès la tablette, menu natif au téléphone. */
.app-shell { display: grid; grid-template-columns: 246px minmax(0,1fr); min-height: 100vh; }
.app-menu { background: #0B4F71; color: white; min-width: 0; }
.app-menu-bouton { display: none; padding: .9rem 1.25rem; cursor: pointer; font-weight: 600; }
.app-menu > .app-sidebar { display: flex; flex-direction: column; gap: 1.5rem; padding: 1.25rem .9rem; position: sticky; top: 0; height: 100vh; overflow-y: auto; }
.app-sidebar-marque { display: flex; gap: .75rem; align-items: center; padding: .6rem; text-decoration: none; color: white; }
.app-sidebar-marque .marque-typographique { color: #fff; }
.app-sidebar-marque strong, .app-sidebar-marque small { display: block; }
.app-sidebar-marque small { font-size: .75rem; color: #d9edf8; }
.app-sidebar-nav { display: grid; gap: .35rem; }
.app-nav-link, .app-sidebar-public { display: block; padding: .7rem .85rem; color: white; text-decoration: none; border-radius: .5rem; font-size: .9rem; }
.app-nav-link:hover, .app-nav-link[aria-current=page] { color: #0B4F71; background: #EAF7FE; }
.app-sidebar a:focus-visible { outline-color: #45B8F5; }
.app-sidebar-public { margin-top: auto; border-top: 1px solid #ffffff44; border-radius: 0; }
.app-workspace { min-width: 0; display: flex; flex-direction: column; }
.app-topbar { display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap; gap: 1rem; padding: 1.1rem 1.5rem; background: white; border-bottom: 1px solid var(--alkhar-bord); }
.app-page-titre { min-width: 0; }
.app-page-titre strong, .app-page-titre span { display: block; }
.app-outils { display: flex; gap: .5rem; flex-wrap: wrap; }
.app-outils form { margin: 0; }
.app-outils .bouton { font-size: .8rem; }
.app-workspace .site-main { flex: 1; }
.app-footer { border-top: 1px solid var(--alkhar-bord); }
.selecteur-enfants { display: flex; gap: .5rem; overflow-x: auto; padding: .3rem; max-width: 100%; }
.selecteur-enfants > a { flex: 0 0 auto; white-space: nowrap; }
.table-responsive > table { min-width: 30rem; }
.dashboard-promoteur .chart-bars { display: grid; gap: .55rem; }
.dashboard-promoteur .bar-row { display: grid; grid-template-columns: 92px 1fr 1fr; gap: .5rem; align-items: center; }
.dashboard-promoteur .bar-row i { display: block; height: 14px; border-radius: .25rem; }
.dashboard-promoteur .entree { background: #187650; }
.dashboard-promoteur .sortie { background: #a52d28; }
@media (min-width: 701px) {
    .app-menu::details-content { display: block; content-visibility: visible; }
    .app-menu:not([open]) > .app-sidebar { display: flex; }
}
@media (max-width: 1000px) and (min-width: 701px) {
    .app-shell { grid-template-columns: 190px minmax(0,1fr); }
    .app-sidebar-marque { flex-wrap: wrap; }
    .app-nav-link { font-size: .82rem; }
    .page-auth { gap: 1rem; }
    .auth-illustration { padding: 1.5rem; }
}
@media (max-width: 700px) {
    .app-shell { display: block; }
    .app-menu-bouton { display: list-item; list-style-position: inside; min-height: 48px; }
    .app-menu > .app-sidebar { position: static; height: auto; max-height: 65vh; }
    .app-menu:not([open]) > .app-sidebar { display: none; }
    .app-topbar { padding: 1rem; }
    .app-outils { width: 100%; }
    .app-outils .bouton { padding: .5rem .65rem; }
    .conteneur, .panneau, .site-main > .container, .site-main > .container-fluid, .site-main > section:not(.hero-public):not(.page-auth) { width: calc(100% - 1.5rem); margin: 1.25rem auto; }
    .site-main > .container-fluid { padding-inline: 0; }
    .barre { flex-wrap: wrap; padding: 1rem; }
    .page-auth, .page-auth-simple { grid-template-columns: minmax(0,1fr); margin: 1.5rem auto; width: calc(100% - 1.5rem); }
    .auth-illustration { display: none; }
    .carte-auth { padding: 1.25rem; }
    .hero-public { padding: 2.5rem 1.25rem; }
    .accueil-hero { grid-template-columns:1fr; gap:1.25rem; }
    .accueil-section { width:calc(100% - 1.5rem); margin:2.25rem auto; }
    .accueil-entete-avec-action { align-items:start; flex-direction:column; }
    .accueil-entete-avec-action .btn { width:100%; }
    .btn-group { gap: .35rem; }
    .dashboard-promoteur .bar-row { grid-template-columns: 1fr; }
}

/* Gestion explicite des personnes, comptes et rôles. */
.comptes-admin{--comptes-nuit:#103b4a;--comptes-vert:#1c6a5c}.comptes-entete{display:flex;justify-content:space-between;align-items:end;gap:1.5rem;margin-bottom:1.25rem}.comptes-entete h1{margin-bottom:.35rem}.comptes-entete p:last-child{color:#546777;margin:0}.comptes-reperes{display:grid;grid-template-columns:1.3fr repeat(4,1fr);gap:.8rem;align-items:center;padding:1rem 1.2rem;border:1px solid #d4e2e9;border-radius:.8rem;background:linear-gradient(105deg,#0b4f71,#147064);color:#fff;margin-bottom:1.25rem}.comptes-reperes>strong{font-size:.9rem}.comptes-reperes>div{display:flex;gap:.55rem;align-items:flex-start}.comptes-reperes span{display:grid;place-items:center;flex:0 0 1.6rem;height:1.6rem;border:1px solid #ffffff66;border-radius:50%;font-size:.7rem}.comptes-reperes p{font-size:.68rem;line-height:1.4;margin:0;color:#dceef0}.comptes-reperes b{display:block;color:#fff}.comptes-creation{margin-bottom:1.25rem}.comptes-formulaires{display:grid;grid-template-columns:1fr 1.3fr;gap:1.4rem;padding-top:1rem}.comptes-formulaires form{padding:1rem;border:1px solid #e1eaee;border-radius:.7rem;background:#f9fbfc}.comptes-formulaires h2{font-size:1.05rem;margin-top:0}.comptes-formulaires label,.ajout-role label,.actions-statut label,.role-ligne form label{display:grid;font-size:.76rem;gap:.25rem}.comptes-formulaires fieldset{border:0;padding:0;margin:1rem 0}.comptes-formulaires legend{font-size:.78rem;font-weight:700;margin-bottom:.5rem}.choix-inline{display:flex!important;grid-template-columns:none!important;align-items:center;gap:.45rem!important;font-weight:500}.choix-inline input{width:auto}.comptes-roles{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.45rem}.comptes-roles label{display:flex;align-items:center;gap:.4rem}.comptes-roles input{width:auto}.comptes-recherche{display:grid;grid-template-columns:2fr 1fr auto auto;gap:.75rem;align-items:end;margin:1.5rem 0}.comptes-recherche label{display:grid}.comptes-liste-entete{display:flex;justify-content:space-between;align-items:center}.comptes-liste-entete h2{margin:.5rem 0}.comptes-liste-entete span{font-size:.75rem;color:#546777}.comptes-admin td strong,.comptes-admin td small{display:block}.comptes-admin td small{color:#667b87}.compte-statut-actif{background:#e1f2e9;color:#155c3d}.compte-statut-invite{background:#e7f1fb;color:#285f83}.compte-statut-suspendu{background:#fff0d3;color:#764500}.compte-statut-archive{background:#e9ecef;color:#56636a}.retour-liste{display:inline-block;margin-bottom:1rem}.profil-entete{display:flex;align-items:center;gap:1rem;margin-bottom:1.25rem}.profil-avatar{display:grid;place-items:center;width:4rem;height:4rem;border-radius:1rem;background:linear-gradient(135deg,#0b4f71,#1d7564);color:#fff;font-size:1.3rem;font-weight:750}.profil-entete h1{margin:0}.profil-entete p{margin:0}.profil-grille{display:grid;grid-template-columns:.85fr 1.15fr;gap:1.2rem;margin-bottom:1.2rem}.profil-grille h2,.actions-sensibles h2{margin-top:0}.profil-grille dl{display:grid;grid-template-columns:1fr 1fr;gap:.55rem}.profil-grille dt{font-size:.72rem;color:#667b87}.profil-grille dd{margin:0;font-weight:600}.role-ligne{display:grid;grid-template-columns:1fr auto;gap:1rem;padding:.8rem 0;border-bottom:1px solid #e5edf1}.role-ligne>span strong,.role-ligne>span small{display:block}.role-ligne>span small{font-size:.7rem;color:#667b87}.role-ligne form{display:flex;align-items:end;gap:.5rem}.role-ligne form input{max-width:13rem}.ajout-role{display:flex;gap:.75rem;align-items:end;margin-top:1rem}.ajout-role label{flex:1}.actions-sensibles{border-left:4px solid #b26c24;margin-bottom:1.2rem}.actions-statut{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.8rem}.actions-statut form{padding:.8rem;border:1px solid #eadfce;border-radius:.6rem;background:#fffcf7}.actions-statut .btn{margin-top:.5rem;width:100%}.comptes-admin .pagination{display:flex;justify-content:center;gap:1rem;margin-top:1rem}.page-auth-simple{display:block;max-width:34rem;margin:3rem auto}.page-auth-simple .carte-auth{background:#fff;border:1px solid #d4e2e9;border-radius:.8rem;padding:2rem;box-shadow:0 12px 35px #0b4f7112}
@media(max-width:1000px){.comptes-reperes{grid-template-columns:repeat(2,1fr)}.comptes-reperes>strong{grid-column:1/-1}.comptes-formulaires,.profil-grille{grid-template-columns:1fr}.actions-statut{grid-template-columns:1fr 1fr}}
@media(max-width:700px){.comptes-entete{align-items:start;flex-direction:column}.comptes-entete .btn{width:100%}.comptes-reperes{grid-template-columns:1fr}.comptes-formulaires{display:block}.comptes-formulaires form+form{margin-top:1rem}.comptes-roles{grid-template-columns:1fr}.comptes-recherche{grid-template-columns:1fr}.role-ligne,.role-ligne form,.ajout-role{display:grid;grid-template-columns:1fr}.actions-statut{grid-template-columns:1fr}.profil-grille dl{grid-template-columns:1fr}.page-auth-simple{width:calc(100% - 1.5rem);margin:1.5rem auto}}
@media (prefers-reduced-motion: reduce) {
    *, *::before, *::after { scroll-behavior: auto !important; transition: none !important; animation: none !important; }
}
@media print {
    .barre, .app-menu, .app-topbar, .site-footer, .app-footer, .lien-evitement, .actions { display: none; }
    .app-shell { display: block; }
    body { background: white; }
    .table-responsive { overflow: visible; }
    .card, .carte, .panneau { box-shadow: none; break-inside: avoid; }
}

/* P32C : densité de travail et cibles tactiles, sans modifier les écrans métier voisins. */
.poste-caisse > .card { padding: 1.5rem; margin-block: 1.5rem; }
.poste-caisse .actions { display: flex; flex-wrap: wrap; gap: .6rem; margin-block: 1.5rem; }
.poste-caisse .filtres { display: flex; flex-wrap: wrap; align-items: end; gap: .8rem; }
.poste-caisse .filtres label { flex: 1 1 260px; display: grid; gap: .4rem; }
.poste-caisse .filtres input { width: 100%; }
.poste-caisse .filtres .btn { flex: 0 0 auto; min-height: 44px; }
.poste-caisse .form-grid { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 1.1rem; margin-bottom: 1.5rem; }
.poste-caisse .form-grid label { display: grid; align-content: start; gap: .4rem; }
.poste-caisse .form-grid :is(input,select,textarea) { width: 100%; min-height: 44px; }
.poste-caisse :is(h1,h2) { scroll-margin-top: 1rem; }
.poste-caisse dd { margin: .25rem 0 1rem; overflow-wrap: anywhere; }
@media(max-width:700px) {
    .poste-caisse > .card { padding: 1rem; }
    .poste-caisse .form-grid { grid-template-columns: minmax(0,1fr); }
    .poste-caisse .actions .btn { flex: 1 1 160px; }
}

/* P32D : périmètre enseignant, cibles tactiles et défilement local. */
.espace-enseignant { min-width:0; }
.actions-enseignant { display:flex; flex-wrap:wrap; gap:.65rem; }
.indicateurs-enseignant { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:1rem; }
.indicateurs-enseignant .kpi-card { display:flex; flex-direction:column; gap:.5rem; }
.indicateurs-enseignant strong { font-size:1.8rem; }
.liste-enseignant { list-style:none; padding:0; margin:0; }
.liste-enseignant li { display:flex; flex-direction:column; gap:.3rem; padding:.85rem 0; border-bottom:1px solid #d3e2e9; overflow-wrap:anywhere; }
.formulaire-enseignant { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:1rem; align-items:end; }
.espace-enseignant label { display:block; font-weight:600; }
.espace-enseignant input,.espace-enseignant select,.espace-enseignant button { min-height:44px; }
.espace-enseignant fieldset { min-width:0; }
.saisie-notes { position:relative; max-height:65vh; overflow:auto; }
.saisie-notes table { min-width:640px; }
.saisie-notes thead th { position:sticky; top:0; z-index:2; background:#0B4F71; color:white; }
.saisie-notes tbody th { min-width:180px; }
.saisie-notes td { min-width:180px; }
.espace-enseignant details { margin:.8rem 0; }
@media(max-width:1000px) { .indicateurs-enseignant { grid-template-columns:repeat(2,minmax(0,1fr)); } }
@media(max-width:600px) { .formulaire-enseignant { grid-template-columns:1fr; } .actions-enseignant .btn { width:100%; } }

/* P32E : pointage en cartes, une main sur téléphone, sans tableau débordant. */
.poste-surveillant { min-width:0; }
.poste-surveillant .presence-selection { display:grid; grid-template-columns:1fr 1fr auto; gap:1rem; align-items:end; }
.poste-surveillant label { display:block; font-weight:600; }
.poste-surveillant :is(input:not([type=hidden]),select,button,summary) { min-height:44px; }
.poste-surveillant :is(input,select,textarea) { max-width:100%; }
.poste-surveillant .presence-recherche { display:grid; gap:.5rem; max-width:48rem; }
.poste-surveillant .presence-liste { display:grid; gap:1rem; margin-top:1rem; }
.poste-surveillant .presence-eleve { display:grid; grid-template-columns:minmax(0,1fr) auto; gap:.75rem; padding:1rem; border:1px solid #b8d4e2; border-radius:8px; background:#fff; overflow-wrap:anywhere; }
.poste-surveillant [hidden] { display:none !important; }
.poste-surveillant .presence-eleve h3 { font-size:1.15rem; margin:0 0 .25rem; }
.poste-surveillant .presence-eleve p { margin:.25rem 0; }
.poste-surveillant .presence-statut { color:#0B4F71; }
.poste-surveillant [data-etat=RETARD] .presence-statut { color:#854400; }
.poste-surveillant .presence-autres { grid-column:1/-1; }
.poste-surveillant summary { cursor:pointer; padding:.65rem 0; }
.poste-surveillant .presence-formulaire { display:grid; gap:1rem; max-width:44rem; padding:1rem 0; }
.poste-surveillant .presence-confirmation { display:flex; align-items:center; gap:.75rem; }
.poste-surveillant .presence-arrivee { min-width:145px; }
.poste-surveillant .presence-eleve > a { grid-column:1/-1; padding:.6rem 0; }
@media(max-width:900px) { .poste-surveillant .presence-selection { grid-template-columns:1fr; } }
@media(max-width:480px) { .poste-surveillant .presence-eleve { grid-template-columns:1fr; } .poste-surveillant .presence-arrivee { width:100%; } }

/* P32F : portails familiaux, navigation sans fonctions administratives. */
.portail-scolaire { min-width:0; }
.portail-grille { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:1rem; }
.portail-scolaire .carte { min-width:0; overflow-wrap:anywhere; }
.portail-enfants,.portail-raccourcis { display:flex; flex-wrap:wrap; gap:.65rem; margin:1rem 0; }
.portail-raccourcis a { display:flex; align-items:center; min-height:44px; padding:.65rem 1rem; border:1px solid #b8d4e2; border-radius:8px; background:white; }
.portail-enfants .btn { min-height:44px; white-space:normal; }
.portail-valeur { font-size:1.35rem; font-weight:700; color:#0b4f71; }
.portail-liste { list-style:none; padding:0; }
.portail-liste > li { border-bottom:1px solid #d7e5ec; padding:.75rem 0; }
.portail-scolaire summary { padding:.75rem 0; min-height:44px; cursor:pointer; }
.portail-scolaire a.btn { min-height:44px; }
.portail-activites { padding-left:1.2rem; }
.portail-activites li { padding:.5rem 0; }
.portail-activites time { font-size:.85rem; color:#506773; }
@media(max-width:1000px) { .portail-grille { grid-template-columns:1fr; } }

/* Les tableaux d'annonces défilent dans leur carte sur écran étroit. */
.table-annonces { min-width:36rem; }
.table-annonces th:not(:first-child),.table-annonces td:not(:first-child) { white-space:nowrap; }
.profils-annonce { min-width:0; }
.profils-annonce label { cursor:pointer; }

/* Dossier élève : parcours guidé, fiche lisible et photo privée. */
.dossiers-hero{display:flex;justify-content:space-between;align-items:end;gap:2rem;padding:1.8rem 2rem;margin-bottom:1.25rem;border-radius:1rem;background:linear-gradient(125deg,#083e57 0%,#0b6680 62%,#168073 100%);color:#fff;box-shadow:0 18px 46px #083e5726;overflow:hidden;position:relative}.dossiers-hero::after{content:"";position:absolute;width:16rem;height:16rem;right:-5rem;top:-8rem;border:1px solid #ffffff35;border-radius:50%;box-shadow:0 0 0 2.5rem #ffffff0a,0 0 0 5rem #ffffff08}.dossiers-hero>*{position:relative;z-index:1}.dossiers-hero h1{margin:.2rem 0 .45rem;color:#fff}.dossiers-hero p{max-width:48rem;margin:0;color:#e4f4f6}.dossiers-hero .sur-titre{color:#a9e9e2}.dossiers-hero .btn{background:#fff;border-color:#fff;color:#0b5670}
.parcours-eleve{padding:0;overflow:hidden;box-shadow:0 18px 52px #123d5015}.parcours-etapes{display:grid;grid-template-columns:repeat(5,1fr);list-style:none;margin:0;padding:0;background:#f2f7f9;border-bottom:1px solid #d5e4ea}.parcours-etapes li{display:flex;align-items:center;gap:.55rem;padding:1rem .8rem;color:#647984;font-size:.76rem;font-weight:700;transition:background .25s ease,color .25s ease,transform .25s ease}.parcours-etapes li span{display:grid;place-items:center;width:1.8rem;height:1.8rem;border-radius:50%;border:1px solid #aac2cd;background:#fff;transition:all .25s ease}.parcours-etapes li.active{color:#0b5570;background:#fff}.parcours-etapes li.active span{color:#fff;border-color:#0e6f79;background:#0e6f79;box-shadow:0 0 0 4px #0e6f7917}.parcours-etapes li.terminee{color:#176d5a}.parcours-etapes li.terminee span{color:#fff;border-color:#23846e;background:#23846e}.parcours-eleve form{padding:1.7rem}.parcours-eleve fieldset{border:0;margin:0;padding:0;animation:apparition-etape .28s ease}.parcours-eleve fieldset[hidden]{display:none}.parcours-eleve legend{display:flex;align-items:center;gap:.7rem;font-size:1.2rem;font-weight:750;color:#153d4e;margin-bottom:.35rem}.parcours-eleve legend span{font-size:.7rem;letter-spacing:.08em;color:#0b6d78}.grille-formulaire{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem;margin-top:1.2rem}.grille-formulaire label{display:grid;gap:.38rem;color:#38515e;font-size:.8rem;font-weight:650}.grille-formulaire :is(input,select,textarea){width:100%;min-height:46px}.grille-formulaire textarea{min-height:76px}.grille-formulaire .pleine-largeur{grid-column:1/-1}.grille-formulaire .case-ligne{display:flex;align-items:center;gap:.6rem;padding-top:1.6rem}.grille-formulaire .case-ligne input{width:1.1rem;min-height:auto}.photo-depot{display:grid;grid-template-columns:180px 1fr;gap:1.7rem;align-items:center;margin-top:1.4rem;padding:1.5rem;border:1px dashed #9fc3cf;border-radius:1rem;background:linear-gradient(135deg,#f4fafc,#f8fcfa)}.photo-apercu,.portrait-eleve{position:relative;display:grid;place-items:center;overflow:hidden;background:linear-gradient(145deg,#dcebf0,#eef6f7);color:#1a6472}.photo-apercu{width:160px;aspect-ratio:4/5;border-radius:.85rem;box-shadow:0 10px 25px #16465a1b}.photo-apercu img,.portrait-eleve img{width:100%;height:100%;object-fit:cover}.avatar-neutre{display:grid;place-items:center;width:100%;height:100%;font-size:2rem;font-weight:800;letter-spacing:.06em}.bouton-fichier{display:inline-flex!important;align-items:center;justify-content:center;width:auto!important;padding:.7rem 1rem;border-radius:.55rem;background:#0b5d75;color:#fff!important;cursor:pointer}.bouton-fichier input{position:absolute;width:1px;height:1px;opacity:0}.navigation-etapes{display:flex;justify-content:space-between;gap:.75rem;margin-top:1.7rem;padding-top:1.1rem;border-top:1px solid #e1eaee}.navigation-etapes [data-etape-suivante]{margin-left:auto}.recapitulatif-eleve{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.8rem;margin:1.2rem 0}.recapitulatif-eleve>div{display:grid;gap:.2rem;padding:1rem;border:1px solid #dce7eb;border-radius:.7rem;background:#f8fbfc}.recapitulatif-eleve small,.recapitulatif-eleve span{color:#667b85}.recapitulatif-eleve strong{color:#123e50}.confirmation-parcours{display:flex;align-items:center;gap:.6rem;margin:1rem 0 1.25rem;font-weight:650}.confirmation-parcours input{width:auto}.alerte-parcours{border-left:4px solid #b33f38}.entete-liste-dossiers{display:flex;justify-content:space-between;align-items:end;gap:1rem}.entete-liste-dossiers h2{margin:.15rem 0}.recherche-dossiers{display:flex;gap:.5rem}.recherche-dossiers input{min-width:17rem}
.fiche-eleve-entete{display:grid;grid-template-columns:130px minmax(0,1fr) auto;gap:1.4rem;align-items:center;margin-bottom:1.2rem}.portrait-eleve{width:120px;aspect-ratio:4/5;border-radius:1rem;box-shadow:0 12px 28px #123d5020}.fiche-eleve-entete h1{margin:.15rem 0}.classe-actuelle{display:flex;align-items:center;gap:.5rem;color:#16634f;font-weight:700}.filiere-fiche{display:grid;gap:.12rem;min-width:10.5rem;padding:.7rem .9rem;border-radius:.75rem;background:#e4f1f4;color:#14536b;font-size:.76rem;text-align:right}.filiere-fiche small{font-size:.65rem;letter-spacing:.04em;text-transform:uppercase}.filiere-fiche strong{font-size:.86rem}.filiere-fiche span{color:#5d7680;font-weight:600}.details-fiche{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.65rem 1rem}.details-fiche>div{padding:.75rem;border-bottom:1px solid #e4ecef}.details-fiche dt{font-size:.72rem;color:#687d87}.details-fiche dd{margin:.18rem 0 0;font-weight:650}.liste-tuteurs{list-style:none;padding:0;margin:0}.liste-tuteurs a{display:grid;grid-template-columns:2.5rem minmax(0,1fr) auto;gap:.75rem;align-items:center;padding:.75rem 0;border-bottom:1px solid #e1eaee;text-decoration:none}.liste-tuteurs strong,.liste-tuteurs small{display:block}.avatar-tuteur{display:grid;place-items:center;width:2.5rem;height:2.5rem;border-radius:50%;background:#e1f0f2;color:#0d6170;font-weight:800}.chronologie-scolaire{padding:.2rem 0}.chronologie-scolaire article{position:relative;padding:0 0 1.15rem 1.4rem;border-left:2px solid #c7dce3}.chronologie-scolaire article:last-child{border-left-color:transparent}.chronologie-scolaire .point-chronologie{position:absolute;left:-.42rem;top:.15rem;width:.7rem;height:.7rem;border-radius:50%;background:#167667;box-shadow:0 0 0 4px #e4f2ef}.chronologie-scolaire strong,.chronologie-scolaire span{display:block}.chronologie-scolaire p{margin:.2rem 0}.formulaire-photo{display:grid;grid-template-columns:120px minmax(0,1fr);gap:1rem;align-items:center}.formulaire-photo .photo-apercu{width:110px}.confirmation-parcours+.btn{min-height:48px}.inscriptions-parcours{display:flex;align-items:center;justify-content:space-between;gap:1.5rem;border-left:4px solid #168073;background:linear-gradient(110deg,#fff,#f0f8f7)}.inscriptions-parcours h2{margin:.15rem 0 .35rem}.inscriptions-parcours p:last-child{margin:0;max-width:52rem}
@keyframes apparition-etape{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}
.fiche-profil-entete{display:grid;grid-template-columns:130px minmax(0,1fr);gap:1.5rem;align-items:center;padding:1.3rem 1.5rem;border-radius:1rem;background:linear-gradient(120deg,#f7fbfc,#eaf5f3);box-shadow:0 12px 32px #123d5012}.fiche-profil-entete h1{margin:.15rem 0}.grille-profils{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.8rem}.carte-profil-lien{display:grid;grid-template-columns:2.6rem minmax(0,1fr) auto;gap:.75rem;align-items:center;padding:.85rem;border:1px solid #d9e6eb;border-radius:.75rem;background:#fff;text-decoration:none;transition:transform .2s ease,box-shadow .2s ease}.carte-profil-lien:hover{transform:translateY(-2px);box-shadow:0 10px 24px #123d5015}.carte-profil-lien strong,.carte-profil-lien small{display:block}.carte-lien-enfant{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:.7rem;padding:1rem;border:1px solid #d8e6ea;border-radius:.8rem;background:#fff}.carte-lien-enfant strong,.carte-lien-enfant span,.carte-lien-enfant small{display:block}.carte-lien-enfant .btn,.carte-lien-enfant>small{grid-column:1/-1}.badges-droits{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:.35rem}.badges-droits span{padding:.25rem .5rem;border-radius:2rem;background:#e5f1f3;color:#14556a;font-size:.68rem;font-weight:700}.badges-droits span.autorise{background:#e1f2e9;color:#155c3d}.badges-droits span.limite{background:#f3e7df;color:#7b4c2f}.bloc-creation-personnel summary{cursor:pointer;padding:.75rem;border-radius:.6rem;background:#f1f7f8;color:#15546a;font-weight:700}
.droits-a-cocher{justify-content:flex-start}.droits-a-cocher label{display:flex;align-items:center;gap:.4rem;padding:.55rem .75rem;border:1px solid #d8e6ea;border-radius:.65rem;background:#f8fbfc;font-weight:650}.droits-a-cocher input{width:auto;min-height:auto}.action-sensible{grid-column:1/-1;border-top:1px solid #e8d9d1;padding-top:.7rem}.action-sensible summary{cursor:pointer;color:#8a442d;font-weight:700}
@media(max-width:800px){.parcours-etapes{grid-template-columns:repeat(5,minmax(3.1rem,1fr))}.parcours-etapes li{justify-content:center;font-size:0}.parcours-etapes li span{font-size:.72rem}.grille-formulaire,.recapitulatif-eleve,.details-fiche{grid-template-columns:1fr}.grille-formulaire .pleine-largeur{grid-column:auto}.fiche-eleve-entete{grid-template-columns:100px minmax(0,1fr)}.fiche-eleve-entete>.btn{grid-column:1/-1}.portrait-eleve{width:92px}.entete-liste-dossiers{align-items:stretch;flex-direction:column}.recherche-dossiers input{min-width:0;flex:1}}
@media(max-width:800px){.grille-profils{grid-template-columns:1fr}}
@media(max-width:560px){.dossiers-hero,.inscriptions-parcours{align-items:stretch;flex-direction:column;padding:1.3rem}.photo-depot,.formulaire-photo{grid-template-columns:1fr}.photo-apercu{margin:auto}.parcours-eleve form{padding:1.1rem}.parcours-etapes li{padding:.75rem .25rem}.navigation-etapes .btn{flex:1}.recherche-dossiers{display:grid;grid-template-columns:1fr}.fiche-eleve-entete,.fiche-profil-entete{grid-template-columns:1fr;text-align:center}.portrait-eleve{margin:auto}.classe-actuelle{justify-content:center}.carte-lien-enfant{grid-template-columns:1fr}.badges-droits{justify-content:flex-start}}

/* Vitrine : composition institutionnelle, limitée aux pages publiques. */
.layout-public { background:#fff; }
.layout-public .barre { padding-block:1.4rem; gap:2rem; }
.layout-public .navigation-principale { align-items:center; gap:1.8rem; }
.layout-public .navigation-lien { font-size:.88rem; font-weight:600; text-decoration:none; min-height:44px; display:flex; align-items:center; }
.layout-public .navigation-lien:hover { text-decoration:underline; }
.layout-public .navigation-principale .bouton { padding:.7rem 1.2rem; border-radius:5px; }
.layout-public .site-footer-institutionnel { padding:3rem max(1.25rem,calc((100% - 1180px)/2)); background:#083e57; color:#d8e9ef; }
.layout-public .site-footer-institutionnel strong { font-size:1.6rem; color:white; letter-spacing:.08em; }
.layout-public .site-footer-institutionnel span { display:block; margin-top:.4rem; }
.layout-public .site-footer-institutionnel nav { display:flex; flex-wrap:wrap; align-items:start; gap:1.5rem; }
.layout-public .site-footer-institutionnel a { color:#fff; }
.vitrine { --vitrine-encre:#103e51; color:#304e5b; }
.vitrine h1,.vitrine h2,.vitrine h3 { color:var(--vitrine-encre); }
.vitrine .eyebrow { font-size:.7rem; letter-spacing:.15em; margin-bottom:1.3rem; color:#28627c; }
.vitrine-hero { width:min(1180px,calc(100% - 3rem)); margin:4.5rem auto 3.5rem; display:grid; grid-template-columns:1.15fr 1fr; gap:5rem; align-items:center; }
.vitrine-hero h1 { font-size:clamp(3.4rem,5.8vw,5.4rem); font-weight:650; letter-spacing:-.055em; line-height:1.04; margin:0 0 1.6rem; }
.vitrine-hero h1 em { font-family:Georgia,serif; font-weight:400; color:#177999; }
.vitrine-hero .lead { max-width:29rem; font-size:1.05rem; font-weight:400; line-height:1.8; margin-bottom:1.8rem; color:#52707d; }
.vitrine .accueil-actions { align-items:center; gap:1.2rem; }
.vitrine .btn { border-radius:5px; padding:.8rem 1.1rem; font-size:.86rem; }
.vitrine .btn span { margin-left:.7rem; }
.vitrine-lien { font-size:.83rem; font-weight:600; text-decoration:none; padding:.7rem 0; }
.vitrine-lien:hover { text-decoration:underline; }
.vitrine-signature { background:#e2f2f8; border-radius:3px; position:relative; padding:1.8rem 2rem 0; overflow:hidden; }
.signature-entete { display:flex; justify-content:space-between; gap:1rem; font-size:.75rem; text-transform:uppercase; letter-spacing:.12em; color:#174e65; }
.signature-entete span:first-child { font-weight:800; letter-spacing:.18em; }
.signature-symbole { height:295px; display:grid; place-items:center; position:relative; isolation:isolate; font-family:Georgia,serif; font-size:290px; font-weight:400; line-height:1; color:#0b4f71; }
.signature-symbole::before { content:""; position:absolute; z-index:-1; width:230px; height:230px; border:1px solid #95c7db; border-radius:50%; }
.signature-symbole::after { content:""; position:absolute; width:125%; height:1px; top:68%; background:#95c7db; z-index:-1; transform:rotate(-28deg); }
.signature-symbole span { position:absolute; width:22px; height:22px; background:#45b8f5; border-radius:50%; top:30%; right:14%; }
.vitrine-signature > p { text-align:center; font-size:.65rem; font-weight:700; letter-spacing:.17em; margin:.3rem 0 1.8rem; }
.vitrine-signature > a { display:flex; justify-content:space-between; align-items:center; gap:1rem; margin:0 -2rem; padding:1.3rem 2rem; color:white; background:#0b4f71; text-decoration:none; font-size:.9rem; }
.vitrine-signature > a:hover { background:#083e57; }
.vitrine-reperes { width:min(1180px,calc(100% - 3rem)); margin:auto; display:flex; justify-content:space-between; align-items:center; gap:1.5rem; padding:1.5rem 0; border-block:1px solid #d4e2e9; font-size:.82rem; }
.vitrine-reperes > span { font-weight:650; color:#52707d; }
.vitrine-reperes a { text-decoration:none; }
.vitrine-reperes a:hover { text-decoration:underline; }
.vitrine .accueil-section { width:min(1180px,calc(100% - 3rem)); margin:5.5rem auto; }
.vitrine h2 { font-size:clamp(1.8rem,3vw,2.7rem); font-weight:550; letter-spacing:-.04em; line-height:1.16; margin:0 0 1.5rem; }
.vitrine h3 { font-size:1.1rem; font-weight:650; }
.vitrine .carte-public { border:0; box-shadow:none; padding:0 1.8rem 0 0; border-radius:0; background:transparent; }
.vitrine .grille-public { gap:2rem; }
.vitrine .carte-public p { color:#52707d; font-size:.93rem; line-height:1.8; margin-bottom:0; }
.vitrine .accueil-institution .grille-public { margin-top:2rem; }
.vitrine .accueil-institution .carte-public { border-top:2px solid #bad9e5; padding-top:1.5rem; }
.vitrine .vitrine-parcours { display:grid; grid-template-columns:1fr 1.25fr; column-gap:5rem; align-items:start; }
.vitrine-parcours > .eyebrow,.vitrine-parcours > h2,.vitrine-parcours > .accueil-introduction { grid-column:1; }
.vitrine .accueil-cycles { grid-column:2; grid-row:1 / span 4; display:block; }
.vitrine .accueil-cycles .carte-cycle { display:flex; flex-direction:row; align-items:center; gap:1.5rem; min-height:0; padding:1rem .2rem; border:0; border-bottom:1px solid #d4e2e9; border-radius:0; box-shadow:none; }
.vitrine .accueil-cycles .carte-cycle:first-child { border-top:1px solid #d4e2e9; }
.vitrine .accueil-cycles h3 { margin:0; font-size:1.1rem; }
.cycle-numero { color:#52707d; font-size:.7rem; font-variant-numeric:tabular-nums; }
.vitrine .accueil-approche { padding:3rem; background:#edf6fa; border-radius:4px; }
.vitrine .accueil-approche .grille-public { margin-top:2.5rem; }
.vitrine .accueil-approche .carte-public { border-left:2px solid #77b8d1; padding-left:1.2rem; padding-right:0; }
.vitrine .accueil-entete-avec-action { margin-bottom:2rem; }
.vitrine .accueil-entete-avec-action h2 { margin-bottom:0; }
.vitrine .accueil-actualites { grid-template-columns:repeat(auto-fit,minmax(min(100%,17rem),1fr)); gap:2rem; }
.vitrine .carte-actualite { max-width:40rem; border:0; border-top:2px solid #0b4f71; border-radius:0; box-shadow:none; padding:1.5rem 0 0; gap:.4rem; }
.vitrine .carte-actualite h3 { font-size:1.4rem; }
.vitrine .carte-actualite h3 a { text-decoration:none; }
.vitrine .carte-actualite > a:last-child { font-size:.85rem; }
.vitrine .accueil-contact { border-top:1px solid #d4e2e9; padding-top:3.5rem; }
.vitrine .accueil-contact h2 { font-size:1.7rem; }
.vitrine .accueil-contact .btn { margin-top:1.3rem; }
.vitrine :is(section,article)[id] { scroll-margin-top:2rem; }
.layout-public .page-auth { max-width:980px; gap:0; margin:3.5rem auto; }
.layout-public .auth-illustration { border-radius:6px 0 0 6px; padding:2.5rem; }
.layout-public .auth-illustration h1 { font-size:clamp(1.8rem,3vw,2.5rem); line-height:1.2; }
.layout-public .carte-auth { box-shadow:none; border-radius:0 6px 6px 0; padding:2.5rem; }
@media(max-width:950px) {
    .vitrine-hero { gap:2.5rem; margin-top:3rem; }
    .vitrine-hero h1 { font-size:3.7rem; }
    .signature-symbole { height:255px; font-size:245px; }
    .signature-symbole::before { width:190px; height:190px; }
    .layout-public .navigation-principale { gap:1rem; }
    .vitrine .vitrine-parcours { column-gap:2rem; }
}
@media(max-width:700px) {
    .layout-public .barre { padding:1.1rem 1.25rem; gap:1rem; }
    .layout-public .navigation-principale { width:100%; justify-content:space-between; gap:.6rem; }
    .layout-public .navigation-lien { font-size:.77rem; }
    .layout-public .navigation-principale .bouton { font-size:.8rem; padding:.55rem .7rem; }
    .vitrine-hero { grid-template-columns:1fr; width:calc(100% - 2.5rem); margin:2.5rem auto; gap:2rem; }
    .vitrine-hero h1 { font-size:clamp(3.2rem,13vw,4.6rem); }
    .vitrine-hero .lead { font-size:1rem; }
    .vitrine-signature { padding:1.3rem 1.5rem 0; }
    .signature-symbole { height:210px; font-size:210px; }
    .signature-symbole::before { width:175px; height:175px; }
    .vitrine-signature > a { margin-inline:-1.5rem; padding:1.1rem 1.5rem; }
    .vitrine-reperes { width:calc(100% - 2.5rem); flex-wrap:wrap; justify-content:start; gap:.8rem 1.4rem; }
    .vitrine-reperes > span { width:100%; }
    .vitrine .accueil-section { width:calc(100% - 2.5rem); margin:3.5rem auto; }
    .vitrine .vitrine-parcours { display:block; }
    .vitrine .accueil-cycles { margin-top:2rem; }
    .vitrine .accueil-approche { padding:1.6rem; }
    .vitrine .grille-public,.vitrine .accueil-actualites { grid-template-columns:1fr; gap:1.8rem; }
    .vitrine .carte-public { padding-right:0; }
    .vitrine .accueil-contact { padding-top:2.5rem; }
    .layout-public .page-auth { margin:1.5rem auto; }
    .layout-public .carte-auth { border-radius:6px; padding:1.5rem; }
}
.identite-avec-photo{align-items:center;display:inline-flex;gap:.65rem}.avatar-liste{border-radius:50%;height:2.25rem;object-fit:cover;width:2.25rem}
