*{box-sizing:border-box}:root{--green:#25775c;--green2:#1f624c;--ink:#243333;--muted:#64746f;--line:#dce6e2;--bg:#f4f7f6;--danger:#aa3939;--amber:#a16d10;--shadow:0 8px 24px rgba(31,64,53,.08)}body{margin:0;font-family:Inter,Segoe UI,Arial,sans-serif;background:var(--bg);color:var(--ink);line-height:1.45}a{color:inherit}.site-header{position:sticky;top:0;z-index:10;background:#fff;border-bottom:1px solid var(--line)}.header-inner{max-width:1220px;margin:auto;padding:12px 18px;display:flex;align-items:center;gap:18px}.brand{font-weight:800;color:var(--green);font-size:1.05rem;white-space:nowrap}.topnav{display:flex;align-items:center;gap:6px;margin-left:auto}.topnav a{padding:9px 11px;border-radius:9px;text-decoration:none;color:#34574b}.topnav a:hover{background:#edf5f2}.nav-toggle{display:none;margin-left:auto;border:1px solid var(--line);background:#fff;color:var(--green);padding:9px 12px;border-radius:9px;font-size:1.1rem}.user-chip{font-size:.85rem;color:var(--muted);padding:0 4px}.container{max-width:1220px;margin:26px auto;padding:0 18px}.page-head{display:flex;justify-content:space-between;align-items:center;gap:16px;margin-bottom:18px}.page-head h1{margin:0}.muted{color:var(--muted)}h1,h2,h3{color:#214f40}.cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:18px}.card{background:#fff;border:1px solid var(--line);border-radius:16px;padding:20px;text-decoration:none;color:inherit;box-shadow:var(--shadow)}a.card{transition:.18s transform,.18s box-shadow}a.card:hover{transform:translateY(-2px);box-shadow:0 12px 30px rgba(31,64,53,.12)}.metric{font-size:2rem;font-weight:800;color:var(--green)}.resource-card{padding:0;overflow:hidden}.resource-card img,.placeholder-photo{width:100%;height:185px;object-fit:cover;background:linear-gradient(135deg,#dfece7,#eef5f2);display:flex;align-items:center;justify-content:center;color:#6b8078;font-weight:700}.resource-card .card-body{padding:16px}.badge{display:inline-flex;align-items:center;padding:5px 9px;border-radius:999px;font-size:.78rem;font-weight:700;background:#edf5f2;color:var(--green2)}.badge.pending{background:#fff3d8;color:#8a5b09}.badge.approved{background:#dff3e8;color:#176343}.badge.rejected{background:#f9dddd;color:#8e2f2f}.badge.cancelled{background:#e8eceb;color:#58635f}.grid-2{display:grid;grid-template-columns:1.1fr .9fr;gap:22px}.hero{width:100%;max-height:390px;object-fit:cover;border-radius:16px}.panel,form.box{background:#fff;border:1px solid var(--line);border-radius:16px;padding:18px;box-shadow:var(--shadow)}label{display:block;font-weight:700;margin:10px 0 5px}input,select,textarea{width:100%;padding:11px 12px;border:1px solid #bdcbc6;border-radius:9px;background:#fff;font:inherit;color:inherit}textarea{min-height:96px;resize:vertical}input:focus,select:focus,textarea:focus{outline:2px solid rgba(37,119,92,.18);border-color:var(--green)}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px 16px}.full{grid-column:1/-1}.actions{display:flex;gap:9px;flex-wrap:wrap;margin-top:14px}.btn,button{display:inline-flex;align-items:center;justify-content:center;border:0;border-radius:9px;padding:10px 14px;background:var(--green);color:#fff;font-weight:700;text-decoration:none;cursor:pointer}.btn.secondary,button.secondary{background:#eaf2ef;color:var(--green2)}.btn.danger,button.danger{background:var(--danger)}.btn.small,button.small{padding:7px 10px;font-size:.85rem}.filters{display:grid;grid-template-columns:1fr 1fr auto;gap:10px;align-items:end;margin-bottom:18px}.table-wrap{overflow-x:auto;background:#fff;border:1px solid var(--line);border-radius:14px;box-shadow:var(--shadow)}table{width:100%;border-collapse:collapse;min-width:720px}th,td{padding:12px 13px;border-bottom:1px solid #e7ecea;text-align:left;vertical-align:top}th{font-size:.83rem;color:#566862;background:#f8faf9}tr:last-child td{border-bottom:0}.flash{padding:12px 14px;border-radius:10px;margin-bottom:14px}.flash.success{background:#dcf4e9;color:#185f42}.flash.danger{background:#f7dddd;color:#862c2c}.flash.info{background:#e2edf7;color:#315f83}.login-shell{min-height:calc(100vh - 72px);display:grid;place-items:center;padding:25px}.login-card{width:min(430px,100%);background:#fff;border:1px solid var(--line);border-radius:18px;padding:28px;box-shadow:var(--shadow)}.approval{margin-bottom:15px}.approval .meta{display:flex;gap:10px;flex-wrap:wrap;color:var(--muted);font-size:.9rem}.calendar{background:#fff;border:1px solid var(--line);border-radius:16px;padding:14px;box-shadow:var(--shadow)}.cal-toolbar{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:10px}.cal-toolbar h3{margin:0;text-transform:capitalize}.cal-grid{display:grid;grid-template-columns:repeat(7,1fr);border-left:1px solid var(--line);border-top:1px solid var(--line)}.cal-head,.cal-day{border-right:1px solid var(--line);border-bottom:1px solid var(--line)}.cal-head{padding:8px;text-align:center;font-weight:700;font-size:.8rem;background:#f6f9f8}.cal-day{min-height:92px;padding:6px;background:#fff}.cal-day.empty{background:#fafbfb}.cal-num{font-weight:800;font-size:.85rem;margin-bottom:5px}.cal-event{font-size:.72rem;padding:4px 5px;border-radius:6px;margin:3px 0;background:#fff1cf;color:#825609;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cal-event.approved{background:#dff3e8;color:#176343}.admin-tabs{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:18px}.admin-tabs a{padding:8px 11px;border-radius:9px;background:#fff;border:1px solid var(--line);text-decoration:none}.inline-form{display:flex;gap:8px;align-items:end;flex-wrap:wrap}.inline-form>*{flex:1 1 150px}.inline-form button{flex:0 0 auto}.photo-thumb{width:80px;height:56px;object-fit:cover;border-radius:8px}.empty-state{text-align:center;padding:35px;color:var(--muted)}@media(max-width:900px){.grid-2{grid-template-columns:1fr}.topnav{display:none;position:absolute;top:62px;left:12px;right:12px;background:#fff;border:1px solid var(--line);border-radius:14px;padding:8px;box-shadow:var(--shadow);flex-direction:column;align-items:stretch}.topnav.open{display:flex}.topnav a{padding:12px}.user-chip{padding:10px}.nav-toggle{display:block}.filters{grid-template-columns:1fr 1fr}.filters button{grid-column:1/-1}.form-grid{grid-template-columns:1fr}.full{grid-column:auto}.cal-day{min-height:78px}.cal-event{font-size:.65rem}}@media(max-width:640px){.container{padding:0 12px;margin-top:18px}.header-inner{padding:10px 12px}.brand{font-size:.95rem}.page-head{align-items:flex-start;flex-direction:column}.cards{grid-template-columns:1fr}.filters{grid-template-columns:1fr}.filters button{grid-column:auto}.resource-card img,.placeholder-photo{height:210px}.panel,form.box,.card{border-radius:13px;padding:15px}.resource-card{padding:0}.resource-card .card-body{padding:14px}.grid-2{gap:14px}.actions{flex-direction:column}.actions .btn,.actions button{width:100%}.table-wrap{border-radius:10px}table.responsive-table{min-width:0}table.responsive-table thead{display:none}table.responsive-table,table.responsive-table tbody,table.responsive-table tr,table.responsive-table td{display:block;width:100%}table.responsive-table tr{padding:10px 12px;border-bottom:1px solid var(--line)}table.responsive-table td{display:grid;grid-template-columns:120px 1fr;gap:8px;padding:6px 0;border:0}table.responsive-table td::before{content:attr(data-label);font-weight:700;color:#566862}.cal-grid{grid-template-columns:repeat(7,minmax(42px,1fr));overflow-x:auto}.cal-head{font-size:.68rem;padding:6px 2px}.cal-day{min-height:68px;padding:4px}.cal-event{font-size:0;width:9px;height:9px;border-radius:50%;padding:0;display:inline-block;margin:2px}.login-shell{padding:14px}.login-card{padding:20px}}
.establishment-thumb{background:#fff;object-fit:contain;padding:4px}.resource-card img{background:#fff}.hero{background:#fff;object-fit:contain}

.text-link{display:inline-flex;align-items:center;color:#25775c;font-weight:700;text-decoration:none;padding:10px 2px}.text-link:hover{text-decoration:underline}.security-note{font-size:.9rem;color:#667a72;margin-top:16px;line-height:1.45}.login-card .actions{align-items:center;flex-wrap:wrap}.login-card .btn{display:inline-block;text-decoration:none}


/* Administration simple et visuelle */
.admin-create{margin:0 0 20px;background:#fff;border:1px solid var(--line);border-radius:16px;box-shadow:var(--shadow);overflow:hidden}.admin-create>summary{cursor:pointer;list-style:none;padding:16px 18px;font-weight:800;color:var(--green2);background:#f8fbfa}.admin-create>summary::-webkit-details-marker{display:none}.admin-create[open]>summary{border-bottom:1px solid var(--line)}.admin-create .box{border:0;border-radius:0;box-shadow:none;margin:0}.admin-card-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:18px}.admin-card{background:#fff;border:1px solid var(--line);border-radius:18px;overflow:hidden;box-shadow:var(--shadow)}.admin-card-photo{width:100%;height:190px;object-fit:cover;background:#eef5f2;display:block}.admin-card-photo.photo-empty{display:grid;place-items:center;font-size:3.4rem}.admin-card-content{padding:16px}.admin-card-title{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.admin-card-title h2{margin:6px 0 2px;font-size:1.15rem}.quick-edit{border-top:1px solid var(--line);margin-top:12px;padding-top:10px}.quick-edit>summary{cursor:pointer;font-weight:750;color:var(--green2);padding:8px 0}.quick-edit form{margin-top:8px;background:#f8fbfa;border:1px solid var(--line);border-radius:12px;padding:12px}.card-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:14px}.card-actions form{margin:0}.simple-form{box-shadow:none}.admin-tabs{position:sticky;top:68px;z-index:7;background:var(--bg);padding:6px 0 12px}.admin-tabs a{font-weight:700}.admin-tabs a:hover{background:#eaf4f0}.admin-card input[type=file]{padding:9px;background:#fff}@media(max-width:640px){.admin-card-grid{grid-template-columns:1fr}.admin-card-photo{height:210px}.admin-tabs{position:static;overflow-x:auto;flex-wrap:nowrap;padding-bottom:10px}.admin-tabs a{white-space:nowrap}.card-actions{flex-direction:column}.card-actions button{width:100%}.quick-edit .actions{margin-top:10px}}


/* Correction affichage des photos dans l'administration :
   affiche l'image entière, centrée, sans la couper */
.admin-card-photo{
    width:100%;
    height:190px;
    object-fit:contain;
    object-position:center;
    background:#fff;
    padding:8px;
    display:block;
}
@media(max-width:640px){
    .admin-card-photo{
        height:210px;
        object-fit:contain;
        object-position:center;
    }
}

/* Profil utilisateur */
.profile-menu{position:relative;display:flex;align-items:center}
.profile-menu-trigger{appearance:none;border:0;background:transparent;color:var(--ink);padding:4px 7px;display:flex;align-items:center;gap:8px;border-radius:12px;cursor:pointer;font:inherit}
.profile-menu-trigger:hover,.profile-menu.open .profile-menu-trigger{background:#edf5f2}
.profile-avatar-img,.profile-avatar-initials{width:36px;height:36px;border-radius:50%;display:grid;place-items:center;flex:0 0 36px}
.profile-avatar-img{object-fit:cover;border:2px solid #dce6e2;background:#fff}
.profile-avatar-initials{background:var(--green);color:#fff;font-size:.78rem;font-weight:800;border:2px solid #dce6e2}
.profile-menu-name{font-size:.86rem;color:#34574b;max-width:155px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.profile-chevron{font-size:.75rem;color:var(--muted)}
.profile-dropdown{display:none;position:absolute;top:calc(100% + 8px);left:0;min-width:245px;background:#fff;border:1px solid var(--line);border-radius:13px;box-shadow:0 14px 34px rgba(31,64,53,.16);padding:7px;z-index:30}
.profile-menu.open .profile-dropdown{display:block}
.profile-dropdown a{display:block!important;padding:10px 12px!important;border-radius:9px;text-decoration:none;color:#34574b;white-space:nowrap}
.profile-dropdown a:hover{background:#edf5f2}
.profile-page-grid{display:grid;grid-template-columns:minmax(250px,.72fr) minmax(360px,1.28fr);gap:20px;align-items:start}
.profile-card{text-align:center}
.profile-page-avatar{width:160px;height:160px;border-radius:50%;object-fit:cover;margin:4px auto 14px;border:5px solid #fff;box-shadow:0 0 0 1px var(--line),var(--shadow);background:#fff}
.profile-page-initials{display:grid;place-items:center;background:var(--green);color:#fff;font-size:3rem;font-weight:800}
.profile-separator{border:0;border-top:1px solid var(--line);margin:22px 0 6px}

@media(max-width:900px){
 .profile-menu{order:-1;width:100%}
 .profile-menu-trigger{width:100%;justify-content:flex-start;padding:8px}
 .profile-menu-name{max-width:none}
 .profile-dropdown{position:static;width:100%;box-shadow:none;margin-top:6px}
 .profile-page-grid{grid-template-columns:1fr}
}


/* Aide et autonomie administration */
.field-help,.image-file-info{font-size:.88rem;color:var(--muted);line-height:1.45;margin:7px 0}.image-file-info{padding:8px 10px;background:#f4f8f6;border-radius:8px}.help-panel{margin-bottom:18px;border-left:4px solid var(--green)}.help-panel h2{margin-top:0}.password-field{position:relative}.password-field input{padding-right:52px}.password-toggle{position:absolute;right:5px;top:5px;width:42px;height:36px;padding:0;background:#edf5f2;color:var(--green2)}.check-row{display:flex;align-items:center;gap:8px;font-weight:500;margin:7px 0}.check-row input{width:auto}.inline-details{margin-top:6px}.inline-details summary{cursor:pointer;color:var(--green2);font-weight:700}.inline-details form{min-width:260px;padding:10px;background:#f8fbfa;border:1px solid var(--line);border-radius:10px;margin-top:7px}


/* Affectations établissements visibles dans la liste des utilisateurs */
.user-establishment-badges{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.user-establishment-badge{white-space:nowrap}


/* V2.2 - filtres et lecture claire des utilisateurs */
.user-filter-panel{display:grid;grid-template-columns:minmax(210px,1fr) minmax(190px,.8fr) minmax(250px,1.2fr) auto;gap:12px;align-items:end;background:#fff;border:1px solid var(--line);border-radius:16px;padding:16px;margin:0 0 16px;box-shadow:var(--shadow)}
.user-filter-panel label{margin-top:0}
.user-filter-actions{display:flex;gap:8px;align-items:center}
.user-role-summary{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin:0 0 18px}
.user-role-summary-card{background:#fff;border:1px solid var(--line);border-radius:14px;padding:14px 16px;box-shadow:var(--shadow);display:flex;flex-direction:column;gap:2px}
.user-role-summary-card strong{font-size:1.5rem;color:var(--green)}
.user-role-summary-card span{font-size:.86rem;color:var(--muted)}
.user-role-badge{font-size:.78rem}
.user-role-badge.role-admin{background:#e9e5ff;color:#4b3a93}
.user-role-badge.role-contributor{background:#fff0d9;color:#8a5b09}
.user-role-badge.role-user{background:#e5f2ff;color:#315f83}
@media(max-width:900px){.user-filter-panel{grid-template-columns:1fr 1fr}.user-filter-actions{grid-column:1/-1}.user-role-summary{grid-template-columns:1fr 1fr}}
@media(max-width:640px){.user-filter-panel{grid-template-columns:1fr}.user-filter-actions{grid-column:auto;flex-direction:column}.user-filter-actions .btn,.user-filter-actions button{width:100%}.user-role-summary{grid-template-columns:1fr 1fr}}


/* V2.3 - écran accueil portrait + miniatures */
.display-screen{margin:0;min-height:100vh;background:#eef4f1;color:#173c31;font-family:Inter,Segoe UI,Arial,sans-serif}
.display-shell{width:min(100%,1080px);min-height:100vh;margin:0 auto;padding:32px 28px 24px;display:flex;flex-direction:column;gap:22px}
.display-header{display:flex;align-items:center;gap:24px;background:rgba(255,255,255,.94);border:1px solid rgba(220,230,226,.95);border-radius:24px;padding:22px 24px;box-shadow:0 12px 36px rgba(31,64,53,.10)}
.display-logo{width:150px;height:100px;object-fit:contain;flex:0 0 auto}
.display-header h1{margin:0;font-size:2.6rem;line-height:1.08;color:#214f40}
.display-datetime{display:flex;gap:12px;align-items:center;margin-top:10px;font-size:1.35rem;font-weight:750;color:#64746f}
.display-room-list{display:flex;flex-direction:column;gap:20px}
.display-room{background:rgba(255,255,255,.96);border-radius:24px;padding:22px 24px;box-shadow:0 12px 34px rgba(31,64,53,.10);border-left:12px solid #2f9b68}
.display-room.reserved{border-left-color:#c64a4a}
.display-room.soon{border-left-color:#d39325}
.display-room-top{display:grid;grid-template-columns:auto 1fr auto;gap:18px;align-items:start}
.display-room-photo{width:110px;height:82px;border-radius:14px;object-fit:contain;background:#fff;border:1px solid #dce6e2;padding:4px}
.display-room-heading{min-width:0}
.display-establishment{text-transform:uppercase;letter-spacing:.08em;font-size:.85rem;font-weight:850;color:#6c8179}
.display-room h2{margin:3px 0 0;font-size:2rem;color:#214f40}
.display-location{margin-top:3px;color:#64746f}
.display-status{font-size:1rem;font-weight:900;border-radius:999px;padding:10px 15px;background:#e1f3e9;color:#176343;white-space:nowrap}
.display-room.reserved .display-status{background:#f9dddd;color:#8e2f2f}
.display-room.soon .display-status{background:#fff1cf;color:#825609}
.display-current{margin-top:18px;padding:16px 18px;background:#f8fbfa;border-radius:16px}
.display-time{font-size:1.55rem;font-weight:900;color:#214f40}
.display-purpose{font-size:1.45rem;font-weight:850;margin-top:4px}
.display-person,.display-next{font-size:1.08rem;color:#50665e;margin-top:6px}
.display-day-title{margin-top:16px;font-weight:850;color:#496158}
.display-day-schedule{display:flex;flex-direction:column;gap:8px;margin-top:8px}
.display-slot{display:grid;grid-template-columns:auto 115px 1fr;gap:10px;align-items:center;padding:9px 11px;border-radius:12px;background:#f5f8f7}
.display-slot-photo{width:42px;height:42px;object-fit:contain;border-radius:8px;background:#fff;border:1px solid #dce6e2;padding:2px}
.display-slot-time{font-weight:900;color:#214f40}
.display-slot-text{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.display-footer{text-align:center;color:#64746f;font-size:.9rem;padding:4px 0 12px}
.display-empty{background:rgba(255,255,255,.95);padding:40px;border-radius:24px;text-align:center;font-size:1.3rem}
.display-admin-help{margin-bottom:18px}
@media(max-width:700px){.display-shell{padding:14px}.display-header h1{font-size:1.8rem}.display-room-top{grid-template-columns:auto 1fr}.display-status{grid-column:1/-1;justify-self:start}.display-room-photo{width:86px;height:66px}.display-slot{grid-template-columns:auto 90px 1fr}}

/* V2.4 - calendrier mensuel sur l'écran d'accueil */
.display-month-calendar{background:rgba(255,255,255,.97);border:1px solid rgba(220,230,226,.95);border-radius:24px;padding:20px;box-shadow:0 12px 34px rgba(31,64,53,.10)}
.display-calendar-head{display:flex;justify-content:space-between;align-items:flex-end;gap:16px;margin-bottom:14px}
.display-calendar-head h2{margin:2px 0 0;font-size:1.7rem}
.display-calendar-kicker{text-transform:uppercase;letter-spacing:.08em;font-size:.78rem;font-weight:850;color:#6c8179}
.display-calendar-legend{display:flex;gap:12px;flex-wrap:wrap;font-size:.78rem;color:#64746f}
.display-calendar-legend span{display:flex;align-items:center;gap:5px}
.cal-dot{width:10px;height:10px;border-radius:50%;display:inline-block;background:#d6e1dd}
.cal-dot.booked{background:#c64a4a}.cal-dot.today{background:#25775c}
.display-calendar-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:5px}
.display-calendar-dow{text-align:center;font-weight:850;font-size:.72rem;color:#64746f;padding:5px 0}
.display-calendar-day{min-height:112px;border:1px solid #e1e8e5;border-radius:11px;background:#fbfcfc;padding:5px;overflow:hidden}
.display-calendar-day.empty{background:transparent;border-color:transparent}
.display-calendar-day.today{outline:3px solid rgba(37,119,92,.28);background:#eef8f4}
.display-calendar-day.has-booking{background:#fff7f7}
.display-calendar-num{font-weight:900;font-size:.82rem;color:#214f40;margin-bottom:4px}
.display-calendar-events{display:flex;flex-direction:column;gap:4px}
.display-calendar-event{display:grid;grid-template-columns:28px 1fr;gap:5px;align-items:start;padding:4px;border-radius:7px;background:#fff;border:1px solid #eadede;min-width:0}
.display-calendar-event img{width:28px;height:28px;border-radius:5px;object-fit:contain;background:#fff;border:1px solid #e2e8e5;padding:1px}
.display-calendar-event div{min-width:0;display:flex;flex-direction:column}
.display-calendar-event strong{font-size:.58rem;line-height:1.15;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:#214f40}
.display-calendar-event span{font-size:.55rem;line-height:1.15;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:#3e514a}
.display-calendar-event small{font-size:.5rem;line-height:1.15;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:#6c8179}
.display-calendar-more{font-size:.55rem;font-weight:800;color:#8e2f2f;padding-left:3px}

@media(max-width:700px){
 .display-month-calendar{padding:12px}
 .display-calendar-head{align-items:flex-start;flex-direction:column}
 .display-calendar-day{min-height:90px;padding:3px}
 .display-calendar-event{grid-template-columns:22px 1fr;padding:2px}
 .display-calendar-event img{width:22px;height:22px}
}


/* V2.5 - calendrier compact + galerie défilante des salles */
.display-lower-grid{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(300px,.75fr);gap:20px;align-items:start}
.display-month-calendar{padding:16px}
.display-calendar-day{min-height:88px}
.display-calendar-head h2{font-size:1.5rem}
.display-calendar-event{grid-template-columns:24px 1fr}
.display-calendar-event img{width:24px;height:24px}
.display-calendar-event strong{font-size:.55rem}
.display-calendar-event span{font-size:.52rem}
.display-calendar-event small{font-size:.48rem}
.display-room-gallery{background:rgba(255,255,255,.97);border:1px solid rgba(220,230,226,.95);border-radius:24px;padding:16px;box-shadow:0 12px 34px rgba(31,64,53,.10);overflow:hidden}
.display-gallery-head h2{margin:2px 0 12px;font-size:1.5rem}
.display-gallery-track{display:flex;gap:12px;overflow-x:auto;scroll-snap-type:x mandatory;scrollbar-width:none;padding-bottom:2px}
.display-gallery-track::-webkit-scrollbar{display:none}
.display-gallery-card{flex:0 0 86%;scroll-snap-align:start;background:#f8fbfa;border:1px solid var(--line);border-radius:16px;overflow:hidden}
.display-gallery-card img{width:100%;height:220px;object-fit:contain;background:#fff;display:block}
.display-gallery-caption{padding:12px 14px;display:flex;flex-direction:column;gap:2px}
.display-gallery-caption strong{font-size:1.15rem;color:#214f40}
.display-gallery-caption span{font-size:.85rem;color:#64746f}
@media(max-width:900px){.display-lower-grid{grid-template-columns:1fr}.display-gallery-card{flex-basis:70%}}
@media(max-width:700px){.display-calendar-day{min-height:74px}.display-gallery-card{flex-basis:82%}.display-gallery-card img{height:180px}}


/* V2.6 - mise en page écran entièrement réglable */
.display-header{min-height:var(--display-header-height,150px)}
.display-header h1{font-size:var(--display-title-size,44px)}
.display-room{padding:var(--display-room-padding,22px)}
.display-room-photo{width:var(--display-room-photo-w,110px);height:var(--display-room-photo-h,82px)}
.display-calendar-day{min-height:var(--display-calendar-day-height,88px)}
.display-gallery-card{flex-basis:var(--display-gallery-card-width,86%)}
.display-gallery-card img{height:var(--display-gallery-image-height,220px)}

.display-lower-grid{grid-template-columns:minmax(0,calc(100% - var(--display-calendar-width,38%) - 10px)) minmax(0,var(--display-calendar-width,38%))}
.display-lower-grid.calendar-left .display-room-gallery{order:2}
.display-lower-grid.calendar-left .display-month-calendar{order:1}
.display-lower-grid.calendar-right .display-room-gallery{order:1}
.display-lower-grid.calendar-right .display-month-calendar{order:2}

@media(max-width:900px){
 .display-lower-grid{grid-template-columns:1fr}
 .display-lower-grid .display-room-gallery,.display-lower-grid .display-month-calendar{order:initial}
}


/* V3.0 - Design / Apparence et thèmes */
:root{--surface:#fff;--heading:#214f40;--nav-text:#34574b;--button-text:#fff;--radius-theme:16px}
body{background:var(--bg);color:var(--ink)}
.site-header,.card,.panel,form.box,.table-wrap,.login-card,.admin-card,.admin-create,.profile-dropdown,.calendar,.user-filter-panel,.user-role-summary-card,.display-room,.display-month-calendar,.display-room-gallery{background:var(--surface)}
h1,h2,h3{color:var(--heading)}
.topnav a,.brand,.admin-tabs a,.quick-edit>summary,.inline-details summary{color:var(--nav-text)}
.btn,button{background:var(--green);color:var(--button-text)}
.card,.panel,form.box,.table-wrap,.login-card,.admin-card,.admin-create,.calendar,.user-filter-panel,.user-role-summary-card{border-radius:var(--radius-theme)}
.design-active-summary{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin:0 0 20px}.design-active-summary>div{background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:14px 16px;display:flex;flex-direction:column;gap:4px}.design-active-summary span{font-size:.82rem;color:var(--muted)}.design-active-summary strong{font-size:1.15rem;color:var(--heading)}
.theme-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:16px;margin-bottom:22px}.theme-card{background:var(--surface);border:1px solid var(--line);border-radius:16px;padding:14px;box-shadow:var(--shadow)}.theme-card h3{margin:12px 0 4px}.theme-card form+form{margin-top:4px}
.theme-preview{height:132px;border:1px solid #d6dfdb;border-radius:var(--tp-radius,16px);background:var(--tp-bg);padding:10px;overflow:hidden}.tp-header{height:20px;background:var(--tp-accent);border-radius:7px;margin-bottom:10px}.tp-card{height:55px;background:var(--tp-surface);border-radius:8px;padding:10px;display:flex;flex-direction:column;gap:6px}.tp-card span{display:block;height:7px;border-radius:6px;background:var(--tp-text);opacity:.72}.tp-card span:last-child{width:62%;opacity:.35}.tp-button{width:70px;height:18px;background:var(--tp-accent);border-radius:8px;margin-top:8px}
.theme-color-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px 18px}.theme-color-grid input[type=color]{height:46px;padding:4px;cursor:pointer}.theme-live-preview{margin-top:18px;padding:16px;border:1px solid var(--line);border-radius:16px;background:#f4f7f6}.theme-live-preview .preview-title{font-size:1.15rem;font-weight:800;color:#214f40;margin-bottom:10px}.theme-live-preview .preview-card{background:#fff;border:1px solid #dce6e2;border-radius:16px;padding:14px;color:#243333}.theme-live-preview .preview-muted{color:#64746f;margin:6px 0}.theme-live-preview button{margin-top:8px}
@media(max-width:700px){.theme-color-grid,.design-active-summary{grid-template-columns:1fr}}


/* V3.1 - Tableau de bord, graphiques et journal intégré */
.dashboard-filters{display:grid;grid-template-columns:180px 190px minmax(240px,1fr) auto;gap:12px;align-items:end}
.dashboard-filter-actions{display:flex;gap:8px;align-items:center}
.dashboard-metrics{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:12px;margin:16px 0}
.dashboard-metric{background:#fff;border:1px solid var(--line);border-radius:16px;padding:16px;box-shadow:var(--shadow);display:flex;flex-direction:column;min-width:0}
.dashboard-metric strong{font-size:1.85rem;color:var(--green);line-height:1}
.dashboard-metric span{font-weight:850;margin-top:7px}
.dashboard-metric small{color:var(--muted);margin-top:3px}
.dashboard-grid-2{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin:16px 0}
.dashboard-chart{min-width:0}
.chart-head{display:flex;justify-content:space-between;gap:16px;align-items:flex-start}
.auth-total{display:flex;flex-direction:column;gap:4px;font-size:.84rem;font-weight:800;white-space:nowrap}
.auth-total .ok{color:#24704f}.auth-total .fail{color:#a33f3f}
.trend-chart{height:230px;display:flex;align-items:stretch;gap:5px;border-bottom:1px solid var(--line);padding:10px 2px 0;overflow-x:auto}
.trend-day{flex:1 0 18px;min-width:18px;display:flex;flex-direction:column;align-items:center;justify-content:flex-end}
.trend-bars{height:190px;width:100%;display:flex;gap:2px;align-items:flex-end;justify-content:center}
.trend-bars i{display:block;width:42%;border-radius:5px 5px 0 0;min-height:3px}
.trend-ok{background:#4a9b70}.trend-fail{background:#c76060}
.trend-day small{font-size:.55rem;color:var(--muted);transform:rotate(-45deg);transform-origin:center;margin-top:7px;white-space:nowrap}
.chart-legend{display:flex;gap:16px;margin-top:18px;font-size:.82rem;color:var(--muted)}
.legend-dot{display:inline-block;width:10px;height:10px;border-radius:50%;margin-right:5px}.legend-dot.ok{background:#4a9b70}.legend-dot.fail{background:#c76060}
.horizontal-bars{display:flex;flex-direction:column;gap:12px;margin-top:15px}
.hbar-row{display:flex;flex-direction:column;gap:5px}
.hbar-label{display:flex;justify-content:space-between;gap:10px;font-size:.9rem}
.hbar-track{height:12px;background:#edf2f0;border-radius:999px;overflow:hidden}
.hbar-track i{display:block;height:100%;background:#c76060;border-radius:999px}
.horizontal-bars.pages .hbar-track i{background:#4b82a8}
.hour-chart{height:230px;display:flex;align-items:flex-end;gap:4px;border-bottom:1px solid var(--line);padding-top:10px}
.hour-col{height:100%;flex:1;display:flex;flex-direction:column;justify-content:flex-end;align-items:center;min-width:0}
.hour-col i{width:70%;background:#7b6ca8;border-radius:5px 5px 0 0;min-height:2px}
.hour-col small{font-size:.58rem;color:var(--muted);margin-top:5px}
.dashboard-log-table td{vertical-align:top}
@media(max-width:1150px){.dashboard-metrics{grid-template-columns:repeat(3,1fr)}}
@media(max-width:900px){.dashboard-filters{grid-template-columns:1fr 1fr}.dashboard-filter-actions{grid-column:1/-1}.dashboard-grid-2{grid-template-columns:1fr}}
@media(max-width:650px){.dashboard-metrics{grid-template-columns:1fr 1fr}.dashboard-filters{grid-template-columns:1fr}.dashboard-filter-actions{grid-column:auto;flex-direction:column}.dashboard-filter-actions .btn,.dashboard-filter-actions button{width:100%}.chart-head{flex-direction:column}.auth-total{white-space:normal}}


/* ============================================================
   V3.2 - REFONTE GRAPHIQUE & ERGONOMIQUE GENERALE
   ============================================================ */
:root{
  --surface:#ffffff;
  --heading:#214f40;
  --nav-text:#34574b;
  --button-text:#ffffff;
  --radius-theme:16px;
  --soft-bg:color-mix(in srgb,var(--bg) 72%,var(--surface) 28%);
  --soft-accent:color-mix(in srgb,var(--green) 10%,var(--surface) 90%);
  --soft-accent-strong:color-mix(in srgb,var(--green) 18%,var(--surface) 82%);
  --shadow-soft:0 10px 32px rgba(20,50,40,.08);
  --shadow-hover:0 16px 40px rgba(20,50,40,.13);
}
html{scroll-behavior:smooth}
body.app-body{
  background:
    radial-gradient(circle at 12% -10%,color-mix(in srgb,var(--green) 8%,transparent),transparent 34%),
    var(--bg);
  color:var(--ink);
  min-height:100%;
}
h1,h2,h3{color:var(--heading);letter-spacing:-.018em}
h1{font-size:clamp(1.75rem,2.4vw,2.45rem);line-height:1.08}
h2{line-height:1.15}
p{max-width:78ch}
a{transition:color .16s ease,background-color .16s ease,border-color .16s ease,transform .16s ease}

/* Header */
.site-header{
  top:0;
  border-bottom:1px solid color-mix(in srgb,var(--line) 80%,transparent);
  background:color-mix(in srgb,var(--surface) 94%,transparent);
  backdrop-filter:blur(14px);
  box-shadow:0 4px 22px rgba(20,50,40,.045)
}
.header-inner{max-width:1440px;padding:10px 26px;gap:22px}
.brand{
  display:inline-flex;align-items:center;gap:10px;text-decoration:none;
  color:var(--heading);min-width:max-content
}
.brand-mark{
  width:38px;height:38px;border-radius:12px;display:grid;place-items:center;
  background:linear-gradient(145deg,var(--green),var(--green2));
  color:var(--button-text);font-weight:900;box-shadow:0 7px 18px color-mix(in srgb,var(--green) 25%,transparent)
}
.brand-copy{display:flex;flex-direction:column;line-height:1.02}
.brand-copy strong{font-size:.98rem;letter-spacing:.01em}
.brand-copy small{font-size:.68rem;color:var(--muted);font-weight:700;margin-top:3px}
.topnav{gap:4px}
.topnav>a{
  color:var(--nav-text);font-weight:720;padding:9px 12px;border-radius:11px;
  border:1px solid transparent
}
.topnav>a:hover{
  color:var(--heading);
  background:var(--soft-accent);
  border-color:color-mix(in srgb,var(--green) 15%,var(--line) 85%)
}
.profile-menu-trigger{
  border:1px solid var(--line)!important;background:var(--surface)!important;
  color:var(--ink)!important;border-radius:999px!important;padding:5px 10px 5px 5px!important;
  box-shadow:none!important
}
.profile-menu-trigger:hover{background:var(--soft-accent)!important}
.profile-dropdown{
  border:1px solid var(--line)!important;border-radius:14px!important;
  background:var(--surface)!important;box-shadow:var(--shadow-hover)!important
}
.profile-dropdown a:hover{background:var(--soft-accent)!important}

/* Main content */
.container{max-width:1440px;margin:28px auto 56px;padding:0 28px}
.page-head{
  margin:0 0 20px;padding:4px 2px;
  align-items:flex-start
}
.page-head p{margin:.45rem 0 0}
.muted{color:var(--muted)}

/* Administration navigation */
.admin-nav-shell{
  margin:4px 0 24px;padding:14px;border:1px solid var(--line);
  border-radius:calc(var(--radius-theme) + 4px);
  background:var(--surface);box-shadow:var(--shadow-soft)
}
.admin-nav-title{
  display:flex;align-items:baseline;gap:10px;padding:0 4px 10px;
  border-bottom:1px solid var(--line);margin-bottom:10px
}
.admin-nav-title span{font-weight:900;color:var(--heading)}
.admin-nav-title small{color:var(--muted)}
.admin-tabs{gap:7px;margin:0;overflow-x:auto;padding-bottom:1px;scrollbar-width:thin}
.admin-tabs a{
  white-space:nowrap;background:transparent;border:1px solid transparent;
  padding:9px 12px;border-radius:10px;color:var(--nav-text);font-weight:760
}
.admin-tabs a:hover{
  background:var(--soft-accent);border-color:color-mix(in srgb,var(--green) 16%,var(--line) 84%);
  color:var(--heading)
}

/* Cards and panels */
.card,.panel,form.box,.admin-card,.admin-create,.table-wrap,.calendar,.login-card{
  background:var(--surface)!important;border-color:var(--line)!important;
  border-radius:var(--radius-theme)!important;box-shadow:var(--shadow-soft)!important
}
.panel,form.box{padding:22px}
.card{padding:22px}
a.card:hover{transform:translateY(-3px);box-shadow:var(--shadow-hover)!important;border-color:color-mix(in srgb,var(--green) 28%,var(--line) 72%)!important}
.admin-card{transition:transform .16s ease,box-shadow .16s ease}
.admin-card:hover{box-shadow:var(--shadow-hover)!important}
.admin-create>summary{background:var(--soft-accent)!important;color:var(--heading)!important}
.help-panel{
  border-left:5px solid var(--green)!important;
  background:linear-gradient(90deg,var(--soft-accent),var(--surface) 55%)!important
}

/* Forms */
label{color:var(--heading);font-size:.91rem}
input,select,textarea{
  background:var(--surface);color:var(--ink);border-color:var(--line);
  border-radius:11px;padding:11px 13px
}
input:hover,select:hover,textarea:hover{border-color:color-mix(in srgb,var(--green) 32%,var(--line) 68%)}
input:focus,select:focus,textarea:focus{
  outline:3px solid color-mix(in srgb,var(--green) 16%,transparent);
  border-color:var(--green);box-shadow:0 0 0 1px var(--green)
}
.field-help,.appearance-note,.security-note{color:var(--muted)!important}

/* Buttons */
.btn,button{
  min-height:40px;border-radius:11px;padding:9px 15px;
  background:linear-gradient(180deg,var(--green),var(--green2));
  color:var(--button-text);font-weight:800;
  box-shadow:0 5px 14px color-mix(in srgb,var(--green) 18%,transparent)
}
.btn:hover,button:hover{transform:translateY(-1px);filter:brightness(1.025)}
.btn.secondary,button.secondary{
  background:var(--soft-accent);color:var(--heading);box-shadow:none;
  border:1px solid color-mix(in srgb,var(--green) 14%,var(--line) 86%)
}
.btn.danger,button.danger{background:linear-gradient(180deg,#be4d4d,#9f3737)}
.text-link{color:var(--green);font-weight:800}

/* Badges */
.badge{border:1px solid transparent;background:var(--soft-accent);color:var(--heading);padding:5px 10px}
.badge.pending{background:#fff3d8;color:#80550a;border-color:#f0dfb6}
.badge.approved{background:#dff3e8;color:#176343;border-color:#c5e8d5}
.badge.rejected{background:#f9dddd;color:#8e2f2f;border-color:#efc1c1}
.badge.cancelled{background:#e8eceb;color:#58635f;border-color:#d9dfdd}

/* Tables */
.table-wrap{overflow:auto}
table{background:var(--surface)}
th{
  position:sticky;top:0;z-index:1;background:var(--soft-bg)!important;color:var(--heading)!important;
  font-size:.78rem;text-transform:uppercase;letter-spacing:.035em
}
td,th{border-color:var(--line)!important}
tbody tr:nth-child(even){background:color-mix(in srgb,var(--bg) 45%,var(--surface) 55%)}
tbody tr:hover{background:var(--soft-accent)}
.photo-thumb{border:1px solid var(--line);background:var(--surface)}

/* User dashboard cards */
.cards .card h2{font-size:1.25rem;margin-top:14px}
.metric{font-size:2.25rem;color:var(--green);letter-spacing:-.04em}

/* Admin dashboard */
.dashboard-metrics{gap:14px}
.dashboard-metric{
  background:
    linear-gradient(145deg,var(--surface),color-mix(in srgb,var(--green) 3%,var(--surface) 97%));
  border:1px solid var(--line);border-radius:calc(var(--radius-theme) + 2px);
  padding:18px;box-shadow:var(--shadow-soft);position:relative;overflow:hidden
}
.dashboard-metric::after{
  content:"";position:absolute;width:64px;height:64px;border-radius:50%;
  right:-24px;top:-24px;background:color-mix(in srgb,var(--green) 8%,transparent)
}
.dashboard-metric strong{font-size:2.15rem;color:var(--green)}
.dashboard-metric span{color:var(--heading)}
.dashboard-chart{
  min-height:320px;
  background:var(--surface)!important;
  border:1px solid var(--line)!important
}
.trend-chart,.hour-chart{border-color:var(--line)}
.hbar-track{background:color-mix(in srgb,var(--line) 55%,var(--surface) 45%)}
.chart-legend{padding-top:4px}

/* Authentication/login */
.login-shell{padding:36px 20px}
.login-card{
  padding:32px!important;border-radius:calc(var(--radius-theme) + 8px)!important;
  box-shadow:0 24px 70px rgba(20,50,40,.14)!important
}
.login-card h1{text-align:center;margin-bottom:6px}
.login-card>p.muted{text-align:center;margin-top:0}
.password-field{position:relative}
.password-toggle{box-shadow:none!important;background:var(--soft-accent)!important;color:var(--heading)!important}

/* Resource cards */
.resource-card img,.placeholder-photo{background:var(--surface)!important}
.resource-card .card-body{background:var(--surface)}
.hero{border:1px solid var(--line);box-shadow:var(--shadow-soft)}

/* Calendar */
.calendar,.cal-day,.cal-head{background:var(--surface)!important}
.cal-head{background:var(--soft-bg)!important;color:var(--heading)}
.cal-day.empty{background:var(--soft-bg)!important}

/* Flashes */
.flash{border:1px solid transparent;border-radius:12px;font-weight:650}
.flash.success{border-color:#c5e8d5}
.flash.danger{border-color:#efc1c1}
.flash.info{border-color:#cbddec}

/* Design page */
.theme-grid{gap:16px}
.theme-card{
  border-radius:calc(var(--radius-theme) + 3px)!important;
  background:var(--surface)!important;border:1px solid var(--line)!important;
  box-shadow:var(--shadow-soft)!important
}
.theme-card:hover{box-shadow:var(--shadow-hover)!important;transform:translateY(-2px)}
.design-preview{border-color:var(--line)!important}

/* Public display follows selected PUBLIC theme */
.display-screen{background:var(--bg)!important;color:var(--ink)!important}
.display-header,.display-room,.display-month-calendar,.display-room-gallery{
  background:color-mix(in srgb,var(--surface) 96%,transparent)!important;
  border-color:var(--line)!important
}
.display-header h1,.display-room h2,.display-calendar-head h2,.display-gallery-head h2{color:var(--heading)!important}

/* Responsive polish */
@media(max-width:1100px){
  .header-inner{padding-inline:18px}
  .container{padding-inline:18px}
  .profile-menu-name{display:none}
}
@media(max-width:900px){
  .site-header{backdrop-filter:none}
  .topnav{
    top:66px;left:12px;right:12px;background:var(--surface)!important;
    border-color:var(--line)!important;border-radius:16px!important;
    box-shadow:var(--shadow-hover)!important;padding:10px
  }
  .topnav>a{padding:12px}
  .admin-nav-title{align-items:flex-start;flex-direction:column;gap:2px}
}
@media(max-width:650px){
  .header-inner{padding:9px 12px}
  .container{padding:0 12px;margin-top:18px}
  .brand-copy small{display:none}
  .brand-mark{width:34px;height:34px;border-radius:10px}
  .panel,form.box,.card{padding:16px!important}
  .dashboard-metrics{grid-template-columns:1fr 1fr}
  table.responsive-table tr{
    background:var(--surface);border:1px solid var(--line);border-radius:12px;
    margin-bottom:10px;padding:12px
  }
  table.responsive-table td::before{color:var(--heading)!important}
}

/* Dark-theme compatibility: all major surfaces use theme variables */
@media (prefers-reduced-motion: reduce){
  *{scroll-behavior:auto!important;transition:none!important;animation:none!important}
}

/* V3.3 - Mails / SMTP */
.mail-status-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:14px}


/* V4.0 - Notifications, historique, contenu public, securite */
.notification-bell{position:relative;display:inline-flex;align-items:center;justify-content:center;width:42px;height:42px;border-radius:999px;text-decoration:none;background:var(--soft-accent);border:1px solid var(--line);font-size:1.1rem}
.notification-bell span{position:absolute;right:-4px;top:-5px;min-width:20px;height:20px;padding:0 5px;border-radius:999px;background:#b53b3b;color:#fff;font-size:.7rem;font-weight:900;display:grid;place-items:center}
.notification-list{display:grid;gap:12px}.notification-item{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:18px;border:1px solid var(--line);border-radius:var(--radius-theme);background:var(--surface);box-shadow:var(--shadow-soft)}.notification-item.unread{border-left:5px solid var(--green);background:var(--soft-accent)}.notification-item h3{margin:0 0 4px}.notification-item p{margin:0 0 5px}.notification-item small{color:var(--muted)}
.timeline{display:grid;gap:0;max-width:900px}.timeline-item{display:grid;grid-template-columns:170px 1fr;gap:22px;padding:18px 0;border-bottom:1px solid var(--line)}.timeline-item time{color:var(--muted);font-weight:700}.timeline-item p{margin:.35rem 0}.timeline-item small{color:var(--muted)}
.security-alert{border-left:6px solid #c45d3d!important;background:#fff7ed!important}
.public-content-layer{position:fixed;inset:0;z-index:9999;pointer-events:none;overflow:hidden}.public-overlay{position:absolute;pointer-events:none;max-width:var(--public-size,60%);animation:publicIn .45s ease both}.public-overlay.popup{left:50%;top:50%;transform:translate(-50%,-50%);pointer-events:auto}.public-overlay.pos-top{left:50%;top:5%;transform:translateX(-50%)}.public-overlay.pos-bottom{left:50%;bottom:5%;transform:translateX(-50%)}.public-overlay.pos-left{left:3%;top:50%;transform:translateY(-50%)}.public-overlay.pos-right{right:3%;top:50%;transform:translateY(-50%)}.public-overlay-card{background:rgba(255,255,255,.96);border:1px solid rgba(220,230,226,.9);border-radius:22px;padding:18px;box-shadow:0 18px 60px rgba(0,0,0,.22);text-align:center}.public-overlay.animation .public-overlay-card{background:transparent;border:0;box-shadow:none}.public-overlay img,.public-overlay video{max-width:100%;max-height:48vh;border-radius:14px}.public-overlay h2{margin:10px 0 4px}.public-overlay p{margin:4px auto;max-width:60ch}.public-overlay.hide{opacity:0;transition:opacity .55s ease}@keyframes publicIn{from{opacity:0;transform:translate(-50%,-46%) scale(.96)}to{opacity:1}}
.cal-event.unavailable{background:#ece3f7;color:#654784}
@media(max-width:650px){.timeline-item{grid-template-columns:1fr;gap:5px}.notification-item{align-items:flex-start;flex-direction:column}.public-overlay{max-width:92%}}


/* V4.0.2 - Couleurs avancées par module */
.site-header{background:var(--module-header-bg)!important;color:var(--module-header-text)!important}
.brand,.brand-copy strong,.topnav>a{color:var(--module-header-text)!important}
.admin-nav-shell{background:var(--module-admin-nav-bg)!important}
.panel,form.box,.card,.admin-card,.admin-create,.table-wrap,.calendar,.login-card{
  background:var(--module-panel-bg)!important;color:var(--module-panel-text)!important
}
th{background:var(--module-table-header-bg)!important;color:var(--module-table-header-text)!important}

/* Écran public : chaque zone peut maintenant avoir sa propre couleur */
.display-header{
  background:var(--public-header-bg)!important;
  color:var(--public-header-text)!important
}
.display-header h1,.display-datetime{color:var(--public-header-text)!important}

.display-room{
  background:var(--public-room-bg)!important;
  color:var(--public-room-text)!important
}
.display-room h2,.display-room-heading,.display-location,.display-establishment,.display-day-title{
  color:var(--public-room-text)!important
}

/* Bloc derrière "Disponible pour le reste de la journée" */
.display-current{
  background:var(--public-current-bg)!important;
  color:var(--public-current-text)!important
}
.display-current .display-purpose,
.display-current .display-time,
.display-current .display-person,
.display-current .display-next{
  color:var(--public-current-text)!important
}

/* Badges d'état */
.display-status{
  background:var(--public-status-available-bg)!important;
  color:var(--public-status-available-text)!important
}
.display-room.reserved .display-status{
  background:var(--public-status-reserved-bg)!important;
  color:var(--public-status-reserved-text)!important
}
.display-room.soon .display-status{
  background:var(--public-status-soon-bg)!important;
  color:var(--public-status-soon-text)!important
}

/* Planning du jour */
.display-slot{
  background:var(--public-schedule-bg)!important;
  color:var(--public-schedule-text)!important
}
.display-slot-time,.display-slot-text{color:var(--public-schedule-text)!important}

/* Calendrier public */
.display-month-calendar{
  background:var(--public-calendar-bg)!important;
  color:var(--public-calendar-text)!important
}
.display-calendar-head h2,.display-calendar-kicker,
.display-calendar-day,.display-calendar-num,
.display-calendar-event,.display-calendar-more{
  color:var(--public-calendar-text)!important
}

/* Galerie / carrousel */
.display-room-gallery{
  background:var(--public-gallery-bg)!important;
  color:var(--public-gallery-text)!important
}
.display-gallery-head h2,.display-gallery-card,.display-gallery-card strong,.display-gallery-card span{
  color:var(--public-gallery-text)!important
}

/* V5 - Réservations avancées / sécurité */
.establishment-check-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:8px 14px;margin-top:8px}.establishment-check-grid .check-row{margin:0;padding:9px 10px;border:1px solid var(--line);border-radius:10px;background:var(--surface)}
.passkey-login-box{margin-top:18px;padding-top:16px;border-top:1px solid var(--line)}
.recovery-codes{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin:16px 0}.recovery-codes code,.mfa-secret{display:block;padding:10px;border:1px solid var(--line);border-radius:9px;background:var(--soft-bg);font-size:1rem;letter-spacing:.06em;text-align:center}.mfa-card #mfa-qrcode{display:flex;justify-content:center;align-items:center;min-height:190px;margin:18px 0}.mfa-card #mfa-qrcode img,.mfa-card #mfa-qrcode canvas{border:10px solid #fff;border-radius:8px}
@media(max-width:640px){.recovery-codes{grid-template-columns:1fr}.establishment-check-grid{grid-template-columns:1fr}}


/* V5.0.2 - Confirmation et Contributeur Admin */
.aped-confirm-dialog{border:0;border-radius:18px;padding:0;max-width:min(520px,calc(100vw - 28px));box-shadow:0 24px 70px rgba(20,50,40,.22)}
.aped-confirm-dialog::backdrop{background:rgba(17,32,28,.42);backdrop-filter:blur(2px)}
.aped-confirm-card{padding:24px;background:var(--surface,#fff);color:var(--ink,#243333);min-width:min(460px,calc(100vw - 40px))}
.aped-confirm-card h3{margin-top:0}
.role-contrib_admin{background:#e7e2f7!important;color:#59458c!important}


/* V5.0.7 - Photos des ressources côté utilisateur : image entière, sans recadrage */
.resource-card img{
    width:100%;
    height:260px;
    object-fit:contain!important;
    object-position:center!important;
    background:#fff!important;
    padding:10px;
    display:block;
}
@media(max-width:640px){
    .resource-card img{height:230px;object-fit:contain!important;}
}


/* V5.0.10 - Logo APED Espoir dans l'en-tête */
.brand-logo-wrap{
  width:68px;
  height:68px;
  display:flex;
  align-items:center;
  justify-content:center;
  flex:0 0 68px;
  border-radius:12px;
  overflow:hidden;
  background:#fff;
}
.brand-logo-img{
  display:block;
  width:100%;
  height:100%;
  object-fit:contain;
  padding:3px;
}
@media (max-width:700px){
  .brand-logo-wrap{width:42px;height:42px;flex-basis:42px}
}


/* V5.0.17 - affichage public compact et stable */
.display-room-list{gap:12px}
.display-room{padding:12px 16px;border-radius:18px;border-left-width:9px;min-height:142px;max-height:142px;overflow:hidden}
.display-room-top{grid-template-columns:auto 1fr auto;gap:12px;align-items:center}
.display-room-photo{width:82px;height:62px;border-radius:10px}
.display-establishment{font-size:.72rem}
.display-room h2{font-size:1.55rem;margin:1px 0 0}
.display-location{font-size:.82rem;margin-top:1px}
.display-status{font-size:.82rem;padding:7px 11px}
.display-current.display-current-compact{margin-top:9px;padding:9px 12px;border-radius:12px;min-height:42px;display:flex;align-items:center;gap:10px;white-space:nowrap;overflow:hidden}
.display-current-compact .display-time{font-size:1rem;flex:0 0 auto}
.display-current-compact .display-availability{font-size:1rem;font-weight:850;flex:0 0 auto;color:#214f40}
.display-current-compact .display-summary{font-size:.92rem;color:#50665e;overflow:hidden;text-overflow:ellipsis;min-width:0}
.display-current-compact .display-next-inline{font-size:.82rem;color:#64746f;flex:0 0 auto;margin-left:auto}
@media(max-width:700px){
 .display-room{min-height:138px;max-height:138px;padding:10px 12px}
 .display-room-photo{width:68px;height:52px}
 .display-room h2{font-size:1.25rem}
 .display-status{grid-column:auto;justify-self:end;font-size:.72rem;padding:6px 8px}
 .display-current.display-current-compact{gap:7px}
 .display-current-compact .display-summary{font-size:.82rem}
 .display-current-compact .display-next-inline{display:none}
}


/* V5.0.19 - Capacité et description dans le manège des salles */
.display-gallery-caption{
  gap:4px;
}
.display-gallery-establishment{
  font-size:.82rem;
  color:#64746f;
}
.display-gallery-capacity{
  font-size:.84rem;
  font-weight:700;
  color:#315f50;
}
.display-gallery-description{
  margin:3px 0 0;
  font-size:.82rem;
  line-height:1.25;
  color:#4d5f59;
  display:-webkit-box;
  -webkit-line-clamp:2;
  -webkit-box-orient:vertical;
  overflow:hidden;
  min-height:0;
}


/* V5.0.20 - Regroupement des ressources par catégorie */
.resource-group-section{
  margin:26px 0 34px;
}
.resource-group-heading{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:16px;
  margin:0 0 14px;
  padding:14px 18px;
  background:var(--surface,#fff);
  border:1px solid var(--line,#d7e3df);
  border-radius:16px;
  box-shadow:0 8px 22px rgba(31,64,53,.06);
}
.resource-group-heading>div{
  display:flex;
  align-items:center;
  gap:10px;
}
.resource-group-heading h2{
  margin:0;
  font-size:1.45rem;
}
.resource-group-icon{
  font-size:1.35rem;
}
.resource-group-count{
  font-size:.9rem;
  color:var(--muted,#64746f);
  font-weight:700;
}
.resource-group-section .admin-card-grid{
  margin-top:0;
}


/* V5.0.21 - Alignement configurable du titre/date de l'affichage public */
.display-header{
  position:relative;
}
.display-header>div{
  flex:1;
  min-width:0;
  text-align:var(--display-header-align,left);
}
.display-header[style*="--display-header-align:center"]>div,
.display-screen[style*="--display-header-align:center"] .display-header>div{
  position:absolute;
  left:50%;
  transform:translateX(-50%);
  width:min(72%,900px);
  text-align:center;
}
.display-header[style*="--display-header-align:right"]>div,
.display-screen[style*="--display-header-align:right"] .display-header>div{
  margin-left:auto;
  text-align:right;
}
.display-screen[style*="--display-header-align:center"] .display-datetime{
  justify-content:center;
}
.display-screen[style*="--display-header-align:right"] .display-datetime{
  justify-content:flex-end;
}


/* V5.0.22 - Message central de disponibilité des salles */
.display-current-message{
  justify-content:center;
  text-align:center;
}
.display-current-message .display-availability{
  width:100%;
  text-align:center;
  font-weight:800;
}
.display-availability-reserved{
  color:#9d2e2e;
}


/* V5.0.23 - Mise en évidence du message "Salle actuellement réservée" */
.display-current-message .display-availability-reserved{
  display:inline-flex;
  width:auto;
  margin:0 auto;
  padding:8px 16px;
  border-radius:999px;
  background:#fde2e2;
  border:1px solid #f3bcbc;
  color:#a22d2d;
  font-weight:800;
  line-height:1.15;
  justify-content:center;
  align-items:center;
}


/* V5.0.24 - Détails de la réservation en cours sur l'affichage public */
.display-current-reserved-details{
  flex-direction:column;
  gap:7px;
  align-items:center;
}
.display-reservation-meta{
  width:100%;
  display:flex;
  justify-content:center;
  align-items:center;
  gap:22px;
  flex-wrap:wrap;
  font-size:.88rem;
  color:#425650;
}
.display-reservation-meta span{
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
  max-width:46%;
}
@media(max-width:800px){
  .display-reservation-meta{
    gap:6px;
    flex-direction:column;
  }
  .display-reservation-meta span{
    max-width:100%;
  }
}


/* V5.0.26 - Détails de la prochaine réservation */
.display-next-details{
  flex-direction:column;
  gap:7px;
  align-items:center;
}
.display-next-details .display-reservation-meta{
  width:100%;
  display:flex;
  justify-content:center;
  align-items:center;
  gap:22px;
  flex-wrap:wrap;
  font-size:.88rem;
  color:#425650;
}
.display-next-details .display-reservation-meta span{
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
  max-width:46%;
}
@media(max-width:800px){
  .display-next-details .display-reservation-meta{
    gap:6px;
    flex-direction:column;
  }
  .display-next-details .display-reservation-meta span{
    max-width:100%;
  }
}


/* V5.0.27 - Correction d'affichage des détails dans les bandeaux */
.display-current-message{
  overflow:hidden;
}
.display-next-details,
.display-current-reserved-details{
  min-height:0;
}
.display-next-details .display-reservation-meta,
.display-current-reserved-details .display-reservation-meta{
  margin-top:2px;
  line-height:1.15;
}
.display-next-details .display-reservation-meta span,
.display-current-reserved-details .display-reservation-meta span{
  max-width:44%;
  font-size:.78rem;
}
@media(min-width:801px){
  .display-next-details,
  .display-current-reserved-details{
    flex-direction:row;
    justify-content:center;
    gap:14px;
    flex-wrap:nowrap;
  }
  .display-next-details .display-availability,
  .display-current-reserved-details .display-availability-reserved{
    flex:0 0 auto;
    width:auto;
  }
  .display-next-details .display-reservation-meta,
  .display-current-reserved-details .display-reservation-meta{
    width:auto;
    flex:1 1 auto;
    justify-content:center;
    gap:14px;
    flex-wrap:nowrap;
    min-width:0;
  }
  .display-next-details .display-reservation-meta span,
  .display-current-reserved-details .display-reservation-meta span{
    min-width:0;
    max-width:none;
    flex:0 1 auto;
  }
}

.display-calendar-day.adjacent-month{background:#f7f9f8;opacity:.78}.display-calendar-day.adjacent-month .display-calendar-num{color:#6d7d78}.display-calendar-day.adjacent-month .display-calendar-num small{font-size:.62rem;font-weight:700;margin-left:2px;color:#87958f}.display-calendar-day.adjacent-month.has-booking{opacity:.92}


/* V5.0.30 - Info-bulle sur les réservations du calendrier public */
.display-calendar-event{
  cursor:help;
}
.display-calendar-event[title]{
  position:relative;
}


/* V5.0.31 - Vraie info-bulle visuelle au survol du calendrier */
.display-calendar-event[data-calendar-tooltip]{
  position:relative;
  cursor:pointer;
}
.display-calendar-event[data-calendar-tooltip]::after{
  content:attr(data-calendar-tooltip);
  position:absolute;
  z-index:1000;
  left:50%;
  bottom:calc(100% + 9px);
  transform:translateX(-50%) translateY(4px);
  min-width:220px;
  max-width:320px;
  padding:10px 12px;
  border-radius:10px;
  background:#173f36;
  color:#fff;
  font-size:.78rem;
  font-weight:600;
  line-height:1.35;
  white-space:pre-line;
  text-align:left;
  box-shadow:0 8px 22px rgba(0,0,0,.20);
  opacity:0;
  visibility:hidden;
  pointer-events:none;
  transition:opacity .15s ease,transform .15s ease,visibility .15s ease;
}
.display-calendar-event[data-calendar-tooltip]::before{
  content:"";
  position:absolute;
  z-index:1001;
  left:50%;
  bottom:calc(100% + 3px);
  transform:translateX(-50%);
  border:6px solid transparent;
  border-top-color:#173f36;
  opacity:0;
  visibility:hidden;
  pointer-events:none;
  transition:opacity .15s ease,visibility .15s ease;
}
.display-calendar-event[data-calendar-tooltip]:hover::after,
.display-calendar-event[data-calendar-tooltip]:hover::before{
  opacity:1;
  visibility:visible;
}
.display-calendar-event[data-calendar-tooltip]:hover::after{
  transform:translateX(-50%) translateY(0);
}
.display-calendar-day,
.display-calendar-events{
  overflow:visible;
}

/* V5.0.32 - Calendrier glissant sur 5 semaines */
.display-calendar-day.rolling-past{
  background:#f5f7f6;
  opacity:.62;
}
.display-calendar-day.rolling-past.has-booking{
  opacity:.78;
}
.display-calendar-num small{
  font-size:.62rem;
  font-weight:700;
  margin-left:2px;
  color:#87958f;
}


/* V5.0.33 - Rubriques de réservation + vignettes Mes réservations */
.resource-public-group{margin:26px 0 34px}
.resource-public-group-head{display:flex;align-items:center;justify-content:space-between;gap:14px;margin:0 0 14px;padding:12px 16px;border:1px solid var(--line);border-radius:16px;background:var(--surface)}
.resource-public-group-head h2{margin:0;font-size:1.45rem}
.resource-public-group-count{font-size:.9rem;font-weight:700;color:var(--muted)}
.booking-resource-cell{display:flex;align-items:center;gap:10px;min-width:220px}
.booking-resource-thumb{width:70px;height:50px;object-fit:cover;border-radius:9px;border:1px solid var(--line);background:#fff;flex:0 0 70px}
.booking-resource-thumb-empty{display:flex;align-items:center;justify-content:center;font-size:1.3rem;background:#f4f7f6}
@media(max-width:700px){.resource-public-group-head{align-items:flex-start}.booking-resource-thumb{width:58px;height:44px;flex-basis:58px}}


/* V5.0.38 - Galerie jusqu'à 5 photos par ressource */
.resource-photo-admin-grid{
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(170px,1fr));
  gap:14px;
  margin-top:12px;
}
.resource-photo-admin-item{
  border:1px solid var(--line);
  border-radius:14px;
  padding:10px;
  background:var(--surface);
}
.resource-photo-admin-item>img{
  width:100%;
  height:120px;
  object-fit:contain;
  border-radius:10px;
  background:#fff;
  display:block;
}
.resource-photo-admin-meta{margin-top:8px}
.resource-photo-admin-actions{
  display:flex;
  flex-wrap:wrap;
  gap:6px;
  margin-top:8px;
}
.resource-photo-add-form{
  grid-column:1/-1;
  border:1px dashed var(--line);
  border-radius:14px;
  padding:14px;
}
.resource-photo-gallery{
  display:flex;
  gap:8px;
  flex-wrap:wrap;
  margin-top:10px;
}
.resource-photo-thumb{
  width:86px;
  height:66px;
  padding:3px;
  border:2px solid transparent;
  border-radius:10px;
  background:#fff;
  cursor:pointer;
  overflow:hidden;
}
.resource-photo-thumb img{
  width:100%;
  height:100%;
  object-fit:cover;
  border-radius:7px;
}
.resource-photo-thumb:hover,
.resource-photo-thumb.is-primary{
  border-color:#25775c;
}
.resource-main-photo{
  transition:opacity .15s ease;
}


/* V5.0.39 - Objet de réservation central + couleur configurable */
.display-room-top-featured{
  display:grid;
  grid-template-columns:auto minmax(220px,1fr) minmax(260px,1.25fr) auto;
  align-items:center;
  gap:16px;
}
.display-room-top-featured .display-room-photo{
  grid-column:1;
}
.display-room-top-featured .display-room-heading{
  grid-column:2;
  min-width:0;
}
.display-purpose-feature{
  grid-column:3;
  min-width:0;
  text-align:center;
  padding:2px 12px;
  border-left:1px solid rgba(39,84,70,.14);
  border-right:1px solid rgba(39,84,70,.14);
}
.display-purpose-label{
  display:block;
  margin-bottom:3px;
  font-size:.72rem;
  line-height:1;
  text-transform:uppercase;
  letter-spacing:.08em;
  font-weight:800;
  color:#6c7b76;
}
.display-purpose-text{
  display:block;
  color:var(--display-purpose-color,#0F5A43);
  font-size:clamp(1.15rem,2.25vw,2.15rem);
  line-height:1.05;
  font-weight:900;
  text-transform:uppercase;
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
}
.display-room-top-featured .display-status{
  grid-column:4;
  justify-self:end;
}
.display-current-reserved-details .display-reservation-meta,
.display-next-details .display-reservation-meta{
  flex:0 1 auto;
}
.display-color-setting{
  display:flex;
  align-items:center;
  gap:10px;
}
.display-color-setting input[type="color"]{
  width:64px;
  min-width:64px;
  height:42px;
  padding:3px;
  cursor:pointer;
}
.display-color-setting code{
  font-size:.92rem;
}
@media(max-width:900px){
  .display-room-top-featured{
    grid-template-columns:auto 1fr auto;
  }
  .display-purpose-feature{
    grid-column:1/-1;
    grid-row:2;
    border-left:0;
    border-right:0;
    border-top:1px solid rgba(39,84,70,.12);
    padding-top:8px;
  }
  .display-room-top-featured .display-status{
    grid-column:3;
  }
}

/* V5.0.40 - Objet long défilant */
.display-purpose-text{position:relative;overflow:hidden;text-overflow:clip;white-space:nowrap}
.display-purpose-marquee-inner{display:inline-block;white-space:nowrap;will-change:transform}
.display-purpose-text.is-marquee .display-purpose-marquee-inner{padding-left:100%;animation:aped-purpose-marquee var(--purpose-marquee-duration,12s) linear infinite}
@keyframes aped-purpose-marquee{0%,8%{transform:translateX(0)}92%,100%{transform:translateX(calc(-100% - 18px))}}
@media (prefers-reduced-motion:reduce){.display-purpose-text.is-marquee .display-purpose-marquee-inner{animation:none;padding-left:0}}


/* V5.0.41 - Correctif robuste du défilement de l'objet */
.display-purpose-text{
  display:block !important;
  width:100% !important;
  min-width:0 !important;
  overflow:hidden !important;
  white-space:nowrap !important;
  text-overflow:clip !important;
}
.display-purpose-marquee-track{
  display:inline-flex;
  align-items:center;
  width:max-content;
  min-width:max-content;
  gap:72px;
  white-space:nowrap;
  will-change:transform;
}
.display-purpose-marquee-copy{
  display:inline-block;
  flex:none;
  white-space:nowrap;
}
.display-purpose-text.is-marquee .display-purpose-marquee-track{
  animation:aped-purpose-marquee-v541 var(--purpose-marquee-duration,14s) linear infinite !important;
}
@keyframes aped-purpose-marquee-v541{
  0%,10%{transform:translateX(0)}
  90%,100%{transform:translateX(calc(-50% - 36px))}
}
/* On force volontairement l'animation sur cet écran d'affichage lorsqu'un objet est trop long. */
@media (prefers-reduced-motion: reduce){
  .display-purpose-text.is-marquee .display-purpose-marquee-track{
    animation:aped-purpose-marquee-v541 var(--purpose-marquee-duration,14s) linear infinite !important;
  }
}

/* V5.0.42 - Toutes les réservations visibles : rotation automatique + fenêtre détail */
.calendar-event-extra{display:none}
.display-calendar-more{border:0;background:transparent;cursor:pointer;text-align:left;font:inherit;font-size:.55rem;font-weight:800;color:#8e2f2f;padding:1px 3px;text-decoration:underline;text-underline-offset:2px}
.display-calendar-events.is-paused .display-calendar-more{color:#6d2525}
.aped-calendar-modal{border:0;border-radius:18px;padding:0;width:min(680px,92vw);max-height:82vh;box-shadow:0 22px 70px rgba(0,0,0,.28)}
.aped-calendar-modal::backdrop{background:rgba(18,38,32,.55)}
.aped-calendar-modal-card{padding:20px;background:#fff;color:#173f36}
.aped-calendar-modal-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:14px}
.aped-calendar-modal-head h3{margin:0;font-size:1.2rem}
.aped-calendar-modal-close{border:0;border-radius:9px;padding:8px 12px;cursor:pointer;font-weight:800}
.aped-calendar-modal-list{display:flex;flex-direction:column;gap:8px;max-height:60vh;overflow:auto}
.aped-calendar-modal-list .display-calendar-event{grid-template-columns:42px 1fr;padding:8px;cursor:default}
.aped-calendar-modal-list .display-calendar-event img{width:42px;height:42px}
.aped-calendar-modal-list .display-calendar-event strong{font-size:.82rem}
.aped-calendar-modal-list .display-calendar-event span{font-size:.76rem}
.aped-calendar-modal-list .display-calendar-event small{font-size:.7rem}
.aped-calendar-modal-list .display-calendar-event::before,.aped-calendar-modal-list .display-calendar-event::after{display:none!important}


/* V5.0.51 - Correctif écran portrait : une seule copie de l'objet visible. */
.display-purpose-marquee-copy[aria-hidden="true"]{display:none!important}
.display-purpose-marquee-track{gap:0!important}
.display-purpose-text.is-marquee .display-purpose-marquee-track{
  animation:aped-purpose-marquee-v551 var(--purpose-marquee-duration,12s) ease-in-out infinite alternate!important;
}
@keyframes aped-purpose-marquee-v551{
  0%,12%{transform:translateX(0)}
  88%,100%{transform:translateX(var(--purpose-scroll-distance,0px))}
}
@media (prefers-reduced-motion:reduce){
  .display-purpose-text.is-marquee .display-purpose-marquee-track{
    animation:aped-purpose-marquee-v551 var(--purpose-marquee-duration,12s) ease-in-out infinite alternate!important;
  }
}

/* V5.0.52 - Personnalisation autonome de l'objet sur l'écran public. */
.display-purpose-text{
  font-size:var(--display-purpose-font-size,34px)!important;
  font-family:var(--display-purpose-font-family,Inter,Segoe UI,Arial,sans-serif)!important;
  font-weight:var(--display-purpose-font-weight,900)!important;
  color:var(--display-purpose-color,#0F5A43)!important;
}

/* V5.0.57 - Favoris, signalements et statistiques */
.favorite-form{display:flex;justify-content:flex-end;margin-bottom:10px}
.issue-report-panel{margin-top:16px}
.usage-row{display:grid;grid-template-columns:minmax(160px,1fr) minmax(140px,3fr) 54px;gap:14px;align-items:center;padding:8px 0;border-bottom:1px solid var(--line)}
.usage-bar{height:12px;background:var(--surface-2,#eef3f0);border-radius:999px;overflow:hidden}
.usage-bar span{display:block;height:100%;background:var(--accent,#25775c);border-radius:999px}
.hour-grid{height:190px;display:grid;grid-template-columns:repeat(24,minmax(18px,1fr));gap:5px;align-items:end;padding-top:12px}
.hour-item{height:160px;display:flex;flex-direction:column;justify-content:flex-end;align-items:center;gap:5px;min-width:0}
.hour-bar{display:block;width:70%;min-height:3px;background:var(--accent,#25775c);border-radius:5px 5px 0 0}
.hour-item small{font-size:.68rem;writing-mode:vertical-rl;transform:rotate(180deg);color:var(--muted)}
@media(max-width:760px){.usage-row{grid-template-columns:1fr 2fr 40px}.hour-grid{overflow-x:auto;grid-template-columns:repeat(24,24px)}}

/* V5.0.61 - En-tete : titre Réservations APED Espoir plus lisible */
.brand-copy strong{font-size:1.18rem}
.brand-copy small{font-size:.78rem}
@media(max-width:640px){
  .brand-copy strong{font-size:1.05rem}
  .brand-copy small{font-size:.72rem}
}

/* V5.0.67 - Présentation professionnelle du calendrier Outlook dans Utilisateurs */
.calendar-admin-panel{padding:22px!important}
.calendar-admin-head{display:flex;align-items:flex-start;justify-content:space-between;gap:18px;margin-bottom:18px}
.calendar-admin-head h2{margin:0 0 5px}
.calendar-admin-head p{margin:0}
.calendar-admin-stats{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}
.calendar-stat{display:inline-flex;align-items:center;gap:6px;padding:8px 11px;border-radius:999px;font-size:.9rem;font-weight:750;white-space:nowrap}
.calendar-stat strong{font-size:1rem}
.calendar-stat.enabled{background:#e1f3e9;color:#176343;border:1px solid #bfe3d0}
.calendar-stat.disabled{background:#f2f4f3;color:#65736b;border:1px solid #dfe5e2}
.calendar-bulk-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}
.calendar-bulk-card{display:grid;grid-template-columns:auto 1fr;gap:12px;align-items:start;margin:0!important;padding:16px!important;border:1px solid var(--line)!important;border-radius:15px!important;background:color-mix(in srgb,var(--surface) 92%,var(--soft-accent) 8%)!important;box-shadow:none!important}
.calendar-bulk-card h3{margin:1px 0 4px;font-size:1.02rem}
.calendar-bulk-card p{margin:0 0 10px;font-size:.9rem;line-height:1.35}
.calendar-bulk-card select{width:100%;margin:0 0 10px}
.calendar-bulk-icon{display:grid;place-items:center;width:38px;height:38px;border-radius:11px;background:var(--soft-accent);font-size:1.15rem}
.calendar-bulk-card .actions{margin-top:8px;gap:7px}
.calendar-bulk-card .actions button{font-size:.85rem}
.user-calendar-control{width:min(100%,410px);border:1px solid var(--line);border-radius:13px;padding:10px 11px;background:#f7f9f8;display:flex;align-items:center;justify-content:space-between;gap:10px}
.user-calendar-control.is-enabled{background:#f0f8f4;border-color:#bfe3d0}
.user-calendar-control.is-disabled{background:#f7f8f8;border-color:#dfe5e2}
.user-calendar-state{min-width:0;display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:9px;flex:1}
.user-calendar-icon{font-size:1.1rem}
.user-calendar-state strong{display:block;font-size:.9rem;color:var(--heading)}
.user-calendar-state small{display:block;color:var(--muted);font-size:.74rem;line-height:1.25;margin-top:2px}
.calendar-state-badge{font-size:.68rem;font-weight:900;letter-spacing:.03em;border-radius:999px;padding:5px 7px;white-space:nowrap}
.is-enabled .calendar-state-badge{background:#d7f0e2;color:#12613e}
.is-disabled .calendar-state-badge{background:#e9eceb;color:#66726d}
.user-calendar-control form{margin:0}
.user-calendar-control button{white-space:nowrap}
@media(max-width:1100px){.calendar-bulk-grid{grid-template-columns:1fr}.calendar-admin-head{flex-direction:column}.calendar-admin-stats{justify-content:flex-start}.user-calendar-control{width:100%;flex-wrap:wrap}}
@media(max-width:680px){.calendar-admin-panel{padding:16px!important}.calendar-bulk-card{grid-template-columns:1fr}.calendar-bulk-icon{width:34px;height:34px}.user-calendar-state{grid-template-columns:auto 1fr}.calendar-state-badge{grid-column:2;justify-self:start}.user-calendar-control{align-items:stretch}.user-calendar-control form,.user-calendar-control button{width:100%}}

/* V5.0.68 - Présentation professionnelle de la sécurité / mot de passe dans Utilisateurs */
.user-security-control{width:min(100%,410px);border:1px solid #d9e2dd;border-radius:13px;padding:10px 11px;background:#f7f9f8;display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap}
.user-security-state{min-width:0;display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:9px;flex:1 1 240px}
.user-security-icon{font-size:1.1rem}
.user-security-state strong{display:block;font-size:.9rem;color:var(--heading)}
.user-security-state small{display:block;color:var(--muted);font-size:.74rem;line-height:1.25;margin-top:2px}
.security-state-badge{font-size:.68rem;font-weight:900;letter-spacing:.03em;border-radius:999px;padding:5px 7px;white-space:nowrap;background:#e7f0ec;color:#365e50}
.user-security-actions{display:flex;align-items:center;gap:7px;flex-wrap:wrap;margin-left:auto}
.user-security-actions form{margin:0}
.user-security-actions button{white-space:nowrap}
.security-password-details{position:relative;margin:0}
.security-password-details>summary{list-style:none;cursor:pointer;display:inline-flex;align-items:center;min-height:36px;padding:7px 11px;border:1px solid var(--line);border-radius:10px;background:var(--surface);color:var(--green2);font-weight:800;font-size:.86rem}
.security-password-details>summary::-webkit-details-marker{display:none}
.security-password-details[open]>summary{background:var(--soft-accent)}
.security-password-details>form{margin-top:8px;padding:12px;border:1px solid var(--line);border-radius:12px;background:#fff;min-width:290px;max-width:360px}
.security-password-details label{display:block;margin-top:8px}
.security-password-details input{width:100%}
@media(max-width:1100px){.user-security-control{width:100%}.user-security-actions{margin-left:0}}
@media(max-width:680px){.user-security-state{grid-template-columns:auto 1fr}.security-state-badge{grid-column:2;justify-self:start}.user-security-actions{width:100%;align-items:stretch}.user-security-actions form,.user-security-actions button,.security-password-details,.security-password-details>summary{width:100%}.security-password-details>summary{justify-content:center}.security-password-details>form{min-width:0;max-width:none;width:100%}}

/* V5.0.69 - Etat visuel du droit de changement direct des mots de passe */
.user-password-permission-control{width:min(100%,410px);border:1px solid var(--line);border-radius:13px;padding:10px 11px;background:#f7f9f8;display:flex;align-items:center;justify-content:space-between;gap:10px}
.user-password-permission-control.is-enabled{background:#f0f8f4;border-color:#bfe3d0}
.user-password-permission-control.is-disabled{background:#f7f8f8;border-color:#dfe5e2}
.user-password-permission-state{min-width:0;display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:9px;flex:1}
.user-password-permission-icon{font-size:1.1rem}
.user-password-permission-state strong{display:block;font-size:.9rem;color:var(--heading)}
.user-password-permission-state small{display:block;color:var(--muted);font-size:.74rem;line-height:1.25;margin-top:2px}
.password-permission-badge{font-size:.68rem;font-weight:900;letter-spacing:.03em;border-radius:999px;padding:5px 7px;white-space:nowrap}
.user-password-permission-control.is-enabled .password-permission-badge{background:#d7f0e2;color:#12613e}
.user-password-permission-control.is-disabled .password-permission-badge{background:#e9eceb;color:#66726d}
.user-password-permission-control form{margin:0}
.user-password-permission-control button{white-space:nowrap}
@media(max-width:1100px){.user-password-permission-control{width:100%;flex-wrap:wrap}}
@media(max-width:680px){.user-password-permission-state{grid-template-columns:auto 1fr}.password-permission-badge{grid-column:2;justify-self:start}.user-password-permission-control{align-items:stretch}.user-password-permission-control form,.user-password-permission-control button{width:100%}}

/* V5.0.70 - console organisation menus + états utilisateurs */
.menu-layout-console{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;align-items:start}
.menu-layout-console>.menu-layout-save{grid-column:1/-1;position:sticky;bottom:12px;background:var(--surface);border:1px solid var(--line);padding:12px;border-radius:14px;z-index:5}
.menu-role-card{margin:0}
.menu-role-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:12px}
.menu-role-head h2{margin:0 0 4px}
.menu-sort-list{display:grid;gap:8px}
.menu-sort-item{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 12px;border:1px solid var(--line);border-radius:12px;background:var(--surface)}
.menu-visible-check{display:flex;align-items:center;gap:9px;margin:0;font-weight:700;min-width:0}
.menu-visible-check span{overflow-wrap:anywhere}
.menu-sort-actions{display:flex;gap:6px;flex:0 0 auto}
.user-feature-status-grid{display:flex;flex-wrap:wrap;gap:7px;width:100%;margin:0 0 2px}
.feature-status{display:inline-flex;align-items:center;gap:5px;padding:5px 8px;border-radius:999px;font-size:.73rem;font-weight:800;border:1px solid var(--line);white-space:nowrap}
.feature-status.on{background:#e1f3e9;color:#176343;border-color:#bfe4d1}
.feature-status.off{background:#f0f2f1;color:#66736f;border-color:#dfe5e2}
.feature-status.pending{background:#fff4dc;color:#8a5a00;border-color:#f0d49a}
.feature-status b{font-size:.7rem;letter-spacing:.02em}
.user-danger-zone{display:flex;flex-wrap:wrap;gap:8px;align-items:center;width:100%;margin-top:5px;padding-top:9px;border-top:1px solid var(--line)}
@media(max-width:980px){.menu-layout-console{grid-template-columns:1fr}}

/* V5.0.71 - lisibilite console organisation des menus */
.menu-role-card{min-width:0}
.menu-sort-item{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:14px;min-height:64px;padding:10px 12px}
.menu-visible-check{display:grid;grid-template-columns:auto auto minmax(0,1fr);align-items:center;gap:10px;width:100%;min-width:0}
.menu-visible-check input[type="checkbox"]{width:18px;height:18px;margin:0;flex:none}
.menu-item-label{font-weight:800;white-space:normal;overflow-wrap:normal;word-break:normal;line-height:1.25;min-width:0}
.menu-state{display:inline-flex;align-items:center;justify-content:center;min-width:76px;padding:5px 8px;border-radius:999px;font-size:.69rem;font-weight:900;letter-spacing:.02em;white-space:nowrap;border:1px solid var(--line)}
.menu-state.on{background:#e1f3e9;color:#176343;border-color:#bfe4d1}
.menu-state.off{background:#f0f2f1;color:#66736f;border-color:#dfe5e2}
.menu-sort-actions button{width:38px;min-width:38px;height:38px;padding:0;font-size:1rem}
@media(max-width:1180px){.menu-layout-console{grid-template-columns:1fr}}
@media(max-width:620px){.menu-visible-check{grid-template-columns:auto minmax(0,1fr)}.menu-state{grid-column:2;grid-row:2;justify-self:start}.menu-item-label{grid-column:2;grid-row:1}.menu-sort-item{align-items:start}}

/* V5.0.72 - Organisation des boutons de la rubrique Utilisateurs */
.menu-layout-section-title{grid-column:1/-1;margin:18px 0 2px;padding:16px 18px;border:1px solid var(--line,#dce7e2);border-radius:16px;background:var(--surface,#fff)}
.menu-layout-section-title h2{margin:0 0 6px;color:var(--heading,#174f43)}
.menu-item-copy{display:flex;flex-direction:column;gap:2px;min-width:0;flex:1}
.menu-item-copy small{color:var(--muted,#6b7772);font-weight:400;line-height:1.3}
.user-actions-organized{display:flex;flex-wrap:wrap;gap:10px;align-items:flex-start;width:100%}
.user-action-organized-item{min-width:0}
.user-action-security,.user-action-calendar,.user-action-password_permission{flex:1 1 390px;max-width:100%}
.user-action-role,.user-action-email,.user-action-establishments,.user-action-notifications,.user-action-account_toggle,.user-action-delete{flex:0 1 auto}
.user-action-account_toggle,.user-action-delete{align-self:center}
.user-action-organized-item>.user-security-control,.user-action-organized-item>.user-calendar-control,.user-action-organized-item>.user-password-permission-control{margin:0;width:100%}
.user-action-organized-item>.inline-details{margin:0}
@media (max-width:980px){.user-actions-organized{display:grid;grid-template-columns:1fr}.user-action-organized-item{width:100%}.user-action-role,.user-action-email,.user-action-establishments,.user-action-notifications,.user-action-account_toggle,.user-action-delete{width:auto}.user-action-organized-item>.inline-details{width:100%}}

/* V5.0.76 - Filtres utilisateurs rapides + correction affichage droit MDP */
.user-filter-shell{background:var(--surface,#fff);border:1px solid var(--line,#dce7e2);border-radius:16px;padding:16px;margin:0 0 16px;box-shadow:var(--shadow)}
.user-filter-head{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;margin-bottom:12px}
.user-filter-head h2{margin:0 0 3px;color:var(--heading,#174f43);font-size:1.08rem}
.user-filter-head p{margin:0}
.user-filter-shell .user-filter-panel{margin:0;box-shadow:none;border:0;border-radius:0;padding:0;background:transparent}
.user-role-quickfilters{display:flex;gap:8px;flex-wrap:wrap;margin:0 0 14px}
.user-role-chip{display:inline-flex;align-items:center;min-height:36px;padding:7px 12px;border:1px solid var(--line,#dce7e2);border-radius:999px;background:#f6f8f7;color:var(--green2,#174f43);font-weight:800;font-size:.84rem;text-decoration:none}
.user-role-chip:hover{background:#eef5f1}
.user-role-chip.is-active{background:#e1f3e9;border-color:#bfe4d1;color:#176343;box-shadow:inset 0 0 0 1px #d1eadc}

/* Le bloc de droit MDP doit rester lisible même dans la colonne Actions */
.user-action-password_permission{flex:1 1 100%;width:100%;max-width:none}
.user-password-permission-control{width:100%;max-width:none;display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:14px;padding:13px 14px}
.user-password-permission-state{display:grid;grid-template-columns:auto minmax(220px,1fr) auto;align-items:center;gap:11px;min-width:0}
.user-password-permission-state>div{min-width:0}
.user-password-permission-state strong{font-size:.92rem;line-height:1.25;white-space:normal}
.user-password-permission-state small{font-size:.77rem;line-height:1.35;max-width:540px}
.password-permission-badge{justify-self:end;align-self:center}
.user-password-permission-control>.actions{margin:0;display:flex;align-items:center;justify-content:flex-end;gap:7px;flex-wrap:wrap}
.user-password-permission-control>.actions form{margin:0}
.user-password-permission-control>.actions button{min-height:38px}
@media(max-width:1180px){.user-password-permission-control{grid-template-columns:1fr}.user-password-permission-control>.actions{justify-content:flex-start}.user-password-permission-state{grid-template-columns:auto minmax(0,1fr)}.password-permission-badge{grid-column:2;justify-self:start}}
@media(max-width:700px){.user-filter-head{flex-direction:column}.user-filter-head .btn{width:100%}.user-role-quickfilters{display:grid;grid-template-columns:1fr 1fr}.user-role-chip{justify-content:center;text-align:center}.user-password-permission-state{grid-template-columns:auto 1fr}.password-permission-badge{grid-column:2}.user-password-permission-control>.actions,.user-password-permission-control>.actions form,.user-password-permission-control>.actions button{width:100%}}

/* V5.0.80 - Hauteur stable du calendrier public, alignee sur la galerie des salles */
@media(min-width:901px){
  .display-lower-grid{align-items:stretch}
  .display-room-gallery,.display-month-calendar{min-height:0}
  .display-month-calendar{
    display:flex;
    flex-direction:column;
    overflow:hidden;
  }
  .display-calendar-head{flex:0 0 auto}
  .display-calendar-grid{
    flex:1 1 auto;
    min-height:0;
    grid-template-rows:auto repeat(5,minmax(0,1fr));
    align-content:stretch;
  }
  .display-calendar-day{
    min-height:0!important;
    height:auto;
    overflow:hidden;
  }
  .display-calendar-events{
    min-height:0;
    max-height:calc(100% - 22px);
    overflow:hidden;
  }
  .display-calendar-event{flex:0 0 auto}
}

/* V5.0.81 - Documents PDF des ressources */
.resource-documents-public{margin-top:16px;padding-top:14px;border-top:1px solid #dce6e2}
.resource-documents-public h3{margin:0 0 10px;color:#174f40}
.resource-document-public-row,.resource-document-admin-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 0;border-bottom:1px solid #e5ece9}
.resource-document-public-row:last-child,.resource-document-admin-row:last-child{border-bottom:0}
.resource-document-admin-list{display:grid;gap:6px}
.resource-document-add-form{margin-top:14px;padding-top:14px;border-top:1px solid #dce6e2}
@media(max-width:760px){.resource-document-public-row,.resource-document-admin-row{align-items:flex-start;flex-direction:column}.resource-document-public-row .actions,.resource-document-admin-row .actions{width:100%}}

/* V5.0.82 - gestion en masse des validateurs */
.bulk-validator-panel{margin-bottom:20px}
.bulk-validator-panel>summary{font-weight:700}
.bulk-validator-summary{padding:12px 14px;border:1px solid #d9e6df;border-radius:12px;background:#f7fbf9}
.bulk-validator-summary strong{display:block;margin-bottom:4px;color:#176343}
.bulk-delegation-list{margin:0 16px 16px;padding:14px;border:1px solid #d9e6df;border-radius:12px;background:#fff}
.bulk-delegation-list h3{margin:0 0 10px}
.bulk-delegation-row{display:flex;justify-content:space-between;gap:18px;align-items:flex-start;padding:9px 0;border-top:1px solid #edf2ef}
.bulk-delegation-row:first-of-type{border-top:0}
.bulk-delegation-row span{color:#66756d;text-align:right}
@media(max-width:900px){.bulk-delegation-row{display:block}.bulk-delegation-row span{display:block;text-align:left;margin-top:4px}}

/* V5.0.83 - Libellé clair du mode interne/externe et écran public vraiment responsive en hauteur */
.badge.approval-owner{
  white-space:normal;
  line-height:1.25;
  font-size:.72rem;
  max-width:250px;
  text-align:left;
  vertical-align:top;
}
@media(min-width:901px){
  .display-lower-grid{min-height:0}
  .display-room-gallery,.display-month-calendar{overflow:hidden;min-height:0}
  .display-room-gallery{display:flex;flex-direction:column}
  .display-gallery-head{flex:0 0 auto}
  .display-gallery-track{flex:1 1 auto;min-height:0;align-items:stretch}
  .display-gallery-card{height:100%;min-height:0;display:flex;flex-direction:column}
  .display-gallery-card img{flex:1 1 auto;min-height:0;height:auto!important;max-height:none;object-fit:contain}
  .display-gallery-caption{flex:0 0 auto}
}

/* V5.0.84 - PC/paysage : calendrier lisible sans compression des reservations.
   Le mode portrait de la V5.0.83 reste inchange pour les ecrans d'affichage. */
@media (min-width:901px) and (orientation:landscape){
  .display-lower-grid{align-items:stretch}
  .display-month-calendar{
    height:auto;
    min-height:0;
    overflow:visible;
  }
  .display-calendar-grid{
    flex:0 0 auto;
    min-height:0;
    grid-template-rows:auto repeat(5,minmax(var(--display-calendar-day-height,88px),auto));
    align-content:start;
  }
  .display-calendar-day{
    min-height:var(--display-calendar-day-height,88px)!important;
    height:auto;
    overflow:hidden;
  }
  .display-calendar-events{
    min-height:0;
    max-height:none;
    overflow:visible;
  }
  .display-room-gallery{
    height:auto;
    align-self:stretch;
  }
}

/* V5.0.85 - Logo d'en-tete agrandi + badges de profil */
.brand-logo-wrap{
  width:92px;
  height:82px;
  flex:0 0 92px;
  border-radius:14px;
}
.brand-logo-img{padding:2px}
.profile-menu-identity{display:flex;flex-direction:column;align-items:flex-start;gap:4px;min-width:0}
.profile-role-badges{display:flex;align-items:center;gap:4px;flex-wrap:wrap}
.profile-role-badge{display:inline-flex;align-items:center;white-space:nowrap;border-radius:999px;padding:2px 7px;font-size:.62rem;line-height:1.35;font-weight:800;letter-spacing:.01em;background:#edf3f1;color:#50615b;border:1px solid #dce6e2}
.profile-role-badge.role-user{background:#e9f3fb;color:#2d6285;border-color:#d5e6f2}
.profile-role-badge.role-contributor{background:#fff0d6;color:#946008;border-color:#f3dfb8}
.profile-role-badge.role-contrib-admin{background:#eee7ff;color:#6542a8;border-color:#dfd2fb}
.profile-role-badge.role-admin{background:#eee7ff;color:#55309c;border-color:#d9c9fa}
.profile-role-badge.validator{background:#dff3e8;color:#176343;border-color:#c9e8d7}
@media(max-width:900px){
  .brand-logo-wrap{width:72px;height:64px;flex-basis:72px}
  .profile-role-badge{font-size:.58rem;padding:2px 6px}
}
@media(max-width:640px){
  .brand-logo-wrap{width:54px;height:50px;flex-basis:54px}
  .profile-role-badges{display:none}
}

/* V5.0.86 - Logo public nettement agrandi + calendrier PC contenu dans le bloc voisin */
.display-logo{
  width:280px!important;
  height:180px!important;
  max-width:30vw;
  object-fit:contain;
  flex:0 0 auto;
}
@media(max-width:900px){
  .display-logo{width:220px!important;height:140px!important;max-width:34vw}
}
@media(max-width:640px){
  .display-logo{width:150px!important;height:100px!important;max-width:38vw}
}

/* Sur PC/paysage, conserver les deux panneaux du bas à la même hauteur.
   Le calendrier compresse ses 5 semaines à l'intérieur du panneau au lieu de déborder. */
@media (min-width:901px) and (orientation:landscape){
  .display-lower-grid{align-items:stretch!important;min-height:0}
  .display-room-gallery,.display-month-calendar{
    min-height:0!important;
    overflow:hidden!important;
  }
  .display-month-calendar{
    display:flex!important;
    flex-direction:column!important;
  }
  .display-calendar-head{flex:0 0 auto;margin-bottom:8px}
  .display-calendar-grid{
    flex:1 1 auto!important;
    min-height:0!important;
    grid-template-rows:auto repeat(5,minmax(0,1fr))!important;
    align-content:stretch!important;
    gap:4px;
  }
  .display-calendar-dow{padding:2px 0;font-size:.69rem}
  .display-calendar-day{
    min-height:0!important;
    height:auto!important;
    padding:3px!important;
    overflow:hidden!important;
  }
  .display-calendar-num{font-size:.76rem;margin-bottom:2px}
  .display-calendar-events{
    min-height:0!important;
    max-height:calc(100% - 18px)!important;
    overflow:hidden!important;
    gap:2px!important;
  }
  .display-calendar-event{
    grid-template-columns:20px minmax(0,1fr)!important;
    gap:3px!important;
    padding:2px!important;
    min-height:0!important;
  }
  .display-calendar-event img{width:20px!important;height:20px!important}
  .display-calendar-event strong{font-size:.52rem!important}
  .display-calendar-event span{font-size:.49rem!important}
  .display-calendar-event small{font-size:.45rem!important}
  .display-calendar-more{font-size:.49rem!important;line-height:1.05}
}

/* V5.0.87 - PC/paysage : panneaux Galerie + Calendrier plus hauts et reservations lisibles */
@media (min-width:901px) and (orientation:landscape){
  .display-lower-grid{
    align-items:stretch!important;
  }
  .display-room-gallery,
  .display-month-calendar{
    height:clamp(520px,55vh,680px)!important;
    min-height:520px!important;
    max-height:680px!important;
    overflow:hidden!important;
  }
  .display-room-gallery{
    display:flex!important;
    flex-direction:column!important;
  }
  .display-gallery-track{
    flex:1 1 auto!important;
    min-height:0!important;
  }
  .display-gallery-card{
    height:100%!important;
  }
  .display-month-calendar{
    display:flex!important;
    flex-direction:column!important;
  }
  .display-calendar-head{
    flex:0 0 auto!important;
    margin-bottom:10px!important;
  }
  .display-calendar-grid{
    flex:1 1 auto!important;
    min-height:0!important;
    grid-template-rows:auto repeat(5,minmax(72px,1fr))!important;
    align-content:stretch!important;
    gap:6px!important;
  }
  .display-calendar-dow{
    padding:4px 0!important;
    font-size:.76rem!important;
  }
  .display-calendar-day{
    min-height:72px!important;
    height:auto!important;
    padding:5px!important;
    overflow:hidden!important;
  }
  .display-calendar-num{
    font-size:.82rem!important;
    margin-bottom:3px!important;
  }
  .display-calendar-events{
    min-height:0!important;
    max-height:calc(100% - 20px)!important;
    overflow:hidden!important;
    gap:3px!important;
  }
  .display-calendar-event{
    grid-template-columns:26px minmax(0,1fr)!important;
    gap:4px!important;
    padding:3px!important;
  }
  .display-calendar-event img{
    width:26px!important;
    height:26px!important;
  }
  .display-calendar-event strong{font-size:.60rem!important}
  .display-calendar-event span{font-size:.56rem!important}
  .display-calendar-event small{font-size:.52rem!important}
  .display-calendar-more{font-size:.56rem!important;line-height:1.08!important}
}

/* V5.0.88 - Comptes utilisateurs compacts */
.user-list-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:18px}.user-list-heading h2{margin:0}.user-list-tools{display:flex;gap:7px;flex-wrap:wrap}.user-compact-table th,.user-compact-table td{padding:9px 12px;vertical-align:middle}.user-compact-table .admin-user-row>td:last-child{min-width:430px}.user-compact-table .admin-user-row .actions{margin-top:0}.user-compact-table .user-feature-status-grid{gap:5px;margin:0 0 5px}.user-compact-table .feature-status{padding:3px 7px;font-size:.68rem}.user-account-options{width:100%;margin-top:3px;border-top:1px solid var(--line)}.user-account-options>summary{cursor:pointer;list-style:none;display:inline-flex;align-items:center;gap:6px;margin-top:5px;padding:5px 9px;border-radius:8px;background:#eef5f2;color:var(--green2);font-size:.78rem;font-weight:800}.user-account-options>summary::-webkit-details-marker{display:none}.user-account-options[open]>summary{margin-bottom:8px;background:#dfeee8}.user-account-options:not([open]) .user-actions-organized{display:none}.user-account-options[open] .user-actions-organized{padding-top:2px}@media(max-width:900px){.user-list-heading{align-items:flex-start;flex-direction:column}.user-compact-table .admin-user-row>td:last-child{min-width:0}.user-list-tools{width:100%}.user-list-tools button{flex:1}}
\n\n/* V5.0.91 - PC : galerie et calendrier public plus hauts, sans compression des reservations.\n   Les ecrans portrait / muraux conservent leur comportement precedent. */\n@media (min-width:901px) and (orientation:landscape){\n  .display-room-gallery,\n  .display-month-calendar{\n    height:clamp(700px,72vh,920px)!important;\n    min-height:700px!important;\n    max-height:920px!important;\n  }\n  .display-calendar-grid{\n    grid-template-rows:auto repeat(5,minmax(108px,1fr))!important;\n    gap:7px!important;\n  }\n  .display-calendar-day{\n    min-height:108px!important;\n    padding:6px!important;\n  }\n  .display-calendar-events{\n    max-height:calc(100% - 22px)!important;\n    gap:4px!important;\n  }\n  .display-calendar-event{\n    grid-template-columns:30px minmax(0,1fr)!important;\n    gap:5px!important;\n    padding:4px!important;\n  }\n  .display-calendar-event img{width:30px!important;height:30px!important}\n  .display-calendar-event strong{font-size:.66rem!important}\n  .display-calendar-event span{font-size:.61rem!important}\n  .display-calendar-event small{font-size:.56rem!important}\n  .display-calendar-more{font-size:.60rem!important;line-height:1.12!important}\n}\n\n/* Calendrier de disponibilites d'une ressource : heure + objet lisibles. */\n.cal-event{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}\n
/* V5.0.96 - regroupement des ressources par établissement */
.resource-public-establishment-group{margin-top:22px}
.resource-public-establishment-group .resource-public-group-head{padding:12px 16px;border-radius:16px;background:rgba(255,255,255,.72);border:1px solid var(--border,#c9d9d2)}
.resource-public-establishment-group .resource-public-group-head h2{margin:0;font-size:1.2rem}
.resource-public-establishment-group .resource-public-group-count{white-space:nowrap}
@media (max-width:760px){.resource-public-establishment-group .resource-public-group-head{align-items:flex-start;gap:8px}.resource-public-establishment-group .resource-public-group-head h2{font-size:1.05rem}}

/* V5.0.98 - Signalement pleine largeur */
.issue-report-full{margin:22px 0 24px;width:100%}
.issue-resource-current{margin:12px 0 14px;padding:12px 14px;background:#f4f8f6;border:1px solid var(--line);border-radius:10px}

/* V5.0.99 - sélection rapide du bénéficiaire */
.beneficiary-picker{margin:4px 0 10px;padding:14px;background:#f8fbfa;border:1px solid var(--line);border-radius:12px}.beneficiary-filter-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px 16px}.beneficiary-picker [data-beneficiary-select].is-empty{background:#fff4f4;border-color:#dba9a9}.beneficiary-picker [data-beneficiary-count]{font-weight:700;color:var(--green2)}
@media(max-width:700px){.beneficiary-filter-grid{grid-template-columns:1fr}}

/* V5.1.01 - Calendrier accueil : rotation verticale et aperçu complet au survol PC. */
.display-calendar-event.calendar-rotate-in{animation:aped-calendar-rotate-in .35s ease both}
@keyframes aped-calendar-rotate-in{from{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}
.aped-calendar-day-hover{position:fixed;z-index:9999;background:#fff;color:#173f36;border:1px solid #cfdcd7;border-radius:14px;box-shadow:0 18px 50px rgba(17,48,38,.25);padding:12px;max-height:min(520px,72vh);overflow:auto}
.aped-calendar-day-hover-head{font-weight:900;font-size:.95rem;margin:0 0 9px;padding-bottom:8px;border-bottom:1px solid #e3ebe8}
.aped-calendar-day-hover-list{display:flex;flex-direction:column;gap:7px}
.aped-calendar-day-hover-list .display-calendar-event{display:grid!important;grid-template-columns:42px minmax(0,1fr)!important;padding:8px!important;gap:8px!important;cursor:default}
.aped-calendar-day-hover-list .display-calendar-event img{width:42px!important;height:42px!important}
.aped-calendar-day-hover-list .display-calendar-event strong{font-size:.82rem!important;white-space:normal!important}
.aped-calendar-day-hover-list .display-calendar-event span{font-size:.76rem!important;white-space:normal!important}
.aped-calendar-day-hover-list .display-calendar-event small{font-size:.70rem!important;white-space:normal!important}
.aped-calendar-day-hover-list .display-calendar-event::before,.aped-calendar-day-hover-list .display-calendar-event::after{display:none!important}
@media (hover:none),(pointer:coarse){.aped-calendar-day-hover{display:none!important}}

/* V5.1.03 - Réclamations, modes de ressource et accueils établissement */
.resource-action-mode{margin-bottom:16px}
.resource-action-mode h2{margin-top:0}
.resource-action-choices{display:flex;flex-wrap:wrap;gap:10px 16px}
.resource-action-choices label{display:flex;align-items:center;gap:8px;padding:10px 12px;border:1px solid var(--line);border-radius:12px;background:var(--surface);font-weight:750;cursor:pointer}
.resource-action-choices input{width:auto}
.issue-example-help{margin:0 0 14px;padding:12px 14px;border-radius:12px;background:#f6faf8;border:1px solid var(--line)}
.issue-example-help p{margin:5px 0 0;color:var(--muted)}
.issue-report-panel[hidden],[data-booking-form-section][hidden],[data-booking-calendar-section][hidden]{display:none!important}
.complaint-settings{margin-bottom:16px}
.complaint-settings summary{cursor:pointer}
.complaint-role-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px 12px;margin:12px 0}
.complaint-filters{align-items:end}
.complaint-share-form{margin-bottom:16px}
.complaint-list{display:flex;flex-direction:column;gap:14px}
.complaint-card{position:relative}
.complaint-card-head{display:flex;justify-content:space-between;gap:14px}
.complaint-card h2{margin:.4rem 0 .2rem}
.complaint-select{display:inline-flex;align-items:center;gap:7px;font-weight:800;margin-bottom:8px}
.complaint-photo-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:10px;margin:14px 0}
.complaint-photo-grid a{display:block;border:1px solid var(--line);border-radius:12px;overflow:hidden;background:#fff}
.complaint-photo-grid img{width:100%;height:120px;object-fit:cover;display:block}
.complaint-status-form{display:flex;align-items:end;gap:8px;flex-wrap:wrap;margin-top:12px}
.complaint-status-form select{min-width:170px}
.establishment-home-shortcuts{margin-bottom:18px}
.establishment-home-shortcuts .actions{margin-top:8px}

/* Rotation verticale des réservations du calendrier public. */
.display-calendar-event.calendar-rotate-in{animation:aped-calendar-rotate-in-v2 .42s ease both}
@keyframes aped-calendar-rotate-in-v2{from{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}

@media(max-width:760px){
 .complaint-role-grid{grid-template-columns:1fr}
 .resource-action-choices{display:grid;grid-template-columns:1fr}
 .complaint-photo-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
}

/* V5.1.04 - Réclamations : choix clair et photos visibles */
.issue-photo-upload{padding:14px;border:1px dashed var(--line);border-radius:12px;background:color-mix(in srgb,var(--surface) 92%,var(--green) 8%)}
.issue-photo-upload>label{display:block;font-weight:800;margin-bottom:8px}
.issue-photo-upload input[type=file]{display:block;width:100%;padding:10px;background:var(--surface);border:1px solid var(--line);border-radius:10px}
.issue-photo-selection{margin-top:8px;font-size:.92rem;color:var(--muted);overflow-wrap:anywhere}
.resource-action-mode{margin:0 0 18px}
.resource-action-mode .field-help{margin:10px 0 0}

/* V5.1.07 - Console pages d'accueil par établissement */
.home-access-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin:16px 0 20px}
.home-access-choice{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:12px;padding:14px 16px;border:1px solid var(--border,#dbe3df);border-radius:12px;background:#fff;cursor:pointer}
.home-access-choice input{width:20px;height:20px}
.home-access-choice span:nth-child(2){display:flex;flex-direction:column;gap:3px;min-width:0}
.home-access-choice small{color:#66756e}
@media (max-width:820px){.home-access-grid{grid-template-columns:1fr}}

/* V5.1.09 - En-tete ecran public par etablissement */
.display-screen-establishment .display-header{display:grid;grid-template-columns:120px minmax(0,1fr) 120px;align-items:center;gap:0;min-height:128px;padding:16px 22px}
.display-screen-establishment .display-logo{width:104px;height:78px;justify-self:center}
.display-screen-establishment .display-header>div,.display-screen-establishment[style*="--display-header-align:center"] .display-header>div,.display-screen-establishment[style*="--display-header-align:right"] .display-header>div{position:static!important;left:auto!important;transform:none!important;width:auto!important;margin:0!important;padding:0 8px;text-align:center!important}
.display-screen-establishment .display-header h1{font-size:min(var(--display-title-size,44px),40px);line-height:1.04;margin:0;letter-spacing:-.025em}
.display-screen-establishment .display-datetime{justify-content:center!important;margin-top:7px}
@media(max-width:700px){.display-screen-establishment .display-header{grid-template-columns:86px minmax(0,1fr) 86px;min-height:108px;padding:14px 12px}.display-screen-establishment .display-logo{width:76px;height:62px}.display-screen-establishment .display-header h1{font-size:clamp(24px,6vw,32px)}.display-screen-establishment .display-header>div{padding:0 4px}}

/* V5.1.17 - Affichage multi-logos allégé */
.establishment-logo-showcase{height:190px;display:flex;gap:16px;padding:14px 18px;background:var(--surface,#fff);border-bottom:1px solid var(--line,#d9e4df);overflow:hidden}
.establishment-logo-showcase .establishment-primary-logo{flex:1 1 100%;min-width:0;display:flex;align-items:center;justify-content:center}
.establishment-logo-showcase.has-secondary .establishment-primary-logo{flex:1 1 74%;max-width:76%}
.establishment-primary-logo img{display:block;width:100%;height:100%;object-fit:contain}
.establishment-primary-logo .photo-empty{width:100%;height:100%;display:flex;align-items:center;justify-content:center;font-size:42px}
.establishment-secondary-logos{flex:0 0 21%;min-width:58px;display:grid;grid-template-columns:1fr;grid-auto-rows:1fr;gap:8px;align-content:center;justify-items:center}
.establishment-secondary-logos.count-3,.establishment-secondary-logos.count-4,.establishment-secondary-logos.count-5,.establishment-secondary-logos.count-6{grid-template-columns:repeat(2,minmax(0,1fr))}
.establishment-secondary-logo{min-width:0;min-height:0;width:100%;display:flex;align-items:center;justify-content:center;padding:0;border:0;border-radius:0;background:transparent;box-shadow:none}
.establishment-secondary-logo img{display:block;width:100%;height:auto;max-width:96px;max-height:78px;object-fit:contain}
.establishment-secondary-logos.count-3 .establishment-secondary-logo img,.establishment-secondary-logos.count-4 .establishment-secondary-logo img,.establishment-secondary-logos.count-5 .establishment-secondary-logo img,.establishment-secondary-logos.count-6 .establishment-secondary-logo img{max-width:68px;max-height:58px}
.logo-manager-body{display:grid;gap:16px;margin-top:12px}
.logo-manager-section{padding:12px;border:1px solid var(--line,#d9e4df);border-radius:12px;background:var(--surface,#fff)}
.logo-manager-section h3{margin:0 0 5px;font-size:1rem}
.secondary-logo-admin-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin:12px 0}
.secondary-logo-admin-item{display:flex;flex-direction:column;gap:8px;padding:8px;border:1px solid var(--line,#d9e4df);border-radius:10px;background:#fff}
.secondary-logo-admin-item img{width:100%;height:80px;object-fit:contain}
.secondary-logo-admin-item form,.secondary-logo-admin-item button{width:100%}
.secondary-logo-add-form{margin-top:12px;padding-top:12px;border-top:1px dashed var(--line,#d9e4df)}
@media (max-width:520px){.establishment-logo-showcase{height:180px;gap:10px;padding:10px 12px}.establishment-logo-showcase.has-secondary .establishment-primary-logo{flex-basis:72%;max-width:74%}.establishment-secondary-logos{flex-basis:23%;min-width:52px;gap:5px}.establishment-secondary-logo img{max-width:82px;max-height:66px}.establishment-secondary-logos.count-3 .establishment-secondary-logo img,.establishment-secondary-logos.count-4 .establishment-secondary-logo img,.establishment-secondary-logos.count-5 .establishment-secondary-logo img,.establishment-secondary-logos.count-6 .establishment-secondary-logo img{max-width:56px;max-height:48px}.secondary-logo-admin-grid{grid-template-columns:1fr 1fr}}

/* V5.1.18 - Logos secondaires agrandis */

/* V5.1.19 - Repartition automatique des logos selon leur nombre */
.establishment-logo-showcase.has-secondary{align-items:center}
.establishment-logo-showcase.secondary-count-1 .establishment-primary-logo{flex:1 1 70%;max-width:72%}
.establishment-logo-showcase.secondary-count-1 .establishment-secondary-logos{flex:0 0 25%;grid-template-columns:1fr}
.establishment-logo-showcase.secondary-count-1 .establishment-secondary-logo img{max-width:112px;max-height:88px}

.establishment-logo-showcase.secondary-count-2 .establishment-primary-logo{flex:1 1 61%;max-width:63%}
.establishment-logo-showcase.secondary-count-2 .establishment-secondary-logos{flex:0 0 34%;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.establishment-logo-showcase.secondary-count-2 .establishment-secondary-logo img{max-width:92px;max-height:74px}

.establishment-logo-showcase.secondary-count-3 .establishment-primary-logo{flex:1 1 54%;max-width:56%}
.establishment-logo-showcase.secondary-count-3 .establishment-secondary-logos{flex:0 0 41%;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
.establishment-logo-showcase.secondary-count-3 .establishment-secondary-logo img{max-width:76px;max-height:62px}

.establishment-logo-showcase.secondary-count-4 .establishment-primary-logo{flex:1 1 52%;max-width:54%}
.establishment-logo-showcase.secondary-count-4 .establishment-secondary-logos{flex:0 0 43%;grid-template-columns:repeat(2,minmax(0,1fr));grid-template-rows:repeat(2,minmax(0,1fr));gap:7px 10px}
.establishment-logo-showcase.secondary-count-4 .establishment-secondary-logo img{max-width:72px;max-height:56px}

.establishment-logo-showcase.secondary-count-5 .establishment-primary-logo,
.establishment-logo-showcase.secondary-count-6 .establishment-primary-logo{flex:1 1 49%;max-width:51%}
.establishment-logo-showcase.secondary-count-5 .establishment-secondary-logos,
.establishment-logo-showcase.secondary-count-6 .establishment-secondary-logos{flex:0 0 46%;grid-template-columns:repeat(3,minmax(0,1fr));grid-template-rows:repeat(2,minmax(0,1fr));gap:6px 8px}
.establishment-logo-showcase.secondary-count-5 .establishment-secondary-logo img,
.establishment-logo-showcase.secondary-count-6 .establishment-secondary-logo img{max-width:62px;max-height:50px}

@media (max-width:520px){
 .establishment-logo-showcase.secondary-count-1 .establishment-primary-logo{flex-basis:68%;max-width:70%}
 .establishment-logo-showcase.secondary-count-1 .establishment-secondary-logos{flex-basis:27%}
 .establishment-logo-showcase.secondary-count-1 .establishment-secondary-logo img{max-width:92px;max-height:72px}
 .establishment-logo-showcase.secondary-count-2 .establishment-primary-logo{flex-basis:58%;max-width:60%}
 .establishment-logo-showcase.secondary-count-2 .establishment-secondary-logos{flex-basis:37%;gap:6px}
 .establishment-logo-showcase.secondary-count-2 .establishment-secondary-logo img{max-width:68px;max-height:56px}
 .establishment-logo-showcase.secondary-count-3 .establishment-primary-logo{flex-basis:51%;max-width:53%}
 .establishment-logo-showcase.secondary-count-3 .establishment-secondary-logos{flex-basis:44%;gap:5px}
 .establishment-logo-showcase.secondary-count-3 .establishment-secondary-logo img{max-width:54px;max-height:44px}
 .establishment-logo-showcase.secondary-count-4 .establishment-primary-logo,
 .establishment-logo-showcase.secondary-count-5 .establishment-primary-logo,
 .establishment-logo-showcase.secondary-count-6 .establishment-primary-logo{flex-basis:47%;max-width:49%}
 .establishment-logo-showcase.secondary-count-4 .establishment-secondary-logos,
 .establishment-logo-showcase.secondary-count-5 .establishment-secondary-logos,
 .establishment-logo-showcase.secondary-count-6 .establishment-secondary-logos{flex-basis:48%;gap:4px 6px}
 .establishment-logo-showcase.secondary-count-4 .establishment-secondary-logo img,
 .establishment-logo-showcase.secondary-count-5 .establishment-secondary-logo img,
 .establishment-logo-showcase.secondary-count-6 .establishment-secondary-logo img{max-width:48px;max-height:40px}
}

/* V5.1.21 - filtres et tris Administration > Réservations */
.admin-booking-filters{margin:18px 0 16px;padding:16px 18px}
.admin-booking-filter-grid{display:grid;grid-template-columns:minmax(260px,2fr) repeat(5,minmax(130px,1fr));gap:12px;align-items:end}
.admin-booking-filter-grid label{display:block;margin-bottom:6px;font-weight:700}
.admin-booking-filter-grid input,.admin-booking-filter-grid select{width:100%}
.admin-booking-filter-actions{margin-top:14px;align-items:center;gap:10px;flex-wrap:wrap}
.admin-booking-result-count{margin-left:auto;font-size:.92rem}
.admin-sort-link{display:inline-flex;align-items:center;gap:4px;color:inherit;text-decoration:none;font-weight:800;white-space:nowrap}
.admin-sort-link:hover,.admin-sort-link:focus{text-decoration:underline}
@media(max-width:1100px){.admin-booking-filter-grid{grid-template-columns:repeat(3,minmax(160px,1fr))}.admin-booking-result-count{width:100%;margin-left:0}}
@media(max-width:700px){.admin-booking-filter-grid{grid-template-columns:1fr}.admin-booking-filter-actions>*{width:100%;text-align:center}.admin-booking-result-count{width:100%;text-align:left}}

/* V5.1.26 - Navigation horizontale compacte sur ordinateur. */
@media (min-width: 1151px) {
  .site-header .header-inner { max-width:none; width:100%; padding:9px 14px; gap:9px; min-width:0; }
  .site-header .brand { flex:0 0 auto; }
  .site-header .topnav { display:flex; flex:1 1 auto; min-width:0; gap:1px; margin-left:0; justify-content:space-between; align-items:center; }
  .site-header .topnav>a { font-size:clamp(.72rem,.79vw,.87rem); line-height:1.22; padding:7px 4px; font-weight:700; overflow-wrap:normal; }
  .site-header .profile-menu-trigger { padding:3px 4px; gap:5px; }
  .site-header .profile-menu-name { max-width:85px; }
  .site-header .nav-toggle { display:none; }
}
/* Tablettes et fenetres etroites : menu deroulant sans debordement. */
@media (max-width:1150px) {
  .site-header .header-inner { max-width:100%; width:100%; min-width:0; position:relative; gap:8px; }
  .site-header .nav-toggle { display:inline-flex; margin-left:auto; align-items:center; justify-content:center; }
  .site-header .topnav { display:none; position:absolute; top:100%; left:10px; right:10px; z-index:100; margin:0; padding:10px; background:var(--surface,#fff); border:1px solid var(--line); border-radius:12px; box-shadow:0 14px 32px rgba(20,50,40,.17); flex-direction:column; align-items:stretch; gap:3px; max-height:75vh; overflow-y:auto; overflow-x:hidden; }
  .site-header .topnav.open { display:flex; }
  .site-header .topnav>a { display:block; width:100%; padding:10px 12px; white-space:normal; }
  .site-header .profile-menu { width:100%; }
  .site-header .profile-menu-trigger { width:100%; justify-content:flex-start; }
  .site-header .profile-dropdown { position:static; width:100%; box-shadow:none; }
}
