:root{
  --accent:#4f9651;
  --accent-dark:#3f7f42;
  --accent-pale:#eef5ee;
  --ink:#2a3342;
  --text:#8a8d90;
  --text-dark:#5d6268;
  --line:#e3e3e3;
  --paper:#ffffff;
  --soft:#f7f7f7;
  --page:#e9e9e9;
  --header:#191315;
  --danger:#b84d45;
  --warning:#b98932;
  --blue:#547f9f;
}
*{box-sizing:border-box}
html,body{margin:0;min-height:100%}
html{background:var(--page)}
body{background:var(--page);color:var(--text);font-family:"Open Sans",Arial,sans-serif;font-size:14px;line-height:1.715;font-weight:400}
a{color:var(--ink);text-decoration:none;transition:color .2s ease,background .2s ease}
a:hover{color:var(--accent)}
button,input,select,textarea{font:inherit}
button{cursor:pointer}
.ico{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
.body_wrap,.page_wrap{min-height:100vh;background:var(--page)}

/* Header — structure volontairement calée sur Micro Office */
.top_panel_wrap{background:var(--header);margin-bottom:44px;position:relative}
.top_panel_wrap_inner{min-height:145px;display:grid;grid-template-columns:110px minmax(0,1fr) auto;align-items:center;padding-right:82px}
.menu_pushy{width:110px;height:145px;border:0;background:transparent;color:#fff;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;font-family:Oxygen,sans-serif}
.menu_pushy span{font-size:23px;line-height:1}
.menu_pushy small{font-size:11px;font-weight:700;letter-spacing:.1px}
.header_identity{padding-left:50px}
.brand{display:inline-flex;align-items:center;gap:22px;color:#fff}
.brand:hover{color:#fff}
.brand_logo{background:#fff;display:flex;align-items:center;padding:8px 14px;min-height:68px;box-shadow:0 1px 2px rgba(0,0,0,.12)}
.brand_logo img{display:block;width:225px;max-height:58px;object-fit:contain}
.brand_text{font-family:Oxygen,sans-serif}
.brand_text b{display:block;font-size:18px;font-weight:700;color:#fff}
.brand_text small{display:block;margin-top:3px;font-size:12px;font-weight:300;color:#bab6b7}
.header_tools{display:flex;align-items:center;gap:15px;color:#d6d1d2}
.today{font:400 11px Oxygen,sans-serif;color:#a9a4a5;white-space:nowrap}
.top-search{position:relative;width:280px;height:38px;background:#282225;display:flex;align-items:center;padding:0 12px;color:#bcb7b8}
.top-search .ico{width:17px;height:17px;margin-right:8px}
.top-search input{width:100%;border:0;outline:0;background:transparent;color:#fff;font-size:12px}
.top-search input::placeholder{color:#979294}
.search-results{display:none;position:absolute;top:44px;left:0;width:360px;background:#fff;border:1px solid var(--line);box-shadow:0 2px 8px rgba(0,0,0,.14);z-index:200;padding:6px;color:var(--text)}
.search-results.show{display:block}
.search-hit{display:block;padding:8px 10px;border-bottom:1px solid #eee}
.search-hit:last-child{border-bottom:0}
.search-hit:hover{background:var(--soft)}
.search-hit b{display:block;font-size:12px;color:var(--ink)}
.search-hit span{display:block;font-size:10px;color:var(--text)}
.icon-button{width:38px;height:38px;border:0;background:#282225;color:#dedadb;position:relative;display:flex;align-items:center;justify-content:center}
.icon-button .ico{width:17px;height:17px}
.dot{position:absolute;right:7px;top:7px;width:5px;height:5px;background:var(--accent);border-radius:50%}
.top_user{display:flex;align-items:center;gap:9px;margin-left:3px;min-width:170px}
.top-avatar,.avatar{display:inline-flex;align-items:center;justify-content:center;background:var(--accent);color:#fff;font:700 11px Oxygen,sans-serif;border-radius:50%}
.top-avatar{width:37px;height:37px}
.top_user b{display:block;color:#fff;font:700 12px Oxygen,sans-serif;line-height:1.2}
.top_user small{display:block;color:#aaa5a6;font:300 10px Oxygen,sans-serif;margin-top:3px}

/* Trois colonnes : menu fin / contenu / barre contextuelle */
.page_content_wrap{display:grid;grid-template-columns:110px minmax(0,1fr) 300px;align-items:start;gap:0;padding:0 82px 45px 12px;position:relative}
.menu_main_wrap{width:110px;padding-right:12px}
.menu_main_nav_area{position:sticky;top:18px}
.menu_main_nav_area{display:flex;flex-direction:column;gap:10px}
.nav-item{height:85px;width:98px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:7px;text-align:center;font-family:Oxygen,sans-serif;font-size:11px;font-weight:700;color:var(--ink);background:transparent;border-radius:3px;position:relative}
.nav-item .ico{width:23px;height:23px;stroke-width:1.45}
.nav-item:hover{background:var(--accent);color:#fff;box-shadow:0 1px rgba(0,0,0,.22)}
.nav-item.active{background:var(--accent);color:#fff;box-shadow:0 1px rgba(0,0,0,.22)}
.nav-item.nav-logout{margin-top:8px;color:#7d7f82}
.nav-item.nav-logout:hover{background:#383a3f;color:#fff}
.content_wrap{background:#fff;min-width:0;box-shadow:0 1px 2px rgba(0,0,0,.1);min-height:760px}
.page{padding:56px 60px 100px}
.sidebar_wrap{background:transparent;min-width:0;padding-left:50px}
.sidebar_inner{position:sticky;top:18px}

/* Titres — trait pointillé comme le template */
.page-heading{margin-bottom:31px}
.page-heading h1{position:relative;margin:0;padding:0 0 16px;color:var(--ink);font:500 28px/1.285 Oxygen,sans-serif}
.page-heading h1:after{content:"";display:block;position:absolute;left:0;right:0;bottom:0;border-top:1px dotted #b9b9b9}
.page-heading p{margin:12px 0 0;color:var(--text);font-size:12px}
.section-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin:0 0 16px}
.section-head h2{margin:0;color:var(--ink);font:500 20px/1.35 Oxygen,sans-serif}
.section-head p{margin:4px 0 0;font-size:11px;color:var(--text)}
.split-title{display:flex;align-items:center;justify-content:space-between;margin-bottom:15px}
.split-title h3{margin:0;color:var(--ink);font:700 15px Oxygen,sans-serif}

/* Barre contextuelle droite */
.side_widget{padding:0 0 25px;margin:0 0 25px;border-bottom:1px solid #d8d8d8}
.side_widget:last-child{border-bottom:0}
.side_widget h5{margin:0 0 14px;color:var(--ink);font:700 13px Oxygen,sans-serif}
.side_user_line{display:flex;align-items:center;gap:11px}
.side_user_line .avatar{width:44px;height:44px;font-size:12px}
.side_user_line strong{display:block;color:var(--ink);font-size:12px}
.side_user_line small{display:block;color:var(--text);font-size:10px;margin-top:3px}
.side_links{list-style:none;padding:0;margin:0}
.side_links li{border-top:1px solid #ddd}
.side_links li:last-child{border-bottom:1px solid #ddd}
.side_links a{display:block;padding:9px 0;font-size:11px;color:var(--text-dark)}
.side_links a:before{content:"›";margin-right:8px;color:var(--accent);font-weight:700}
.side_links a:hover{padding-left:3px;color:var(--accent)}
.side_notice{text-align:center;background:var(--accent);padding:25px 18px;color:#fff;border:0}
.side_notice .notice_icon{display:flex;justify-content:center;margin-bottom:11px}
.side_notice .ico{width:27px;height:27px}
.side_notice h5{color:#fff;margin-bottom:7px}
.side_notice p{margin:0;color:#eef8ee;font-size:10.5px;line-height:1.65}
.side_logout{display:inline-flex;align-items:center;gap:7px;font-size:11px;color:var(--text-dark)}
.side_logout .ico{width:16px;height:16px}

/* Grilles métier */
.grid{display:grid;gap:18px}
.grid-4{grid-template-columns:repeat(4,minmax(0,1fr))}
.grid-3{grid-template-columns:repeat(3,minmax(0,1fr))}
.grid-2{grid-template-columns:repeat(2,minmax(0,1fr))}
.grid-main{grid-template-columns:minmax(0,1.55fr) minmax(280px,.8fr)}
.card,.table-card,.room-card{background:#fff;border:1px solid var(--line);border-radius:0;box-shadow:none}
.card-pad{padding:22px 24px}
.stat-card{position:relative;min-height:128px;padding:20px 18px 18px;background:var(--soft);border:1px solid #ebebeb}
.stat-card .stat-label{display:block;margin-bottom:14px;font:600 10px Montserrat,sans-serif;letter-spacing:.25px;text-transform:uppercase;color:#777c80}
.stat-card strong{display:block;color:var(--ink);font:500 29px/1 Oxygen,sans-serif}
.stat-card small{display:block;margin-top:8px;font-size:10.5px;color:var(--text)}
.stat-card .stat-icon{position:absolute;right:16px;top:18px;color:var(--accent)}
.stat-card .stat-icon .ico{width:25px;height:25px;stroke-width:1.4}
.stat-card.alert .stat-icon{color:var(--danger)}
.stat-card.blue .stat-icon{color:var(--blue)}
.stat-card.orange .stat-icon{color:var(--warning)}

/* Boutons */
.btn{min-height:35px;border:1px solid transparent;border-radius:3px;padding:0 14px;display:inline-flex;align-items:center;justify-content:center;gap:7px;font:600 10.5px Oxygen,sans-serif;cursor:pointer;white-space:nowrap}
.btn .ico{width:15px;height:15px}
.btn-primary{background:var(--accent);border-color:var(--accent);color:#fff}
.btn-primary:hover{background:var(--accent-dark);border-color:var(--accent-dark);color:#fff}
.btn-secondary{background:#fff;border-color:#d9d9d9;color:#60656a}
.btn-secondary:hover{background:#f4f4f4;color:var(--ink)}
.btn-link{border:0;background:transparent;color:var(--accent);padding-left:4px;padding-right:4px}
.btn-small{min-height:29px;padding:0 9px;font-size:9.5px}
.btn-danger{background:#fff;border-color:#e1c3c0;color:var(--danger)}

/* Listes / tâches */
.task-list{list-style:none;margin:0;padding:0}
.task{display:grid;grid-template-columns:36px 1fr auto;gap:12px;align-items:center;padding:13px 0;border-bottom:1px solid #ededed}
.task:last-child{border-bottom:0}
.task-ico{width:36px;height:36px;display:flex;align-items:center;justify-content:center;color:var(--accent);background:#f4f7f4}
.task-ico .ico{width:18px;height:18px}
.task b{display:block;color:var(--ink);font-size:11.5px;font-weight:600}
.task span{display:block;font-size:10px;color:var(--text);margin-top:2px}
.agenda-item{display:grid;grid-template-columns:54px 3px 1fr;gap:10px;padding:10px 0}
.agenda-time{font:600 10.5px Oxygen,sans-serif;color:var(--text-dark)}
.agenda-line{background:var(--accent)}
.agenda-item.room .agenda-line{background:var(--blue)}
.agenda-item.family .agenda-line{background:var(--warning)}
.agenda-content b{display:block;color:var(--ink);font-size:11.5px}
.agenda-content span{display:block;font-size:10px;color:var(--text);margin-top:2px}

/* Tables — plus proches d'un logiciel métier ancien/soigné que d'un dashboard */
.table-card{overflow:hidden}
.table-toolbar{min-height:48px;padding:10px 14px;display:flex;align-items:center;justify-content:space-between;gap:10px;background:#fafafa;border-bottom:1px solid var(--line)}
.table-toolbar>b{font:700 12px Oxygen,sans-serif;color:var(--ink)}
.table-toolbar .filters{display:flex;align-items:center;gap:7px;flex-wrap:wrap}
.table-wrap{overflow:auto}
.data-table{width:100%;border-collapse:collapse;white-space:nowrap}
.data-table th{padding:10px 12px;text-align:left;background:#f5f5f5;border-bottom:1px solid #ddd;color:#777d82;font:600 9px Montserrat,sans-serif;text-transform:uppercase;letter-spacing:.4px}
.data-table td{padding:11px 12px;border-bottom:1px solid #ededed;color:#5f6469;font-size:11px;vertical-align:middle}
.data-table tr:last-child td{border-bottom:0}
.data-table tbody tr:hover{background:#fafafa}
.person{display:flex;align-items:center;gap:9px}
.person .avatar{width:31px;height:31px;font-size:9px}
.person b{display:block;color:var(--ink);font-size:11px}
.person small{display:block;color:var(--text);font-size:9.5px;margin-top:1px}
.status{display:inline-block;padding:3px 7px;border:1px solid #ddd;border-radius:2px;font:600 9px Oxygen,sans-serif;background:#fff}
.status-pending{color:#8c6b27;border-color:#e3d5b9;background:#fbf7ef}
.status-approved,.status-confirmed,.status-active,.status-completed,.status-returned{color:#477c49;border-color:#cddfce;background:#f1f7f1}
.status-rejected,.status-cancelled,.status-inactive{color:#9a4c46;border-color:#e5cdca;background:#fbf4f3}
.status-draft{color:#6b7176;background:#f4f4f4}
.status-out{color:#4f718b;border-color:#cfdce5;background:#f1f6f9}

/* Formulaires */
.filter,.input,.select,.textarea{border:1px solid #d0d0d0;border-radius:0;background:#fff;min-height:36px;padding:7px 10px;color:#4e5459;outline:0;font-size:11.5px}
.filter:focus,.input:focus,.select:focus,.textarea:focus{border-color:var(--accent)}
.textarea{min-height:90px;resize:vertical}
.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px 18px}
.form-group label{display:block;margin:0 0 6px;color:#676c70;font:600 10px Oxygen,sans-serif}
.form-group .input,.form-group .select,.form-group .textarea{width:100%}
.form-group.full{grid-column:1/-1}
.form-actions{grid-column:1/-1;display:flex;justify-content:flex-end;gap:8px;padding-top:7px}
.help,.tiny{font-size:9.5px;color:var(--text);margin-top:5px}
.field-inline{display:flex;gap:8px}

/* Fiches */
.tabs{display:flex;gap:0;border-bottom:1px solid var(--line);margin:24px 0 15px}
.tab{padding:9px 13px;border-right:1px solid var(--line);background:#f7f7f7;color:#74797e;font:600 10px Oxygen,sans-serif}
.tab:first-child{border-left:1px solid var(--line)}
.tab.active{background:#fff;color:var(--accent);border-top:2px solid var(--accent);padding-top:8px}
.detail-head{display:flex;align-items:center;gap:15px}
.big-avatar{width:58px;height:58px;background:var(--accent);color:#fff;display:flex;align-items:center;justify-content:center;font:700 17px Oxygen,sans-serif}
.detail-head h2{margin:0;color:var(--ink);font:500 19px Oxygen,sans-serif}
.detail-head p{margin:4px 0 0;color:var(--text);font-size:10.5px}
.kv{display:grid;grid-template-columns:155px 1fr;padding:9px 0;border-bottom:1px solid #ededed}
.kv:last-child{border-bottom:0}
.kv span{font-size:10.5px;color:var(--text)}
.kv b{font-size:11px;color:#555b60;font-weight:600}
.quota{display:flex;align-items:center;gap:12px;padding:10px 0;border-bottom:1px solid #eee}
.quota:last-child{border-bottom:0}
.quota strong{min-width:65px;color:var(--ink);font:500 18px Oxygen,sans-serif}
.progress{height:4px;background:#e7e7e7;flex:1}
.progress i{display:block;height:100%;background:var(--accent)}

/* Calendrier */
.calendar{display:grid;grid-template-columns:repeat(7,minmax(110px,1fr));border-top:1px solid var(--line);border-left:1px solid var(--line)}
.cal-head{padding:8px;text-align:center;background:#f5f5f5;border-right:1px solid var(--line);border-bottom:1px solid var(--line);color:#6e7479;font:600 9px Montserrat,sans-serif;text-transform:uppercase}
.cal-day{min-height:108px;padding:7px;background:#fff;border-right:1px solid var(--line);border-bottom:1px solid var(--line)}
.cal-day.muted{background:#fafafa;color:#aaa}
.cal-day .num{font:600 10px Oxygen,sans-serif;color:#5a6065}
.cal-event{display:block;margin-top:5px;padding:4px 5px;background:#f0f6f0;border-left:2px solid var(--accent);color:#4e6250;font-size:9px}
.cal-event.room{background:#f0f5f8;border-color:var(--blue);color:#516877}
.cal-event.family{background:#faf6ee;border-color:var(--warning);color:#76664b}
.calendar-wrap{overflow:auto}

/* Salles / matériel */
.room-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}
.room-card{overflow:hidden}
.room-cover{height:78px;background:#f2f2f2;display:flex;align-items:center;justify-content:center;color:var(--accent);border-bottom:1px solid var(--line)}
.room-cover .ico{width:32px;height:32px;stroke-width:1.3}
.room-body{padding:15px}
.room-body h3{margin:0 0 5px;color:var(--ink);font:700 14px Oxygen,sans-serif}
.room-meta{font-size:10px;color:var(--text);margin-bottom:10px}
.room-foot{display:flex;align-items:center;justify-content:space-between;padding-top:10px;border-top:1px solid #eee}
.room-foot b{font-size:10px;color:var(--accent)}

/* Messages / modales */
.flash{padding:10px 13px;margin:-5px 0 20px;border:1px solid;font-size:11px}
.flash-success{background:#f1f7f1;border-color:#cddfce;color:#477c49}
.flash-error{background:#fbf3f2;border-color:#e3c7c3;color:#9d4b45}
.flash-info{background:#f0f5f8;border-color:#ccdbe5;color:#4e7088}
.empty{padding:25px;text-align:center;color:#9a9da0;font-size:10.5px}
.note{background:#f7f7f7;border:1px solid #e3e3e3;padding:11px 13px;color:#62676b;font-size:10.5px}
.actions-row{display:flex;gap:6px;align-items:center}
.modal-backdrop{display:none;position:fixed;inset:0;background:rgba(25,19,21,.55);z-index:500;align-items:center;justify-content:center;padding:20px}
.modal-backdrop.show{display:flex}
.modal{width:min(630px,100%);max-height:90vh;overflow:auto;background:#fff;border:1px solid #d7d7d7;box-shadow:0 4px 20px rgba(0,0,0,.22)}
.modal-head{padding:15px 18px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;background:#f7f7f7}
.modal-head h2{margin:0;color:var(--ink);font:500 18px Oxygen,sans-serif}
.modal-close{border:0;background:transparent;color:#7c8084;font-size:21px}
.modal-body{padding:19px}

/* Pied de page */
.footer_wrap{margin-left:122px;margin-right:82px;border-top:1px solid #d9d9d9;padding:18px 0 30px;color:#97999b;font-size:9.5px;text-align:center}

/* Connexion : même vocabulaire visuel que Micro Office */
.login-page{min-height:100vh;background:var(--page);display:flex;align-items:center;justify-content:center;padding:45px 24px}
.login-shell{width:min(1080px,100%);background:#fff;display:grid;grid-template-columns:minmax(430px,48%) 1fr;box-shadow:0 1px 3px rgba(0,0,0,.14)}
.login-panel{padding:58px 62px}
.login-brand{display:inline-block;background:#fff}
.login-brand img{display:block;width:220px;max-height:64px;object-fit:contain}
.login-brand span{display:block;margin-top:8px;color:#82868a;font:600 9px Montserrat,sans-serif;letter-spacing:1.25px;text-transform:uppercase}
.login-panel h1{position:relative;margin:44px 0 10px;padding-bottom:15px;color:var(--ink);font:500 28px Oxygen,sans-serif}
.login-panel h1:after{content:"";position:absolute;left:0;right:0;bottom:0;border-top:1px dotted #bbb}
.login-panel>p{margin:0 0 23px;color:var(--text);font-size:11px}
.login-panel .form-group{margin-bottom:13px}
.login-panel .btn{width:100%;min-height:39px;margin-top:5px}
.login-aside{background:var(--header);padding:55px;display:flex;align-items:flex-end;color:#fff;position:relative}
.login-copy span{font:600 9px Montserrat,sans-serif;letter-spacing:1.15px;color:#99bd9a;text-transform:uppercase}
.login-copy h2{margin:11px 0 14px;color:#fff;font:300 31px/1.3 Oxygen,sans-serif}
.login-copy p{margin:0;color:#b9b5b6;font-size:12px;line-height:1.8}
.install{max-width:760px;margin:45px auto;background:#fff;border:1px solid var(--line);padding:30px;box-shadow:0 1px 2px rgba(0,0,0,.08)}
.install h1{margin-top:0;color:var(--ink);font:500 25px Oxygen,sans-serif}

@media(max-width:1320px){
  .top_panel_wrap_inner{padding-right:30px}
  .page_content_wrap{grid-template-columns:110px minmax(0,1fr) 260px;padding-right:30px}
  .sidebar_wrap{padding-left:30px}
  .grid-4{grid-template-columns:repeat(2,minmax(0,1fr))}
  .room-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .footer_wrap{margin-right:30px}
}
@media(max-width:1100px){
  .page_content_wrap{grid-template-columns:110px minmax(0,1fr)}
  .sidebar_wrap{display:none}
  .header_tools .today,.top_user div{display:none}
  .top_user{min-width:auto}
  .top-search{width:230px}
  .page{padding:48px 45px 80px}
}
@media(max-width:780px){
  .top_panel_wrap{margin-bottom:20px}
  .top_panel_wrap_inner{grid-template-columns:65px 1fr auto;min-height:92px;padding-right:14px}
  .menu_pushy{width:65px;height:92px}
  .menu_pushy small{display:none}
  .header_identity{padding-left:10px}
  .brand_logo{padding:5px 8px;min-height:45px}
  .brand_logo img{width:145px;max-height:42px}
  .brand_text{display:none}
  .top-search{display:none}
  .page_content_wrap{display:block;padding:0 12px 30px}
  .menu_main_wrap{position:fixed;left:-300px;top:0;bottom:0;width:280px;background:#fff;padding:20px;z-index:450;box-shadow:3px 0 12px rgba(0,0,0,.15);overflow:auto;transition:left .25s ease}
  .menu_main_wrap.open{left:0}
  .menu_main_nav_area{position:static;display:grid;grid-template-columns:repeat(2,98px);justify-content:center}
  .content_wrap{min-height:600px}
  .page{padding:35px 25px 60px}
  .grid-main,.grid-3,.grid-2{grid-template-columns:1fr}
  .room-grid{grid-template-columns:1fr}
  .form-grid{grid-template-columns:1fr}
  .form-group.full,.form-actions{grid-column:auto}
  .calendar{min-width:760px}
  .footer_wrap{margin:0 12px}
  .login-shell{grid-template-columns:1fr}
  .login-aside{display:none}
}
@media(max-width:520px){
  .grid-4{grid-template-columns:1fr}
  .page{padding:28px 18px 50px}
  .page-heading h1{font-size:24px}
  .section-head{flex-direction:column}
  .table-toolbar{align-items:flex-start;flex-direction:column}
  .login-panel{padding:38px 28px}
}

/* Module Enfance & familles — fonctionnement métier inspiré des outils enfance municipaux */
.enfance-shell{display:grid;grid-template-columns:66px minmax(0,1fr);border:1px solid #dedede;background:#fff;min-height:650px}
.enfance-rail{background:#f6f8f6;border-right:1px solid #dfe4df;display:flex;flex-direction:column;align-items:stretch;padding:7px 0}
.enfance-rail-item{min-height:68px;padding:8px 4px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px;color:#6f7871;font:600 8px Oxygen,sans-serif;text-align:center;border-left:3px solid transparent}
.enfance-rail-item .ico{width:19px;height:19px;stroke-width:1.55}
.enfance-rail-item:hover{background:#fff;color:var(--accent)}
.enfance-rail-item.active{background:#fff;color:var(--accent-dark);border-left-color:var(--accent)}
.enfance-workspace{min-width:0;padding:23px 24px 32px;background:#fff}
.ef-dashboard-head{display:flex;align-items:flex-end;justify-content:space-between;gap:18px;padding-bottom:15px;border-bottom:1px solid #e5e5e5;margin-bottom:17px}
.ef-dashboard-head h2{margin:4px 0 0;color:var(--ink);font:500 20px Oxygen,sans-serif}
.ef-kicker{color:#7b9a7c;font:600 8.5px Montserrat,sans-serif;letter-spacing:.8px}
.ef-head-actions,.ef-family-actions{display:flex;gap:7px;align-items:center}
.ef-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin-bottom:13px}
.ef-kpis article{background:#fbfbfb;border:1px solid #e5e5e5;padding:13px 14px;min-height:85px}
.ef-kpis span{display:block;color:#a2763c;font:600 8.5px Montserrat,sans-serif;text-transform:uppercase;letter-spacing:.35px}
.ef-kpis b{display:block;color:#3c454e;font:500 24px Oxygen,sans-serif;margin-top:6px;line-height:1}
.ef-kpis small{display:block;margin-top:8px;color:#92969a;font-size:9px}
.ef-dashboard-grid{display:grid;grid-template-columns:1fr 1.25fr;gap:12px}
.ef-widget{border:1px solid #e1e1e1;background:#fff;min-height:230px;padding:14px 15px}
.ef-widget-head{display:flex;justify-content:space-between;align-items:center;padding-bottom:9px;margin-bottom:4px;border-bottom:1px solid #ececec}
.ef-widget-head h3{margin:0;color:#b07a36;font:600 9px Montserrat,sans-serif;text-transform:uppercase;letter-spacing:.28px}
.ef-widget-head a{font-size:9px;color:var(--accent-dark)}
.ef-compact-list>a,.ef-list-static{display:grid;grid-template-columns:28px minmax(0,1fr) auto;gap:8px;align-items:center;padding:8px 0;border-bottom:1px solid #efefef}
.ef-compact-list>a:last-child,.ef-list-static:last-child{border-bottom:0}
.ef-list-icon{width:26px;height:26px;display:flex;align-items:center;justify-content:center;color:#5d92a4;background:#f2f7f8}
.ef-list-icon .ico{width:14px;height:14px}
.ef-compact-list b,.ef-list-static b{display:block;color:#4a5157;font-size:10px;font-weight:600}
.ef-compact-list small,.ef-list-static small{display:block;color:#9a9d9f;font-size:8.5px;margin-top:2px}
.ef-family-list>a{display:grid;grid-template-columns:31px minmax(0,1fr) auto;gap:8px;align-items:center;padding:8px 0;border-bottom:1px solid #efefef}
.ef-family-list>a:last-child{border-bottom:0}
.ef-family-list b{display:block;color:#4c5359;font-size:10px}
.ef-family-list small{display:block;color:#999;font-size:8.5px;margin-top:2px}
.ef-family-list em{font-style:normal;color:#c19a65;font:600 8px Montserrat,sans-serif}
.ef-house{display:flex;align-items:center;justify-content:center;background:#edf6ee;color:var(--accent);width:42px;height:42px}
.ef-house.small{width:29px;height:29px}
.ef-house .ico{width:20px;height:20px}.ef-house.small .ico{width:14px;height:14px}
.ef-activity-bars{padding-top:3px}
.ef-activity-row{display:grid;grid-template-columns:minmax(100px,1fr) minmax(90px,1.3fr) 42px;gap:10px;align-items:center;padding:7px 0;border-bottom:1px solid #f0f0f0}
.ef-activity-row>div:first-child b{display:block;color:#4e555b;font-size:9.5px}.ef-activity-row>div:first-child small{display:block;color:#9b9d9f;font-size:8px}
.ef-activity-row strong{text-align:right;color:#6d757a;font:600 9px Oxygen,sans-serif}.ef-bar{height:8px;background:#edf0ed}.ef-bar i{display:block;height:100%;background:#9bc59c}
.ef-level-list>div{display:grid;grid-template-columns:80px 1fr 25px;gap:9px;align-items:center;padding:7px 0}.ef-level-list span{font-size:9px;color:#686e72}.ef-level-list b{font:600 9px Oxygen,sans-serif;color:#4c5358}.ef-level-bar{height:7px;background:#f0f0f0}.ef-level-bar i{display:block;height:100%;background:#d2a762}
.ef-search-strip{display:grid;grid-template-columns:26px minmax(0,1fr) auto;align-items:center;border:1px solid #ddd;background:#fafafa;margin-bottom:10px;padding:4px 8px}.ef-search-strip span{color:#8e9396;display:flex}.ef-search-strip .ico{width:15px;height:15px}.ef-search-strip input{border:0;outline:0;background:transparent;min-height:31px;font-size:10.5px}.ef-search-strip small{font-size:8.5px;color:#999}
.ef-table-family{display:flex;align-items:center;gap:8px}.ef-table-family b{display:block}.ef-table-family small,.table-sub{display:block;font-size:8.5px;color:#999;margin-top:2px}
.ef-family-topbar{display:flex;justify-content:space-between;align-items:center;margin-bottom:13px}.ef-back{font-size:9.5px;color:#6f777b}
.ef-family-layout{display:grid;grid-template-columns:225px minmax(0,1fr);gap:14px}
.ef-family-summary{border:1px solid #e1e1e1;background:#fafafa;padding:14px}.ef-family-id{display:flex;align-items:center;gap:10px;padding-bottom:12px;border-bottom:1px solid #e5e5e5}.ef-family-id b{display:block;color:#434a50;font:600 12px Oxygen,sans-serif}.ef-family-id small{display:block;color:#9a9d9f;font-size:8.5px;margin-top:2px}
.ef-summary-list{margin:10px 0}.ef-summary-list>div{padding:7px 0;border-bottom:1px solid #e7e7e7}.ef-summary-list dt{color:#999;font-size:8px;text-transform:uppercase}.ef-summary-list dd{margin:2px 0 0;color:#555c61;font-size:9.5px;line-height:1.45}
.ef-completeness{margin:13px 0}.ef-completeness span{display:block;color:#72777b;font-size:8.5px;margin-bottom:5px}.ef-completeness span b{color:var(--accent-dark)}.ef-completeness>div{height:4px;background:#e1e5e1}.ef-completeness i{display:block;height:100%;background:var(--accent)}.ef-wide{width:100%}
.ef-family-main{min-width:0}.ef-tabs{display:flex;border-bottom:1px solid #dedede;margin-bottom:12px}.ef-tabs a{padding:9px 12px;color:#7d8286;font:600 9px Oxygen,sans-serif;border-bottom:2px solid transparent}.ef-tabs a.active{color:#b07a36;border-color:#d2a762;background:#fcfaf6}
.ef-block{border:1px solid #e1e1e1;padding:13px 14px;margin-bottom:12px;background:#fff}.ef-two-col{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.ef-family-tree{padding:10px 4px 4px}.ef-tree-row{display:flex;gap:9px;flex-wrap:wrap;justify-content:center}.ef-tree-link{height:23px;width:1px;background:#cfd4cf;margin:0 auto;position:relative}.ef-tree-link:after{content:"";position:absolute;width:120px;left:-60px;bottom:0;border-top:1px solid #cfd4cf}
.ef-person-card{position:relative;width:min(210px,100%);min-height:70px;border:1px solid #e1e1e1;background:#fff;display:grid;grid-template-columns:38px 1fr;gap:9px;align-items:center;padding:9px 10px}.ef-person-card.child{background:#fbfdfb}.ef-person-avatar{width:36px;height:36px;border-radius:50%;display:flex;align-items:center;justify-content:center;background:#eef5ee;color:#4f8151;font:700 9px Oxygen,sans-serif}.ef-person-card b{display:block;color:#474e54;font-size:9.5px}.ef-person-card small{display:block;color:#898e92;font-size:8.3px;margin-top:2px}.ef-person-card em{display:block;color:#aaa;font-size:7.8px;font-style:normal;margin-top:2px}.ef-mini-tag{position:absolute;right:6px;top:5px;color:#9a733b;font:600 7px Montserrat,sans-serif}.ef-alert-dot{position:absolute;width:7px;height:7px;border-radius:50%;background:#c86b58;right:6px;top:6px}
.ef-empty-inline{font-size:9px;color:#999;padding:12px}.ef-alert-list>div{padding:8px 0;border-bottom:1px solid #eee}.ef-alert-list>div:last-child{border-bottom:0}.ef-alert-list b{display:block;color:#9a594d;font-size:9.5px}.ef-alert-list span{display:block;font-size:8.5px;color:#8d9194;margin-top:2px}.ef-alert-list .ef-ok b{color:#4d7e4f}
.ef-school-summary{display:flex;gap:7px;flex-wrap:wrap;margin-bottom:12px}.ef-school-summary article{min-width:82px;border:1px solid #e1e1e1;padding:8px 10px;background:#fafafa}.ef-school-summary b{display:block;color:#465057;font:500 18px Oxygen,sans-serif}.ef-school-summary span{font-size:8px;color:#8d9295}
.ef-activity-cards{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:11px}.ef-activity-cards article{display:grid;grid-template-columns:48px 1fr;border:1px solid #e1e1e1;background:#fff}.ef-activity-icon{display:flex;align-items:flex-start;justify-content:center;padding-top:16px;background:#f5f8f5;color:var(--accent)}.ef-activity-icon .ico{width:22px;height:22px}.ef-activity-card-body{padding:12px 13px}.ef-activity-card-body>span{font:600 8px Montserrat,sans-serif;color:#b07a36;text-transform:uppercase}.ef-activity-card-body h3{margin:3px 0;color:#414950;font:600 12px Oxygen,sans-serif}.ef-activity-card-body p{margin:0 0 9px;color:#999;font-size:8.5px}.ef-capacity>div{height:5px;background:#ededed}.ef-capacity i{display:block;height:100%;background:#9fc6a0}.ef-capacity small{display:block;margin-top:4px;color:#878c90;font-size:8px}.ef-activity-card-body footer{display:flex;align-items:baseline;gap:5px;margin-top:10px;padding-top:8px;border-top:1px solid #eee}.ef-activity-card-body footer b{color:#4e595f;font:500 17px Oxygen,sans-serif}.ef-activity-card-body footer span{font-size:8px;color:#999}
.ef-filterbar{display:flex;align-items:flex-end;gap:9px;background:#fafafa;border:1px solid #e0e0e0;padding:10px;margin-bottom:10px}.ef-filterbar label{display:flex;flex-direction:column;gap:4px;color:#7d8286;font:600 8px Oxygen,sans-serif}.ef-filterbar .input,.ef-filterbar .select{min-width:160px}
.ef-pointage-summary{display:flex;gap:7px;margin-bottom:10px}.ef-pointage-summary span{border:1px solid #e0e0e0;background:#fafafa;padding:7px 10px;color:#767b7e;font-size:8.5px}.ef-pointage-summary b{font:600 14px Oxygen,sans-serif;color:#4f575d;margin-right:3px}.ef-pointage-summary .ok b{color:#4f8a52}.ef-pointage-summary .bad b{color:#a65349}
.ef-point-actions{display:flex;gap:4px}.ef-present{border:1px solid #bcd5bd;background:#f0f7f0;color:#477d49}.ef-absent{border:1px solid #e0c0bd;background:#fbf3f2;color:#9f5048}
.ef-billing-kpis{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:9px;margin-bottom:12px}.ef-billing-kpis article{border:1px solid #e0e0e0;background:#fafafa;padding:13px}.ef-billing-kpis span{display:block;color:#8c9194;font:600 8px Montserrat,sans-serif;text-transform:uppercase}.ef-billing-kpis b{display:block;margin-top:5px;color:#444d53;font:500 21px Oxygen,sans-serif}
.status-reserved{color:#6b7580;border-color:#d5dbe0;background:#f5f7f8}.status-present,.status-paid,.status-issued{color:#477c49;border-color:#cddfce;background:#f1f7f1}.status-absent,.status-overdue{color:#9a4c46;border-color:#e5cdca;background:#fbf4f3}.status-excused{color:#8c6b27;border-color:#e3d5b9;background:#fbf7ef}

@media(max-width:1200px){.ef-kpis{grid-template-columns:repeat(2,1fr)}.ef-dashboard-grid{grid-template-columns:1fr}.ef-family-layout{grid-template-columns:190px minmax(0,1fr)}}
@media(max-width:780px){.enfance-shell{grid-template-columns:1fr}.enfance-rail{flex-direction:row;overflow:auto;border-right:0;border-bottom:1px solid #dfe4df}.enfance-rail-item{min-width:76px;min-height:60px;border-left:0;border-bottom:3px solid transparent}.enfance-rail-item.active{border-left:0;border-bottom-color:var(--accent)}.enfance-workspace{padding:16px}.ef-family-layout{grid-template-columns:1fr}.ef-family-summary{order:1}.ef-family-main{order:0}.ef-activity-cards,.ef-two-col{grid-template-columns:1fr}.ef-dashboard-head{align-items:flex-start;flex-direction:column}.ef-filterbar{align-items:stretch;flex-direction:column}.ef-filterbar .input,.ef-filterbar .select{width:100%;min-width:0}.ef-pointage-summary{flex-wrap:wrap}}
@media(max-width:520px){.ef-kpis,.ef-billing-kpis{grid-template-columns:1fr}.ef-family-actions,.ef-head-actions{flex-wrap:wrap}.ef-person-card{width:100%}}

/* Agents & absences — V1.3 */
.rh-shell{display:grid;grid-template-columns:170px minmax(0,1fr);border:1px solid #e0e0e0;min-height:670px;background:#f8f9f8;margin-top:4px}
.rh-nav{background:#f3f4f3;border-right:1px solid #dedede;padding:10px 0;display:flex;flex-direction:column}
.rh-nav-item{min-height:42px;display:flex;align-items:center;gap:10px;padding:0 13px;color:#666d72;font:600 9.5px Oxygen,sans-serif;border-left:3px solid transparent}
.rh-nav-item .ico{width:15px;height:15px;stroke-width:1.55;color:#7a8186}
.rh-nav-item:hover{background:#fff;color:var(--ink)}
.rh-nav-item.active{background:#fff;color:var(--accent-dark);border-left-color:var(--accent)}
.rh-nav-item.active .ico{color:var(--accent)}
.rh-workspace{min-width:0;background:#fff;padding:20px 22px 30px}
.rh-work-head{display:flex;justify-content:space-between;align-items:flex-start;gap:15px;margin:0 0 15px;padding-bottom:11px;border-bottom:1px solid #e2e2e2}
.rh-work-head h2{margin:0;color:var(--ink);font:600 19px Oxygen,sans-serif}.rh-work-head p{margin:4px 0 0;color:#8b9094;font-size:10px}
.rh-agent-switch{display:flex;justify-content:flex-end;margin-bottom:10px}.rh-agent-switch label{font:600 9px Oxygen,sans-serif;color:#6d7478}.rh-agent-switch .select{margin-left:7px;min-width:220px}
.rh-calendar-strip{display:grid;grid-template-columns:repeat(5,minmax(150px,1fr));gap:5px;background:#e6e8e6;padding:1px;border:1px solid #dfe1df;overflow:auto}
.rh-mini-month{min-width:150px;background:#fff;padding:9px 8px 10px}.rh-mini-month header{display:flex;justify-content:center;margin-bottom:7px}.rh-mini-month header b{font:600 9.5px Oxygen,sans-serif;color:#4d555a}
.rh-mini-week,.rh-mini-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:2px}.rh-mini-week span{font:600 6.8px Montserrat,sans-serif;text-align:center;color:#a0a4a7;text-transform:lowercase}
.rh-mini-grid span,.rh-mini-grid i{height:21px;display:flex;align-items:center;justify-content:center;font:600 7.5px Oxygen,sans-serif;color:#596066;position:relative}.rh-mini-grid span.weekend{background:#f5f5f5;color:#aaa}.rh-mini-grid span.holiday{background:#f7f4ef;color:#a58b66}.rh-mini-grid span.today{outline:1px solid #9ca6a0;outline-offset:-1px}.rh-mini-grid span.approved{background:color-mix(in srgb,var(--leave-color) 23%, white);color:#344238}.rh-mini-grid span.approved:before{content:"";position:absolute;inset:auto 2px 1px;height:2px;background:var(--leave-color)}.rh-mini-grid span.pending{border:1px dashed var(--leave-color);background:#fff}
.rh-request-box{display:grid;grid-template-columns:155px minmax(0,1fr);gap:16px;align-items:center;background:#f7f8f7;border:1px solid #e4e5e4;padding:11px 13px;margin:10px 0 17px}.rh-request-info{display:flex;align-items:center;gap:9px;border-right:1px solid #ddd;padding-right:12px}.rh-avatar{width:34px;height:34px;border-radius:50%;background:var(--accent);color:#fff;display:inline-flex;align-items:center;justify-content:center;font:700 9px Oxygen,sans-serif;flex:0 0 auto}.rh-request-info b{display:block;color:#434a50;font-size:9.5px}.rh-request-info small{display:block;color:#969a9d;font-size:7.8px;margin-top:2px}
.rh-request-form{display:grid;grid-template-columns:1.15fr 1.2fr 1.2fr 1.3fr 1fr auto;gap:6px;align-items:end}.rh-request-form label{display:flex;flex-direction:column;gap:3px;color:#81868a;font:600 7.5px Oxygen,sans-serif}.rh-request-form .input,.rh-request-form .select{min-height:30px;padding:5px 7px;font-size:9px}.rh-request-form label>select+select,.rh-request-form label>input+select{margin-top:2px}.rh-request-form .btn{height:31px;min-height:31px}.rh-document input{padding:3px;font-size:7.5px}
.rh-balance-section{margin-top:8px}.rh-balance-section .section-head{margin-bottom:8px}.rh-balance-section .section-head h2{font-size:15px}.rh-balance-section .section-head p{font-size:8.5px}.rh-balance-table{border:1px solid #dfe2df;background:#f8f9f8}.rh-balance-head,.rh-balance-row{display:grid;grid-template-columns:minmax(220px,2fr) repeat(4,minmax(70px,.7fr));align-items:center}.rh-balance-head{min-height:29px;background:#eef1ee;color:#7f8589;font:600 7.4px Montserrat,sans-serif}.rh-balance-head span,.rh-balance-row>span,.rh-balance-row>strong{padding:6px 10px}.rh-balance-row{min-height:38px;background:#fff;border-top:1px solid #e4e7e4;position:relative}.rh-balance-row:before{content:"";position:absolute;left:4px;top:5px;bottom:5px;width:3px;background:var(--leave-color)}.rh-balance-row b{display:block;color:#4b5257;font-size:9px}.rh-balance-row small{display:block;color:#9ba0a3;font-size:7.4px;margin-top:1px}.rh-balance-row span:not(:first-child),.rh-balance-row strong{text-align:right;color:#576067;font-size:8.8px;font-weight:500}.rh-recent{margin-top:16px}
.rh-approval-layout{display:grid;grid-template-columns:230px minmax(0,1fr);border:1px solid #e0e2e0;min-height:510px}.rh-approval-list{background:#f7f8f7;border-right:1px solid #dfe1df}.rh-approval-list>header{height:50px;padding:0 12px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid #ddd}.rh-approval-list>header b{font:600 10px Oxygen,sans-serif;color:#4d555a}.rh-approval-list>header span{background:#e7ece7;color:#56745b;border-radius:10px;min-width:20px;height:20px;display:flex;align-items:center;justify-content:center;font-size:8px}.rh-approval-tabs{padding:8px 11px;border-bottom:1px solid #e0e0e0;background:#fff}.rh-approval-tabs span{color:var(--accent-dark);font:600 8px Oxygen,sans-serif}.rh-approval-item{display:block;padding:11px 12px;border-bottom:1px solid #e6e6e6}.rh-approval-item b{display:block;color:#4e555a;font-size:9px}.rh-approval-item small{display:block;color:#969b9e;font-size:7.8px;margin-top:3px}.rh-approval-item.active{background:#eef5ee;border-left:3px solid var(--accent);padding-left:9px}.rh-approval-detail{padding:18px;background:#fbfcfb}.rh-approval-card{max-width:560px;margin:0 auto;background:#fff;border:1px solid #e0e1e0;padding:16px}.rh-approval-card>header{display:flex;justify-content:space-between;align-items:center;padding-bottom:13px;border-bottom:1px solid #e6e6e6}.rh-person-title{display:flex;align-items:center;gap:9px}.rh-person-title h3{margin:0;color:#414a50;font:600 11px Oxygen,sans-serif}.rh-person-title small{display:block;color:#969a9d;font-size:8px;margin-top:2px}.rh-warning{margin:11px 0;padding:9px 10px;background:#fff7e9;border:1px solid #eed3a5;color:#8a672b;font-size:8.7px}.rh-period-card{display:grid;grid-template-columns:1fr 1fr auto 1fr 1fr;align-items:center;background:#f4f7f4;padding:10px;margin:10px 0}.rh-period-card span:first-child{text-align:left}.rh-period-card span:last-child{text-align:right}.rh-period-card span small{display:block;color:#9a9ea1;font-size:7px}.rh-period-card span b{display:block;color:#4d5459;font-size:9px;margin-top:2px}.rh-period-card i{height:1px;background:#cdd7cd}.rh-period-card strong{padding:0 8px;color:#566159;font:600 8px Oxygen,sans-serif}.rh-approval-card section{padding:10px 0;border-bottom:1px solid #ededed}.rh-approval-card section:last-child{border-bottom:0}.rh-approval-card h4{margin:0 0 5px;color:#3f474c;font:600 9.5px Oxygen,sans-serif}.rh-approval-card p{margin:0;color:#777d81;font-size:8.5px}.rh-conflicts{display:flex;flex-wrap:wrap;gap:4px;margin-top:6px}.rh-conflicts span{background:#f4f4f4;border:1px solid #e0e0e0;padding:3px 6px;color:#6e7478;font-size:7.5px}.rh-history>div{display:grid;grid-template-columns:10px 1fr;gap:6px;padding:4px 0}.rh-history-dot{width:8px;height:8px;border-radius:50%;background:var(--accent);margin-top:3px}.rh-history p b{display:block;font-size:8.3px}.rh-history p small,.rh-history p em{display:block;font-size:7.2px;color:#9a9ea1;font-style:normal;margin-top:1px}.rh-delegation{margin-top:15px}
.rh-priority{margin-bottom:15px}.rh-priority h3{margin:0 0 7px;color:#40484e;font:600 11px Oxygen,sans-serif}.rh-action-row{display:grid;grid-template-columns:27px minmax(0,1fr) 18px;gap:8px;align-items:center;min-height:44px;border:1px solid #e1e3e1;border-bottom:0;padding:6px 9px;background:#fff}.rh-action-row:last-child{border-bottom:1px solid #e1e3e1}.rh-action-row:hover{background:#fafbfa}.rh-count{width:22px;height:22px;border-radius:4px;background:#e8ece8;color:#5d6b60;display:flex;align-items:center;justify-content:center;font:600 8px Oxygen,sans-serif}.rh-count.warning{background:#fff2db;color:#9b6d22}.rh-count.danger{background:#fde8e5;color:#a4534b}.rh-action-row b{display:block;color:#51585d;font-size:9px}.rh-action-row small{display:block;color:#989c9f;font-size:7.5px;margin-top:1px}.rh-chevron{text-align:center;color:#858b8e}.rh-other .rh-count{background:#eef1ee}.rh-urgent-card{width:min(420px,100%);display:flex;justify-content:space-between;align-items:center;background:#f2f4f2;padding:12px 15px;margin-top:15px}.rh-urgent-card small{display:block;color:#81878a;font-size:7.5px}.rh-urgent-card strong{display:block;color:#3e484e;font:600 20px Oxygen,sans-serif;margin:2px 0}.rh-urgent-card a{font-size:8px;color:var(--accent-dark)}.rh-urgent-card>.ico{width:40px;height:40px;color:#c3b48d}
.rh-filterbar{display:flex;align-items:flex-end;gap:8px;background:#f7f8f7;border:1px solid #e0e2e0;padding:9px;margin-bottom:11px}.rh-filterbar label{display:flex;flex-direction:column;gap:3px;color:#747b7f;font:600 7.6px Oxygen,sans-serif}.rh-filterbar .input,.rh-filterbar .select{min-width:155px;min-height:31px;font-size:9px}
.rh-planning-scroll{overflow:auto;border:1px solid #dde0dd}.rh-planning-grid{border-collapse:collapse;min-width:980px;width:100%}.rh-planning-grid th,.rh-planning-grid td{border-right:1px solid #eceeec;border-bottom:1px solid #eceeec;text-align:center;height:29px}.rh-planning-grid thead th{background:#f4f6f4;color:#697176;font:600 7px Oxygen,sans-serif}.rh-planning-grid thead th small{display:block;color:#a1a5a8;font-size:6px}.rh-planning-grid th:first-child{position:sticky;left:0;z-index:2;width:160px;min-width:160px;text-align:left;padding:0 8px;background:#fff}.rh-planning-grid thead th:first-child{z-index:3;background:#f4f6f4}.rh-planning-grid tbody th b{display:block;color:#4c5459;font-size:8.4px}.rh-planning-grid tbody th small{display:block;color:#9ba0a3;font-size:7px}.rh-planning-grid td{font:600 6.5px Oxygen,sans-serif;color:#fff;min-width:24px}.rh-planning-grid td.weekend,.rh-planning-grid th.weekend{background:#f5f5f5;color:#aaa}.rh-planning-grid td.leave.approved{background:color-mix(in srgb,var(--leave-color) 80%,white)}.rh-planning-grid td.leave.pending{background:#fff;color:#7c8387;outline:1px dashed var(--leave-color);outline-offset:-3px}.rh-legend{display:flex;gap:14px;margin-top:7px;font-size:7.8px;color:#83888c}.rh-legend span{display:flex;align-items:center;gap:5px}.rh-legend i{width:13px;height:7px;display:block}.rh-legend i.approved{background:var(--accent)}.rh-legend i.pending{border:1px dashed var(--accent)}.rh-legend i.weekend{background:#f1f1f1}
.rh-info-list p{padding:8px 0;border-bottom:1px solid #eee;margin:0;color:#73797d;font-size:9px}.rh-info-list p:last-child{border-bottom:0}.text-danger{color:var(--danger)!important}.rh-cet-balance{text-align:center;padding:20px 10px}.rh-cet-balance small,.rh-cet-balance span{display:block;color:#92979a;font-size:8px}.rh-cet-balance strong{display:block;color:var(--ink);font:500 28px Oxygen,sans-serif;margin:4px 0}.rh-export-card{border:1px solid #dfe1df;background:#fff;padding:12px}.rh-export-card>header{display:flex;justify-content:space-between;gap:15px;align-items:center;padding-bottom:12px;border-bottom:1px solid #e2e4e2}.rh-export-card header h3{margin:2px 0;color:#3f484e;font:600 15px Oxygen,sans-serif}.rh-export-card header small,.rh-export-card header span{display:block;color:#8e9396;font-size:8px}.rh-export-section{margin-top:11px;border:1px solid #d9dfd9}.rh-export-section h4{margin:0;padding:7px 9px;background:#f2f7f2;color:#4f7854;font:600 9px Oxygen,sans-serif}.rh-export-section.exclude h4{background:#fff8ec;color:#9a6c24}.rh-export-section>div{display:flex;justify-content:space-between;align-items:center;padding:7px 9px;border-top:1px solid #e8eae8;color:#62696e;font-size:8.5px}.rh-export-section span b{display:inline-flex;min-width:18px;justify-content:center;margin-right:6px}.rh-export-section em{font-style:normal;color:#9ba0a3;font-size:7.5px}.rh-report-bars>div{display:grid;grid-template-columns:110px 1fr 42px;gap:8px;align-items:center;padding:6px 0}.rh-report-bars span{font-size:8.5px;color:#62696d}.rh-report-bars i{height:7px;background:#eee}.rh-report-bars i b{display:block;height:100%;background:var(--accent)}.rh-report-bars strong{text-align:right;color:#596167;font:600 8px Oxygen,sans-serif}.rh-color-dot{width:8px;height:8px;border-radius:50%;display:inline-block;margin-right:6px}

@media(max-width:1400px){.rh-request-form{grid-template-columns:repeat(3,1fr)}.rh-request-form .btn{align-self:end}.rh-calendar-strip{grid-template-columns:repeat(5,170px)}}
@media(max-width:1100px){.rh-shell{grid-template-columns:145px minmax(0,1fr)}.rh-nav-item{padding:0 9px;font-size:8.5px}.rh-approval-layout{grid-template-columns:200px 1fr}.rh-balance-head,.rh-balance-row{grid-template-columns:minmax(170px,2fr) repeat(4,minmax(55px,.7fr))}}
@media(max-width:780px){.rh-shell{grid-template-columns:1fr}.rh-nav{flex-direction:row;overflow:auto;border-right:0;border-bottom:1px solid #dedede;padding:0}.rh-nav-item{min-width:110px;border-left:0;border-bottom:3px solid transparent;justify-content:center}.rh-nav-item.active{border-left:0;border-bottom-color:var(--accent)}.rh-workspace{padding:14px}.rh-request-box{grid-template-columns:1fr}.rh-request-info{border-right:0;border-bottom:1px solid #ddd;padding-bottom:8px}.rh-request-form{grid-template-columns:1fr 1fr}.rh-approval-layout{grid-template-columns:1fr}.rh-approval-list{border-right:0;border-bottom:1px solid #ddd;max-height:200px;overflow:auto}.rh-balance-head,.rh-balance-row{grid-template-columns:minmax(150px,2fr) repeat(4,65px);min-width:470px}.rh-balance-table{overflow:auto}.rh-filterbar{align-items:stretch;flex-direction:column}.rh-filterbar .input,.rh-filterbar .select{width:100%;min-width:0}}
.rh-document-review{display:flex;align-items:center;gap:7px;flex-wrap:wrap;margin:9px 0;padding:8px;background:#f7f8f7;border:1px solid #e1e3e1}.rh-document-review>span{font-size:8px;color:#81878a}.rh-document-review form{display:flex;gap:4px;margin-left:auto}
.rh-inline-upload{display:flex;align-items:center;gap:4px}.rh-inline-upload input[type=file]{width:105px;font-size:7px;color:#7f8589}
.rh-reason-form{display:flex;gap:4px;align-items:center}.rh-reason-form .input{min-width:150px;min-height:29px;font-size:8.5px;padding:4px 6px}
.rh-decision-form{display:flex;align-items:center;gap:8px;flex-wrap:wrap;justify-content:flex-end}.rh-decision-form>.input{width:260px;max-width:34vw;height:31px;font-size:10px}.rh-decision-form .actions-row{margin:0}@media(max-width:900px){.rh-decision-form{width:100%;justify-content:flex-start}.rh-decision-form>.input{max-width:none;width:100%}}

/* ========================================================================== */
/* V1.4 — Salles & matériel / administration des droits                     */
/* Direction visuelle : logiciel métier municipal, dense et sans effet SaaS */
/* ========================================================================== */
.admin-tabs,.rooms-nav{display:flex;align-items:stretch;gap:0;border:1px solid #dcdedc;background:#f5f5f3;margin:-6px 0 22px;overflow:auto}
.admin-tabs a,.rooms-nav a{position:relative;flex:0 0 auto;padding:11px 15px;border-right:1px solid #dedfdd;color:#666d70;font:600 10px Oxygen,sans-serif;background:#f8f8f7}
.admin-tabs a:last-child,.rooms-nav a:last-child{border-right:0}.admin-tabs a:hover,.rooms-nav a:hover{background:#fff;color:var(--ink)}
.admin-tabs a.active,.rooms-nav a.active{background:#fff;color:var(--accent-dark)}.admin-tabs a.active:after,.rooms-nav a.active:after{content:"";position:absolute;left:10px;right:10px;bottom:-1px;height:2px;background:var(--accent)}
.security-note{border:1px solid #cfd8cf;border-left:4px solid var(--accent);background:#f6f9f6;padding:13px 15px;margin-bottom:23px}.security-note b{display:block;color:#3f5141;font:700 11px Oxygen,sans-serif}.security-note p{margin:4px 0 0;color:#69716c;font-size:9.5px;line-height:1.55}
.account-kind{display:inline-flex;border:1px solid #d7ddd7;background:#f7faf7;color:#55705a;padding:2px 6px;font:600 7.5px Montserrat,sans-serif;text-transform:uppercase;letter-spacing:.18px}.account-kind.admin-kind{border-color:#d8d1ca;background:#faf7f3;color:#795c45}
.module-chips{display:flex;gap:4px;flex-wrap:wrap;max-width:380px}.module-chip{border:1px solid #dfe3df;background:#fafbfa;padding:2px 5px;color:#747b76;font-size:7.6px;line-height:1.4}.module-chip.manage{border-color:#c7d9c8;background:#f0f6f0;color:#467249}
.rights-layout{display:grid;grid-template-columns:220px minmax(0,1fr);border:1px solid #dfe0de;background:#fff;min-height:520px}.rights-users{border-right:1px solid #dedfdd;background:#f6f6f4}.rights-search{padding:10px;border-bottom:1px solid #dedfdd}.rights-search .input{min-height:31px;font-size:9px}.rights-user{display:grid;grid-template-columns:31px 1fr;gap:8px;align-items:center;padding:9px 11px;border-bottom:1px solid #e4e4e2;color:#656c70}.rights-user:hover{background:#fff}.rights-user.active{background:#fff;border-left:3px solid var(--accent);padding-left:8px}.rights-user .avatar{width:29px;height:29px;font-size:8px}.rights-user b{display:block;color:#4c5358;font-size:9px}.rights-user small{display:block;color:#989c9f;font-size:7.5px;margin-top:1px}.rights-panel{min-width:0;padding:18px 20px}.rights-head{display:flex;justify-content:space-between;align-items:center;padding-bottom:13px;border-bottom:1px dotted #bfc2bf;margin-bottom:12px}.rights-head .person .avatar{width:38px;height:38px}.rights-table{border:1px solid #dcdfdc}.rights-row{display:grid;grid-template-columns:minmax(210px,2fr) repeat(4,minmax(72px,.55fr));align-items:stretch;border-bottom:1px solid #e5e6e4;min-height:54px}.rights-row:last-child{border-bottom:0}.rights-row>span:first-child{padding:8px 10px}.rights-row>span:first-child b{display:block;color:#4b5358;font:600 9px Oxygen,sans-serif}.rights-row>span:first-child small{display:block;color:#989c9f;font-size:7.5px;margin-top:2px}.rights-row>label,.rights-title>span:not(:first-child){border-left:1px solid #e5e6e4;display:flex;align-items:center;justify-content:center;text-align:center}.rights-title{min-height:34px;background:#f2f3f1;color:#777d80;font:600 7.5px Montserrat,sans-serif;text-transform:uppercase}.rights-title>span{padding:7px}.rights-row label{cursor:pointer;position:relative}.rights-row input{position:absolute;opacity:0}.rights-row label i{width:15px;height:15px;border:1px solid #c9cdca;background:#fff;display:block;position:relative}.rights-row input[type=radio] + i{border-radius:50%}.rights-row input:checked + i{border-color:var(--accent);background:#f3f8f3}.rights-row input[type=radio]:checked + i:after{content:"";position:absolute;width:7px;height:7px;border-radius:50%;background:var(--accent);left:3px;top:3px}.rights-row input[type=checkbox]:checked + i:after{content:"✓";position:absolute;inset:-3px 0 0;color:var(--accent-dark);font:700 13px Oxygen,sans-serif}.rights-actions{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-top:13px}.rights-actions p{margin:0;color:#929794;font-size:8px}

.room-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:1px;background:#dfe1df;border:1px solid #dfe1df;margin-bottom:18px}.room-kpis>div{background:#f8f8f6;padding:14px 15px;min-height:86px}.room-kpis span{display:block;color:#8b908c;font:600 7.7px Montserrat,sans-serif;text-transform:uppercase;letter-spacing:.16px}.room-kpis b{display:block;color:#434b4f;font:500 20px Oxygen,sans-serif;margin:4px 0 1px}.room-kpis small{display:block;color:#989c99;font-size:7.8px}
.table-legend{display:flex;gap:12px;align-items:center;flex-wrap:wrap;margin:8px 0 12px;color:#858a87;font-size:8px}.table-legend span{display:flex;align-items:center;gap:5px}.legend-dot{display:inline-block;width:7px;height:7px;border:1px solid #aeb4af;background:#fff}.legend-dot.pending{background:#f3e6bc;border-color:#d1b66d}.legend-dot.confirmed{background:#dcebdc;border-color:#8eb190}.legend-dot.refused{background:#f1dcd9;border-color:#c9928c}
.booking-calendar{border:1px solid #dcdedc;background:#fff}.booking-cal-head{display:flex;align-items:center;justify-content:space-between;padding:9px 11px;border-bottom:1px solid #e2e3e1;background:#f5f6f4}.booking-cal-head b{color:#4b5357;font:600 10px Oxygen,sans-serif}.booking-cal-head a{font-size:8px;color:#777d79}.booking-cal-grid{display:grid;grid-template-columns:repeat(7,1fr)}.booking-cal-grid>span{padding:6px 3px;text-align:center;border-right:1px solid #eee;border-bottom:1px solid #eee;color:#898e8a;font:600 7px Oxygen,sans-serif;background:#fafafa}.booking-day{position:relative;min-height:54px;padding:5px;border-right:1px solid #eeeeec;border-bottom:1px solid #eeeeec;color:#656b68;font-size:8px}.booking-day.muted{background:#fafafa;color:#b9bcb9}.booking-day.today{box-shadow:inset 0 0 0 1px var(--accent)}.booking-day.has-booking{background:#fbfdfb}.booking-dot{display:block;height:3px;background:var(--accent);margin-top:3px;overflow:hidden}.booking-dot.pending{background:#cfac5b}.booking-dot.rejected,.booking-dot.cancelled{background:#ba756e}
.reservation-list{border:1px solid #e0e1df}.reservation-list>a,.prep-row{display:grid;grid-template-columns:62px minmax(0,1fr) auto;gap:9px;align-items:center;padding:8px 10px;border-bottom:1px solid #e7e8e6;color:#666d69}.reservation-list>a:last-child,.prep-row:last-child{border-bottom:0}.reservation-list>a:hover{background:#f7f9f7}.reservation-date{border-right:1px solid #e0e2df;color:#68716a;font:600 8px Oxygen,sans-serif}.reservation-list b,.prep-row b{display:block;color:#4b5350;font-size:8.5px}.reservation-list small,.prep-row small{display:block;color:#979b98;font-size:7.5px;margin-top:2px}.plain-state{font-size:8px;color:#6e7671}.series-tag{display:inline-block;margin-top:3px;padding:1px 4px;background:#f0f3ef;border:1px solid #d9ddd8;color:#6e786e;font-size:6.5px;text-transform:uppercase}.filter-pill{display:inline-block;border:1px solid #d9ded9;padding:2px 6px;background:#f7f9f7;color:#667268;font-size:7px}.payment-filter{display:flex;align-items:flex-end;gap:8px;padding:9px 10px;background:#f6f6f4;border:1px solid #dedfdd;margin-bottom:10px}.payment-filter label{font:600 7.5px Oxygen,sans-serif;color:#757b77}.payment-filter .input{display:block;margin-top:3px;min-height:31px}
.booking-detail-head{display:flex;justify-content:space-between;align-items:flex-start;gap:20px;padding-bottom:13px;border-bottom:1px dotted #bfc2bf;margin-bottom:15px}.booking-detail-head h2{margin:0;color:#40484c;font:500 21px Oxygen,sans-serif}.booking-detail-head p{margin:3px 0 0;color:#8b908d;font-size:9px}.booking-detail-status{text-align:right}.booking-detail-status small{display:block;margin-top:4px;color:#999;font-size:7.5px}.booking-workflow{display:grid;grid-template-columns:repeat(4,1fr);border:1px solid #dddfdc;margin-bottom:16px;background:#f7f7f5}.booking-workflow>div{position:relative;padding:10px 10px 10px 30px;border-right:1px solid #dddfdc;min-height:52px}.booking-workflow>div:last-child{border-right:0}.booking-workflow i{position:absolute;left:9px;top:10px;width:14px;height:14px;border:1px solid #bfc4bf;border-radius:50%;font:700 7px Oxygen,sans-serif;display:flex;align-items:center;justify-content:center;color:#8c928d;background:#fff}.booking-workflow .done i{border-color:var(--accent);background:var(--accent);color:#fff}.booking-workflow b{display:block;color:#555d59;font-size:8px}.booking-workflow span{display:block;color:#969a97;font-size:7px;margin-top:2px}.booking-detail-grid{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(250px,.7fr);gap:16px}.booking-actions{border:1px solid #e0e1df;background:#f8f8f6;padding:12px}.booking-actions h3{margin:0 0 8px;color:#4c5350;font:600 10px Oxygen,sans-serif}.compact-form{display:grid;gap:7px}.compact-form label{display:block;color:#777d79;font:600 7.5px Oxygen,sans-serif}.compact-form .input,.compact-form .select,.compact-form .textarea{margin-top:3px;width:100%}.payment-summary{display:grid;grid-template-columns:repeat(3,1fr);border:1px solid #e0e1df;margin-bottom:10px}.payment-summary>div{padding:9px 10px;border-right:1px solid #e0e1df}.payment-summary>div:last-child{border-right:0}.payment-summary span{display:block;color:#949995;font-size:7px}.payment-summary b{display:block;color:#4d5551;font:500 14px Oxygen,sans-serif;margin-top:2px}.mini-ledger{border:1px solid #e1e2e0}.mini-ledger>div{display:grid;grid-template-columns:70px 1fr auto;gap:7px;padding:6px 8px;border-bottom:1px solid #ebebe9;font-size:7.5px}.mini-ledger>div:last-child{border-bottom:0}.inline-payment{display:grid;grid-template-columns:1fr 1fr 1fr;gap:6px;margin-top:8px}
.municipal-room-list{border-top:1px solid #dcdddb}.municipal-room{display:grid;grid-template-columns:150px minmax(0,1fr) 140px;gap:16px;padding:16px 0;border-bottom:1px solid #dcdddb}.municipal-room-photo{height:106px;background:#eeefed;overflow:hidden;display:flex;align-items:center;justify-content:center;color:#8b928c}.municipal-room-photo img{width:100%;height:100%;object-fit:cover}.municipal-room-photo .ico{width:29px;height:29px}.municipal-room-main h3{margin:0 0 4px;color:#41494d;font:600 13px Oxygen,sans-serif}.municipal-room-main p{margin:0 0 8px;color:#8d928f;font-size:8.5px;line-height:1.55}.municipal-room-main dl{display:grid;grid-template-columns:repeat(4,minmax(80px,1fr));gap:0;border:1px solid #e0e1df;margin:0}.municipal-room-main dl>div{padding:5px 7px;border-right:1px solid #e0e1df}.municipal-room-main dl>div:last-child{border-right:0}.municipal-room-main dt{color:#a0a4a1;font-size:6.5px}.municipal-room-main dd{margin:1px 0 0;color:#555d59;font:600 8px Oxygen,sans-serif}.equipment-line{margin-top:7px;color:#737a76;font-size:7.5px}.municipal-room-side{border-left:1px solid #e0e1df;padding-left:15px;display:flex;flex-direction:column;justify-content:center;align-items:flex-start}.municipal-room-side>b{font:500 23px Oxygen,sans-serif;color:#4c5550}.municipal-room-side>span{color:#929793;font-size:7.3px;margin:-2px 0 9px}

/* Portail public : volontairement proche d’un site communal classique */
.public-reservation{background:#efefed;color:#666d68;font-family:"Open Sans",Arial,sans-serif;min-height:100vh;font-size:13px}.public-top{height:67px;background:#fff;border-bottom:1px solid #d9dbd8;display:flex;align-items:center;justify-content:space-between;padding:0 max(24px,calc((100vw - 1160px)/2));position:sticky;top:0;z-index:20}.public-top a{display:flex;align-items:center;gap:13px;color:#343c38}.public-top img{max-width:175px;max-height:44px;object-fit:contain}.public-top strong{font:600 13px Oxygen,sans-serif}.public-top span{font-size:9px;color:#888f8a}.public-shell{width:min(1160px,calc(100% - 38px));margin:0 auto;padding:32px 0 54px}.public-success{border:1px solid #bfcfbe;border-left:4px solid var(--accent);background:#f5faf5;color:#4b694e;padding:11px 13px;margin-bottom:16px}.public-error{border-color:#dfc4c0;border-left-color:var(--danger);background:#fcf6f5;color:#8f4f48}.public-intro{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:50px;align-items:end;border-bottom:1px dotted #aaa;padding-bottom:18px;margin-bottom:22px}.public-intro .eyebrow{display:block;color:var(--accent-dark);font:600 8px Montserrat,sans-serif;text-transform:uppercase;letter-spacing:.4px}.public-intro h1{margin:5px 0 6px;color:#333b37;font:500 26px Oxygen,sans-serif}.public-intro p{margin:0;color:#777e79;font-size:10px;line-height:1.65}.public-intro aside{border-left:3px solid var(--accent);padding-left:13px;color:#6f7771;font-size:9px}.public-room-list{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:#d9dbd8;border:1px solid #d9dbd8}.public-room-card{background:#fff;display:flex;flex-direction:column;min-width:0}.public-room-photo{height:180px;background:#e9ebe8;overflow:hidden;display:flex;align-items:center;justify-content:center;color:#859087}.public-room-photo img{width:100%;height:100%;object-fit:cover}.public-room-photo .ico{width:34px;height:34px}.public-room-copy{padding:13px 14px;display:flex;flex-direction:column;flex:1}.public-room-copy h2{margin:0;color:#3d4641;font:600 13px Oxygen,sans-serif}.public-room-copy>p{margin:5px 0 8px;color:#7d847f;font-size:8.5px;line-height:1.55;min-height:40px}.public-room-meta{display:flex;gap:10px;flex-wrap:wrap;padding:7px 0;border-top:1px solid #eee;border-bottom:1px solid #eee;font-size:7.5px;color:#656e67}.public-equipment{margin:8px 0;color:#8b918d;font-size:7.2px}.public-room-copy .btn{margin-top:auto;align-self:flex-start}.public-room-detail{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(340px,.85fr);gap:22px}.public-detail-photo{height:310px;background:#e5e8e4;overflow:hidden;display:flex;align-items:center;justify-content:center}.public-detail-photo img{width:100%;height:100%;object-fit:cover}.public-detail-copy{padding-top:13px}.public-detail-copy h1{margin:0;color:#343d38;font:500 25px Oxygen,sans-serif}.public-detail-copy p{font-size:9px;color:#777e79;line-height:1.65}.public-calendar-card,.public-request-card{background:#fff;border:1px solid #d9dbd8;padding:15px;margin-bottom:14px}.public-card-title{padding-bottom:8px;border-bottom:1px dotted #bbb;margin-bottom:10px}.public-card-title h2{margin:0;color:#444d48;font:600 12px Oxygen,sans-serif}.public-card-title p{margin:2px 0 0;color:#929793;font-size:7.5px}.public-cal-head{display:grid;grid-template-columns:repeat(7,1fr);background:#f4f5f3;border:1px solid #e2e3e1}.public-cal-head span{text-align:center;padding:5px 0;font:600 7px Oxygen,sans-serif;color:#858a86}.public-cal-grid{display:grid;grid-template-columns:repeat(7,1fr);border-left:1px solid #e2e3e1}.public-cal-grid span{height:35px;border-right:1px solid #e2e3e1;border-bottom:1px solid #e2e3e1;display:flex;align-items:center;justify-content:center;font-size:7.5px;color:#686f6a}.public-cal-grid .muted{color:#c0c3c0;background:#fafafa}.public-cal-grid .busy{background:#f0e4e1;color:#8b534e}.public-cal-grid .partial{background:#fbf3de;color:#8b702f}.public-cal-grid .available{background:#f3f8f3}.public-cal-legend{display:flex;gap:10px;margin-top:8px;color:#898e8a;font-size:7px}.public-request-card .form-grid{gap:9px}.public-footer{border-top:1px solid #d4d6d3;background:#e6e7e4;padding:20px max(24px,calc((100vw - 1160px)/2));display:flex;justify-content:space-between;color:#848a86;font-size:8px}

@media(max-width:1200px){.rights-layout{grid-template-columns:190px minmax(0,1fr)}.rights-row{grid-template-columns:minmax(180px,1.6fr) repeat(4,65px)}.room-kpis{grid-template-columns:repeat(2,1fr)}.municipal-room{grid-template-columns:120px minmax(0,1fr)}.municipal-room-side{grid-column:2;border-left:0;border-top:1px solid #e0e1df;padding:8px 0 0;flex-direction:row;gap:7px;align-items:center;justify-content:flex-start}.municipal-room-side>span{margin:0}.public-intro{grid-template-columns:1fr}.public-room-list{grid-template-columns:repeat(2,1fr)}}
@media(max-width:780px){.admin-tabs,.rooms-nav{margin-top:0}.rights-layout{grid-template-columns:1fr}.rights-users{border-right:0;border-bottom:1px solid #dedfdd;max-height:220px;overflow:auto}.rights-row{grid-template-columns:minmax(150px,1.6fr) repeat(4,50px)}.rights-title{font-size:6px}.rights-panel{padding:12px}.room-kpis{grid-template-columns:1fr 1fr}.booking-workflow{grid-template-columns:1fr 1fr}.booking-workflow>div:nth-child(2){border-right:0}.booking-detail-grid{grid-template-columns:1fr}.municipal-room{grid-template-columns:1fr}.municipal-room-photo{height:180px}.municipal-room-side{grid-column:1}.municipal-room-main dl{grid-template-columns:1fr 1fr}.municipal-room-main dl>div:nth-child(2){border-right:0}.public-shell{width:calc(100% - 24px);padding-top:20px}.public-top{padding:0 12px}.public-top span{display:none}.public-room-list{grid-template-columns:1fr}.public-room-detail{grid-template-columns:1fr}.public-detail-photo{height:230px}.public-footer{padding:16px 12px;display:block}.inline-payment{grid-template-columns:1fr}.payment-filter{align-items:stretch;flex-direction:column}.payment-filter .input{width:100%}}
/* Ajustements calendrier et états V1.4 */
.booking-cal-head{display:grid;grid-template-columns:repeat(7,1fr);padding:0;background:#f5f6f4}.booking-cal-head span{padding:6px 3px;text-align:center;border-right:1px solid #e4e5e3;color:#7d847f;font:600 7px Oxygen,sans-serif}.booking-cal-head span:last-child{border-right:0}
.booking-dot{height:auto;min-height:13px;padding:2px 3px;margin-top:3px;background:#eef6ee;border-left:2px solid var(--accent);color:#57615a;font-size:6.4px;line-height:1.25;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.booking-dot span{font-weight:700;margin-right:3px}.booking-dot.pending{background:#fbf5e7;border-left-color:#c7a451;color:#806d3c}.booking-dot.confirmed{background:#eef6ee;border-left-color:var(--accent)}
.legend-dot.green{background:#e1efe2;border-color:#83aa86}.legend-dot.amber{background:#f5ead1;border-color:#c7aa69}.condition{display:inline-block;border:1px solid #d6dad6;padding:2px 5px;background:#f8f9f7;color:#6d756f;font-size:7px}.condition-good{border-color:#bfd4c0;background:#f2f8f2;color:#4e7951}.condition-maintenance{border-color:#d9c89f;background:#faf6e9;color:#8a712f}.condition-damaged{border-color:#dfbfbb;background:#fcf4f3;color:#98534d}.condition-retired{color:#929692;background:#f1f1f1}
.equipment-return-form{display:flex;gap:4px;align-items:center;grid-column:1/-1;margin-top:3px}.equipment-return-form .input{width:62px;min-height:27px;padding:2px 5px;font-size:8px}
.public-calendar-title{display:flex;align-items:center;justify-content:space-between;padding-bottom:8px;border-bottom:1px dotted #bbb;margin-bottom:10px}.public-calendar-title b{display:block;color:#444d48;font:600 11px Oxygen,sans-serif}.public-calendar-title small{display:block;color:#929793;font-size:7px}.public-calendar-title a{display:inline-flex;width:26px;height:26px;align-items:center;justify-content:center;border:1px solid #d7d9d6;margin-left:3px;color:#6d746f}.public-cal-grid span{position:relative;flex-direction:column}.public-cal-grid span small{font-size:5.8px;margin-top:1px}.public-cal-grid .occupied{background:#fbf3de;color:#8b702f}.public-cal-grid .unavailable{background:#f0e4e1;color:#8b534e}.public-cal-legend i{display:inline-block;width:7px;height:7px;margin-right:3px;background:#f3f8f3;border:1px solid #cbd7cb}.public-cal-legend i.occupied{background:#fbf3de;border-color:#d7bf80}.public-cal-legend i.unavailable{background:#f0e4e1;border-color:#c89a94}
.public-room-detail section dl{display:grid;grid-template-columns:1fr 1fr;border:1px solid #dedfdd;margin:10px 0}.public-room-detail section dl>div{padding:7px 8px;border-right:1px solid #dedfdd;border-bottom:1px solid #dedfdd}.public-room-detail section dl>div:nth-child(2n){border-right:0}.public-room-detail section dl>div:nth-last-child(-n+2){border-bottom:0}.public-room-detail dt{color:#999;font-size:7px}.public-room-detail dd{margin:1px 0 0;color:#545c57;font:600 8px Oxygen,sans-serif}

/* V1.4.1 polish */
.booking-dot.unavailable{background:#f0e4e1;border-left-color:#9a655f;color:#754d48}.room-editor{border-left:3px solid var(--accent);max-width:900px}.municipal-room-side{gap:5px}

.municipal-room.inactive{opacity:.58}.municipal-room.inactive .municipal-room-main h3:after{content:" · masquée";font-weight:400;color:#9b6d67}

/* V1.4.1 — Administration des comptes */
.admin-upgrade-warning{margin-bottom:20px;line-height:1.6}
.admin-overview{display:grid;grid-template-columns:repeat(4,1fr);border:1px solid #d9dcda;background:#fff;margin-bottom:20px}
.admin-overview>div{padding:14px 16px;border-right:1px solid #e1e3e1}.admin-overview>div:last-child{border-right:0}
.admin-overview span{display:block;color:#7a817d;font:600 8px Montserrat,sans-serif;text-transform:uppercase;letter-spacing:.25px}
.admin-overview strong{display:block;margin-top:5px;color:#3f4744;font:500 25px Oxygen,sans-serif}.admin-overview small{display:block;color:#9a9f9c;font-size:8px;margin-top:2px}
.admin-account-toolbar{display:flex;align-items:flex-end;justify-content:space-between;gap:18px;margin:0 0 10px}
.admin-account-toolbar h2{margin:0;color:#414a47;font:500 18px Oxygen,sans-serif}.admin-account-toolbar p{margin:4px 0 0;color:#8b918e;font-size:9px}
.admin-account-toolbar .actions-row{align-items:center}.admin-account-search{width:220px;min-height:33px}
.admin-account-table .data-table td{vertical-align:middle}.muted-small{color:#9ba09d;font-size:8px;font-style:italic}
.account-detail-head{margin-bottom:16px}.account-detail-head>.btn{margin-bottom:12px}.account-title{display:flex;align-items:center;gap:12px;border-bottom:1px dotted #bfc4c0;padding-bottom:14px}
.account-title .big-avatar{width:48px;height:48px;display:grid;place-items:center;background:#eff4ef;border:1px solid #d1ddd2;color:#416646;font:600 13px Oxygen,sans-serif}
.account-title h2{margin:0;color:#3e4744;font:500 21px Oxygen,sans-serif}.account-title p{margin:3px 0 0;color:#929895;font-size:9px}.account-title .account-kind{margin-left:auto}
.admin-account-grid{display:grid;grid-template-columns:minmax(0,1.55fr) minmax(280px,.8fr);gap:18px;align-items:start}.admin-security-panel{display:grid;gap:14px}
.account-security-status{display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid #e2e4e2;padding:0 0 11px;margin-bottom:4px}.account-security-status>span{font:600 9px Oxygen,sans-serif;color:#59605d}
.account-inline-action{margin-top:14px}.btn-danger-soft{border:1px solid #d8b9b9;background:#fff7f7;color:#9c4e4e}.btn-danger-soft:hover{background:#f9eeee}
.account-rights-summary{border:1px solid #e0e2e0;margin-bottom:12px}.account-rights-summary>div{display:flex;justify-content:space-between;gap:10px;padding:8px 10px;border-bottom:1px solid #e6e7e5}.account-rights-summary>div:last-child{border-bottom:0}.account-rights-summary span{color:#747b77;font-size:8.5px}.account-rights-summary b{color:#4c5f50;font:600 8px Oxygen,sans-serif}
.password-shell{max-width:920px}
@media(max-width:980px){.admin-overview{grid-template-columns:1fr 1fr}.admin-overview>div:nth-child(2){border-right:0}.admin-overview>div:nth-child(-n+2){border-bottom:1px solid #e1e3e1}.admin-account-grid{grid-template-columns:1fr}.admin-account-toolbar{align-items:stretch;flex-direction:column}.admin-account-toolbar .actions-row{justify-content:space-between}.admin-account-search{width:100%}}
@media(max-width:620px){.admin-overview{grid-template-columns:1fr}.admin-overview>div{border-right:0;border-bottom:1px solid #e1e3e1}.admin-overview>div:last-child{border-bottom:0}.admin-account-toolbar .actions-row{flex-direction:column;align-items:stretch}.account-title{align-items:flex-start;flex-wrap:wrap}.account-title .account-kind{margin-left:60px}}
