/* Dibsoft Hôtels — back-office */
:root { --fond:#f4f5f3; --surface:#fff; --texte:#1c211f; --doux:#5f6a66; --ligne:#dfe3e0; --accent:#0F5C4D;
  --danger:#a8261a; --ok:#1d6b3a; --rayon:8px; }
*,*::before,*::after { box-sizing:border-box; }
body { margin:0; background:var(--fond); color:var(--texte); font:15px/1.5 system-ui,-apple-system,"Segoe UI",Roboto,sans-serif; }
a { color:var(--accent); }
h1 { font-size:1.5rem; margin:0 0 16px; }
h2 { font-size:1.15rem; margin:24px 0 12px; }
:focus-visible { outline:3px solid var(--accent); outline-offset:2px; }

.barre { position:sticky; top:0; z-index:10; display:flex; align-items:center; gap:16px; padding:0 16px; min-height:56px;
  background:#16302a; color:#e8efec; flex-wrap:wrap; }
.barre a, .barre .lien { color:#e8efec; }
.barre-nom { font-weight:700; text-decoration:none; margin-right:auto; }
.barre-user { font-size:.88rem; opacity:.8; }
.barre-lien { font-size:.9rem; }
.inline { display:inline; margin:0; }
.lien { background:none; border:0; padding:0; font:inherit; text-decoration:underline; cursor:pointer; color:var(--accent); }

.cadre { display:grid; grid-template-columns:1fr; min-height:calc(100vh - 56px); }
.menu { display:none; background:var(--surface); border-right:1px solid var(--ligne); padding:12px 0; }
.menu a, .menu-tel-in a { display:flex; justify-content:space-between; align-items:center; padding:9px 20px; color:var(--texte); text-decoration:none; }
.menu a[aria-current], .menu-tel-in a[aria-current] { background:#e7f0ed; color:var(--accent); font-weight:600; box-shadow:inset 3px 0 var(--accent); }
.menu a:hover { background:#f1f4f2; }
.menu-groupe { margin:16px 20px 4px; font-size:.72rem; text-transform:uppercase; letter-spacing:.08em; color:var(--doux); font-weight:600; }
.pastille { background:var(--danger); color:#fff; border-radius:99px; font-size:.75rem; padding:1px 8px; }
.menu-tel summary { list-style:none; cursor:pointer; font-size:1.4rem; padding:4px 8px; }
.menu-tel summary::-webkit-details-marker { display:none; }
.menu-tel-in { position:absolute; left:0; top:56px; width:min(300px,90vw); max-height:calc(100vh - 56px); overflow:auto;
  background:var(--surface); color:var(--texte); border-right:1px solid var(--ligne); box-shadow:4px 0 20px rgba(0,0,0,.15); padding:8px 0; }
.menu-tel-in a { color:var(--texte) !important; }
@media (min-width:960px) {
  .cadre { grid-template-columns:240px 1fr; }
  .menu { display:block; }
  .menu-tel { display:none; }
}
.page { padding:24px 16px 64px; max-width:1100px; width:100%; }
@media (min-width:960px) { .page { padding:28px 32px 64px; } }

.btn { display:inline-flex; align-items:center; gap:6px; min-height:40px; padding:0 16px; border-radius:var(--rayon);
  border:1px solid var(--accent); background:var(--surface); color:var(--accent); font:600 .92rem inherit; text-decoration:none; cursor:pointer; }
.btn-plein { background:var(--accent); color:#fff; }
.btn-danger { border-color:var(--danger); color:var(--danger); }
.btn-petit { min-height:32px; padding:0 10px; font-size:.85rem; }
.actions { display:flex; flex-wrap:wrap; gap:8px; align-items:center; }
.entete-page { display:flex; flex-wrap:wrap; justify-content:space-between; align-items:center; gap:12px; margin-bottom:16px; }
.entete-page h1 { margin:0; }

.carte { background:var(--surface); border:1px solid var(--ligne); border-radius:var(--rayon); padding:20px; margin-bottom:20px; }
.kpis { display:grid; gap:12px; grid-template-columns:repeat(auto-fill,minmax(170px,1fr)); margin-bottom:20px; }
.kpi { background:var(--surface); border:1px solid var(--ligne); border-radius:var(--rayon); padding:16px; }
.kpi b { display:block; font-size:1.6rem; }
.kpi span { color:var(--doux); font-size:.88rem; }

table { width:100%; border-collapse:collapse; background:var(--surface); }
th, td { text-align:left; padding:10px 12px; border-bottom:1px solid var(--ligne); vertical-align:top; }
th { font-size:.8rem; text-transform:uppercase; letter-spacing:.04em; color:var(--doux); background:#fafbfa; }
td.num, th.num { text-align:right; white-space:nowrap; }
td b { overflow-wrap:normal; }
.table-wrap { overflow-x:auto; border:1px solid var(--ligne); border-radius:var(--rayon); margin-bottom:20px; }
.vignette { width:64px; height:48px; object-fit:cover; border-radius:6px; background:var(--ligne); }

form.grille-form { display:grid; gap:14px; max-width:760px; }
.champ { display:grid; gap:4px; }
.champ label { font-weight:600; font-size:.9rem; }
.champ input:not([type=checkbox]):not([type=radio]), .champ select, .champ textarea { font:inherit; padding:9px 11px; border:1px solid #c9d0cc;
  border-radius:6px; background:#fff; width:100%; }
.champ textarea { min-height:110px; resize:vertical; }
.champ input[type=color] { height:44px; padding:2px; width:80px; }
.aide { font-size:.84rem; color:var(--doux); margin:0; }
.deux { display:grid; gap:14px; }
@media (min-width:640px) { .deux { grid-template-columns:1fr 1fr; } .trois { grid-template-columns:1fr 1fr 1fr; } }
.cases { display:grid; gap:6px; }
.cases label { display:flex; gap:8px; align-items:flex-start; font-weight:400; }
.equipements-choix { border:1px solid var(--ligne); border-radius:var(--rayon); padding:6px 16px 16px; margin:0; }
.equipements-choix legend { font-weight:600; font-size:.9rem; padding:0 6px; }
.equip-groupe { margin:14px 0 6px; font-size:.75rem; text-transform:uppercase; letter-spacing:.06em; color:var(--doux); font-weight:600; }
.cases-grille { display:grid; gap:6px 16px; grid-template-columns:repeat(auto-fill,minmax(190px,1fr)); }
.cases-grille label { display:flex; gap:8px; align-items:center; font-weight:400; min-height:32px; cursor:pointer; }
.cases-grille input { width:18px; height:18px; accent-color:var(--accent); }
.modeles { display:grid; gap:10px; grid-template-columns:repeat(auto-fill,minmax(180px,1fr)); }
.modeles label { border:1.5px solid var(--ligne); border-radius:var(--rayon); padding:12px; cursor:pointer; display:block; font-weight:400; }
.modeles input:checked + span { font-weight:700; color:var(--accent); }

.alerte { padding:12px 14px; border-radius:var(--rayon); margin:0 0 16px; }
.alerte-succes { background:#e3f3e8; color:var(--ok); }
.alerte-erreur { background:#fbe6e3; color:var(--danger); }
.alerte-info { background:#e8f0fb; color:#1d4f8a; }
.badge { display:inline-block; padding:1px 9px; border-radius:99px; font-size:.78rem; background:#eef1ef; color:var(--doux); }
.badge-ok { background:#e3f3e8; color:var(--ok); }
.badge-non { background:#fbe6e3; color:var(--danger); }
.badge-attention { background:#fdf1d9; color:#8a5a00; }
.vide { padding:28px; text-align:center; color:var(--doux); border:1.5px dashed var(--ligne); border-radius:var(--rayon); background:var(--surface); }
.message { white-space:pre-line; }
.non-lu td { font-weight:600; }
.galerie-admin { display:grid; gap:12px; grid-template-columns:repeat(auto-fill,minmax(170px,1fr)); }
.galerie-admin figure { margin:0; background:var(--surface); border:1px solid var(--ligne); border-radius:var(--rayon); overflow:hidden; }
.galerie-admin img { width:100%; aspect-ratio:4/3; object-fit:cover; }
.galerie-admin figcaption { padding:8px; font-size:.85rem; display:grid; gap:6px; }

.p-recu { background:var(--surface); border:1px solid var(--ligne); border-radius:var(--rayon); padding:20px; }
.p-ref { font:700 1.2rem ui-monospace, Menlo, Consolas, monospace; background:#f1f3f1; padding:3px 9px; border-radius:6px; }
.p-numeros { display:grid; gap:10px; grid-template-columns:repeat(auto-fill,minmax(200px,1fr)); margin:12px 0; }
.p-numeros div { border:1px solid var(--ligne); border-radius:var(--rayon); padding:12px; background:#fafbfa; }
.p-numeros b { display:block; font-size:1.15rem; }
body.simple { display:grid; place-items:center; min-height:100vh; padding:16px; }
.boite { width:min(420px,100%); background:var(--surface); border:1px solid var(--ligne); border-radius:12px; padding:28px; }
.boite h1 { font-size:1.3rem; }
.boite .btn { width:100%; justify-content:center; min-height:46px; }
