/* SamaManager v21 - PHP 7.4 compatible */
:root{--bg:#f5f7fb;--panel:#fff;--text:#0f172a;--muted:#64748b;--line:#e2e8f0;--primary:#2563eb;--success:#16a34a;--danger:#dc2626;--warning:#f97316;--radius:18px;--shadow:0 16px 40px rgba(15,23,42,.08)}
*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font-family:system-ui,-apple-system,Segoe UI,Roboto,Arial,sans-serif}.app-shell{display:grid;grid-template-columns:290px 1fr;min-height:100vh}.sidebar{background:#0f172a;color:#fff;padding:22px;display:flex;flex-direction:column;gap:20px;position:sticky;top:0;height:100vh}.brand{display:flex;gap:14px;align-items:center;padding-bottom:18px;border-bottom:1px solid rgba(255,255,255,.12)}.brand-icon{font-size:30px;width:48px;height:48px;display:grid;place-items:center;background:rgba(255,255,255,.1);border-radius:16px}.brand-title{font-weight:900;line-height:1.1}.brand-subtitle{font-size:13px;color:#cbd5e1;margin-top:4px}.nav{display:flex;flex-direction:column;gap:7px}.nav a{color:#cbd5e1;text-decoration:none;padding:12px 14px;border-radius:14px;font-weight:700;display:flex;gap:10px;align-items:center}.nav a:hover,.nav a.active{background:#1e293b;color:#fff}.version{margin-top:auto;color:#94a3b8;font-size:12px}.main{min-width:0}.topbar{background:rgba(255,255,255,.86);backdrop-filter:blur(14px);border-bottom:1px solid var(--line);padding:20px 28px;display:flex;align-items:center;gap:16px;position:sticky;top:0;z-index:5}.topbar h1{margin:0;font-size:26px}.topbar p{margin:4px 0 0;color:var(--muted)}.menu-btn{display:none;border:0;background:var(--primary);color:white;border-radius:12px;padding:10px 12px;font-weight:900}.content{padding:28px;max-width:1400px;margin:auto}.filterbar{display:flex;gap:12px;flex-wrap:wrap;background:var(--panel);padding:16px;border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);margin-bottom:18px;align-items:end}label{font-weight:700;font-size:13px;color:#334155;display:flex;flex-direction:column;gap:6px}input,select{border:1px solid var(--line);border-radius:12px;padding:10px 12px;font:inherit;background:#fff;min-height:42px}.stats-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;margin-bottom:18px}.stat-card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:20px;box-shadow:var(--shadow);display:flex;flex-direction:column;gap:8px;min-height:135px}.stat-card span{font-size:26px}.stat-card small{color:var(--muted);font-weight:800}.stat-card strong{font-size:28px}.stat-card.danger{border-color:#fecaca;background:#fff1f2}.stat-card.success{border-color:#bbf7d0;background:#f0fdf4}.panel,.guard-card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:20px;box-shadow:var(--shadow)}.panel-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}.panel h2,.guard-card h2{margin:0}.guard-list{display:flex;flex-direction:column;gap:10px}.guard-mini{display:flex;justify-content:space-between;gap:12px;align-items:center;padding:14px;border:1px solid var(--line);border-radius:14px}.guard-mini div{display:flex;flex-direction:column;gap:4px}.guard-mini span:not(.badge){color:var(--muted)}.cards{display:grid;gap:16px}.guard-card header{display:flex;justify-content:space-between;gap:12px;align-items:flex-start;margin-bottom:14px}.guard-card p{margin:6px 0;color:var(--muted)}.metrics{display:flex;flex-wrap:wrap;gap:8px;margin:12px 0}.metrics span,.badge{border-radius:999px;padding:6px 10px;background:#eef2ff;color:#3730a3;font-weight:800;font-size:13px}.badge.green{background:#dcfce7;color:#166534}.badge.orange{background:#ffedd5;color:#9a3412}.badge.red{background:#fee2e2;color:#991b1b}.badge.gray{background:#f1f5f9;color:#475569}.status-badge{display:inline-flex!important;align-items:center!important;gap:6px!important;border-radius:999px!important;padding:6px 12px!important;font-weight:900!important;font-size:13px!important;border:1px solid transparent!important;white-space:nowrap!important}.status-badge::before{content:"";width:8px;height:8px;border-radius:50%;background:currentColor;display:inline-block;flex:0 0 auto}.status-draft,.status-neutral{background:#f1f5f9!important;color:#475569!important;border-color:#cbd5e1!important}.status-sent,.status-invoiced,.status-closed{background:#dbeafe!important;color:#1d4ed8!important;border-color:#93c5fd!important}.status-ok,.status-paid,.status-open{background:#dcfce7!important;color:#15803d!important;border-color:#86efac!important}.status-refused{background:#fee2e2!important;color:#b91c1c!important;border-color:#fecaca!important}.status-cancelled{background:#e5e7eb!important;color:#374151!important;border-color:#d1d5db!important}.status-todo{background:#ffedd5!important;color:#9a3412!important;border-color:#fed7aa!important}
.danger-text{background:#fee2e2!important;color:#991b1b!important}.btn{border:0;border-radius:12px;padding:10px 14px;font-weight:900;cursor:pointer}.btn.primary{background:var(--primary);color:white}.btn:disabled{opacity:.55;cursor:not-allowed}.responsive-table{overflow:auto}table{width:100%;border-collapse:collapse}td,th{padding:12px;border-bottom:1px solid var(--line);text-align:left}th{font-size:13px;color:var(--muted)}.muted{color:var(--muted)}.toast{position:fixed;right:18px;bottom:18px;background:#0f172a;color:#fff;padding:12px 16px;border-radius:14px;box-shadow:var(--shadow);opacity:0;transform:translateY(10px);transition:.2s}.toast.show{opacity:1;transform:none}.public-page{min-height:100vh;display:grid;place-items:center;background:linear-gradient(135deg,#0f172a,#1e293b);padding:20px}.public-card{background:#fff;border-radius:26px;padding:32px;max-width:520px;text-align:center;box-shadow:var(--shadow)}
@media(max-width:1000px){.app-shell{grid-template-columns:1fr}.sidebar{position:fixed;left:-310px;z-index:20;width:290px;transition:.2s}.sidebar.open{left:0}.menu-btn{display:inline-block}.stats-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.content{padding:18px}.topbar{padding:16px}}@media(max-width:560px){.stats-grid{grid-template-columns:1fr}.guard-card header,.guard-mini{flex-direction:column;align-items:flex-start}.filterbar{display:grid}.topbar h1{font-size:21px}}

.alert{background:#dcfce7;color:#166534;border:1px solid #86efac;border-radius:14px;padding:12px 14px;margin-bottom:16px;font-weight:800}
.form-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;align-items:end}
.form-grid.compact{grid-template-columns:1fr 1fr auto auto}
.check{flex-direction:row;align-items:center;gap:8px;min-height:42px}
.sama-cards{grid-template-columns:repeat(2,minmax(0,1fr))}
.sama-card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:18px;box-shadow:var(--shadow)}
.sama-main{display:flex;gap:14px;align-items:center}
.avatar{width:52px;height:52px;border-radius:18px;background:#dbeafe;color:#1d4ed8;font-size:24px;font-weight:900;display:grid;place-items:center}
.sama-main h2{margin:0}.sama-main p{margin:4px 0;color:var(--muted)}
.sama-details{margin-top:14px;border-top:1px solid var(--line);padding-top:12px}
.sama-details summary{cursor:pointer;font-weight:900;color:var(--primary)}
.button-row{display:flex;gap:10px;flex-wrap:wrap;margin-top:12px}
.btn.secondary{background:#e0f2fe;color:#075985}.btn.danger{background:#fee2e2;color:#991b1b}
@media(max-width:900px){.form-grid,.form-grid.compact,.sama-cards{grid-template-columns:1fr}.button-row form{width:100%}.button-row button{width:100%}}
.guard-create{grid-template-columns:1.1fr 1fr 1fr 1fr .6fr 1fr auto}
.guard-edit{grid-template-columns:1.1fr 1fr 1fr 1fr .6fr 1fr auto}
.guard-head{gap:18px}
.guard-card.expanded{border-color:#93c5fd;box-shadow:0 20px 55px rgba(37,99,235,.12)}
.guard-actions{margin-top:14px}
.guard-detail{margin-top:18px;border-top:1px solid var(--line);padding-top:18px;display:grid;gap:18px}
.detail-section{background:#f8fafc;border:1px solid var(--line);border-radius:16px;padding:16px}
.detail-section h3{margin:0 0 14px 0}
.warning-text{background:#ffedd5!important;color:#9a3412!important}
.inscription-list{display:grid;gap:12px}
.inscription-card{display:grid;grid-template-columns:minmax(220px,1fr) 2fr;gap:14px;align-items:center;background:#fff;border:1px solid var(--line);border-radius:16px;padding:14px}
.inscription-card.is-retained{border-color:#86efac;background:#f0fdf4}
.inscription-card.is-refused{border-color:#fecaca;background:#fff1f2}
.person{display:flex;flex-direction:column;gap:4px}.person span{color:var(--muted);font-size:13px}.person-badges{display:flex;flex-wrap:wrap;gap:6px;margin-top:4px}
.decision-form{display:grid;grid-template-columns:1fr 1fr auto auto;gap:10px;align-items:end}
.add-manual{grid-template-columns:1fr auto;margin-top:14px}
@media(max-width:1100px){.guard-create,.guard-edit,.decision-form{grid-template-columns:1fr 1fr}.inscription-card{grid-template-columns:1fr}}
@media(max-width:680px){.guard-create,.guard-edit,.decision-form,.add-manual{grid-template-columns:1fr}.guard-card{padding:16px}.detail-section{padding:12px}}

.autosave-hint{
  align-self:end;
  display:inline-flex;
  justify-content:center;
  align-items:center;
  min-height:42px;
  padding:0 12px;
  border-radius:12px;
  background:#e0f2fe;
  color:#075985;
  font-weight:900;
  font-size:13px;
}
.autosave-hint.saving{
  background:#fef3c7;
  color:#92400e;
}

.info-text{background:#dbeafe!important;color:#1e40af!important}
.success-text{background:#dcfce7!important;color:#166534!important}

.disabled-line{opacity:.45}
.decision-form select:disabled,
.decision-form input:disabled{
  background:#f1f5f9;
  color:#94a3b8;
  cursor:not-allowed;
}
.vhc-warning{
  align-self:end;
  display:inline-flex;
  align-items:center;
  min-height:42px;
  padding:0 10px;
  border-radius:12px;
  background:#fff7ed;
  color:#9a3412;
  font-weight:900;
  font-size:12px;
}

/* États visuels communs : aucun liseré si tout est normal, orange si une action reste à faire, rouge si un blocage existe. */
.admin-body .state-warning{
  border-left:3px solid #d97706!important;
}
.admin-body .state-danger{
  border-left:3px solid #c2413a!important;
}
.vhc-status-panel{
  border-width:1px;
}
.vhc-status-panel.state-danger{
  background:#fffafa;
  border-color:#f1d4d4;
  border-left-color:#c2413a!important;
}
.guard-card .metrics .danger-text,
.metrics .danger-text{background:#fee2e2!important;color:#991b1b!important}
.guard-card .metrics .success-text,
.metrics .success-text{background:#dcfce7!important;color:#166534!important}
.guard-card .metrics .warning-text,
.metrics .warning-text{background:#ffedd5!important;color:#9a3412!important}

.sama-public{
  min-height:100vh;
  background:linear-gradient(135deg,#0f172a,#1e293b);
  padding:18px;
}
.sama-public-shell{
  max-width:980px;
  margin:0 auto;
}
.sama-hero{
  color:#fff;
  display:flex;
  gap:14px;
  align-items:center;
  margin:8px 0 18px;
}
.sama-hero h1{margin:0;font-size:28px}
.sama-hero p{margin:4px 0 0;color:#cbd5e1}
.sama-welcome{
  background:#fff;
  border-radius:24px;
  padding:22px;
  box-shadow:var(--shadow);
  display:flex;
  justify-content:space-between;
  gap:16px;
  align-items:center;
  margin-bottom:16px;
}
.sama-welcome h2{margin:0}
.sama-welcome p{margin:6px 0 0;color:var(--muted)}
.sama-public-stats{display:flex;gap:10px;flex-wrap:wrap}
.sama-public-stats span{
  background:#eff6ff;
  color:#1e40af;
  border-radius:16px;
  padding:10px 12px;
  font-weight:900;
}
.sama-public-stats strong{font-size:20px}
.alert-error{background:#fee2e2!important;color:#991b1b!important;border-color:#fecaca!important}
.public-section{
  background:#fff;
  border-radius:24px;
  padding:20px;
  box-shadow:var(--shadow);
  margin-bottom:16px;
}
.public-section h2{margin:0 0 14px}
.public-guard-list,.public-history{display:grid;gap:12px}
.public-guard-card{
  border:1px solid var(--line);
  border-radius:18px;
  padding:16px;
  background:#f8fafc;
}
.public-guard-card.is-in{
  border-color:#86efac;
  background:#f0fdf4;
}
.public-guard-main{
  display:flex;
  justify-content:space-between;
  gap:14px;
}
.public-guard-main h3{margin:0 0 8px;font-size:21px}
.public-guard-main p{margin:5px 0;color:#475569}
.public-badges{display:flex;flex-wrap:wrap;gap:6px;justify-content:flex-end;align-content:flex-start}
.vhc-public-note{
  margin:12px 0;
  background:#fff7ed;
  color:#9a3412;
  border:1px solid #fed7aa;
  border-radius:14px;
  padding:10px 12px;
  font-weight:800;
}
.public-actions{
  margin-top:12px;
  display:flex;
  gap:10px;
  flex-wrap:wrap;
  align-items:center;
}
.public-actions .btn{min-width:150px}
.public-check{
  background:#fff;
  border:1px solid var(--line);
  border-radius:14px;
  padding:10px 12px;
  flex-direction:row!important;
  align-items:center;
  color:#0f172a;
}
.history-card{
  display:flex;
  justify-content:space-between;
  gap:14px;
  align-items:center;
  border:1px solid var(--line);
  border-radius:16px;
  padding:14px;
  background:#f8fafc;
}
.history-card div:first-child{display:flex;flex-direction:column;gap:4px}
.history-card span{color:var(--muted)}
.public-empty{
  border:1px dashed var(--line);
  border-radius:16px;
  padding:18px;
  text-align:center;
  background:#f8fafc;
}
@media(max-width:720px){
  .sama-public{padding:12px}
  .sama-welcome,.public-guard-main,.history-card{flex-direction:column;align-items:stretch}
  .public-badges{justify-content:flex-start}
  .public-actions,.public-actions .btn{width:100%}
  .public-actions .btn{min-width:0}
  .sama-hero h1{font-size:22px}
}

.autosave-hint.saved{background:#dcfce7;color:#166534}
.autosave-hint.error{background:#fee2e2;color:#991b1b}

.inscription-card.is-waiting{border-color:#fed7aa;background:#fff7ed}
.inscription-card.is-retained{border-color:#86efac!important;background:#f0fdf4!important}
.inscription-card.is-refused{border-color:#fecaca!important;background:#fff1f2!important}

.rate-panel{display:flex;gap:10px;flex-wrap:wrap;align-items:center}
.rate-panel span{background:#f1f5f9;border-radius:999px;padding:7px 10px;font-weight:800;color:#334155}
.rem-lines{display:grid;gap:12px;margin-top:14px}
.rem-line{display:grid;grid-template-columns:minmax(220px,1fr) 2.2fr;gap:14px;align-items:center;border:1px solid var(--line);border-radius:16px;padding:14px;background:#fff}
.rem-line.status-pending{border-color:#fca5a5;background:#fff1f2}
.rem-line.status-present{border-color:#86efac;background:#f0fdf4}
.rem-line.status-absent{border-color:#cbd5e1;background:#f8fafc}
.rem-person{display:flex;flex-direction:column;gap:4px}
.rem-person span{color:var(--muted);font-size:13px}
.rem-form{display:grid;grid-template-columns:1fr 1fr 1fr 1fr 1fr 1fr;gap:10px;align-items:end}
.add-rem{margin-top:16px}
@media(max-width:1100px){.rem-line{grid-template-columns:1fr}.rem-form{grid-template-columns:1fr 1fr}}
@media(max-width:680px){.rem-form{grid-template-columns:1fr}.rate-panel{display:grid}.rem-line{padding:12px}}

.autosave-hint.is-hidden{
  display:none!important;
}

.settings-panel h2,.report-form h2{margin-top:0}
.settings-form,.report-form{margin-top:14px}
.form-actions{display:flex;align-items:end;gap:10px}
.filter-note{margin:8px 0 14px}
.rem-lines h3{margin:16px 0 4px}
.vhc-highlight{background:#fff7ed;border-color:#fdba74!important;border-radius:12px;padding:8px 10px}

/* V21.6 - historique mails et logo PDF */
.modal-backdrop{position:fixed;inset:0;background:rgba(15,23,42,.55);display:none;align-items:center;justify-content:center;padding:18px;z-index:60}
.modal-backdrop.show{display:flex}.modal-card{background:#fff;border-radius:22px;box-shadow:0 30px 80px rgba(15,23,42,.35);max-width:860px;width:100%;max-height:86vh;overflow:auto;border:1px solid var(--line)}
.modal-head{display:flex;justify-content:space-between;gap:14px;align-items:flex-start;padding:20px;border-bottom:1px solid var(--line)}.modal-head h2{margin:0}.modal-close{border:0;background:#fee2e2;color:#991b1b;border-radius:12px;width:40px;height:40px;font-size:28px;line-height:1;cursor:pointer;font-weight:900}.mail-meta{display:flex;gap:8px;flex-wrap:wrap;padding:14px 20px 0}.mail-content{margin:16px 20px 20px;padding:18px;border:1px solid var(--line);border-radius:16px;background:#f8fafc;white-space:normal;line-height:1.55;color:#0f172a}.logo-upload span{font-weight:500}.logo-preview{display:inline-flex;align-items:center;justify-content:center;padding:16px;border:1px solid var(--line);border-radius:16px;background:#f8fafc}.logo-preview img{max-width:280px;max-height:110px;object-fit:contain}
@media(max-width:700px){.modal-card{max-height:92vh}.modal-head{padding:16px}.mail-content{margin:12px;padding:14px}.modal-head h2{font-size:18px}}

/* v21.7.4 - correction débordement horizontal gardes ouvertes */
html,body{max-width:100%;overflow-x:hidden}
.content,.cards,.guard-card,.guard-detail,.detail-section,.inscription-list,.inscription-card{min-width:0;max-width:100%;overflow-wrap:anywhere}
.form-grid,.guard-create,.guard-edit,.decision-form,.add-manual,.rem-form{min-width:0;max-width:100%}
.form-grid > *, .guard-create > *, .guard-edit > *, .decision-form > *, .add-manual > *, .rem-form > *{min-width:0;max-width:100%}
input,select,textarea,button,.btn{max-width:100%}
.check{min-width:0;white-space:normal;flex-wrap:wrap}
.guard-edit{grid-template-columns:minmax(150px,1.1fr) minmax(150px,1fr) minmax(160px,1fr) minmax(160px,1fr) minmax(90px,.55fr) minmax(120px,.8fr) auto}
.decision-form{grid-template-columns:minmax(160px,1fr) minmax(160px,1fr) minmax(140px,auto) minmax(90px,auto)}
@media(max-width:1250px){.guard-edit{grid-template-columns:repeat(3,minmax(0,1fr))}.guard-edit .button-row{grid-column:1/-1}.decision-form{grid-template-columns:1fr 1fr}.decision-form .check,.decision-form .autosave-hint,.decision-form .vhc-warning{justify-self:start}}
@media(max-width:760px){.guard-edit,.decision-form{grid-template-columns:1fr}.metrics span,.badge{white-space:normal}.content{padding-left:12px;padding-right:12px}}

/* v21.8.0 - interface plus compacte */
:root{--radius:15px;--shadow:0 10px 28px rgba(15,23,42,.07)}
body{font-size:15px;line-height:1.42}
.app-shell{grid-template-columns:270px 1fr}.sidebar{padding:18px;gap:16px}.brand{gap:12px;padding-bottom:14px}.brand-icon{font-size:25px;width:42px;height:42px;border-radius:14px}.brand-title{font-size:15px}.brand-subtitle{font-size:12px}.nav{gap:5px}.nav a{padding:10px 12px;border-radius:12px;font-size:14px}.version{font-size:11px}.topbar{padding:16px 24px}.topbar h1{font-size:23px}.topbar p{font-size:14px}.content{padding:22px;max-width:1380px}.filterbar{gap:10px;padding:14px;margin-bottom:14px}label{font-size:12px;gap:5px}input,select,textarea{font-size:14px;border-radius:10px;padding:8px 10px;min-height:38px}.btn{border-radius:10px;padding:8px 12px;font-size:14px}.menu-btn{padding:8px 10px;border-radius:10px}.stats-grid{gap:12px;margin-bottom:14px}.stat-card{padding:16px;gap:6px;min-height:112px}.stat-card span{font-size:22px}.stat-card strong{font-size:24px}.stat-card small{font-size:12px}.panel,.guard-card,.sama-card,.public-section{padding:16px;border-radius:15px}.panel-head{margin-bottom:10px}.panel h2,.guard-card h2,.sama-main h2,.settings-panel h2,.report-form h2{font-size:21px}.detail-section h3,.public-section h2,.rem-lines h3{font-size:18px}.cards{gap:12px}.guard-card header{margin-bottom:10px}.guard-card p{margin:4px 0}.guard-mini{padding:12px;border-radius:12px}.metrics{gap:6px;margin:9px 0}.metrics span,.badge{padding:5px 8px;font-size:12px}.responsive-table{font-size:14px}td,th{padding:9px 10px}th{font-size:12px}.alert{padding:10px 12px;margin-bottom:12px;font-size:14px}.form-grid{gap:10px}.check{min-height:38px}.avatar{width:46px;height:46px;border-radius:15px;font-size:21px}.sama-main{gap:12px}.sama-details{margin-top:12px;padding-top:10px}.button-row{gap:8px;margin-top:10px}.guard-head{gap:14px}.guard-actions{margin-top:10px}.guard-detail{margin-top:14px;padding-top:14px;gap:14px}.detail-section{padding:13px;border-radius:14px}.detail-section h3{margin-bottom:10px}.inscription-list{gap:10px}.inscription-card{gap:11px;border-radius:14px;padding:12px}.person span,.rem-person span{font-size:12px}.person-badges{gap:5px}.decision-form{gap:8px}.add-manual{margin-top:10px}.autosave-hint,.vhc-warning{min-height:38px;border-radius:10px;font-size:12px}.sama-hero h1{font-size:24px}.sama-welcome{border-radius:20px;padding:18px;margin-bottom:12px}.sama-public-stats span{padding:8px 10px;border-radius:14px}.sama-public-stats strong{font-size:18px}.public-section{border-radius:20px;margin-bottom:12px}.public-guard-list,.public-history{gap:10px}.public-guard-card{border-radius:16px;padding:13px}.public-guard-main h3{font-size:18px;margin-bottom:6px}.public-guard-main p{margin:4px 0}.vhc-public-note,.public-check{padding:8px 10px;border-radius:12px}.history-card{padding:12px;border-radius:14px}.public-empty{padding:14px;border-radius:14px}.rate-panel span{padding:5px 8px;font-size:13px}.rem-lines{gap:10px;margin-top:10px}.rem-line{gap:11px;border-radius:14px;padding:12px}.rem-form{gap:8px}.add-rem{margin-top:12px}.settings-form,.report-form{margin-top:10px}.form-actions{gap:8px}.filter-note{margin:6px 0 10px}.vhc-highlight{padding:7px 8px}.modal-card{border-radius:18px;max-width:820px}.modal-head{padding:16px}.modal-close{border-radius:10px;width:36px;height:36px;font-size:24px}.mail-meta{padding:12px 16px 0}.mail-content{margin:12px 16px 16px;padding:14px;border-radius:14px;line-height:1.45}.logo-preview{padding:12px;border-radius:14px}.logo-preview img{max-width:240px;max-height:95px}
@media(max-width:1000px){.sidebar{width:270px;left:-290px}.content{padding:16px}.topbar{padding:14px 16px}}
@media(max-width:760px){.content{padding-left:10px;padding-right:10px}.panel,.guard-card,.sama-card,.public-section{padding:13px}.topbar h1{font-size:20px}body{font-size:14px}}

/* v21.8.1 - option VHC plus compacte et propre */
.guard-create{grid-template-columns:1.15fr 1fr 1.15fr 1.15fr .55fr auto auto}
.guard-edit{grid-template-columns:1.1fr 1.1fr 1.05fr 1.05fr .7fr auto auto}
.vhc-toggle{
  display:inline-flex;
  flex-direction:row!important;
  align-items:center;
  justify-content:center;
  gap:7px;
  min-height:38px;
  padding:8px 10px;
  border:1px solid #bfdbfe;
  border-radius:999px;
  background:#eff6ff;
  color:#1e3a8a;
  font-weight:900;
  white-space:nowrap!important;
  line-height:1;
}
.vhc-toggle input{
  min-height:0;
  width:16px;
  height:16px;
  margin:0;
  flex:0 0 auto;
}
.vhc-toggle span{white-space:nowrap}
@media(max-width:1250px){
  .guard-create,.guard-edit{grid-template-columns:repeat(3,minmax(0,1fr))}
  .vhc-toggle{justify-content:flex-start;width:max-content;max-width:100%}
}
@media(max-width:760px){
  .vhc-toggle{width:100%;justify-content:flex-start;white-space:normal!important}
  .vhc-toggle span{white-space:normal}
}


/* v21.8.2 - zone centrale plus compacte */
.main{font-size:14px;line-height:1.36}
.content{padding:18px;max-width:1360px}
.topbar{padding:13px 22px}.topbar h1{font-size:21px}.topbar p{font-size:13px}
.filterbar{padding:12px;gap:8px;margin-bottom:12px}
.panel,.guard-card,.sama-card,.public-section{padding:13px;border-radius:13px}
.panel h2,.guard-card h2,.sama-main h2,.settings-panel h2,.report-form h2{font-size:19px;line-height:1.2}
.detail-section h3,.public-section h2,.rem-lines h3{font-size:16px;line-height:1.2}
label{font-size:11.5px;gap:4px}
input,select,textarea{font-size:13px;min-height:34px;padding:7px 9px;border-radius:9px}
.btn{font-size:13px;padding:7px 10px;border-radius:9px}
.cards{gap:10px}.guard-list{gap:8px}
.guard-card header{margin-bottom:8px}.guard-card p{font-size:13px;margin:3px 0}
.metrics{gap:5px;margin:7px 0}.metrics span,.badge{font-size:11.5px;padding:4px 7px}
.guard-detail{margin-top:12px;padding-top:12px;gap:12px}.detail-section{padding:11px;border-radius:12px}.detail-section h3{margin-bottom:8px}
.inscription-list{gap:8px}.inscription-card{padding:10px;gap:9px;border-radius:12px;grid-template-columns:minmax(180px,1fr) 2.2fr}
.person{gap:3px}.person span,.rem-person span{font-size:11.5px}.person-badges{gap:4px;margin-top:3px}
.decision-form{gap:7px;grid-template-columns:minmax(140px,1fr) minmax(140px,1fr) auto auto}
.check{min-height:34px;font-size:12.5px;gap:6px}.check input{width:15px;height:15px}
.vhc-toggle{min-height:34px;padding:6px 9px;font-size:12px;gap:6px}.vhc-toggle input{width:14px;height:14px}
.autosave-hint,.vhc-warning{min-height:34px;font-size:11.5px;padding:0 9px}
.guard-create,.guard-edit{gap:8px}.guard-actions{margin-top:8px}.button-row{gap:7px;margin-top:8px}
.responsive-table{font-size:13px}td,th{padding:7px 8px}th{font-size:11.5px}
.stat-card{padding:13px;min-height:96px}.stat-card span{font-size:20px}.stat-card strong{font-size:21px}.stat-card small{font-size:11px}
.rem-lines{gap:8px}.rem-line{padding:10px;gap:9px;border-radius:12px}.rem-form{gap:7px}
.rate-panel span{font-size:12px;padding:4px 7px}
.alert{font-size:13px;padding:9px 10px}.muted{font-size:13px}
@media(max-width:1250px){.decision-form{grid-template-columns:1fr 1fr}.inscription-card{grid-template-columns:1fr}}
@media(max-width:1000px){.content{padding:14px}.topbar{padding:12px 14px}}
@media(max-width:760px){.main{font-size:13.5px}.content{padding:10px}.panel,.guard-card,.sama-card,.public-section{padding:11px}.topbar h1{font-size:19px}.decision-form,.guard-create,.guard-edit{grid-template-columns:1fr}}

/* v21.8.3 - correctif smartphone : vraie mise en page mobile */
@media(max-width:820px){
  html,body{width:100%;max-width:100%;overflow-x:hidden!important}
  .app-shell{display:block!important;width:100%!important;min-width:0!important;max-width:100%!important}
  .main{display:block!important;width:100%!important;min-width:0!important;max-width:100%!important;margin:0!important}
  .sidebar{position:fixed!important;left:-285px!important;top:0!important;width:270px!important;max-width:82vw!important;height:100vh!important;z-index:80!important}
  .sidebar.open{left:0!important}
  .topbar{position:sticky;width:100%;max-width:100%;padding:12px 14px!important;gap:10px!important}
  .topbar>div{min-width:0}.topbar h1{font-size:20px!important}.topbar p{font-size:12.5px!important;line-height:1.25}
  .menu-btn{display:inline-flex!important;align-items:center;justify-content:center;flex:0 0 auto}
  .content{width:100%!important;max-width:100%!important;margin:0!important;padding:10px!important;overflow:hidden!important}
  .filterbar,.panel,.guard-card,.sama-card,.public-section,.detail-section{width:100%!important;max-width:100%!important;min-width:0!important}
  .cards,.sama-cards,.guard-list,.inscription-list,.rem-lines{display:grid!important;grid-template-columns:1fr!important;width:100%!important;max-width:100%!important}
  .form-grid,.form-grid.compact,.guard-create,.guard-edit,.decision-form,.add-manual,.rem-form{display:grid!important;grid-template-columns:1fr!important;width:100%!important;max-width:100%!important}
  .inscription-card,.rem-line{display:grid!important;grid-template-columns:1fr!important;width:100%!important;max-width:100%!important}
  .guard-card header,.guard-mini,.panel-head,.public-guard-main,.history-card{flex-direction:column!important;align-items:stretch!important}
  .metrics,.person-badges,.button-row,.public-actions{max-width:100%;overflow:hidden}
  input,select,textarea,.btn,button{width:100%;max-width:100%}
  input[type="checkbox"]{width:auto!important;max-width:none!important}
  .check,.vhc-toggle,.public-check{width:100%!important;justify-content:flex-start!important;white-space:normal!important}
  .responsive-table{width:100%;max-width:100%;overflow-x:auto!important}
  table{min-width:0}
  .avatar{flex:0 0 auto}
  .sama-main{align-items:flex-start}.sama-main>div{min-width:0}
}

@media(max-width:430px){
  .content{padding:8px!important}
  .panel,.guard-card,.sama-card,.public-section{padding:10px!important;border-radius:12px!important}
  .topbar h1{font-size:19px!important}
  .panel h2,.guard-card h2,.sama-main h2{font-size:18px!important}
  .btn{font-size:12.5px!important;padding:7px 9px!important}
}

/* v21.8.4 - en-tête mobile corrigé */
@media(max-width:820px){
  .topbar{
    display:flex!important;
    align-items:center!important;
    min-height:66px!important;
    overflow:hidden!important;
  }
  .topbar .menu-btn,
  button.menu-btn{
    width:44px!important;
    max-width:44px!important;
    min-width:44px!important;
    height:44px!important;
    padding:0!important;
    border-radius:12px!important;
    flex:0 0 44px!important;
    font-size:20px!important;
    line-height:1!important;
  }
  .topbar > div{
    display:block!important;
    flex:1 1 auto!important;
    min-width:0!important;
    max-width:calc(100% - 54px)!important;
    overflow:hidden!important;
  }
  .topbar h1,
  .topbar p{
    max-width:100%!important;
    overflow:hidden!important;
    text-overflow:ellipsis!important;
  }
  .topbar h1{white-space:nowrap!important}
  .topbar p{display:-webkit-box!important;-webkit-line-clamp:2!important;-webkit-box-orient:vertical!important}
}
@media(max-width:430px){
  .topbar{padding:10px 12px!important;gap:9px!important;min-height:62px!important}
  .topbar .menu-btn,button.menu-btn{width:40px!important;max-width:40px!important;min-width:40px!important;height:40px!important;flex-basis:40px!important}
  .topbar > div{max-width:calc(100% - 49px)!important}
}

/* v21.9 - Convocation PDF */
textarea{
  width:100%;
  min-height:86px;
  resize:vertical;
  border:1px solid var(--border,#dbe3ef);
  border-radius:14px;
  padding:10px 12px;
  font:inherit;
  font-size:0.92rem;
  background:#fff;
  box-sizing:border-box;
}
.convocation-section{
  border-color:#bfdbfe;
  background:linear-gradient(180deg,#ffffff,#f8fbff);
}
.convocation-form{align-items:start}
@media (max-width:700px){
  .convocation-form label{grid-column:1/-1!important}
  textarea{font-size:0.9rem;min-height:76px}
}

.import-convocation-form{
  margin:10px 0 16px;
  padding:12px;
  border:1px dashed rgba(54,104,255,.35);
  border-radius:14px;
  background:rgba(54,104,255,.04);
}
.import-convocation-form .muted{margin:0}


/* v21.9.30 - fond du menu gauche continu sur les longues pages */
@media (min-width:1001px){
  body.admin-body{
    background:linear-gradient(to right,#0f172a 0 270px,var(--bg) 270px 100%)!important;
  }
  .app-shell{
    min-height:100vh!important;
    background:linear-gradient(to right,#0f172a 0 270px,var(--bg) 270px 100%)!important;
  }
  .sidebar{
    min-height:100vh!important;
    height:auto!important;
    align-self:stretch!important;
    position:sticky!important;
    top:0!important;
  }
}
@media (max-width:1000px){
  body.admin-body{background:var(--bg)!important}
}


/* v21.9.31 - bandeau gauche vraiment continu même après ouverture dynamique des détails */
@media (min-width:1001px){
  body.admin-body{
    background:var(--bg)!important;
    position:relative!important;
  }
  body.admin-body::before{
    content:"";
    position:fixed;
    left:0;
    top:0;
    bottom:0;
    width:270px;
    background:#0f172a;
    z-index:0;
    pointer-events:none;
  }
  .app-shell{
    position:relative!important;
    z-index:1!important;
    background:transparent!important;
    min-height:100vh!important;
  }
  .main{
    background:var(--bg)!important;
    min-height:100vh!important;
  }
  .sidebar{
    background:#0f172a!important;
    min-height:100vh!important;
    height:100vh!important;
    position:sticky!important;
    top:0!important;
  }
}

/* v21.9.32 - correction réelle du fond bleu à gauche sur pages longues.
   Le fond bleu est porté par tout le layout, pas uniquement par la sidebar sticky. */
@media (min-width:1001px){
  html,
  body.admin-body{
    min-height:100%;
    background:#0f172a!important;
  }
  body.admin-body::before{
    display:none!important;
    content:none!important;
  }
  .app-shell{
    min-height:100vh!important;
    background:#0f172a!important;
    align-items:stretch!important;
  }
  .main{
    background:var(--bg)!important;
    min-height:100vh!important;
  }
  .sidebar{
    background:#0f172a!important;
    height:100vh!important;
    min-height:100vh!important;
    position:sticky!important;
    top:0!important;
  }
}


/* v21.9.33 - correction definitive sidebar desktop.
   La barre laterale devient fixe sur desktop, donc son fond bleu ne depend plus
   de la hauteur du contenu ouvert dynamiquement (ex: detail convocation). */
@media (min-width:1001px){
  html, body.admin-body{
    min-height:100%;
    background:var(--bg)!important;
  }
  body.admin-body::before{
    content:""!important;
    display:block!important;
    position:fixed!important;
    left:0!important;
    top:0!important;
    bottom:0!important;
    width:270px!important;
    background:#0f172a!important;
    z-index:0!important;
    pointer-events:none!important;
  }
  .app-shell{
    display:block!important;
    min-height:100vh!important;
    background:transparent!important;
  }
  .sidebar{
    position:fixed!important;
    left:0!important;
    top:0!important;
    bottom:0!important;
    width:270px!important;
    height:auto!important;
    min-height:100vh!important;
    z-index:10!important;
    background:#0f172a!important;
    overflow-y:auto!important;
  }
  .main{
    margin-left:270px!important;
    min-height:100vh!important;
    background:var(--bg)!important;
    position:relative!important;
    z-index:1!important;
  }
}
@media (max-width:1000px){
  .main{margin-left:0!important}
}

/* v21.9.34 - correction sidebar definitive sans calcul dynamique.
   Sur desktop, la sidebar redevient une colonne normale de la grille.
   La colonne bleue s'etire alors automatiquement sur toute la hauteur reelle
   de la page, y compris quand un detail s'ouvre apres coup. */
@media (min-width:1001px){
  html,
  body.admin-body{
    min-height:100%!important;
    background:var(--bg)!important;
  }
  body.admin-body::before{
    display:none!important;
    content:none!important;
  }
  .app-shell{
    display:grid!important;
    grid-template-columns:270px minmax(0,1fr)!important;
    align-items:stretch!important;
    min-height:100vh!important;
    background:#0f172a!important;
  }
  .sidebar{
    position:relative!important;
    left:auto!important;
    top:auto!important;
    bottom:auto!important;
    width:auto!important;
    height:auto!important;
    min-height:100vh!important;
    align-self:stretch!important;
    z-index:auto!important;
    background:#0f172a!important;
    overflow:visible!important;
  }
  .main{
    margin-left:0!important;
    min-width:0!important;
    min-height:100vh!important;
    background:var(--bg)!important;
    position:relative!important;
    z-index:auto!important;
  }
}
@media (max-width:1000px){
  .app-shell{display:block!important;background:var(--bg)!important;min-height:100vh!important}
  .sidebar{position:fixed!important;left:-285px!important;top:0!important;width:270px!important;max-width:82vw!important;height:100vh!important;min-height:100vh!important;z-index:80!important;overflow-y:auto!important}
  .sidebar.open{left:0!important}
  .main{margin-left:0!important}
}


/* v22.0.5 - Paramètres organisés par groupes */
.settings-groups{display:flex;flex-direction:column;gap:14px}
.settings-form-v2204{display:flex;flex-direction:column;gap:14px}
.settings-group{background:#fff;border:1px solid var(--line);border-radius:18px;box-shadow:0 8px 22px rgba(15,23,42,.06);overflow:hidden}
.settings-group>summary{list-style:none;cursor:pointer;display:flex;align-items:center;gap:12px;padding:16px 18px;background:#f8fafc;border-bottom:1px solid transparent}
.settings-group[open]>summary{border-bottom-color:var(--line)}
.settings-group>summary::-webkit-details-marker{display:none}
.settings-group>summary:after{content:'›';margin-left:auto;font-size:26px;line-height:1;color:#64748b;transform:rotate(90deg);transition:transform .15s ease}
.settings-group[open]>summary:after{transform:rotate(270deg)}
.settings-group-icon{width:34px;height:34px;border-radius:12px;background:#e0f2fe;display:inline-flex;align-items:center;justify-content:center;font-size:18px;flex:0 0 auto}
.settings-group summary strong{display:block;font-size:16px;color:#0f172a}
.settings-group summary small{display:block;margin-top:2px;font-size:12px;color:#64748b;font-weight:500}
.settings-group-body{padding:18px}
.settings-group-body.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}
.settings-group-body label{min-width:0}
.settings-subtitle{grid-column:1/-1;margin:6px 0 0;font-size:15px;color:#0f172a}
.settings-test-mail{grid-column:1/-1;display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding-top:4px}
.settings-save-bar{position:sticky;bottom:0;display:flex;justify-content:flex-end;padding:12px 0;background:linear-gradient(to top,var(--bg) 70%,rgba(248,250,252,0));z-index:5}
@media (max-width:900px){.settings-group-body.form-grid{grid-template-columns:1fr}.settings-group>summary{padding:14px}.settings-group-body{padding:14px}.settings-save-bar{justify-content:stretch}.settings-save-bar .btn{width:100%}}


/* v22.0.5 - Paramètres vraiment pliables */
.settings-intro{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
  padding:12px 16px;
  border:1px solid var(--line);
  border-radius:16px;
  background:#eef6ff;
  color:#0f172a;
  box-shadow:0 6px 16px rgba(15,23,42,.04);
}
.settings-intro strong{font-size:18px}
.settings-intro span{font-size:13px;color:#475569}
.settings-group{
  transition:box-shadow .15s ease,border-color .15s ease;
}
.settings-group:not([open]){
  box-shadow:0 4px 14px rgba(15,23,42,.04);
}
.settings-group:not([open])>summary{
  border-bottom:none!important;
  background:#fff;
}
.settings-group:not([open]) .settings-group-body{
  display:none!important;
}
.settings-group>summary:hover{
  background:#f1f5f9;
}
.settings-group>summary:after{
  content:'Ouvrir';
  margin-left:auto;
  font-size:12px;
  font-weight:700;
  color:#2563eb;
  background:#dbeafe;
  border-radius:999px;
  padding:6px 10px;
  transform:none!important;
}
.settings-group[open]>summary:after{
  content:'Fermer';
  color:#475569;
  background:#e2e8f0;
}
.settings-group[open]{
  border-color:#bfdbfe;
  box-shadow:0 10px 26px rgba(37,99,235,.10);
}
.settings-group[open]>summary{
  background:#f8fafc;
}

/* v23.0.0 */
.service-card .service-detail{margin-top:16px;display:flex;flex-direction:column;gap:16px}.inner{background:#f8fafc}.public-shell{max-width:980px;margin:0 auto;padding:30px}.public-card{background:#fff;border-radius:22px;padding:24px;box-shadow:0 12px 30px rgba(15,23,42,.08)}

/* v23.0.5 - demandes de service : onglets fiables */
.service-tabs{margin-top:16px;display:block}
.service-tab-nav{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:12px;background:#eef2ff;border:1px solid var(--line);border-radius:14px;padding:8px}
.service-tab-button{display:inline-flex;align-items:center;justify-content:center;padding:8px 14px;border-radius:11px;cursor:pointer;font-weight:900;color:#1e293b;background:#fff;border:1px solid transparent;min-height:38px;font:inherit}
.service-tab-button.is-active{background:var(--primary);color:#fff;border-color:var(--primary)}
.service-tab-panel{display:none;margin-top:0}
.service-tab-panel.is-active{display:block}
.service-garde-edit summary{cursor:pointer;font-weight:800;padding:6px 0}
.service-garde-edit[open] summary{margin-bottom:10px}
@media(max-width:720px){.service-tab-nav{display:grid;grid-template-columns:1fr}.service-tab-button{width:100%}}

/* v23.0.6 - demandes de service : panneaux et onglets propres */
.service-card{
  background:#fff;
  border:1px solid var(--line);
  border-radius:22px;
  padding:18px;
  box-shadow:0 12px 30px rgba(15,23,42,.07);
  margin:18px 0;
}
.service-card .garde-head{
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:16px;
}
.service-card .garde-head h2{margin:0 0 6px 0}
.service-card .garde-head .btn{white-space:nowrap}
.service-tabs{
  margin-top:18px;
  display:block;
  border-top:1px solid var(--line);
  padding-top:14px;
}
.service-tab-nav{
  display:flex;
  gap:10px;
  flex-wrap:wrap;
  margin:0 0 14px 0;
  padding:8px;
  background:#eef4ff;
  border:1px solid #cfe0ff;
  border-radius:16px;
}
.service-tab-button,
a.service-tab-button{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  padding:10px 18px;
  border-radius:12px;
  border:1px solid transparent;
  background:#fff;
  color:#1e3a8a;
  font-weight:900;
  text-decoration:none;
  min-height:40px;
  box-shadow:0 1px 2px rgba(15,23,42,.04);
}
.service-tab-button.is-active,
a.service-tab-button.is-active{
  background:var(--primary);
  color:#fff;
  border-color:var(--primary);
}
.service-tab-panel{display:none!important;margin-top:0}
.service-tab-panel.is-active{display:block!important}
.service-tab-panel.panel.inner{
  background:#fff;
  border:1px solid var(--line);
  border-radius:18px;
  padding:18px;
}
.service-garde-edit{
  border:1px solid #dbeafe;
  border-radius:16px;
  background:#f8fbff;
}
.service-garde-edit summary{
  cursor:pointer;
  font-weight:900;
  padding:10px 4px;
}
.predevis-block table td:first-child{font-weight:700}
@media(max-width:720px){
  .service-card .garde-head{display:block}
  .service-card .garde-head .btn{margin-top:10px;width:100%}
  .service-tab-nav{display:grid;grid-template-columns:1fr}
  .service-tab-button{width:100%}
}


/* v23.0.7 - onglets Demandes autonomes */
.service-tab-nav{display:flex!important;gap:10px!important;flex-wrap:wrap!important;margin:0 0 14px 0!important;padding:8px!important;background:#eef4ff!important;border:1px solid #cfe0ff!important;border-radius:16px!important}
.service-tab-button{appearance:none!important;display:inline-flex!important;align-items:center!important;justify-content:center!important;padding:10px 18px!important;border-radius:12px!important;border:1px solid #cfe0ff!important;background:#fff!important;color:#1e3a8a!important;font-weight:900!important;text-decoration:none!important;min-height:40px!important;cursor:pointer!important}
.service-tab-button.is-active{background:#2563eb!important;color:#fff!important;border-color:#2563eb!important}
.service-tab-panel{display:none!important}.service-tab-panel.is-active{display:block!important}

.rem-form-real{grid-template-columns:1fr 1fr 1fr 1fr 1fr 1fr!important}
@media(max-width:1100px){.rem-form-real{grid-template-columns:1fr 1fr!important}}
@media(max-width:680px){.rem-form-real{grid-template-columns:1fr!important}}

/* v23.4.8 - détail rémunération par ligne de frais */
.rem-cost-details{margin-top:10px;border-top:1px solid #e5e7eb;padding-top:10px;background:#f8fafc;border-radius:12px;padding:10px}
.rem-cost-details strong{display:block;margin-bottom:6px;font-size:13px;color:#334155}
.mini-table{width:100%;border-collapse:collapse;font-size:12.5px;background:#fff;border-radius:10px;overflow:hidden}
.mini-table td{padding:6px 8px;border-bottom:1px solid #eef2f7}
.mini-table tr:last-child td{border-bottom:0}
.mini-table .num{text-align:right;white-space:nowrap}

/* v23.5.7 - rémunération : champs date/heure lisibles et VHC sur ligne dédiée */
.rem-form-real .datetime-field input[type="datetime-local"],
.add-manual .datetime-field input[type="datetime-local"] { min-width: 190px; }
.rem-form-real .vhc-row,
.add-manual .vhc-row { grid-column: 1 / -1; display: flex; gap: 16px; flex-wrap: wrap; align-items: center; margin-top: 4px; }


/* v23.5.8 - rémunération : formulaire lisible, VHC et parking sur ligne dédiée */
.rem-line{align-items:start!important}
.rem-form-real{
  display:grid!important;
  grid-template-columns:minmax(140px,.8fr) minmax(150px,.9fr) minmax(230px,1.3fr) minmax(230px,1.3fr)!important;
  gap:12px 14px!important;
  align-items:end!important;
}
.rem-form-real label{min-width:0!important}
.rem-form-real .datetime-field input[type="datetime-local"]{min-width:230px!important;width:100%!important}
.rem-form-real .rem-extra-row,
.add-manual .rem-extra-row,
.rem-form-real .vhc-row,
.add-manual .vhc-row{
  grid-column:1 / -1!important;
  display:flex!important;
  gap:14px!important;
  flex-wrap:wrap!important;
  align-items:end!important;
  margin-top:2px!important;
}
.rem-form-real .parking-field{max-width:210px!important}
.rem-form-real .check{white-space:normal!important;min-height:38px!important}
@media(max-width:1150px){.rem-form-real{grid-template-columns:1fr 1fr!important}.rem-form-real .datetime-field input[type="datetime-local"]{min-width:0!important}}
@media(max-width:720px){.rem-form-real{grid-template-columns:1fr!important}}

/* v23.5.57 - Historique services */
.history-timeline{display:flex;flex-direction:column;gap:12px;margin-top:8px}
.history-event{display:grid;grid-template-columns:180px minmax(0,1fr);gap:16px;border:1px solid #e2e8f0;border-radius:14px;background:#fff;padding:14px}
.history-date{font-weight:800;color:#334155;white-space:nowrap}
.history-content{min-width:0}
.history-document{margin-top:10px;display:flex;align-items:center;gap:10px;flex-wrap:wrap;background:#f8fafc;border:1px solid #e2e8f0;border-radius:12px;padding:10px 12px}
.btn.small{padding:6px 10px;font-size:13px}
@media(max-width:760px){.history-event{grid-template-columns:1fr}.history-date{white-space:normal}}
/* v23.5.64 dashboard */
.dashboard-actions{display:flex;flex-wrap:wrap;gap:10px;margin:0 0 18px 0}.stats-grid a.stat-card{color:inherit;text-decoration:none}.stats-grid a.stat-card:hover{transform:translateY(-1px);box-shadow:0 14px 30px rgba(15,23,42,.12)}.dashboard-columns{display:grid;grid-template-columns:1fr 1fr;gap:18px}@media(max-width:900px){.dashboard-columns{grid-template-columns:1fr}.dashboard-actions .btn{flex:1 1 180px;text-align:center}}


/* v23.5.87 - Rémunération : cartes ouvrables/fermables */
.rem-card-actions{display:flex;gap:10px;align-items:center;flex-wrap:wrap;justify-content:flex-end}
.rem-toggle{white-space:nowrap}
.rem-card-body.is-collapsed{display:none}
.guard-head{gap:12px}

/* v23.6.6 - Options rémunération masquées même si la ligne utilise display:flex!important */
.rem-role-option-hidden,
label.rem-role-option-hidden,
.check.rem-role-option-hidden,
[hidden].rem-role-option-hidden{display:none!important;}

.rem-extra-row [hidden]{display:none!important;}
.field-readonly{border:1px solid var(--line);border-radius:12px;padding:10px 12px;background:#f8fafc;min-height:42px;display:flex;flex-direction:column;gap:4px;justify-content:center}.field-readonly span{font-size:12px;font-weight:800;color:#64748b}.field-readonly strong{font-size:15px;color:#0f172a}

/* v23.7.25 - fenêtre de confirmation moderne */
.confirm-modal{position:fixed;inset:0;z-index:9999;display:none;align-items:center;justify-content:center;padding:22px}
.confirm-modal.is-open{display:flex}
.confirm-backdrop{position:absolute;inset:0;background:rgba(15,23,42,.48);backdrop-filter:blur(3px)}
.confirm-dialog{position:relative;z-index:1;width:min(460px,100%);background:#fff;border:1px solid #dbe4f0;border-radius:20px;box-shadow:0 24px 80px rgba(15,23,42,.28);overflow:hidden}
.confirm-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:16px 18px;border-bottom:1px solid #e5e7eb;background:#f8fafc}
.confirm-head strong{font-size:18px;color:#0f172a}
.confirm-x{appearance:none;border:0;background:#e2e8f0;color:#0f172a;border-radius:10px;width:34px;height:34px;font-size:24px;line-height:1;cursor:pointer;font-weight:800}
.confirm-x:hover{background:#cbd5e1}
.confirm-body{padding:18px;color:#334155;font-size:15px;line-height:1.5;white-space:pre-line}
.confirm-actions{display:flex;justify-content:flex-end;gap:10px;padding:0 18px 18px 18px;flex-wrap:wrap}
.confirm-actions .btn.danger{background:#fee2e2;color:#991b1b;border-color:#fecaca}
.confirm-actions .btn.danger:hover{background:#fecaca}
@media(max-width:560px){.confirm-actions .btn{flex:1 1 auto}.confirm-head strong{font-size:16px}}

.needs-panel{display:flex;gap:10px;align-items:center;flex-wrap:wrap;background:#f8fafc;border:1px solid #e2e8f0;border-radius:12px;padding:10px 12px;margin:0 0 12px}
.needs-panel strong{font-weight:900;color:#0f172a}
.needs-panel span{font-weight:700;color:#334155}

.tranche-overview-list{display:grid;gap:12px;margin-top:12px}
.tranche-overview-card{border:1px solid var(--line);border-radius:12px;padding:12px;background:var(--panel)}
.tranche-overview-card.is-current{border-color:var(--primary)}
.compact-list{margin:8px 0 0 18px;padding:0}
.compact-list li{margin:3px 0}
.document-list{display:grid;gap:8px;margin:10px 0}
.document-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:8px 10px;border:1px solid var(--line);border-radius:10px;background:var(--panel)}
.btn.small{padding:4px 8px;font-size:.85rem}

/* Mise en évidence temporaire du poste ciblé depuis le mail d'ouverture. */
.public-guard-card.is-targeted {
  outline: 3px solid rgba(37, 99, 235, .38);
  box-shadow: 0 0 0 6px rgba(37, 99, 235, .10), 0 14px 34px rgba(15, 23, 42, .18);
  transform: translateY(-2px);
  transition: outline-color .35s ease, box-shadow .35s ease, transform .35s ease;
}

/* v23.7.64 - harmonisation graphique professionnelle admin et pages publiques */
:root{
  --bg:#f3f5f7;
  --panel:#ffffff;
  --text:#202733;
  --muted:#667085;
  --line:#d8dee6;
  --primary:#245f9e;
  --primary-dark:#194b80;
  --success:#287a42;
  --danger:#b42318;
  --warning:#a15c13;
  --radius:8px;
  --shadow:0 2px 8px rgba(31,42,55,.06);
}
html{background:var(--bg)}
body{background:var(--bg);color:var(--text);font-family:"Segoe UI",Arial,"Liberation Sans",sans-serif;font-size:14px;line-height:1.45}
a{color:var(--primary)}

/* Administration */
.admin-body .app-shell{grid-template-columns:235px minmax(0,1fr)}
.admin-body .sidebar{
  background:#e9edf2;
  color:#344054;
  border-right:1px solid #cfd6df;
  padding:14px 10px;
  gap:14px;
}
.admin-body .brand{padding:4px 8px 14px;border-bottom:1px solid #cfd6df;gap:10px}
.admin-body .brand-icon{width:38px;height:38px;border-radius:6px;background:#fff;border:1px solid #d6dce4;font-size:21px;box-shadow:none}
.admin-body .brand-title{color:#202733;font-size:16px;font-weight:700}
.admin-body .brand-subtitle{color:#667085;font-size:11px}
.admin-body .nav{gap:2px}
.admin-body .nav a{
  color:#344054;
  min-height:38px;
  padding:9px 10px;
  border-radius:4px;
  border-left:3px solid transparent;
  font-size:13px;
  font-weight:600;
}
.admin-body .nav a:hover{background:#f8fafc;color:#202733}
.admin-body .nav a.active{background:#fff;color:#194b80;border-left-color:var(--primary);box-shadow:0 1px 2px rgba(31,42,55,.05)}
.admin-body .version{color:#667085;padding:8px;font-size:11px}
.admin-body .topbar{
  min-height:64px;
  padding:12px 20px;
  background:rgba(255,255,255,.96);
  border-bottom:1px solid var(--line);
  backdrop-filter:none;
}
.admin-body .topbar h1{font-size:21px;font-weight:650;letter-spacing:-.01em}
.admin-body .topbar p{font-size:12px;color:var(--muted);margin-top:2px}
.admin-body .content{max-width:1480px;padding:18px 20px 34px}
.admin-body .panel,
.admin-body .guard-card,
.admin-body .sama-card,
.admin-body .service-card,
.admin-body .detail-section,
.admin-body .filterbar,
.admin-body .stat-card{
  border:1px solid var(--line);
  border-radius:6px;
  background:#fff;
  box-shadow:var(--shadow);
}
.admin-body .panel,.admin-body .guard-card,.admin-body .sama-card,.admin-body .service-card{padding:15px}
.admin-body .filterbar{padding:12px;margin-bottom:12px;gap:9px}
.admin-body .stats-grid{gap:10px;margin-bottom:12px}
.admin-body .stat-card{padding:14px;min-height:102px}
.admin-body .stat-card span{font-size:19px}
.admin-body .stat-card strong{font-size:23px}
.admin-body .stat-card small{font-size:11px;color:#667085}
.admin-body .stat-card.danger{background:#fff7f6;border-color:#f3b8b3}
.admin-body .stat-card.success{background:#f3faf5;border-color:#a9d6b5}
.admin-body .panel h2,.admin-body .guard-card h2,.admin-body .sama-main h2{font-size:17px;font-weight:650}
.admin-body .detail-section h3{font-size:15px}
.admin-body input,.admin-body select,.admin-body textarea{
  border:1px solid #bfc7d1;
  border-radius:4px;
  min-height:36px;
  padding:7px 9px;
  background:#fff;
  color:#202733;
}
.admin-body input:focus,.admin-body select:focus,.admin-body textarea:focus,
.public-body input:focus,.public-body select:focus,.public-body textarea:focus,
.sama-public input:focus,.sama-public select:focus,.sama-public textarea:focus,
body:not(.admin-body) input:focus,body:not(.admin-body) select:focus,body:not(.admin-body) textarea:focus{
  border-color:#5b8fc5;
  outline:2px solid rgba(36,95,158,.14);
  outline-offset:0;
}
.btn,.admin-body .btn{
  border:1px solid #b8c1cc;
  border-radius:4px;
  background:#fff;
  color:#273142;
  padding:7px 11px;
  font-weight:650;
  box-shadow:none;
}
.btn:hover,.admin-body .btn:hover{background:#f4f7fa;border-color:#9faab7}
.btn.primary,.admin-body .btn.primary{background:var(--primary);border-color:var(--primary);color:#fff}
.btn.primary:hover,.admin-body .btn.primary:hover{background:var(--primary-dark);border-color:var(--primary-dark)}
.btn.secondary,.admin-body .btn.secondary{background:#fff;color:#344054}
.btn.danger,.admin-body .btn.danger{background:#fff7f6;color:#9f231b;border-color:#e2aaa6}
.admin-body table{background:#fff}
.admin-body th{background:#eef1f4;color:#475467;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.025em}
.admin-body td,.admin-body th{padding:8px 9px;border-bottom:1px solid #e5e9ee}
.admin-body tbody tr:nth-child(even){background:#fafbfc}
.admin-body tbody tr:hover{background:#edf5ff}
.admin-body .badge,.admin-body .metrics span,.status-badge{border-radius:999px;padding:4px 8px;font-size:11px;font-weight:700}
.admin-body .guard-mini,.admin-body .inscription-card,.admin-body .history-event,.admin-body .document-row,.admin-body .rem-line{border-radius:5px;box-shadow:none}
.admin-body .service-tab-nav{background:#eef1f4!important;border-color:#d8dee6!important;border-radius:5px!important;padding:5px!important;gap:5px!important}
.admin-body .service-tab-button{border-radius:4px!important;min-height:34px!important;padding:7px 11px!important;font-weight:650!important;color:#344054!important;border-color:transparent!important}
.admin-body .service-tab-button.is-active{background:#fff!important;color:#194b80!important;border-color:#c9d2dc!important;box-shadow:0 1px 2px rgba(31,42,55,.06)!important}
.admin-body .modal-card,.admin-body .confirm-dialog{border-radius:7px}
.admin-body .modal-head,.admin-body .confirm-head{background:#eef1f4}

/* Pages publiques : inscription, demande sanitaire et satisfaction */
.public-body,.sama-public,body:has(.shell > .card){background:#f3f5f7!important;color:#202733}
.public-page{background:#f3f5f7;padding:24px}
.public-shell,.sama-public-shell{width:min(1120px,calc(100% - 32px));max-width:1120px;margin:0 auto;padding:28px 0 48px}
.public-card,.sama-welcome,.public-section,.public-guard-card,.history-card,
body:has(.shell > .card) .card{
  background:#fff;
  border:1px solid var(--line);
  border-radius:7px;
  box-shadow:var(--shadow);
}
.public-card{max-width:none;text-align:left;padding:24px}
.public-hero,.sama-hero{border-bottom:1px solid var(--line);padding-bottom:16px;margin-bottom:16px}
.public-hero h1,.sama-hero h1,body:has(.shell > .card) h1{font-size:clamp(27px,3vw,36px);font-weight:650;letter-spacing:-.025em;color:#202733}
.public-hero p,.sama-hero p,.meta,.muted{color:#667085}
.public-badge,.public-badges .badge{background:#e7f0fa;color:#194b80;border:1px solid #bfd1e3;border-radius:999px;padding:5px 9px;font-weight:700}
.public-section{padding:17px;margin-top:14px;background:#fff}
.public-section h2{font-size:18px;font-weight:650;padding-bottom:9px;border-bottom:1px solid #e6eaef}
.public-grid{gap:12px}
.public-grid label,.public-card label{color:#344054;font-size:13px;font-weight:650}
.public-grid input,.public-grid select,.public-grid textarea,
body:has(.shell > .card) input,body:has(.shell > .card) select,body:has(.shell > .card) textarea{
  width:100%;border:1px solid #bfc7d1;border-radius:4px;padding:8px 9px;background:#fff;color:#202733;font:inherit
}
.public-check,.vhc-public-note{border:1px solid #d8dee6;background:#f8fafc;border-radius:5px;padding:10px}
.public-docs a{border:1px solid #d8dee6;border-radius:5px;background:#fff;color:#202733}
.public-docs img{border-radius:4px;background:#f8fafc}
.public-actions .btn{font-size:14px;padding:9px 14px}
.public-guard-list,.public-history{gap:9px}
.public-guard-card{padding:13px}
.public-guard-card:hover{border-color:#9db8d3;box-shadow:0 3px 10px rgba(31,42,55,.08)}
.public-guard-main h3{font-size:17px;color:#202733}
.sama-welcome{padding:18px}
.sama-public-stats span{border-radius:5px;background:#f8fafc;border:1px solid #e2e7ed}
.history-card{padding:12px}
.public-empty{border-radius:5px;background:#f8fafc;border:1px dashed #cbd3dc}
.public-slot-row{border-radius:5px!important;border-color:#d8dee6!important;background:#f8fafc!important}
.alert,.notice,.error{border-radius:5px!important}

/* Satisfaction */
body:has(.shell > .card) .shell{max-width:960px;margin:auto;padding:28px 16px 56px}
body:has(.shell > .card) .card{padding:25px}
body:has(.shell > .card) .intro{background:#f8fafc;border:1px solid var(--line);border-radius:5px;padding:14px 16px}
body:has(.shell > .card) .section{margin:22px 0 10px;padding:10px 13px;background:#344054;color:#fff;border-radius:4px;font-size:16px;font-weight:650}
body:has(.shell > .card) .question{border:1px solid var(--line);border-radius:5px;padding:13px;margin:9px 0;background:#fff}
body:has(.shell > .card) .question legend{font-weight:650;color:#344054}
body:has(.shell > .card) .choices{gap:7px}
body:has(.shell > .card) .choices label{border:1px solid #d8dee6;border-radius:4px;padding:9px;background:#fafbfc;font-weight:500}
body:has(.shell > .card) .choices label:hover{background:#edf5ff;border-color:#aec5dc}
body:has(.shell > .card) .submit{background:var(--primary);color:#fff;border:1px solid var(--primary);border-radius:4px;padding:10px 16px;font-weight:650;font-size:14px;cursor:pointer}
body:has(.shell > .card) .submit:hover{background:var(--primary-dark)}

@media(max-width:1000px){
  .admin-body .app-shell{display:block}.admin-body .sidebar{width:235px;left:-250px}.admin-body .sidebar.open{left:0}.admin-body .menu-btn{display:inline-flex}
  .admin-body .content{padding:14px}.public-shell,.sama-public-shell{width:min(100% - 24px,960px)}
}
@media(max-width:720px){
  .admin-body .topbar{padding:11px 13px}.admin-body .content{padding:10px}.admin-body .panel,.admin-body .guard-card,.admin-body .sama-card,.admin-body .service-card{padding:12px}
  .public-shell,.sama-public-shell{width:100%;padding:0}.public-card{border-left:0;border-right:0;border-radius:0;padding:16px;box-shadow:none}
  .public-section{padding:13px;border-radius:5px}.public-grid,.public-docs{grid-template-columns:1fr}.public-actions .btn{width:100%}
  body:has(.shell > .card) .shell{padding:0}body:has(.shell > .card) .card{border-radius:0;border-left:0;border-right:0;padding:17px;box-shadow:none}
  body:has(.shell > .card) .choices{grid-template-columns:1fr 1fr}
}
@media(max-width:460px){body:has(.shell > .card) .choices{grid-template-columns:1fr}}

/* v23.7.65 - finition visuelle compacte, sans changement fonctionnel */
:root{
  --ui-radius:4px;
  --ui-card-radius:6px;
}

/* Typographie : même famille que l'exemple LS_Tester */
html,body,button,input,select,textarea{
  font-family:"Segoe UI",Arial,"Liberation Sans",sans-serif;
}

/* Administration : menu latéral plus sobre et mieux structuré */
.admin-body .app-shell{grid-template-columns:248px minmax(0,1fr)}
.admin-body .sidebar{
  width:auto;
  padding:16px 12px;
  gap:14px;
  background:#111827;
  border-right:1px solid #263244;
}
.admin-body .brand{
  gap:10px;
  padding:4px 7px 15px;
  border-bottom:1px solid rgba(255,255,255,.13);
}
.admin-body .brand-icon{
  width:36px;
  height:36px;
  border-radius:5px;
  background:#fff;
  box-shadow:none;
  font-size:21px;
}
.admin-body .brand-title{
  color:#f8fafc;
  font-size:14px;
  font-weight:650;
  line-height:1.25;
}
.admin-body .brand-subtitle{
  color:#94a3b8;
  font-size:11.5px;
  margin-top:3px;
}
.admin-body .nav{gap:2px}
.admin-body .nav a{
  position:relative;
  min-height:38px;
  padding:9px 10px 9px 13px;
  border:1px solid transparent;
  border-radius:4px;
  color:#aeb9c8;
  font-size:13.5px;
  font-weight:500;
  gap:10px;
  transition:background-color .14s ease,color .14s ease,border-color .14s ease;
}
.admin-body .nav a:hover{
  color:#f8fafc;
  background:#1b2638;
  border-color:#2b3a50;
}
.admin-body .nav a.active{
  color:#fff;
  background:#202d40;
  border-color:#30425a;
  box-shadow:none;
  font-weight:600;
}
.admin-body .nav a.active::before{
  content:"";
  position:absolute;
  left:-1px;
  top:7px;
  bottom:7px;
  width:3px;
  border-radius:0 2px 2px 0;
  background:#60a5fa;
}
.admin-body .version{
  padding:10px 8px 2px;
  color:#718096;
  font-size:10.5px;
}

/* Angles plus nets et cohérents */
.admin-body .panel,
.admin-body .guard-card,
.admin-body .sama-card,
.admin-body .service-card,
.admin-body .filterbar,
.admin-body .detail-section,
.admin-body .modal-card,
.admin-body .confirm-dialog{
  border-radius:var(--ui-card-radius);
}
.admin-body input,
.admin-body select,
.admin-body textarea,
.admin-body .btn,
.admin-body button,
.public-body input,
.public-body select,
.public-body textarea,
.public-body .btn,
.sama-public input,
.sama-public select,
.sama-public textarea,
.sama-public .btn,
body:has(.shell > .card) input,
body:has(.shell > .card) select,
body:has(.shell > .card) textarea,
body:has(.shell > .card) button{
  border-radius:var(--ui-radius);
}

/* Indicateurs métier : compacts, plats et sans aspect de pastille */
.admin-body .metrics{
  gap:0;
  margin:8px 0;
  align-items:center;
}
.admin-body .metrics span{
  display:inline-flex;
  align-items:center;
  min-height:25px;
  padding:3px 9px;
  margin:2px 0;
  border:0;
  border-right:1px solid #d8dee6;
  border-radius:0;
  background:transparent;
  color:#475467;
  font-size:12px;
  font-weight:600;
  line-height:1.25;
  white-space:nowrap;
}
.admin-body .metrics span:first-child{padding-left:0}
.admin-body .metrics span:last-child{border-right:0}
.admin-body .metrics .danger-text{
  background:transparent!important;
  color:#b42318!important;
}
.admin-body .metrics .warning-text{
  background:transparent!important;
  color:#9a3412!important;
}
.admin-body .metrics .success-text{
  background:transparent!important;
  color:#16794b!important;
}
.admin-body .metrics .info-text{
  background:transparent!important;
  color:#194b80!important;
}

/* Les vrais statuts restent identifiables, mais deviennent moins arrondis */
.admin-body .badge,
.admin-body .status-badge,
.public-body .badge,
.sama-public .badge,
.public-badge,
.public-badges .badge{
  border-radius:4px!important;
  padding:4px 8px!important;
  font-size:11.5px!important;
  font-weight:650!important;
  line-height:1.2;
}
.admin-body .status-badge{
  gap:5px!important;
  box-shadow:none!important;
}
.admin-body .status-badge::before{
  width:6px;
  height:6px;
}

/* Boutons plus carrés, sans changer leurs dimensions ou actions */
.admin-body .btn,
.admin-body button,
.public-body .btn,
.sama-public .btn,
body:has(.shell > .card) button{
  box-shadow:none;
  font-weight:600;
}

/* Pages publiques : mêmes principes, sans réduire la lisibilité */
.sama-public-stats span,
.public-check,
.vhc-public-note,
.public-empty,
.history-card,
.public-guard-card,
body:has(.shell > .card) .intro,
body:has(.shell > .card) .question,
body:has(.shell > .card) .choices label{
  border-radius:var(--ui-radius);
}

@media(max-width:1000px){
  .admin-body .sidebar{width:248px;left:-260px}
}
@media(max-width:720px){
  .admin-body .metrics{gap:3px}
  .admin-body .metrics span{
    padding:3px 6px;
    border:1px solid #e2e7ed;
    border-radius:3px;
    background:#f8fafc;
  }
  .admin-body .metrics span:first-child{padding-left:6px}
}

/* v23.7.66 - demande publique : remise en page graphique uniquement */
.public-body{
  min-height:100vh;
  background:#eef2f6!important;
}
.public-body .public-shell{
  width:min(1040px,calc(100% - 32px));
  max-width:1040px;
  padding:32px 0 56px;
}
.public-body .public-card{
  padding:0;
  background:transparent;
  border:0;
  box-shadow:none;
}
.public-body .public-hero{
  display:flex;
  justify-content:space-between;
  align-items:flex-start;
  gap:24px;
  margin:0 0 18px;
  padding:24px 26px;
  border:1px solid #d7dee7;
  border-left:4px solid #2563eb;
  border-radius:6px;
  background:#fff;
  box-shadow:0 4px 14px rgba(15,23,42,.05);
}
.public-body .public-hero h1{
  margin:0;
  font-size:clamp(25px,3vw,34px);
  line-height:1.15;
  font-weight:700;
  color:#172033;
}
.public-body .public-hero p{
  max-width:700px;
  margin:8px 0 0;
  font-size:15px;
  line-height:1.5;
}
.public-body .public-badge{
  flex:0 0 auto;
  margin-top:2px;
  background:#edf4ff;
  color:#1d4f91;
  border-color:#c8d8ec;
}
.public-body form{
  display:grid;
  gap:14px;
}
.public-body .public-section{
  margin:0;
  padding:20px 22px 22px;
  border:1px solid #d7dee7;
  border-radius:6px;
  box-shadow:0 2px 8px rgba(15,23,42,.035);
}
.public-body .public-section h2{
  margin:0 0 6px;
  padding:0 0 11px;
  border-bottom:1px solid #e3e8ef;
  color:#1f2937;
  font-size:18px;
  line-height:1.25;
  font-weight:700;
}
.public-body .public-section > .muted{
  margin:9px 0 15px;
  font-size:13px;
  line-height:1.45;
}
.public-body .public-grid{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:13px 16px;
  align-items:start;
}
.public-body .public-grid > .full,
.public-body .public-grid > input[type="hidden"],
.public-body .public-grid > .public-slots,
.public-body .public-grid > .alert{
  grid-column:1/-1;
}
.public-body .public-grid label,
.public-body .public-card label{
  min-width:0;
  gap:6px;
  color:#344054;
  font-size:13px;
  font-weight:600;
  line-height:1.35;
}
.public-body input:not([type="checkbox"]):not([type="radio"]),
.public-body select,
.public-body textarea{
  min-height:40px;
  padding:9px 10px;
  border:1px solid #c6ced8;
  border-radius:4px;
  background:#fff;
  color:#1f2937;
  box-shadow:inset 0 1px 1px rgba(15,23,42,.025);
}
.public-body textarea{min-height:96px;resize:vertical}
.public-body input::placeholder,
.public-body textarea::placeholder{color:#98a2b3}
.public-body input:focus,
.public-body select:focus,
.public-body textarea:focus{
  outline:0;
  border-color:#4f86c6;
  box-shadow:0 0 0 3px rgba(37,99,235,.10);
}
.public-body input[type="checkbox"],
.public-body input[type="radio"]{
  flex:0 0 auto;
  width:17px;
  height:17px;
  min-height:0;
  margin:1px 0 0;
  accent-color:#2563eb;
}
.public-body .public-check{
  display:flex;
  flex-direction:row;
  align-items:flex-start;
  min-height:40px;
  padding:10px 11px;
  gap:9px;
  border:1px solid #d8dee7;
  border-radius:4px;
  background:#f8fafc;
  font-weight:500;
  cursor:pointer;
}
.public-body .public-check:hover{
  border-color:#b9c7d8;
  background:#f4f8fc;
}
.public-body .public-docs{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:12px;
}
.public-body .public-docs a{
  display:grid;
  grid-template-columns:1fr 76px;
  align-items:center;
  gap:12px;
  min-height:78px;
  padding:12px 12px 12px 15px;
  text-decoration:none;
  font-weight:650;
  box-shadow:none;
}
.public-body .public-docs a:hover{
  border-color:#9fb4cc;
  background:#f8fbff;
}
.public-body .public-docs img{
  display:block;
  width:76px;
  height:52px;
  object-fit:cover;
  border:1px solid #e1e6ec;
}
.public-body .same-billing{
  display:none;
  grid-column:1/-1;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:13px 16px;
}
.public-body .same-billing.is-visible{display:grid}
.public-body .same-billing .full{grid-column:1/-1}
.public-body .public-slots{
  display:grid;
  gap:10px;
  margin:2px 0;
}
.public-body .public-slot-row{
  display:grid;
  grid-template-columns:1fr 1fr minmax(180px,1.25fr) auto;
  gap:10px;
  align-items:end;
  padding:12px;
  border:1px solid #d8dee6;
  background:#f8fafc!important;
}
.public-body .public-slot-row .btn{
  min-height:40px;
  white-space:nowrap;
}
.public-body .public-slot-actions{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
  flex-wrap:wrap;
}
.public-body .public-section .alert{
  margin:0;
  padding:14px 15px!important;
  border-left:3px solid #6b86a5!important;
  border-radius:4px!important;
  background:#f8fafc!important;
  font-size:13px;
}
.public-body .public-actions{
  display:flex;
  justify-content:flex-end;
  padding:4px 0 0;
}
.public-body .public-actions .btn{
  min-width:240px;
  min-height:44px;
  padding:10px 18px;
  border:1px solid #1d4ed8;
  border-radius:4px;
  background:#2563eb;
  color:#fff;
  font-size:14px;
  font-weight:650;
}
.public-body .public-actions .btn:hover{background:#1d4ed8}
.public-body .btn.secondary{
  border:1px solid #c8d1dc;
  background:#fff;
  color:#344054;
}
.public-body .btn.secondary:hover{background:#f2f5f8}

@media(max-width:820px){
  .public-body .public-slot-row{grid-template-columns:1fr 1fr}
  .public-body .public-slot-row label:nth-child(3){grid-column:1/-1}
  .public-body .public-slot-row .btn{justify-self:start}
}
@media(max-width:640px){
  .public-body .public-shell{width:100%;padding:0 0 28px}
  .public-body .public-hero{
    display:block;
    margin:0;
    padding:20px 16px;
    border-width:0 0 1px 4px;
    border-radius:0;
    box-shadow:none;
  }
  .public-body .public-badge{display:inline-flex;margin-top:14px}
  .public-body form{gap:10px;padding:10px}
  .public-body .public-section{padding:16px 14px;border-radius:5px}
  .public-body .public-grid,
  .public-body .public-docs,
  .public-body .same-billing.is-visible,
  .public-body .public-slot-row{grid-template-columns:1fr}
  .public-body .public-slot-row label:nth-child(3){grid-column:auto}
  .public-body .public-slot-row .btn{width:100%}
  .public-body .public-docs a{grid-template-columns:1fr 68px}
  .public-body .public-docs img{width:68px;height:46px}
  .public-body .public-actions{padding:0 10px}
  .public-body .public-actions .btn{width:100%;min-width:0}
}


/* v23.7.67 - questionnaire de satisfaction : finition graphique uniquement */
.satisfaction-body{
  min-height:100vh;
  margin:0;
  background:#eef2f6!important;
  color:#202733;
}
.satisfaction-body .shell{
  width:min(1040px,calc(100% - 32px));
  max-width:1040px;
  margin:0 auto;
  padding:32px 0 56px;
}
.satisfaction-body .card{
  padding:26px 28px 30px!important;
  border:1px solid #d7dee7!important;
  border-top:4px solid #2563eb!important;
  border-radius:6px!important;
  background:#fff!important;
  box-shadow:0 4px 14px rgba(15,23,42,.05)!important;
}
.satisfaction-body h1{
  margin:0 0 7px;
  font-size:clamp(25px,3vw,34px)!important;
  line-height:1.15;
  font-weight:700!important;
  letter-spacing:-.02em;
  color:#172033!important;
}
.satisfaction-body .meta{
  margin:0 0 18px;
  padding:9px 12px;
  border-left:3px solid #6b86a5;
  background:#f5f7fa;
  color:#475467;
  font-size:13px;
  line-height:1.4;
}
.satisfaction-body .intro{
  margin:0 0 18px;
  padding:15px 17px!important;
  border:1px solid #dce3eb!important;
  border-radius:4px!important;
  background:#f8fafc!important;
}
.satisfaction-body .intro p{
  margin:0 0 7px;
  font-size:13.5px;
  line-height:1.48;
  color:#475467;
}
.satisfaction-body .intro p:last-child{margin-bottom:0}
.satisfaction-body .intro .optional{
  margin-top:10px;
  padding-top:9px;
  border-top:1px solid #e2e7ed;
  color:#667085;
  font-size:12.5px;
}
.satisfaction-body .error,
.satisfaction-body .notice{
  margin:0 0 16px;
  padding:12px 14px;
  border-radius:4px!important;
}
.satisfaction-body form{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:11px 14px;
  align-items:start;
}
.satisfaction-body .section{
  grid-column:1/-1;
  margin:12px 0 0!important;
  padding:10px 12px!important;
  border:1px solid #d7dee7;
  border-left:4px solid #2563eb;
  border-radius:4px!important;
  background:#f3f6f9!important;
  color:#25354a!important;
  font-size:15px!important;
  font-weight:700!important;
  line-height:1.25;
}
.satisfaction-body .question{
  min-width:0;
  margin:0!important;
  padding:12px!important;
  border:1px solid #d8dee7!important;
  border-radius:4px!important;
  background:#fff!important;
  box-shadow:none!important;
}
.satisfaction-body .question legend{
  max-width:100%;
  padding:0 5px;
  color:#344054!important;
  font-size:13px;
  font-weight:650!important;
  line-height:1.35;
}
.satisfaction-body .choices{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:6px!important;
  margin-top:3px;
}
.satisfaction-body .choices label{
  display:flex;
  flex-direction:row;
  align-items:center;
  min-width:0;
  min-height:34px;
  margin:0;
  padding:7px 8px!important;
  gap:7px;
  border:1px solid #d8dee6!important;
  border-radius:3px!important;
  background:#fafbfc!important;
  color:#475467;
  font-size:12px;
  font-weight:500!important;
  line-height:1.25;
  cursor:pointer;
}
.satisfaction-body .choices label:hover{
  border-color:#aebfd2!important;
  background:#f3f7fb!important;
}
.satisfaction-body .choices label:has(input:checked){
  border-color:#6f9fd2!important;
  background:#edf5ff!important;
  color:#194b80;
}
.satisfaction-body input[type="radio"]{
  flex:0 0 auto;
  width:16px!important;
  height:16px!important;
  min-height:0!important;
  margin:0!important;
  accent-color:#2563eb;
}
.satisfaction-body form > label{
  grid-column:1/-1;
  display:grid;
  gap:7px;
  margin:1px 0 3px;
  color:#344054;
  font-size:13px;
  font-weight:600;
}
.satisfaction-body textarea.wide{
  width:100%;
  min-height:92px;
  padding:10px 11px;
  border:1px solid #c6ced8;
  border-radius:4px!important;
  background:#fff;
  color:#1f2937;
  font:inherit;
  line-height:1.45;
  resize:vertical;
}
.satisfaction-body textarea.wide::placeholder{color:#98a2b3}
.satisfaction-body textarea.wide:focus{
  outline:0;
  border-color:#4f86c6;
  box-shadow:0 0 0 3px rgba(37,99,235,.10);
}
.satisfaction-body .submit{
  grid-column:1/-1;
  justify-self:end;
  min-width:210px;
  min-height:42px;
  margin-top:4px;
  padding:9px 17px!important;
  border:1px solid #1d4ed8!important;
  border-radius:4px!important;
  background:#2563eb!important;
  color:#fff!important;
  font-size:14px!important;
  font-weight:650!important;
  cursor:pointer;
}
.satisfaction-body .submit:hover{background:#1d4ed8!important}

@media(max-width:760px){
  .satisfaction-body .shell{width:100%;padding:0 0 28px}
  .satisfaction-body .card{
    padding:20px 16px 24px!important;
    border-width:4px 0 1px!important;
    border-radius:0!important;
    box-shadow:none!important;
  }
  .satisfaction-body form{grid-template-columns:1fr;gap:10px}
  .satisfaction-body .section,
  .satisfaction-body form > label,
  .satisfaction-body .submit{grid-column:1}
}
@media(max-width:460px){
  .satisfaction-body .choices{grid-template-columns:1fr}
  .satisfaction-body .submit{width:100%;min-width:0}
}


/* v23.7.68 - contrôle graphique global admin : composants compacts et cohérents */
.admin-body .service-card{border-radius:6px!important;box-shadow:var(--shadow)!important}
.admin-body .service-card .btn,
.admin-body .service-card button:not(.service-status-badge){border-radius:4px}
.admin-body .service-actions{gap:7px!important}
.admin-body .service-actions .btn,
.admin-body .service-slot-actions .btn{min-height:34px;padding:7px 11px}
.admin-body .service-subpanel,
.admin-body .service-contact-card,
.admin-body .service-slots-editor,
.admin-body .service-garde-edit,
.admin-body .service-tab-panel.panel.inner{border-radius:5px!important;box-shadow:none!important}
.admin-body .service-tab-button,
.admin-body .service-subtab-button{font-size:13px!important;line-height:1.2!important;box-shadow:none!important}
.admin-body .service-tab-button:hover,
.admin-body .service-subtab-button:hover{background:#f8fafc!important;border-color:#c9d2dc!important;color:#194b80!important}
.admin-body .service-status-badge{padding:4px 8px!important;font-size:11px!important;font-weight:700!important}
.admin-body .service-status-badge::before{width:7px!important;height:7px!important}
.admin-body a.btn,
.admin-body button.btn,
.admin-body input[type=submit].btn{font-family:inherit;text-decoration:none;line-height:1.2;display:inline-flex;align-items:center;justify-content:center}

/* v23.8.0 - harmonisation graphique globale, sans modification fonctionnelle */
:root{
  --bg:#f2f5f8;
  --panel:#ffffff;
  --text:#1f2937;
  --muted:#667085;
  --line:#d7dee7;
  --primary:#2f6fa9;
  --primary-dark:#245987;
  --sidebar:#28577f;
  --sidebar-hover:#32658f;
  --sidebar-active:#3974a7;
  --ui-radius:4px;
  --ui-card-radius:6px;
  --shadow:0 2px 8px rgba(15,23,42,.055);
}

/* Menu latéral : bleu plus clair, contraste stable et sélection discrète */
.admin-body .app-shell{grid-template-columns:248px minmax(0,1fr)}
.admin-body .sidebar{
  background:var(--sidebar)!important;
  border-right:1px solid #1f496c!important;
  color:#fff!important;
  padding:15px 11px!important;
}
.admin-body .brand{border-bottom-color:rgba(255,255,255,.18)!important}
.admin-body .brand-icon{
  background:rgba(255,255,255,.96)!important;
  border:1px solid rgba(255,255,255,.45)!important;
}
.admin-body .brand-title{color:#fff!important;font-weight:650!important}
.admin-body .brand-subtitle{color:#d8e6f2!important}
.admin-body .nav a{
  color:#e5eef6!important;
  background:transparent!important;
  border-color:transparent!important;
  border-radius:4px!important;
  font-weight:500!important;
  box-shadow:none!important;
}
.admin-body .nav a:hover{
  color:#fff!important;
  background:var(--sidebar-hover)!important;
  border-color:rgba(255,255,255,.10)!important;
}
.admin-body .nav a.active{
  color:#fff!important;
  background:var(--sidebar-active)!important;
  border-color:rgba(255,255,255,.16)!important;
  font-weight:600!important;
}
.admin-body .nav a.active::before{
  left:-1px!important;
  top:6px!important;
  bottom:6px!important;
  width:3px!important;
  background:#d9ecff!important;
}
.admin-body .version{color:#c5d7e7!important}

/* Composants administratifs : mêmes rayons, bordures et ombres partout */
.admin-body .panel,
.admin-body .guard-card,
.admin-body .sama-card,
.admin-body .service-card,
.admin-body .filterbar,
.admin-body .stat-card,
.admin-body .detail-section,
.admin-body .service-subpanel,
.admin-body .service-contact-card,
.admin-body .service-slots-editor,
.admin-body .service-garde-edit,
.admin-body .service-tab-panel.panel.inner,
.admin-body .modal-card,
.admin-body .confirm-dialog,
.admin-body .settings-group,
.admin-body .settings-intro,
.admin-body .logo-preview{
  border-radius:var(--ui-card-radius)!important;
  box-shadow:var(--shadow)!important;
}
.admin-body .panel.inner,
.admin-body .detail-section,
.admin-body .service-subpanel,
.admin-body .service-contact-card,
.admin-body .service-slots-editor,
.admin-body .service-garde-edit{
  background:#f8fafc!important;
  border-color:#dce3eb!important;
  box-shadow:none!important;
}

/* Boutons : un seul langage visuel, compact et rectangulaire */
.admin-body .btn,
.admin-body button:not(.menu-btn),
.admin-body input[type="submit"],
.admin-body input[type="button"]{
  min-height:36px;
  border-radius:var(--ui-radius)!important;
  padding:7px 11px;
  border:1px solid #b9c3ce;
  background:#fff;
  color:#273445;
  font-family:inherit;
  font-size:13px;
  font-weight:600!important;
  line-height:1.2;
  box-shadow:none!important;
}
.admin-body .btn:hover,
.admin-body button:not(.menu-btn):hover{
  background:#f2f6f9;
  border-color:#95a5b5;
}
.admin-body .btn.primary,
.admin-body button.primary,
.admin-body input[type="submit"].primary{
  background:var(--primary)!important;
  border-color:var(--primary)!important;
  color:#fff!important;
}
.admin-body .btn.primary:hover,
.admin-body button.primary:hover{background:var(--primary-dark)!important;border-color:var(--primary-dark)!important}
.admin-body .btn.secondary{background:#fff!important;color:#344054!important}
.admin-body .btn.danger{background:#fff7f6!important;color:#9f231b!important;border-color:#dfaaa6!important}

/* Onglets et barres d'actions */
.admin-body .service-tab-nav,
.admin-body .service-gardes-subnav{
  border-radius:var(--ui-card-radius)!important;
  background:#edf1f5!important;
  border-color:#d5dde6!important;
  padding:4px!important;
}
.admin-body .service-tab-button,
.admin-body .service-subtab-button{
  min-height:34px!important;
  border-radius:var(--ui-radius)!important;
  padding:7px 10px!important;
  background:transparent!important;
  border-color:transparent!important;
  color:#405065!important;
  font-size:13px!important;
  font-weight:600!important;
}
.admin-body .service-tab-button:hover,
.admin-body .service-subtab-button:hover{background:#f8fafc!important;border-color:#cdd6df!important}
.admin-body .service-tab-button.is-active,
.admin-body .service-subtab-button.is-active{
  background:#fff!important;
  color:#245987!important;
  border-color:#bdc9d5!important;
  box-shadow:0 1px 2px rgba(15,23,42,.05)!important;
}

/* Badges : uniquement les statuts restent colorés, sans forme capsule */
.admin-body .badge,
.admin-body .status-badge,
.admin-body .service-status-badge,
.admin-body .invoice-status-badge{
  display:inline-flex!important;
  align-items:center!important;
  gap:5px!important;
  min-height:24px!important;
  border-radius:4px!important;
  padding:4px 8px!important;
  font-size:11.5px!important;
  font-weight:650!important;
  line-height:1.15!important;
  box-shadow:none!important;
  white-space:nowrap!important;
}
.admin-body .status-badge::before,
.admin-body .service-status-badge::before,
.admin-body .invoice-status-badge::before{width:6px!important;height:6px!important}

/* Paramètres : suppression de l'aspect disparate des anciens blocs */
.admin-body .settings-groups,
.admin-body .settings-form-v2204{gap:10px!important}
.admin-body .settings-intro{
  padding:12px 14px!important;
  border:1px solid #cfd9e4!important;
  border-left:4px solid var(--primary)!important;
  background:#f4f8fc!important;
}
.admin-body .settings-intro strong{font-size:16px!important;font-weight:650!important}
.admin-body .settings-group{
  overflow:hidden!important;
  border:1px solid var(--line)!important;
  background:#fff!important;
}
.admin-body .settings-group[open]{border-color:#b9c9d9!important;box-shadow:var(--shadow)!important}
.admin-body .settings-group>summary{
  min-height:55px!important;
  padding:11px 14px!important;
  background:#fff!important;
  border-bottom:1px solid transparent!important;
  gap:10px!important;
}
.admin-body .settings-group>summary:hover{background:#f7f9fb!important}
.admin-body .settings-group[open]>summary{background:#f3f6f9!important;border-bottom-color:var(--line)!important}
.admin-body .settings-group-icon{
  width:31px!important;
  height:31px!important;
  border-radius:4px!important;
  background:#e8f1f9!important;
  color:#245987!important;
  font-size:16px!important;
}
.admin-body .settings-group summary strong{font-size:14px!important;font-weight:650!important}
.admin-body .settings-group summary small{font-size:11.5px!important;color:#667085!important}
.admin-body .settings-group>summary::after{
  content:'+'!important;
  display:inline-flex!important;
  align-items:center!important;
  justify-content:center!important;
  width:26px!important;
  height:26px!important;
  margin-left:auto!important;
  padding:0!important;
  border:1px solid #cbd5df!important;
  border-radius:4px!important;
  background:#fff!important;
  color:#526173!important;
  font-size:18px!important;
  font-weight:500!important;
  line-height:1!important;
  transform:none!important;
}
.admin-body .settings-group[open]>summary::after{content:'−'!important;background:#eaf1f7!important;color:#245987!important}
.admin-body .settings-group-body{padding:14px!important}
.admin-body .settings-group-body.form-grid{gap:11px 13px!important}
.admin-body .settings-subtitle{
  margin:8px 0 1px!important;
  padding-top:10px!important;
  border-top:1px solid #e3e8ee!important;
  color:#344054!important;
  font-size:13.5px!important;
  font-weight:650!important;
}
.admin-body .settings-save-bar{padding:9px 0!important}

/* Formulaires et tableaux */
.admin-body input,
.admin-body select,
.admin-body textarea{
  border-radius:var(--ui-radius)!important;
  border-color:#bcc6d1!important;
  box-shadow:none!important;
}
.admin-body textarea{resize:vertical}
.admin-body table{border:1px solid #dce2e8;border-radius:4px;overflow:hidden}
.admin-body th{background:#edf1f5!important}
.admin-body td,.admin-body th{padding:8px 9px!important}

/* Pages publiques : mêmes composants, plus aérées mais sans gros arrondis */
.public-body .public-card,
.public-body .public-section,
.public-body .public-docs a,
.public-body .public-slot-row,
.sama-public .sama-welcome,
.sama-public .public-guard-card,
.satisfaction-body .card,
.satisfaction-body .intro,
.satisfaction-body .section,
.satisfaction-body .question,
.satisfaction-body .choices label{
  border-radius:var(--ui-card-radius)!important;
  box-shadow:var(--shadow)!important;
}
.public-body .btn,
.sama-public .btn,
.satisfaction-body button,
.satisfaction-body .submit{
  border-radius:var(--ui-radius)!important;
  box-shadow:none!important;
}

@media(max-width:1000px){
  .admin-body .sidebar{width:248px!important;left:-260px!important}
}

/* v23.8.1 - barres d'actions compactes et cohérentes en haut des fiches */
.admin-body .action-toolbar{
  display:flex;
  align-items:stretch;
  gap:8px;
  flex-wrap:wrap;
  margin:10px 0 2px;
  padding:8px;
  background:#f5f7fa;
  border:1px solid #d8e0e8;
  border-radius:var(--ui-card-radius);
  box-shadow:none;
}
.admin-body .action-group{
  display:flex;
  flex-direction:column;
  gap:5px;
  min-width:0;
  padding:0 9px 0 0;
  border-right:1px solid #d8e0e8;
}
.admin-body .action-group:last-child{border-right:0;padding-right:0}
.admin-body .action-group-label{
  color:#667085;
  font-size:10.5px;
  font-weight:700;
  line-height:1.1;
  letter-spacing:.025em;
  text-transform:uppercase;
}
.admin-body .action-group-buttons{
  display:flex;
  align-items:center;
  gap:6px;
  flex-wrap:wrap;
}
.admin-body .action-group-buttons form{display:flex;margin:0}
.admin-body .action-group-buttons .btn{white-space:nowrap}
.admin-body .action-group-danger{margin-left:auto;border-right:0;padding-right:0}
.admin-body .action-group-danger .action-group-label{color:#9f3a32}
.admin-body .service-actions-main{margin:10px 0 8px!important;padding:8px!important}
.admin-body .accept-devis-form{align-items:flex-end!important}
.admin-body .signed-pdf-upload{margin:0!important;font-size:11px!important}
.admin-body .signed-pdf-upload input{min-height:36px!important}

@media(max-width:760px){
  .admin-body .action-toolbar{display:grid;grid-template-columns:1fr;padding:8px}
  .admin-body .action-group,
  .admin-body .action-group:last-child,
  .admin-body .action-group-danger{
    width:100%;
    margin:0;
    padding:0 0 8px;
    border-right:0;
    border-bottom:1px solid #d8e0e8;
  }
  .admin-body .action-group:last-child{padding-bottom:0;border-bottom:0}
  .admin-body .action-group-buttons .btn{white-space:normal}
}


/* v23.8.2 - correctif fiable du menu mobile */
.sidebar-backdrop{
  display:none;
  position:fixed;
  inset:0;
  z-index:79;
  padding:0;
  margin:0;
  border:0;
  border-radius:0;
  background:rgba(15,23,42,.42);
  cursor:pointer;
}

@media(max-width:1000px){
  .admin-body .sidebar{
    display:flex!important;
    position:fixed!important;
    top:0!important;
    bottom:0!important;
    left:-270px!important;
    width:248px!important;
    max-width:86vw!important;
    height:100dvh!important;
    min-height:100vh!important;
    overflow-y:auto!important;
    overscroll-behavior:contain;
    z-index:80!important;
    transform:translateX(0);
    transition:left .2s ease,box-shadow .2s ease!important;
    -webkit-overflow-scrolling:touch;
  }
  .admin-body .sidebar.open{
    left:0!important;
    box-shadow:10px 0 28px rgba(15,23,42,.28)!important;
  }
  .admin-body.sidebar-open{overflow:hidden!important;touch-action:none}
  .admin-body.sidebar-open .sidebar{touch-action:auto}
  .admin-body.sidebar-open .sidebar-backdrop{display:block}
  .admin-body .menu-btn{
    display:inline-flex!important;
    align-items:center!important;
    justify-content:center!important;
    position:relative;
    z-index:2;
    min-width:40px!important;
    width:40px!important;
    height:40px!important;
    padding:0!important;
    cursor:pointer!important;
    touch-action:manipulation;
  }
}

@media(prefers-reduced-motion:reduce){
  .admin-body .sidebar{transition:none!important}
}

/* v23.8.3 - emplacement unique des actions : en haut de chaque fiche */
.admin-body .guard-detail > .action-toolbar,
.admin-body .invoice-actions-top,
.admin-body .service-actions-main{
  margin-top:10px!important;
  margin-bottom:14px!important;
}
.admin-body .guard-detail > .action-toolbar + .detail-section{
  margin-top:0!important;
}


/* v23.8.4 - filtres harmonisés */
.admin-body .filterbar,
.admin-body .filters.panel{align-items:end!important}
.admin-body .filterbar label,
.admin-body .service-filter-form label,
.admin-body .invoice-filter-form label{min-width:0!important}
.admin-body .filterbar .btn,
.admin-body .service-filter-form .btn,
.admin-body .invoice-filter-form .btn{align-self:end!important}

/* v23.8.5 - structure uniforme des cartes et des groupes d'actions */
.admin-body .guard-head,
.admin-body .service-card .garde-head{
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:16px;
}
.admin-body .guard-head-actions{
  display:flex;
  align-items:center;
  justify-content:flex-end;
  gap:8px;
  flex:0 0 auto;
}
.admin-body .card-toggle{
  min-width:72px;
  justify-content:center;
  white-space:nowrap;
}
.admin-body .guard-detail > .action-toolbar,
.admin-body .service-card > .action-toolbar,
.admin-body .service-card > .invoice-actions-top{
  margin-top:10px;
  margin-bottom:10px;
}
@media(max-width:720px){
  .admin-body .guard-head,
  .admin-body .service-card .garde-head{
    display:grid!important;
    grid-template-columns:minmax(0,1fr) auto;
    gap:10px;
  }
  .admin-body .guard-head-actions{
    flex-direction:column;
    align-items:flex-end;
  }
  .admin-body .card-toggle{min-width:76px;width:auto!important;margin-top:0!important}
}

/* v23.8.6 - même composant de filtres sur tous les écrans */
.admin-body .service-filter-form.filterbar{
  display:flex!important;
  align-items:flex-end!important;
  flex-wrap:wrap!important;
  gap:9px!important;
  padding:12px!important;
  margin-bottom:12px!important;
  width:100%!important;
}
.admin-body .service-filter-form.filterbar > label{
  flex:0 1 auto!important;
  min-width:145px!important;
}
.admin-body .service-filter-form.filterbar > label:last-of-type{
  flex:1 1 250px!important;
}
.admin-body .service-filter-form.filterbar > .btn{
  flex:0 0 auto!important;
}
@media(max-width:720px){
  .admin-body .service-filter-form.filterbar{
    display:grid!important;
    grid-template-columns:1fr!important;
  }
  .admin-body .service-filter-form.filterbar > label,
  .admin-body .service-filter-form.filterbar > .btn{
    width:100%!important;
    min-width:0!important;
  }
}


/* v23.8.10 - Accordéons exclusifs des listes principales et typographie des postes créés */
.accordion-exclusive.has-open > .accordion-card:not(.is-current){display:none!important}
.accordion-exclusive > .accordion-card{transition:border-color .15s ease,box-shadow .15s ease}
.service-garde-edit summary{
  font-family:inherit!important;
  font-size:15px!important;
  font-weight:600!important;
  line-height:1.4!important;
  color:var(--text)!important;
}
.service-garde-edit summary strong{font:inherit!important;color:inherit!important}
.service-garde-edit[open] summary{color:var(--primary)!important}

/* v23.8.15 - audit typographique et hiérarchie visuelle */
:root{
  --font-ui:"Segoe UI",Arial,"Liberation Sans",sans-serif;
  --font-size-body:14px;
  --font-size-small:12px;
  --font-size-label:12.5px;
  --font-size-control:13px;
  --font-size-section:15px;
  --font-size-card-title:18px;
  --font-size-page-title:21px;
  --font-weight-normal:400;
  --font-weight-medium:500;
  --font-weight-semibold:600;
  --font-weight-title:650;
}

html,body,button,input,select,textarea{font-family:var(--font-ui)!important}
.admin-body{font-size:var(--font-size-body);font-weight:var(--font-weight-normal)}

/* Titres de page : visibles sans dominer inutilement l'écran. */
.admin-body .topbar h1{
  font-size:var(--font-size-page-title)!important;
  line-height:1.2!important;
  font-weight:var(--font-weight-title)!important;
  letter-spacing:-.01em!important;
}
.admin-body .topbar p{font-size:13px!important;line-height:1.35!important}

/* Noms des manifestations, demandes, postes et personnes. */
.admin-body .guard-card h2,
.admin-body .service-card h2,
.admin-body .sama-card h2,
.admin-body .remuneration-card h2,
.admin-body .modal-card h2{
  font-family:var(--font-ui)!important;
  font-size:var(--font-size-card-title)!important;
  line-height:1.28!important;
  font-weight:var(--font-weight-title)!important;
  letter-spacing:-.005em!important;
  color:#202b3a!important;
}

/* Titres de panneaux et sections métier. */
.admin-body .panel h2,
.admin-body .panel-head h2,
.admin-body .settings-panel h2,
.admin-body .report-form h2{
  font-size:17px!important;
  line-height:1.3!important;
  font-weight:var(--font-weight-title)!important;
}
.admin-body .detail-section h3,
.admin-body .guard-detail h3,
.admin-body .service-card h3,
.admin-body .rem-lines h3,
.admin-body .settings-subtitle,
.admin-body .service-details-form .service-section-title{
  font-size:var(--font-size-section)!important;
  line-height:1.35!important;
  font-weight:var(--font-weight-title)!important;
  letter-spacing:0!important;
}
.admin-body .service-contact-card h4,
.admin-body .tranche-overview-card h4{
  font-size:14px!important;
  line-height:1.35!important;
  font-weight:var(--font-weight-semibold)!important;
}

/* Libellés, commandes et tableaux : le gras sert uniquement à la lecture. */
.admin-body label{font-size:var(--font-size-label)!important;font-weight:var(--font-weight-semibold)!important}
.admin-body .btn,
.admin-body button:not(.menu-btn),
.admin-body input[type="submit"],
.admin-body input[type="button"]{
  font-size:var(--font-size-control)!important;
  font-weight:var(--font-weight-semibold)!important;
}
.admin-body th{font-size:12px!important;font-weight:var(--font-weight-semibold)!important}
.admin-body td{font-size:13.5px!important;font-weight:var(--font-weight-normal)!important}
.admin-body strong{font-weight:var(--font-weight-semibold)}

/* Les compteurs du dashboard restent volontairement plus grands. */
.admin-body .stat-card small{font-size:12px!important;font-weight:var(--font-weight-semibold)!important}
.admin-body .stat-card strong{font-size:24px!important;line-height:1.15!important;font-weight:700!important}

/* Postes créés : titre compact, identique aux autres accordéons. */
.admin-body .service-garde-edit summary,
.admin-body .service-garde-edit summary strong{
  font-family:var(--font-ui)!important;
  font-size:14px!important;
  line-height:1.4!important;
  font-weight:var(--font-weight-semibold)!important;
  letter-spacing:0!important;
}

/* Les statuts doivent rester lisibles mais ne pas concurrencer les titres. */
.admin-body .badge,
.admin-body .status-badge,
.admin-body .service-status-badge,
.admin-body .invoice-status-badge{
  font-size:11.5px!important;
  font-weight:var(--font-weight-semibold)!important;
}

/* Mobile : titres encore plus compacts, sans réduire les zones tactiles. */
@media(max-width:720px){
  .admin-body .topbar h1{font-size:19px!important}
  .admin-body .guard-card h2,
  .admin-body .service-card h2,
  .admin-body .sama-card h2,
  .admin-body .remuneration-card h2{font-size:16px!important}
}

/* v23.8.16 - harmonisation du tableau de bord */
.admin-body .dashboard-filter{
  display:inline-flex;
  width:auto;
  min-width:0;
  padding:12px 14px;
  margin-bottom:14px;
  box-shadow:none;
}
.admin-body .dashboard-filter label{min-width:84px}
.admin-body .dashboard-filter select{min-width:84px}

.admin-body .dashboard-actions{
  gap:8px;
  margin-bottom:14px;
}
.admin-body .dashboard-actions .btn{
  min-height:38px;
  display:inline-flex;
  align-items:center;
  justify-content:center;
}

.admin-body .dashboard-stats{
  grid-template-columns:repeat(4,minmax(0,1fr));
  gap:12px;
  margin-bottom:16px;
}
.admin-body .dashboard-stats .stat-card{
  position:relative;
  display:grid;
  grid-template-columns:34px minmax(0,1fr);
  grid-template-rows:auto auto;
  column-gap:10px;
  row-gap:3px;
  min-height:104px;
  padding:15px 16px;
  background:#fff!important;
  border:1px solid #d7dee8!important;
  border-left:4px solid #7da6ce!important;
  border-radius:6px!important;
  box-shadow:0 2px 8px rgba(15,23,42,.045)!important;
  transition:border-color .15s ease,box-shadow .15s ease,transform .15s ease;
}
.admin-body .dashboard-stats a.stat-card:hover{
  transform:translateY(-1px);
  border-color:#b9c7d8!important;
  box-shadow:0 5px 14px rgba(15,23,42,.075)!important;
}
.admin-body .dashboard-stats .stat-card.warning{border-left-color:#d99a34!important}
.admin-body .dashboard-stats .stat-card.danger{border-left-color:#cf5b57!important}
.admin-body .dashboard-stats .stat-card.success{border-left-color:#58a875!important}
.admin-body .dashboard-stats .stat-icon{
  grid-column:1;
  grid-row:1 / span 2;
  align-self:start;
  display:grid;
  place-items:center;
  width:30px;
  height:30px;
  margin-top:1px;
  border-radius:5px;
  background:#eef3f8;
  font-size:16px!important;
  line-height:1;
}
.admin-body .dashboard-stats .warning .stat-icon{background:#fff4df}
.admin-body .dashboard-stats .danger .stat-icon{background:#fff0ef}
.admin-body .dashboard-stats .success .stat-icon{background:#edf8f1}
.admin-body .dashboard-stats .stat-card small{
  grid-column:2;
  grid-row:1;
  align-self:end;
  color:#526174!important;
  font-size:12.5px!important;
  font-weight:600!important;
  line-height:1.3!important;
}
.admin-body .dashboard-stats .stat-card strong{
  grid-column:2;
  grid-row:2;
  align-self:start;
  color:#172234!important;
  font-size:22px!important;
  font-weight:650!important;
  line-height:1.15!important;
  letter-spacing:-.01em;
  overflow-wrap:anywhere;
}

.admin-body .dashboard-columns{
  gap:14px;
  align-items:start;
}
.admin-body .dashboard-columns > .panel{
  padding:16px;
  border-radius:6px!important;
  box-shadow:0 2px 8px rgba(15,23,42,.045)!important;
}
.admin-body .dashboard-columns .panel-head{
  padding-bottom:10px;
  margin-bottom:10px;
  border-bottom:1px solid #e0e6ee;
}
.admin-body .dashboard-columns .panel-head h2{
  font-size:16px!important;
  font-weight:650!important;
}
.admin-body .dashboard-columns .guard-list{gap:8px}
.admin-body .dashboard-columns .guard-mini{
  padding:11px 12px;
  border-radius:5px!important;
  background:#fff;
}
.admin-body .dashboard-columns .guard-mini strong{
  font-size:13.5px;
  font-weight:600;
}
.admin-body .dashboard-columns .guard-mini span:not(.status-badge):not(.badge){
  font-size:12.5px;
  line-height:1.35;
}

@media(max-width:1180px){
  .admin-body .dashboard-stats{grid-template-columns:repeat(3,minmax(0,1fr))}
}
@media(max-width:820px){
  .admin-body .dashboard-stats{grid-template-columns:repeat(2,minmax(0,1fr))}
  .admin-body .dashboard-filter{display:flex;width:100%}
}
@media(max-width:560px){
  .admin-body .dashboard-stats{grid-template-columns:1fr}
  .admin-body .dashboard-actions{display:grid;grid-template-columns:1fr 1fr}
  .admin-body .dashboard-actions .btn{width:100%}
  .admin-body .dashboard-stats .stat-card{min-height:92px}
}

/* v23.8.17 - harmonisation des filtres et des trois pages publiques */

/* Une seule géométrie pour toutes les barres de filtres de l'administration. */
.admin-body .filterbar,
.admin-body .dashboard-filter,
.admin-body .service-filter-form.filterbar,
.admin-body .invoice-filter-form.filterbar{
  display:flex!important;
  align-items:flex-end!important;
  flex-wrap:wrap!important;
  width:100%!important;
  max-width:none!important;
  min-height:64px!important;
  margin:0 0 14px!important;
  padding:12px!important;
  gap:10px!important;
  border:1px solid #d7dee8!important;
  border-radius:6px!important;
  background:#fff!important;
  box-shadow:0 2px 8px rgba(15,23,42,.045)!important;
}
.admin-body .filterbar > form{
  display:flex!important;
  align-items:flex-end!important;
  flex-wrap:wrap!important;
  width:100%!important;
  gap:10px!important;
  margin:0!important;
}
.admin-body .filterbar label,
.admin-body .filterbar > form > label{
  flex:0 1 180px!important;
  min-width:145px!important;
  max-width:240px!important;
  margin:0!important;
}
.admin-body .filterbar label:has(input[name="q"]),
.admin-body .filterbar > form > label:has(input[name="q"]){
  flex:1 1 280px!important;
  min-width:220px!important;
  max-width:none!important;
}
.admin-body .filterbar input:not([type="hidden"]),
.admin-body .filterbar select{
  width:100%!important;
  min-width:0!important;
  height:38px!important;
  min-height:38px!important;
}
.admin-body .filterbar .btn,
.admin-body .filterbar > form > .btn{
  flex:0 0 auto!important;
  min-height:38px!important;
  align-self:flex-end!important;
}
.admin-body .dashboard-filter label,
.admin-body .dashboard-filter select{
  min-width:145px!important;
  width:100%!important;
}

/* Les pages publiques partagent désormais la même largeur, les mêmes cartes et la même typographie. */
.public-body,
.sama-public,
.satisfaction-body{
  font-family:var(--font-ui)!important;
  font-size:14px!important;
  line-height:1.5!important;
  color:#202b3a!important;
  background:#f2f5f8!important;
}
.public-body .public-shell,
.sama-public .sama-public-shell,
.satisfaction-body .shell{
  width:min(100% - 32px,1040px)!important;
  max-width:1040px!important;
  margin:0 auto!important;
  padding:28px 0 48px!important;
}
.public-body .public-card,
.satisfaction-body .card,
.sama-public .sama-welcome,
.sama-public .public-section{
  border:1px solid #d7dee8!important;
  border-radius:6px!important;
  background:#fff!important;
  box-shadow:0 3px 12px rgba(15,23,42,.055)!important;
}
.public-body .public-card,
.satisfaction-body .card{padding:22px!important}
.public-body .public-hero,
.sama-public .sama-hero{
  margin-bottom:16px!important;
  padding-bottom:16px!important;
  border-bottom:1px solid #e0e6ee!important;
}
.public-body .public-hero h1,
.sama-public .sama-hero h1,
.satisfaction-body h1{
  margin:0!important;
  font-family:var(--font-ui)!important;
  font-size:24px!important;
  line-height:1.2!important;
  font-weight:650!important;
  letter-spacing:-.01em!important;
  color:#172234!important;
}
.public-body .public-section h2,
.sama-public .public-section h2,
.sama-public .sama-welcome h2,
.satisfaction-body .section{
  font-family:var(--font-ui)!important;
  font-size:16px!important;
  line-height:1.3!important;
  font-weight:650!important;
  letter-spacing:0!important;
}
.public-body label,
.sama-public label,
.satisfaction-body label,
.satisfaction-body .question legend{
  font-family:var(--font-ui)!important;
  font-size:13px!important;
  font-weight:600!important;
}
.public-body input:not([type="checkbox"]):not([type="radio"]),
.public-body select,
.public-body textarea,
.sama-public input:not([type="checkbox"]):not([type="radio"]),
.sama-public select,
.sama-public textarea,
.satisfaction-body input:not([type="checkbox"]):not([type="radio"]),
.satisfaction-body select,
.satisfaction-body textarea{
  min-height:40px!important;
  border-radius:5px!important;
  border-color:#cbd5df!important;
  font-size:14px!important;
  font-weight:400!important;
}
.public-body .btn,
.sama-public .btn,
.satisfaction-body .submit{
  min-height:40px!important;
  border-radius:5px!important;
  font-family:var(--font-ui)!important;
  font-size:14px!important;
  font-weight:600!important;
}
.public-body .public-section,
.sama-public .public-section{
  padding:17px!important;
  margin-bottom:14px!important;
}
.sama-public .public-guard-card,
.sama-public .history-card,
.satisfaction-body .question,
.satisfaction-body .choices label,
.public-body .public-check,
.public-body .public-docs a,
.public-body .public-slot-row{
  border-radius:5px!important;
}
.sama-public .public-guard-main h3{
  font-size:17px!important;
  line-height:1.3!important;
  font-weight:650!important;
}
.public-body .public-grid-spaced{margin-top:12px!important}
.public-body .public-help-text{margin:4px 0 0!important}
.public-body .public-requirements{
  background:#f8fafc!important;
  border:1px solid #dbe4f0!important;
  color:#334155!important;
  font-weight:500!important;
  line-height:1.5!important;
}
.satisfaction-body .section{
  color:#25364b!important;
  background:#eef3f8!important;
  border:1px solid #d7dee8!important;
  border-left:4px solid #5e8db9!important;
  border-radius:5px!important;
  padding:9px 12px!important;
}
.satisfaction-body .choices label{font-weight:500!important}

@media(max-width:720px){
  .admin-body .filterbar,
  .admin-body .filterbar > form,
  .admin-body .dashboard-filter,
  .admin-body .service-filter-form.filterbar,
  .admin-body .invoice-filter-form.filterbar{
    display:grid!important;
    grid-template-columns:1fr!important;
    min-height:0!important;
  }
  .admin-body .filterbar label,
  .admin-body .filterbar > form > label,
  .admin-body .filterbar .btn,
  .admin-body .filterbar > form > .btn{
    width:100%!important;
    min-width:0!important;
    max-width:none!important;
  }
  .public-body .public-shell,
  .sama-public .sama-public-shell,
  .satisfaction-body .shell{
    width:100%!important;
    padding:0 0 28px!important;
  }
  .public-body .public-card,
  .satisfaction-body .card{
    padding:16px!important;
    border-left:0!important;
    border-right:0!important;
    border-radius:0!important;
    box-shadow:none!important;
  }
  .public-body .public-hero h1,
  .sama-public .sama-hero h1,
  .satisfaction-body h1{font-size:21px!important}
}

/* v23.8.18 - contrôle qualité graphique global */
:root{
  --ui-font-size:14px;
  --ui-button-size:13px;
  --ui-label-size:12.5px;
  --ui-title-page:21px;
  --ui-title-card:18px;
  --ui-title-section:15px;
}

/* Typographie générale : éviter les graisses excessives sans effacer la hiérarchie. */
.admin-body{font-size:var(--ui-font-size)!important}
.admin-body .topbar h1{
  font-size:var(--ui-title-page)!important;
  line-height:1.2!important;
  font-weight:650!important;
  letter-spacing:-.015em!important;
}
.admin-body .panel h2,
.admin-body .guard-card h2,
.admin-body .service-card h2,
.admin-body .sama-card h2,
.admin-body .invoice-card h2{
  font-size:var(--ui-title-card)!important;
  line-height:1.25!important;
  font-weight:650!important;
  letter-spacing:-.01em!important;
}
.admin-body h3,
.admin-body .settings-subtitle,
.admin-body .service-section-title{
  font-size:var(--ui-title-section)!important;
  line-height:1.3!important;
  font-weight:650!important;
  letter-spacing:0!important;
}
.admin-body h4{
  font-size:14px!important;
  line-height:1.35!important;
  font-weight:600!important;
}
.admin-body label{
  font-size:var(--ui-label-size)!important;
  font-weight:600!important;
}

/* Tous les boutons et liens d'action partagent la même police et la même graisse. */
.admin-body .btn,
.admin-body button,
.admin-body input[type="submit"],
.admin-body input[type="button"],
.admin-body .service-tab-button,
.admin-body .service-subtab-button,
.admin-body .card-toggle{
  font-family:var(--font-ui)!important;
  font-size:var(--ui-button-size)!important;
  font-weight:600!important;
  line-height:1.2!important;
  letter-spacing:0!important;
}

/* Le lien Modifier des Samaritains était visuellement plus lourd que les autres actions. */
.admin-body .sama-details > summary{
  font-family:var(--font-ui)!important;
  font-size:13px!important;
  line-height:1.3!important;
  font-weight:600!important;
  color:var(--primary)!important;
}

/* Accordéons et titres internes des postes créés. */
.admin-body .service-garde-edit > summary,
.admin-body .service-garde-edit > summary strong{
  font-family:var(--font-ui)!important;
  font-size:14px!important;
  line-height:1.4!important;
  font-weight:600!important;
  letter-spacing:0!important;
}

/* Statuts et indicateurs : lisibles mais secondaires face aux titres. */
.admin-body .badge,
.admin-body .status-badge,
.admin-body .service-status-badge,
.admin-body .invoice-status-badge{
  font-family:var(--font-ui)!important;
  font-size:11.5px!important;
  line-height:1.2!important;
  font-weight:600!important;
  letter-spacing:0!important;
}
.admin-body .metrics span{
  font-family:var(--font-ui)!important;
  font-size:12.5px!important;
  line-height:1.35!important;
  font-weight:500!important;
}

/* Tableaux : en-têtes distingués, contenu sans gras inutile. */
.admin-body table{font-size:13px!important}
.admin-body th{
  font-size:11.5px!important;
  line-height:1.25!important;
  font-weight:600!important;
}
.admin-body td{font-weight:400!important}
.admin-body td strong{font-weight:600!important}

/* Titres et boutons des pages publiques sur la même échelle raisonnée. */
.public-body h1,
.sama-public h1,
.satisfaction-body h1{
  font-weight:650!important;
}
.public-body h2,
.sama-public h2,
.satisfaction-body .section{
  font-weight:650!important;
}
.public-body h3,
.sama-public h3{
  font-weight:600!important;
}
.public-body .btn,
.sama-public .btn,
.satisfaction-body .submit{
  font-weight:600!important;
}


/* v23.8.19 — identité visuelle du menu administrateur */
.admin-body .brand-icon{
  overflow:hidden;
  padding:3px;
}
.admin-body .brand-icon img{
  display:block;
  width:100%;
  height:100%;
  object-fit:contain;
}

/* v23.8.22 - palette unique administration et pages publiques */
:root{
  --public-primary:var(--primary);
  --public-primary-dark:var(--primary-dark);
  --public-primary-soft:#e8f0f8;
  --public-primary-line:#bfd0e1;
  --public-primary-focus:rgba(36,95,158,.14);
}

/* Inscription publique, demande sanitaire et satisfaction : même bleu que l'administration. */
.public-body .public-hero,
.satisfaction-body .card{
  border-left-color:var(--public-primary)!important;
  border-top-color:var(--public-primary)!important;
}
.public-body .public-badge,
.public-badge,
.public-badges .badge{
  background:var(--public-primary-soft)!important;
  color:var(--public-primary-dark)!important;
  border-color:var(--public-primary-line)!important;
}
.public-body input:focus,
.public-body select:focus,
.public-body textarea:focus,
.sama-public input:focus,
.sama-public select:focus,
.sama-public textarea:focus,
.satisfaction-body textarea.wide:focus{
  border-color:var(--public-primary)!important;
  box-shadow:0 0 0 3px var(--public-primary-focus)!important;
}
.public-body input[type="checkbox"],
.public-body input[type="radio"],
.sama-public input[type="checkbox"],
.sama-public input[type="radio"],
.satisfaction-body input[type="radio"]{
  accent-color:var(--public-primary)!important;
}
.public-body .public-actions .btn,
.public-body .btn.primary,
.sama-public .btn.primary,
.sama-public button[type="submit"],
.satisfaction-body .submit,
body:has(.shell > .card) .submit{
  background:var(--public-primary)!important;
  border-color:var(--public-primary)!important;
  color:#fff!important;
}
.public-body .public-actions .btn:hover,
.public-body .btn.primary:hover,
.sama-public .btn.primary:hover,
.sama-public button[type="submit"]:hover,
.satisfaction-body .submit:hover,
body:has(.shell > .card) .submit:hover{
  background:var(--public-primary-dark)!important;
  border-color:var(--public-primary-dark)!important;
}
.satisfaction-body .section{
  border-left-color:var(--public-primary)!important;
  color:var(--public-primary-dark)!important;
}
.satisfaction-body .choices label:has(input:checked){
  border-color:#8fb1d2!important;
  background:var(--public-primary-soft)!important;
  color:var(--public-primary-dark)!important;
}
.public-guard-card.is-targeted{
  outline-color:rgba(36,95,158,.38)!important;
  box-shadow:0 0 0 6px rgba(36,95,158,.10),0 14px 34px rgba(15,23,42,.18)!important;
}
.public-body a,
.sama-public a,
.satisfaction-body a{color:var(--public-primary)}

/* v23.8.24 - Modales de confirmation compactes et actions alignées */
.confirm-dialog{
  width:min(620px,100%);
}
.confirm-actions{
  display:flex;
  flex-wrap:nowrap;
  align-items:center;
  justify-content:flex-end;
  gap:10px;
}
.confirm-actions .btn{
  flex:0 1 auto;
  min-width:0;
  white-space:nowrap;
}
.confirm-actions [hidden]{
  display:none!important;
}
.confirm-actions[data-action-count="2"] .btn{
  min-width:110px;
}
.confirm-actions[data-action-count="3"] .btn{
  flex:1 1 0;
  justify-content:center;
}
@media(max-width:700px){
  .confirm-dialog{width:min(560px,100%)}
  .confirm-actions{
    flex-wrap:wrap;
  }
  .confirm-actions[data-action-count="3"] .btn,
  .confirm-actions[data-action-count="2"] .btn{
    flex:1 1 100%;
    width:100%;
  }
}


/* v23.8.25 - Charte sémantique des couleurs d’actions
   Bleu : sauvegarde et progression normale du workflow.
   Gris : consultation, téléchargement, rappel et administration courante.
   Orange : changement d’état exceptionnel.
   Rouge : suppression uniquement. */
.admin-body .btn.warning,
.admin-body button.warning,
.admin-body input[type="submit"].warning{
  background:#fff7ed!important;
  color:#9a3412!important;
  border-color:#fdba74!important;
}
.admin-body .btn.warning:hover,
.admin-body button.warning:hover{
  background:#ffedd5!important;
  color:#7c2d12!important;
  border-color:#fb923c!important;
}

/* v23.8.26 - Les erreurs de workflow restent visibles après rechargement. */
.alert-error,
.alert.error,
.alert-danger {
  scroll-margin-top: 16px;
}
.alert-error:focus,
.alert.error:focus,
.alert-danger:focus {
  outline: none;
}

/* Indicateurs compacts. Les liserés d'état utilisent exclusivement .state-warning et .state-danger. */
.admin-body .metrics > .metric-attention-warning,
.admin-body .metrics > span > .metric-attention-warning{
  color:#9a5b13!important;
  background:#fff8eb!important;
  border:1px solid #f3d39a!important;
  border-radius:4px!important;
  margin:2px 4px!important;
  padding:3px 7px!important;
}
.admin-body .metrics > .metric-attention-danger,
.admin-body .metrics > span > .metric-attention-danger{
  color:#a8322d!important;
  background:#fff3f2!important;
  border:1px solid #efb4b0!important;
  border-radius:4px!important;
  margin:2px 4px!important;
  padding:3px 7px!important;
}
.admin-body .metrics > .metric-attention-ok,
.admin-body .metrics > span > .metric-attention-ok{
  color:#16794b!important;
}
.admin-body .invoice-metrics > .metric-attention-warning,
.admin-body .invoice-metrics > .metric-attention-danger,
.admin-body .invoice-metrics > .metric-attention-ok{
  border-radius:4px!important;
  margin:2px 4px!important;
  padding:3px 7px!important;
}

/* v23.8.31 - Résumé des présences visible sur les cartes Rémunération fermées. */
.admin-body .remuneration-summary{
  margin:10px 0 0;
  padding-top:10px;
  border-top:1px solid var(--line);
}
.admin-body .remuneration-card.state-warning{
  background:#fff;
}
@media(max-width:720px){
  .admin-body .remuneration-summary{margin-top:8px;padding-top:8px;}
}


/* v23.8.33 - Styles locaux consolidés : Facturation. */
.invoice-status-badge{display:inline-flex!important;align-items:center!important;gap:6px!important;border-radius:999px!important;padding:6px 12px!important;font-weight:600!important;font-size:11.5px!important;border:1px solid transparent!important}
.invoice-status-badge::before{content:"";width:8px;height:8px;border-radius:50%;background:currentColor;display:inline-block}
.invoice-status-todo{background:#ffedd5!important;color:#9a3412!important;border-color:#fed7aa!important}
.invoice-status-done{background:#dbeafe!important;color:#1d4ed8!important;border-color:#93c5fd!important}
.invoice-status-paid{background:#dcfce7!important;color:#15803d!important;border-color:#86efac!important}
.invoice-status-cancelled{background:#e5e7eb!important;color:#374151!important;border-color:#d1d5db!important}
.invoice-status-draft{background:#f1f5f9!important;color:#475569!important;border-color:#cbd5e1!important}
.invoice-action-row{display:flex!important;align-items:center!important;gap:8px!important;flex-wrap:wrap!important;margin-top:12px!important}
.invoice-action-row form{display:inline-flex!important;margin:0!important}
.invoice-action-row .btn{display:inline-flex!important;align-items:center!important;justify-content:center!important;width:auto!important}


/* v23.8.33 - Styles locaux consolidés : Demandes de service. */
/* v23.0.7 - onglets Demandes autonomes, indépendants du cache CSS */
.service-card{background:#fff!important;border:1px solid #dbe4f0!important;border-radius:6px!important;padding:15px!important;box-shadow:0 2px 8px rgba(31,42,55,.06)!important;margin:14px 0!important}
.service-card .garde-head{display:flex!important;align-items:flex-start!important;justify-content:space-between!important;gap:16px!important}
.service-tabs{margin-top:18px!important;display:block!important;border-top:1px solid #e2e8f0!important;padding-top:14px!important}
.service-tab-nav{display:flex!important;gap:5px!important;flex-wrap:wrap!important;margin:0 0 12px 0!important;padding:5px!important;background:#eef1f4!important;border:1px solid #d8dee6!important;border-radius:5px!important}
.service-tab-button{appearance:none!important;-webkit-appearance:none!important;display:inline-flex!important;align-items:center!important;justify-content:center!important;padding:7px 11px!important;border-radius:4px!important;border:1px solid transparent!important;background:transparent!important;color:#344054!important;font-weight:650!important;text-decoration:none!important;min-height:40px!important;box-shadow:0 1px 2px rgba(15,23,42,.04)!important;cursor:pointer!important;font-family:inherit!important;font-size:15px!important}
.service-tab-button.is-active{background:#fff!important;color:#194b80!important;border-color:#c9d2dc!important}
.service-tab-panel{display:none!important;margin-top:0!important}
.service-tab-panel.is-active{display:block!important}
.service-tab-panel.panel.inner{background:#fff!important;border:1px solid #dbe4f0!important;border-radius:6px!important;padding:15px!important}
.service-garde-edit{border:1px solid #dbeafe!important;border-radius:5px!important;background:#f8fafc!important;padding:9px 11px!important}
.service-garde-edit summary{cursor:pointer!important;font-weight:600!important;padding:10px 4px!important}
.service-subpanel{background:#f8fbff!important;border:1px solid #dbeafe!important;border-radius:5px!important;padding:14px!important;margin:12px 0!important}
.service-actions{display:flex!important;gap:10px!important;flex-wrap:wrap!important;margin:14px 0!important}
    .service-actions-main{margin:14px 0 8px!important;padding:10px!important;background:#f8fafc!important;border:1px solid #d8dee6!important;border-radius:5px!important}
.service-actions form{display:inline!important}
.service-gardes-subnav{display:flex!important;gap:5px!important;flex-wrap:wrap!important;margin:10px 0 14px!important;padding:5px!important;background:#eef1f4!important;border:1px solid #d8dee6!important;border-radius:5px!important}
.service-subtab-button{appearance:none!important;-webkit-appearance:none!important;border:1px solid #cbd5e1!important;background:#fff!important;color:#0f172a!important;border-radius:4px!important;padding:7px 11px!important;font-weight:650!important;cursor:pointer!important;font-family:inherit!important;font-size:14px!important}
.service-subtab-button.is-active{background:#fff!important;border-color:#9fb2c7!important;color:#194b80!important}
.service-gardes-panel{display:none!important}
.service-gardes-panel.is-active{display:block!important}
.service-status-badge{display:inline-flex!important;align-items:center!important;gap:6px!important;border-radius:999px!important;padding:6px 12px!important;font-weight:600!important;font-size:11.5px!important;border:1px solid transparent!important}
.service-status-badge::before{content:"";width:8px;height:8px;border-radius:50%;background:currentColor;display:inline-block}
.service-status-draft{background:#f1f5f9!important;color:#475569!important;border-color:#cbd5e1!important}
.service-status-sent{background:#dbeafe!important;color:#1d4ed8!important;border-color:#93c5fd!important}
.service-status-ok{background:#dcfce7!important;color:#15803d!important;border-color:#86efac!important}
.service-status-refused{background:#fee2e2!important;color:#b91c1c!important;border-color:#fecaca!important}
.service-status-cancelled{background:#e5e7eb!important;color:#374151!important;border-color:#d1d5db!important}
.service-status-invoiced{background:#f3e8ff!important;color:#7e22ce!important;border-color:#d8b4fe!important}
.service-status-paid{background:#fef9c3!important;color:#854d0e!important;border-color:#fde68a!important}
.service-risk-table th{width:42%;color:#334155;background:#f8fafc;font-size:13px}.service-risk-table td{white-space:pre-wrap}
.service-slots-editor{grid-column:1/-1!important;background:#f8fbff!important;border:1px solid #dbeafe!important;border-radius:5px!important;padding:12px!important}.service-slot-row{display:grid!important;grid-template-columns:minmax(0,1fr) minmax(0,1fr) minmax(0,1.2fr) auto!important;gap:12px!important;align-items:end!important;margin-top:10px!important}.service-slot-actions{display:flex!important;gap:10px!important;align-items:center!important;flex-wrap:wrap!important;margin-top:10px!important}.service-slot-list{margin:10px 0 0!important;padding-left:18px!important}.service-slot-list li{margin:4px 0!important}

.service-details-form .service-section-title{grid-column:1/-1;margin:18px 0 2px!important;padding-top:14px!important;border-top:1px solid #e2e8f0!important;color:#0f172a!important;font-size:15px!important;font-weight:650!important}
.service-contact-layout{grid-column:1/-1!important;display:grid!important;grid-template-columns:minmax(0,1.25fr) minmax(0,1fr)!important;gap:18px!important;align-items:start!important;margin:8px 0 12px!important}
.service-contact-card{background:#f8fbff!important;border:1px solid #dbeafe!important;border-radius:5px!important;padding:14px!important;box-shadow:none!important}
.service-contact-card h4{margin:0 0 6px!important;color:#0f172a!important;font-size:14px!important;font-weight:600!important}
.service-contact-card .muted{margin:0 0 14px!important;font-size:13px!important}
.service-contact-grid{display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:12px 14px!important}
.service-contact-grid label{min-width:0!important}
.service-contact-grid .full{grid-column:1/-1!important}
@media(max-width:980px){.service-contact-layout{grid-template-columns:1fr!important}.service-contact-grid{grid-template-columns:1fr!important}}
@media(max-width:720px){.service-card .garde-head{display:block!important}.service-tab-nav{display:grid!important;grid-template-columns:1fr!important}.service-tab-button{width:100%!important}}


/* v23.8.33 - Audit final des composants visuels.
   Ces règles sont la source commune pour les listes et cartes de l'administration. */
:root{
  --sm-space-1:4px;
  --sm-space-2:8px;
  --sm-space-3:12px;
  --sm-space-4:16px;
  --sm-card-radius:6px;
  --sm-card-padding:15px;
  --sm-card-gap:12px;
}
.admin-body .cards{
  display:grid;
  gap:var(--sm-card-gap)!important;
  margin:0!important;
}
.admin-body .cards > .guard-card,
.admin-body .cards > .service-card,
.admin-body .cards > .sama-card,
.admin-body .cards > .remuneration-card{
  margin:0!important;
  width:100%;
  border-radius:var(--sm-card-radius)!important;
  padding:var(--sm-card-padding)!important;
  box-shadow:0 2px 8px rgba(31,42,55,.06)!important;
}
.admin-body .guard-card header,
.admin-body .service-card header,
.admin-body .remuneration-card header{
  margin-bottom:var(--sm-space-3)!important;
}
.admin-body .guard-head-actions,
.admin-body .rem-card-actions{
  display:flex;
  align-items:center;
  justify-content:flex-end;
  gap:var(--sm-space-2);
  flex-wrap:wrap;
}
.admin-body .metrics,
.admin-body .remuneration-summary{
  gap:0!important;
}
.admin-body .filterbar,
.admin-body .service-filter-form.filterbar,
.admin-body .invoice-filter-form.filterbar{
  margin:0 0 var(--sm-card-gap)!important;
}
.admin-body .panel,
.admin-body .detail-section,
.admin-body .action-toolbar{
  border-radius:var(--sm-card-radius)!important;
}
.admin-body .btn,
.admin-body button,
.admin-body input[type="submit"]{
  font-family:inherit;
  font-size:13px;
  font-weight:600;
  border-radius:4px;
}
.admin-body .status-badge,
.admin-body .service-status-badge,
.admin-body .invoice-status-badge,
.admin-body .badge{
  font-size:11.5px!important;
  font-weight:600!important;
}
.admin-body .responsive-table th,
.admin-body table th{
  font-size:12px;
  font-weight:650;
}
.admin-body .section-spaced{margin-top:var(--sm-space-3)!important}
.admin-body .panel-head-compact{margin-bottom:10px!important}
.admin-body .compact-top{margin-top:10px!important}
.admin-body .align-end{align-items:end!important}
.admin-body .table-actions{display:flex;gap:var(--sm-space-2);flex-wrap:wrap;align-items:center}
.admin-body .inline-form{display:inline-flex!important;margin:0!important}
.admin-body .page-alert{margin:var(--sm-space-3) 0!important}
.admin-body .grid-full{grid-column:1/-1!important}
.admin-body .no-top-margin{margin-top:0!important}
.admin-body .service-inline-panel{margin:10px 0!important;background:#f8fbff!important}

/* Les cartes de demandes ne créent plus leurs propres marges : l'espacement vient de .cards. */
.admin-body .service-card{margin:0!important}

/* Même densité pour les listes principales. */
.admin-body .accordion-exclusive,
.admin-body .remuneration-cards,
.admin-body .sama-cards{gap:var(--sm-card-gap)!important}

/* Pages publiques : composants communs, espacement volontairement un peu plus aéré. */
.sama-public .public-card,
.sama-public .public-section,
.sama-public .public-guard-card{
  border-radius:var(--sm-card-radius)!important;
}
.sama-public .btn,
.sama-public button,
.sama-public input[type="submit"]{
  font-family:inherit;
  font-size:13px;
  font-weight:600;
  border-radius:4px;
}

@media(max-width:720px){
  .admin-body .cards{gap:10px!important}
  .admin-body .cards > .guard-card,
  .admin-body .cards > .service-card,
  .admin-body .cards > .sama-card,
  .admin-body .cards > .remuneration-card{padding:12px!important}
}


/* v23.8.38 - Bloc VHC bloquant : liseré et message visibles malgré les règles génériques des métriques. */
.admin-body .detail-section.vhc-status-panel.state-danger{
  border-left-width:3px!important;
  border-left-style:solid!important;
  border-left-color:#c2413a!important;
  box-shadow:inset 3px 0 0 #c2413a;
  background:#fffafa!important;
}
.admin-body .vhc-status-panel [data-vhc-panel-status] > .metric-attention-danger{
  display:inline-flex!important;
  align-items:center!important;
  min-height:25px!important;
  color:#a8322d!important;
  background:#fff3f2!important;
  border:1px solid #efb4b0!important;
  border-radius:4px!important;
  margin:2px 4px!important;
  padding:3px 7px!important;
  font-size:12.5px!important;
  font-weight:500!important;
  line-height:1.35!important;
  white-space:nowrap!important;
}
.admin-body .detail-section.vhc-status-panel:not(.state-danger){
  border-left-width:1px!important;
  box-shadow:none!important;
  background:#f8fafc!important;
}

/* v23.8.43 - Motif de blocage compact, attaché à l'action sans déformer la barre. */
.workflow-block-note{
  display:block;
  width:min(360px, 100%);
  max-width:360px;
  margin-top:5px;
  padding:0;
  color:#a83a2f;
  background:transparent;
  border:0;
  border-radius:0;
  font-size:11.5px;
  font-weight:500;
  line-height:1.35;
  white-space:normal;
  overflow-wrap:anywhere;
}
.workflow-block-note::before{
  content:'⚠ ';
  display:inline;
  margin:0;
  color:#b5473b;
  font-weight:650;
}
.workflow-block-note[hidden]{display:none!important}
.action-group-buttons form:has(.workflow-block-note){
  display:flex;
  flex-direction:column;
  align-items:flex-start;
  min-width:0;
  max-width:360px;
}
.action-group-buttons form:has(.workflow-block-note) .btn{max-width:100%}
.btn:disabled{
  filter:saturate(.35);
  opacity:.58;
  box-shadow:none!important;
}


/* v23.8.40 - Rémunération : même accordéon exclusif que les autres listes. */
.remuneration-list-hidden{display:none!important}
.remuneration-cards.has-open > .remuneration-card:not(.is-current){display:none!important}


/* v23.8.43 - Modale à trois choix : action principale Enregistrer complètement à droite. */
.confirm-actions[data-action-count="3"] [data-confirm-cancel]{order:1}
.confirm-actions[data-action-count="3"] [data-confirm-ok]{order:2}
.confirm-actions[data-action-count="3"] [data-confirm-alt]{order:3}
.confirm-actions[data-action-count="3"]{flex-wrap:nowrap}
.confirm-actions[data-action-count="3"] .btn{min-width:0;flex:1 1 0}
@media(max-width:680px){
  .confirm-actions[data-action-count="3"]{flex-wrap:wrap}
  .confirm-actions[data-action-count="3"] .btn{flex:1 1 100%;width:100%}
}

/* v23.8.52 - Composants UI consolidés après audit CSS.
   Cette section remplace les surcharges successives 23.8.45 à 23.8.51.
   Une seule géométrie est désormais responsable des boutons et métriques. */
:root{
  --sm-action-button-height:34px;
  --sm-metric-height:24px;
  --sm-metric-padding-x:7px;
}

/* Boutons métier : même boîte pour <a>, <button> et <input>.
   Le centrage est géométrique, sans compensation par padding vertical. */
.admin-body :is(.action-toolbar,.action-group-buttons,.form-actions,.button-row)
:is(a.btn,button.btn,input[type="submit"].btn,input[type="button"].btn){
  display:inline-flex!important;
  align-items:center!important;
  justify-content:center!important;
  height:var(--sm-action-button-height)!important;
  min-height:var(--sm-action-button-height)!important;
  max-height:var(--sm-action-button-height)!important;
  padding:0 11px!important;
  box-sizing:border-box!important;
  line-height:1!important;
  text-align:center!important;
  vertical-align:top!important;
  white-space:nowrap!important;
}

/* Les groupes restent ancrés en haut lorsque le motif de blocage s'affiche. */
.admin-body .action-toolbar,
.admin-body .action-group,
.admin-body .action-group-buttons,
.admin-body .action-group-buttons > form,
.admin-body .action-group-buttons > .btn,
.admin-body .action-group-buttons > a.btn{
  align-items:flex-start!important;
  align-self:flex-start!important;
}
.admin-body .action-group-buttons form:not(:has(.workflow-block-note)){
  align-items:flex-start!important;
}

/* Une métrique est un composant unique, neutre ou coloré. */
.admin-body :is(.metrics,.invoice-metrics,.remuneration-summary) > span{
  display:inline-flex!important;
  align-items:center!important;
  height:var(--sm-metric-height)!important;
  min-height:var(--sm-metric-height)!important;
  max-height:var(--sm-metric-height)!important;
  padding:0 var(--sm-metric-padding-x)!important;
  box-sizing:border-box!important;
  line-height:1!important;
  vertical-align:middle!important;
  white-space:nowrap!important;
}

/* Le statut VHC est parfois enveloppé : l'enveloppe ne crée pas de seconde marge. */
.admin-body .metrics > span[data-vhc-card-status]{
  padding:0!important;
}
.admin-body .metrics > span[data-vhc-card-status] > span{
  display:inline-flex!important;
  align-items:center!important;
  height:var(--sm-metric-height)!important;
  min-height:var(--sm-metric-height)!important;
  max-height:var(--sm-metric-height)!important;
  padding:0 var(--sm-metric-padding-x)!important;
  box-sizing:border-box!important;
  line-height:1!important;
  white-space:nowrap!important;
}

/* Badges hors ligne de métriques : même hauteur compacte. */
.admin-body :is(.status-badge,.service-status-badge,.invoice-status-badge,.badge,
.metric-attention-warning,.metric-attention-danger,.metric-attention-ok){
  display:inline-flex!important;
  align-items:center!important;
  height:var(--sm-metric-height)!important;
  min-height:var(--sm-metric-height)!important;
  max-height:var(--sm-metric-height)!important;
  padding:0 var(--sm-metric-padding-x)!important;
  box-sizing:border-box!important;
  line-height:1!important;
  vertical-align:middle!important;
  white-space:nowrap!important;
  font-size:12px!important;
  font-weight:600!important;
}

/* Garde-fous : contrôles structurels exclus de la géométrie métier. */
.admin-body .sidebar-backdrop{
  display:none!important;
  height:auto!important;
  min-height:0!important;
  max-height:none!important;
}
@media(max-width:1000px){
  .admin-body.sidebar-open .sidebar-backdrop{display:block!important}
}
.admin-body .menu-btn{
  height:40px!important;
  min-height:40px!important;
  max-height:40px!important;
}
.admin-body .modal-close{
  width:36px!important;
  height:36px!important;
  min-height:36px!important;
  max-height:36px!important;
  padding:0!important;
}

@media(max-width:760px){
  .admin-body :is(.metrics,.invoice-metrics,.remuneration-summary) > span,
  .admin-body :is(.status-badge,.service-status-badge,.invoice-status-badge,.badge,
  .metric-attention-warning,.metric-attention-danger,.metric-attention-ok){
    height:var(--sm-metric-height)!important;
    min-height:var(--sm-metric-height)!important;
    max-height:var(--sm-metric-height)!important;
    white-space:nowrap!important;
  }
}

/* v23.8.57 - Convocations mobile : les compteurs internes restent du texte.
   Les spans [data-count] sont des valeurs dynamiques, pas des badges autonomes. */
.admin-body .metrics > span > span[data-count]{
  display:inline!important;
  width:auto!important;
  height:auto!important;
  min-height:0!important;
  max-height:none!important;
  padding:0!important;
  margin:0!important;
  border:0!important;
  border-radius:0!important;
  background:transparent!important;
  color:inherit!important;
  box-shadow:none!important;
  font:inherit!important;
  line-height:inherit!important;
  vertical-align:baseline!important;
  white-space:inherit!important;
}


/* v23.8.58 - Convocations : structure canonique des métriques, desktop et mobile.
   Les enfants ne sont jamais stylés comme des badges autonomes. */
.admin-body .metrics > .metric-item{
  display:inline-flex!important;
  align-items:center!important;
  gap:5px!important;
}
.admin-body .metrics > .metric-item > :is(.metric-icon,.metric-value,.metric-label){
  display:inline!important;
  width:auto!important;
  height:auto!important;
  min-height:0!important;
  max-height:none!important;
  padding:0!important;
  margin:0!important;
  border:0!important;
  border-radius:0!important;
  background:transparent!important;
  color:inherit!important;
  box-shadow:none!important;
  font:inherit!important;
  line-height:1!important;
  vertical-align:middle!important;
  white-space:nowrap!important;
}
.admin-body .metrics > .metric-item > .metric-icon{
  flex:0 0 auto!important;
}
@media(max-width:760px){
  .admin-body .metrics > .metric-item{gap:4px!important}
}
