/* GanGanStay R5.6 — Design system unifié + formulaires fermés par défaut
   Portée : espaces hôtel, voyageur et administration. Aucun changement métier. */
:root{
  --r56-forest:#083b25;
  --r56-forest-2:#0d5a36;
  --r56-leaf:#1f7a48;
  --r56-orange:#f26b2b;
  --r56-orange-hover:#dc5b1e;
  --r56-red:#b42318;
  --r56-red-hover:#8f1d14;
  --r56-amber:#a56600;
  --r56-blue:#175cd3;
  --r56-ink:#173024;
  --r56-muted:#66766d;
  --r56-line:#dfe7e2;
  --r56-line-strong:#cdd9d1;
  --r56-surface:#ffffff;
  --r56-soft:#f6f9f7;
  --r56-soft-green:#eef7f1;
  --r56-soft-orange:#fff5ee;
  --r56-soft-red:#fff0ee;
  --r56-soft-amber:#fff8e8;
  --r56-shadow:0 12px 32px rgba(8,59,37,.07);
  --r56-shadow-hover:0 18px 42px rgba(8,59,37,.11);
  --r56-radius-lg:20px;
  --r56-radius-md:14px;
  --r56-radius-sm:10px;
}

/* Cadre général */
body.context-hotel,body.context-account,body.context-admin{background:#f5f8f6;color:var(--r56-ink)}
body.context-hotel main,body.context-account main,body.context-admin main{min-width:0}
body.context-hotel .workspace-page,body.context-account .workspace-page,body.context-admin .workspace-page{
  max-width:1280px!important;margin:0 auto!important;padding:30px 30px 58px!important;
}
body.context-hotel .workspace-content,body.context-account .workspace-content,body.context-admin .workspace-content{min-width:0}
body.context-hotel h1,body.context-account h1,body.context-admin h1{letter-spacing:-.035em;color:#10291b}
body.context-hotel h2,body.context-account h2,body.context-admin h2{letter-spacing:-.02em;color:#163526}
body.context-hotel p,body.context-account p,body.context-admin p{max-width:78ch}

/* Cartes et sections */
body.context-hotel .card,body.context-account .card,body.context-admin .card,
body.context-hotel .finance-section,body.context-hotel .operation-card{
  border:1px solid var(--r56-line)!important;border-radius:var(--r56-radius-lg)!important;
  box-shadow:0 7px 24px rgba(8,59,37,.045)!important;background:var(--r56-surface);
}
body.context-hotel .card:hover,body.context-account .card:hover,body.context-admin .card:hover{border-color:#d5e0d9}
body.context-hotel .section-head,body.context-account .section-head,body.context-admin .section-head{margin:28px 0 14px}
body.context-hotel .section-head h2,body.context-account .section-head h2,body.context-admin .section-head h2{font-size:1.35rem}

/* Boutons : 4 niveaux visuels stables */
body.context-hotel .btn,body.context-account .btn,body.context-admin .btn,
body.context-hotel button:not(.menu):not(.x),body.context-account button:not(.menu):not(.x),body.context-admin button:not(.menu):not(.x){
  border-radius:12px;min-height:44px;font-weight:800;letter-spacing:-.005em;box-shadow:none;
}
body.context-hotel .btn.primary,body.context-account .btn.primary,body.context-admin .btn.primary,
body.context-hotel .btn:not(.secondary):not(.danger):not(.ghost):not(.green),
body.context-account .btn:not(.secondary):not(.danger):not(.ghost):not(.green),
body.context-admin .btn:not(.secondary):not(.danger):not(.ghost):not(.green){background:var(--r56-orange);color:#fff;border:1px solid var(--r56-orange)}
body.context-hotel .btn.primary:hover,body.context-account .btn.primary:hover,body.context-admin .btn.primary:hover{background:var(--r56-orange-hover);border-color:var(--r56-orange-hover)}
body.context-hotel .btn.secondary,body.context-account .btn.secondary,body.context-admin .btn.secondary,
body.context-hotel .btn.ghost,body.context-account .btn.ghost,body.context-admin .btn.ghost{
  background:#fff!important;color:var(--r56-forest)!important;border:1px solid #cbd9d0!important;
}
body.context-hotel .btn.secondary:hover,body.context-account .btn.secondary:hover,body.context-admin .btn.secondary:hover,
body.context-hotel .btn.ghost:hover,body.context-account .btn.ghost:hover,body.context-admin .btn.ghost:hover{background:var(--r56-soft-green)!important;border-color:#afc8b8!important}
body.context-hotel .btn.danger,body.context-account .btn.danger,body.context-admin .btn.danger{background:var(--r56-red)!important;color:#fff!important;border:1px solid var(--r56-red)!important}
body.context-hotel .btn.danger:hover,body.context-account .btn.danger:hover,body.context-admin .btn.danger:hover{background:var(--r56-red-hover)!important}
body.context-hotel .btn.small,body.context-account .btn.small,body.context-admin .btn.small{min-height:38px;padding:8px 12px}

/* Champs : même rythme sur toute l'application */
body.context-hotel label,body.context-account label,body.context-admin label{color:#4d6257;font-size:.79rem;font-weight:800;margin-bottom:7px}
body.context-hotel input:not([type="checkbox"]):not([type="radio"]),body.context-hotel select,body.context-hotel textarea,
body.context-account input:not([type="checkbox"]):not([type="radio"]),body.context-account select,body.context-account textarea,
body.context-admin input:not([type="checkbox"]):not([type="radio"]),body.context-admin select,body.context-admin textarea{
  min-height:48px;border:1px solid #d4ded8;border-radius:12px;background:#fff;padding:11px 13px;color:var(--r56-ink);
}
body.context-hotel textarea,body.context-account textarea,body.context-admin textarea{min-height:104px}
body.context-hotel input:focus,body.context-hotel select:focus,body.context-hotel textarea:focus,
body.context-account input:focus,body.context-account select:focus,body.context-account textarea:focus,
body.context-admin input:focus,body.context-admin select:focus,body.context-admin textarea:focus{
  border-color:#76a78a;box-shadow:0 0 0 4px rgba(31,122,72,.11);outline:0;
}
body.context-hotel form,body.context-account form,body.context-admin form{gap:14px}
body.context-hotel form>label,body.context-account form>label,body.context-admin form>label{margin-top:0}

/* Formulaires fermés par défaut : déclencheur compact puis panneau */
.nbs-r56-form-shell{display:block;min-width:0;margin:10px 0}
.nbs-r56-form-shell.is-compact{display:inline-flex;margin:0}
.nbs-r56-form-toggle{
  width:100%;min-height:48px;display:flex!important;align-items:center!important;justify-content:space-between!important;gap:12px;
  padding:12px 15px!important;background:#fff!important;color:var(--r56-forest)!important;border:1px solid #cfddd4!important;
  border-radius:13px!important;font-weight:850!important;text-align:left!important;cursor:pointer;box-shadow:none!important;
}
.nbs-r56-form-toggle:hover{background:var(--r56-soft-green)!important;border-color:#adc9b8!important}
.nbs-r56-form-toggle .nbs-r56-form-icon{display:grid;place-items:center;width:26px;height:26px;border-radius:9px;background:#edf6f0;color:var(--r56-forest);font-size:18px;line-height:1;flex:0 0 auto}
.nbs-r56-form-shell.is-open>.nbs-r56-form-toggle{background:var(--r56-soft-green)!important;border-color:#b9d1c1!important;border-radius:13px 13px 0 0!important}
.nbs-r56-form-shell.is-open>.nbs-r56-form-toggle .nbs-r56-form-icon{transform:rotate(45deg)}
.nbs-r56-form-panel{border:1px solid #cfe0d5;border-top:0;background:#fff;border-radius:0 0 16px 16px;padding:18px;box-shadow:0 12px 30px rgba(8,59,37,.06)}
.nbs-r56-form-panel[hidden]{display:none!important}
.nbs-r56-form-panel form{margin:0!important;box-shadow:none!important;border:0!important;border-radius:0!important;padding:0!important;background:transparent!important}
.nbs-r56-form-close-row{display:flex;justify-content:flex-end;margin-top:12px;padding-top:12px;border-top:1px solid #e6ece8}
.nbs-r56-form-close{min-height:38px!important;padding:7px 12px!important;border:0!important;background:#f2f5f3!important;color:#53665b!important;border-radius:10px!important;font-weight:800!important}
.nbs-r56-form-close:hover{background:#e8efea!important}

/* Les formulaires déjà dans details restent fermés et ont le même langage visuel */
body.context-hotel details:has(form),body.context-account details:has(form),body.context-admin details:has(form){
  border:1px solid var(--r56-line);border-radius:14px;background:#fff;overflow:hidden;margin:10px 0;
}
body.context-hotel details:has(form)>summary,body.context-account details:has(form)>summary,body.context-admin details:has(form)>summary{
  cursor:pointer;list-style:none;padding:13px 15px;font-weight:850;color:var(--r56-forest);display:flex;align-items:center;justify-content:space-between;gap:12px;background:#fff;
}
body.context-hotel details:has(form)>summary::-webkit-details-marker,body.context-account details:has(form)>summary::-webkit-details-marker,body.context-admin details:has(form)>summary::-webkit-details-marker{display:none}
body.context-hotel details:has(form)>summary::after,body.context-account details:has(form)>summary::after,body.context-admin details:has(form)>summary::after{content:'+';display:grid;place-items:center;width:26px;height:26px;border-radius:9px;background:#edf6f0;font-size:18px}
body.context-hotel details[open]:has(form)>summary::after,body.context-account details[open]:has(form)>summary::after,body.context-admin details[open]:has(form)>summary::after{content:'×'}
body.context-hotel details:has(form)>form,body.context-account details:has(form)>form,body.context-admin details:has(form)>form{border-top:1px solid #e4ece7;padding:18px!important;margin:0!important;background:#fff}

/* Réservation : information dominante + actions suffisamment larges */
body.context-hotel .reservation-ops{grid-template-columns:minmax(0,1fr) minmax(340px,390px)!important;gap:22px!important;align-items:start}
body.context-hotel .reservation-ops>aside,body.context-hotel .reservation-ops>.actions,body.context-hotel .actions-quick{position:sticky;top:98px}
body.context-hotel .finance-kpis{gap:12px}
body.context-hotel .finance-kpis>div{border:1px solid var(--r56-line);background:#fbfdfc;border-radius:14px;padding:15px 16px}
body.context-hotel .finance-kpis span{color:var(--r56-muted);font-size:.78rem}
body.context-hotel .finance-kpis strong{font-size:1.15rem;color:#153725}
body.context-hotel .notice{border:1px solid #f0d8c8;border-left:4px solid var(--r56-orange);background:var(--r56-soft-orange);border-radius:14px;padding:14px 15px}
body.context-hotel .notice.warning{background:var(--r56-soft-amber);border-color:#efd7a1;border-left-color:#c58413}
body.context-hotel .notice.success{background:var(--r56-soft-green);border-color:#cce3d3;border-left-color:var(--r56-leaf)}
body.context-hotel .critical-actions{background:#fff9f8;border:1px solid #f0d7d4;border-radius:14px;padding:14px;margin-top:16px}

/* Demandes voyageurs : décision lisible, formulaires fermés */
body.context-hotel .traveler-request-row,body.context-account .traveler-request-row{border-radius:14px}
body.context-hotel .grid.grid-2>.nbs-r56-form-shell{margin:0;align-self:start}
body.context-account .grid.grid-2>.nbs-r56-form-shell,body.context-admin .grid.grid-2>.nbs-r56-form-shell{align-self:start}
body.context-hotel .grid.grid-2>.nbs-r56-form-shell .nbs-r56-form-toggle{height:auto;min-height:50px}
body.context-hotel .status.pending,body.context-account .status.pending{background:#fff4d8;color:#8a5b00}
body.context-hotel .status.approved,body.context-account .status.approved{background:#e8f5ed;color:#17643a}
body.context-hotel .status.rejected,body.context-account .status.rejected{background:#fdeceb;color:#a32823}

/* Badges unifiés */
body.context-hotel .badge,body.context-account .badge,body.context-admin .badge,
body.context-hotel .status,body.context-account .status,body.context-admin .status{
  display:inline-flex;align-items:center;width:max-content;max-width:100%;padding:6px 9px;border-radius:999px;font-size:.72rem;font-weight:850;line-height:1.1;text-transform:none;letter-spacing:0;
}
body.context-hotel .badge.ready,body.context-hotel .badge.checked_in,body.context-hotel .badge.confirmed,body.context-hotel .status.confirmed,body.context-hotel .status.checked_in{background:#eaf6ee;color:#17643a}
body.context-hotel .badge.cleaning{background:#fff5d9;color:#886000}
body.context-hotel .badge.maintenance{background:#fff0e8;color:#9c4a1b}
body.context-hotel .badge.blocked,body.context-hotel .status.cancelled,body.context-hotel .status.no_show{background:#fdebea;color:#a12a25}
body.context-hotel .badge.occupied{background:#edf4ff;color:#17579e}

/* État chambres : cartes moins hautes, décision au premier regard */
body.context-hotel .room-unit-card{padding:17px!important;display:grid;gap:10px;align-content:start;min-height:0}
body.context-hotel .room-unit-card .card-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}
body.context-hotel .room-unit-card h3{margin:3px 0 0;font-size:1.1rem}
body.context-hotel .room-unit-card p{margin:3px 0}
body.context-hotel .room-state-form{margin-top:2px!important}
body.context-hotel .hotel-v23-metrics{gap:10px!important}
body.context-hotel .hotel-v23-metrics>div{border-radius:15px!important;padding:15px 16px!important;background:#fff!important;border:1px solid var(--r56-line)!important;box-shadow:none!important}
body.context-hotel .hotel-v23-metrics strong{font-size:1.55rem!important}

/* Tables : plus propres et lisibles */
body.context-hotel .tablewrap,body.context-account .tablewrap,body.context-admin .tablewrap,
body.context-hotel .table-scroll{border:1px solid var(--r56-line);border-radius:15px;overflow:auto;background:#fff}
body.context-hotel table,body.context-account table,body.context-admin table{border-collapse:separate;border-spacing:0}
body.context-hotel th,body.context-account th,body.context-admin th{background:#f1f6f3;color:#4c6256;font-size:.72rem;text-transform:uppercase;letter-spacing:.025em;font-weight:850}
body.context-hotel td,body.context-account td,body.context-admin td{padding-top:12px;padding-bottom:12px}
body.context-hotel tbody tr:hover,body.context-account tbody tr:hover,body.context-admin tbody tr:hover{background:#fbfdfc}

/* Voyageur : séjour courant volontairement plus simple */
body.context-account .traveler-stay-metrics{gap:10px}
body.context-account .traveler-stay-metrics>div{border-radius:16px;padding:16px;box-shadow:none}
body.context-account .traveler-stay-metrics strong{font-size:1.2rem}
body.context-account .traveler-next{border-radius:22px;box-shadow:0 16px 38px rgba(8,59,37,.14)}
body.context-account .traveler-booking-card{box-shadow:0 8px 24px rgba(8,59,37,.045);border-radius:19px}
body.context-account details.card{padding:0!important}
body.context-account details.card>summary{padding:14px 15px!important}

/* Finance : lecture pilotage, moins de bruit */
body.context-hotel .finance-grid,body.context-hotel .finance-kpis{gap:10px!important}
body.context-hotel .finance-section{padding:20px!important}
body.context-hotel .finance-section>h3{margin:22px 0 10px;font-size:1rem}
body.context-hotel .finance-section .section-head{margin-top:0}

/* Navigation et topbar */
body.context-hotel .hotel-v23-side,body.context-account .traveler-sidebar,body.context-admin .admin-v24-side{box-shadow:8px 0 24px rgba(8,59,37,.035)}
body.context-hotel .hotel-v23-topbar,body.context-account .traveler-topbar,body.context-admin .admin-v24-topbar{border-bottom-color:#dde6e0;box-shadow:0 4px 18px rgba(8,59,37,.025)}

/* État fermé explicite */
html.nbs-r56-ready form[data-r56-collapsible="1"]{display:grid}
html.nbs-r56-ready .nbs-r56-form-panel[hidden] form[data-r56-collapsible="1"]{display:none}

/* Responsive */
@media(max-width:1080px){
  body.context-hotel .reservation-ops{grid-template-columns:1fr!important}
  body.context-hotel .reservation-ops>aside,body.context-hotel .reservation-ops>.actions,body.context-hotel .actions-quick{position:static}
}
@media(max-width:820px){
  body.context-hotel .workspace-page,body.context-account .workspace-page,body.context-admin .workspace-page{padding:22px 15px 88px!important}
  .nbs-r56-form-panel{padding:15px}
  body.context-hotel .grid.grid-2,body.context-account .grid.grid-2,body.context-admin .grid.grid-2{grid-template-columns:1fr}
}
@media(max-width:560px){
  body.context-hotel .card,body.context-account .card,body.context-admin .card{border-radius:16px!important}
  .nbs-r56-form-toggle{min-height:46px;padding:11px 13px!important}
  body.context-hotel .finance-kpis,body.context-account .traveler-stay-metrics{grid-template-columns:1fr 1fr!important}
  body.context-hotel .hotel-v23-metrics{grid-template-columns:1fr 1fr!important}
}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}}


/* R5.6.1 — stabilisation des pages de configuration
   Les formulaires fermés restent des actions compactes et ne prennent jamais
   la hauteur du contenu voisin. */
.nbs-r56-form-shell{align-self:start!important;height:auto!important}
.nbs-r56-form-toggle{height:auto!important;min-height:50px}
.nbs-r56-form-shell:not(.is-open) .nbs-r56-form-toggle{box-shadow:none!important}

/* Chambres : catalogue lisible, images contenues, aucune clé technique brute. */
body.context-hotel .room-admin-layout{display:grid;grid-template-columns:1fr;gap:20px}
body.context-hotel .room-admin-existing{min-width:0}
body.context-hotel .room-admin-existing .section-head{display:flex;align-items:end;justify-content:space-between;gap:16px;margin:0 0 12px}
body.context-hotel .room-admin-existing .section-head p{margin:0}
body.context-hotel .room-admin-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}
body.context-hotel .room-admin-card{
  display:grid;grid-template-columns:170px minmax(0,1fr) auto;align-items:center;gap:16px;
  min-width:0;padding:14px;border:1px solid var(--r56-line);border-radius:18px;background:#fff;
  box-shadow:0 6px 20px rgba(8,59,37,.04);
}
body.context-hotel .room-admin-thumb{
  width:170px;height:122px;display:block;object-fit:cover;border-radius:13px;background:#eef3f0;
}
body.context-hotel .room-admin-body{min-width:0}
body.context-hotel .room-admin-title-row{display:flex;align-items:center;justify-content:space-between;gap:10px}
body.context-hotel .room-admin-title-row h3{margin:0;font-size:1.08rem;line-height:1.2}
body.context-hotel .room-admin-price{margin:8px 0 4px;font-weight:850;color:#163526}
body.context-hotel .room-admin-price span{font-weight:650;color:var(--r56-muted)}
body.context-hotel .room-admin-card .muted{margin:3px 0}
body.context-hotel .room-admin-policy{
  margin:7px 0 0;color:#53675c;font-size:.84rem;line-height:1.35;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden
}
body.context-hotel .room-admin-actions{margin:0;align-self:center}
body.context-hotel .room-create-form{margin:0!important}

/* Les pages avec une action à gauche et un panneau d'information à droite
   gardent l'action compacte au lieu d'une grande carte vide. */
body.context-hotel .grid.grid-2>.nbs-r56-form-shell:not(.is-open){min-height:0}
body.context-hotel .grid.grid-2>.nbs-r56-form-shell:not(.is-open)>.nbs-r56-form-toggle{
  min-height:52px;background:#f2f8f4!important
}

/* Inventory : l'intitulé fermé décrit l'action, pas le bouton de sauvegarde final. */
body.context-hotel .inventory-table{max-height:min(58vh,620px)}
body.context-hotel .inventory-table thead th{position:sticky;top:0;z-index:2}

@media(max-width:980px){
  body.context-hotel .room-admin-list{grid-template-columns:1fr}
}
@media(max-width:680px){
  body.context-hotel .room-admin-card{grid-template-columns:1fr;align-items:start}
  body.context-hotel .room-admin-thumb{width:100%;height:180px}
  body.context-hotel .room-admin-actions{justify-self:start}
  body.context-hotel .room-admin-existing .section-head{display:block}
}


/* Résumé visible même lorsque les formulaires Tarifs sont fermés. */
body.context-hotel .inventory-summary{
  display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin:14px 0 12px;
}
body.context-hotel .inventory-summary>div{
  border:1px solid var(--r56-line);border-radius:14px;background:#fff;padding:13px 14px;min-width:0;
}
body.context-hotel .inventory-summary span{display:block;color:var(--r56-muted);font-size:.75rem;margin-bottom:4px}
body.context-hotel .inventory-summary strong{display:block;color:#173a28;font-size:.98rem;line-height:1.3}
@media(max-width:820px){body.context-hotel .inventory-summary{grid-template-columns:1fr 1fr}}
@media(max-width:520px){body.context-hotel .inventory-summary{grid-template-columns:1fr}}


/* R5.6.2 — page Chambres : vue de gestion compacte, lisible et orientée décision */
body.context-hotel .rooms-v562-page{
  max-width:1320px!important;
}
body.context-hotel .rooms-v562-pagehead{
  align-items:flex-end!important;
  margin-bottom:18px!important;
}
body.context-hotel .rooms-v562-pagehead .eyebrow{
  display:block;margin-bottom:7px;color:#2d7550;font-size:.72rem;font-weight:900;letter-spacing:.11em;
}
body.context-hotel .rooms-v562-pagehead h1{margin:.1rem 0 .45rem!important}
body.context-hotel .rooms-v562-pagehead p{margin:0;max-width:760px}
body.context-hotel .rooms-v562-head-actions{display:flex;gap:10px;flex-wrap:wrap;justify-content:flex-end}

body.context-hotel .rooms-v562-kpis{
  display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin:0 0 22px;
}
body.context-hotel .rooms-v562-kpis>div{
  min-width:0;background:#fff;border:1px solid #dce7e0;border-radius:16px;padding:15px 17px;
  box-shadow:0 5px 18px rgba(8,59,37,.035);display:grid;gap:2px;
}
body.context-hotel .rooms-v562-kpis small{
  color:#6b7b72;font-size:.72rem;font-weight:850;text-transform:uppercase;letter-spacing:.045em;
}
body.context-hotel .rooms-v562-kpis strong{
  color:#123e28;font-size:1.45rem;line-height:1.2;letter-spacing:-.025em;overflow-wrap:anywhere;
}
body.context-hotel .rooms-v562-kpis span{color:#75847c;font-size:.78rem}

body.context-hotel .rooms-v562-toolbar{
  display:grid;grid-template-columns:minmax(0,1fr) minmax(270px,330px);gap:18px;align-items:start;
  margin:0 0 13px;padding:0 2px;
}
body.context-hotel .rooms-v562-toolbar h2{margin:0 0 4px;font-size:1.28rem}
body.context-hotel .rooms-v562-toolbar p{margin:0}
body.context-hotel .rooms-v562-toolbar>.nbs-r56-form-shell{margin:0!important;align-self:start}
body.context-hotel .rooms-v562-toolbar>.nbs-r56-form-shell.is-open{grid-column:1/-1}
body.context-hotel .rooms-v562-toolbar>.nbs-r56-form-shell:not(.is-open) .nbs-r56-form-toggle{
  min-height:46px!important;background:#f26b2b!important;color:#fff!important;border-color:#f26b2b!important;
  justify-content:center!important;box-shadow:0 7px 18px rgba(242,107,43,.14)!important;
}
body.context-hotel .rooms-v562-toolbar>.nbs-r56-form-shell:not(.is-open) .nbs-r56-form-toggle:hover{
  background:#dc5b1e!important;border-color:#dc5b1e!important;
}
body.context-hotel .rooms-v562-toolbar>.nbs-r56-form-shell:not(.is-open) .nbs-r56-form-icon{
  background:rgba(255,255,255,.18)!important;color:#fff!important;
}
body.context-hotel .rooms-v562-toolbar>.nbs-r56-form-shell.is-open .nbs-r56-form-panel{
  padding:22px;max-width:920px;margin-left:auto;
}
body.context-hotel .rooms-v562-toolbar .room-create-form .grid{gap:12px}

body.context-hotel .rooms-v562-list{
  display:grid;gap:12px;
}
body.context-hotel .rooms-v562-row{
  display:grid;grid-template-columns:148px minmax(0,1fr) minmax(220px,260px);
  gap:17px;align-items:center;background:#fff;border:1px solid #dce6e0;border-radius:18px;
  padding:13px;min-width:0;box-shadow:0 5px 18px rgba(8,59,37,.035);
  transition:border-color .16s ease,box-shadow .16s ease,transform .16s ease;
}
body.context-hotel .rooms-v562-row:hover{
  border-color:#c6d8cd;box-shadow:0 10px 26px rgba(8,59,37,.065);transform:translateY(-1px);
}
body.context-hotel .rooms-v562-row.is-inactive{background:#fafbfa;opacity:.82}
body.context-hotel .rooms-v562-photo{
  width:148px;height:106px;border-radius:13px;overflow:hidden;background:#edf3ef;border:1px solid #e1e8e4;
}
body.context-hotel .rooms-v562-photo img{
  width:100%;height:100%;display:block;object-fit:cover;
}
body.context-hotel .rooms-v562-main{min-width:0}
body.context-hotel .rooms-v562-titleline{
  display:flex;align-items:flex-start;justify-content:space-between;gap:12px;min-width:0;
}
body.context-hotel .rooms-v562-titleline>div{min-width:0}
body.context-hotel .rooms-v562-titleline h3{
  margin:0;color:#123e28;font-size:1.08rem;line-height:1.22;letter-spacing:-.015em;
}
body.context-hotel .rooms-v562-desc{
  margin:4px 0 0;color:#718078;font-size:.82rem;line-height:1.35;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
}
body.context-hotel .rooms-v562-facts{
  display:flex;align-items:center;gap:7px;flex-wrap:wrap;margin-top:10px;
}
body.context-hotel .rooms-v562-facts span{
  display:inline-flex;align-items:center;min-height:27px;padding:4px 8px;border-radius:999px;
  background:#f3f7f4;color:#50635a;border:1px solid #e2e9e5;font-size:.74rem;font-weight:760;
}
body.context-hotel .rooms-v562-policy{
  display:flex;align-items:flex-start;gap:7px;margin-top:9px;color:#52665b;font-size:.79rem;line-height:1.35;
}
body.context-hotel .rooms-v562-policy-icon{
  display:grid;place-items:center;flex:0 0 auto;width:20px;height:20px;border-radius:999px;
  background:#eaf5ed;color:#1f7a48;font-size:.7rem;font-weight:900;
}
body.context-hotel .rooms-v562-side{
  min-width:0;align-self:stretch;border-left:1px solid #e5ece8;padding-left:17px;
  display:flex;flex-direction:column;justify-content:center;gap:11px;
}
body.context-hotel .rooms-v562-price{display:grid;gap:1px}
body.context-hotel .rooms-v562-price small{
  color:#78877f;font-size:.7rem;font-weight:800;text-transform:uppercase;letter-spacing:.04em;
}
body.context-hotel .rooms-v562-price strong{
  color:#123e28;font-size:1.18rem;line-height:1.25;
}
body.context-hotel .rooms-v562-actions{
  display:flex;align-items:center;gap:8px;flex-wrap:wrap;
}
body.context-hotel .rooms-v562-actions .btn{min-height:38px!important;padding:8px 11px!important;font-size:.76rem}
body.context-hotel .rooms-v562-actions form{margin:0!important;display:inline-flex!important;gap:0!important}

@media(max-width:980px){
  body.context-hotel .rooms-v562-row{grid-template-columns:120px minmax(0,1fr)}
  body.context-hotel .rooms-v562-photo{width:120px;height:92px}
  body.context-hotel .rooms-v562-side{
    grid-column:2;border-left:0;border-top:1px solid #e5ece8;padding:10px 0 0;flex-direction:row;align-items:center;justify-content:space-between;
  }
}
@media(max-width:720px){
  body.context-hotel .rooms-v562-kpis{grid-template-columns:1fr 1fr}
  body.context-hotel .rooms-v562-kpis>div:last-child{grid-column:1/-1}
  body.context-hotel .rooms-v562-toolbar{grid-template-columns:1fr}
  body.context-hotel .rooms-v562-toolbar>.nbs-r56-form-shell.is-open{grid-column:auto}
  body.context-hotel .rooms-v562-row{grid-template-columns:96px minmax(0,1fr);gap:12px;padding:11px}
  body.context-hotel .rooms-v562-photo{width:96px;height:82px}
  body.context-hotel .rooms-v562-titleline{display:block}
  body.context-hotel .rooms-v562-titleline .status{display:inline-flex;margin-top:6px}
  body.context-hotel .rooms-v562-facts{margin-top:7px}
  body.context-hotel .rooms-v562-policy{grid-column:1/-1}
  body.context-hotel .rooms-v562-side{grid-column:1/-1;padding-top:11px}
}
@media(max-width:480px){
  body.context-hotel .rooms-v562-kpis{grid-template-columns:1fr}
  body.context-hotel .rooms-v562-kpis>div:last-child{grid-column:auto}
  body.context-hotel .rooms-v562-row{grid-template-columns:1fr}
  body.context-hotel .rooms-v562-photo{width:100%;height:150px}
  body.context-hotel .rooms-v562-side{grid-column:auto;display:grid}
  body.context-hotel .rooms-v562-actions{align-items:stretch}
  body.context-hotel .rooms-v562-actions .btn{flex:1;text-align:center}
}

@media print{
  body.context-hotel .rooms-v562-page{max-width:none!important;padding:12px!important}
  body.context-hotel .rooms-v562-head-actions,
  body.context-hotel .rooms-v562-toolbar>.nbs-r56-form-shell,
  body.context-hotel .rooms-v562-actions{display:none!important}
  body.context-hotel .rooms-v562-kpis{grid-template-columns:repeat(3,1fr);gap:7px;margin-bottom:12px}
  body.context-hotel .rooms-v562-kpis>div{padding:8px 10px;box-shadow:none}
  body.context-hotel .rooms-v562-list{gap:7px}
  body.context-hotel .rooms-v562-row{
    grid-template-columns:92px minmax(0,1fr) 155px;gap:10px;padding:8px;border-radius:10px;box-shadow:none;
    break-inside:avoid;page-break-inside:avoid;transform:none!important;
  }
  body.context-hotel .rooms-v562-photo{width:92px;height:68px;border-radius:8px}
  body.context-hotel .rooms-v562-facts{margin-top:5px}
  body.context-hotel .rooms-v562-facts span{min-height:22px;padding:2px 6px;font-size:.66rem}
  body.context-hotel .rooms-v562-policy{margin-top:5px;font-size:.68rem}
  body.context-hotel .rooms-v562-side{padding-left:10px;gap:4px}
  body.context-hotel .rooms-v562-price strong{font-size:.95rem}
}

/* NIMBASTAY_R5_9_ROOM_EDIT_AND_EXISTING_PHOTO */
body.context-hotel .nbs-photo-existing-btn{margin-top:8px!important;width:auto!important}
body.context-hotel .rooms-v59-edit-panel[hidden]{display:none!important}
body.context-hotel .rooms-v59-edit-panel{
  grid-column:1/-1;margin:2px 0 10px!important;padding:20px!important;border:1px solid #cfded5!important;
  border-radius:18px!important;box-shadow:0 12px 34px rgba(8,59,37,.08)!important;background:#fff!important;
}
body.context-hotel .rooms-v59-edit-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:15px}
body.context-hotel .rooms-v59-edit-head h2{margin:3px 0 4px!important}
body.context-hotel .rooms-v59-edit-head p{margin:0!important;max-width:720px}
body.context-hotel .rooms-v59-edit-preview{
  width:min(360px,100%);aspect-ratio:4/3;border-radius:14px;overflow:hidden;border:1px solid #dce6e0;background:#edf3ef;margin-bottom:16px;
}
body.context-hotel .rooms-v59-edit-preview img{width:100%;height:100%;object-fit:cover;display:block}
body.context-hotel .rooms-v59-edit-panel .room-edit-form{display:grid;gap:10px;margin:0!important}
body.context-hotel .rooms-v59-edit-panel .room-edit-form>.grid{gap:12px}
body.context-hotel .rooms-v59-edit-actions{display:flex;justify-content:flex-end;gap:10px;flex-wrap:wrap;margin-top:8px;padding-top:14px;border-top:1px solid #e3ebe6}
body.context-hotel .rooms-v562-actions>[data-room-edit-button]{white-space:nowrap}
@media(max-width:720px){
  body.context-hotel .rooms-v59-edit-panel{padding:15px!important}
  body.context-hotel .rooms-v59-edit-head{display:block}
  body.context-hotel .rooms-v59-edit-head>[data-room-edit-close]{margin-top:10px}
  body.context-hotel .rooms-v59-edit-actions{display:grid;grid-template-columns:1fr}
  body.context-hotel .rooms-v59-edit-actions .btn{width:100%}
}
@media print{body.context-hotel .rooms-v59-edit-panel{display:none!important}}

/* GanGanStay R6.0 — tarification dynamique */
.dynamic-pricing-card{display:grid;gap:18px}
.dynamic-pricing-head{display:flex;justify-content:space-between;gap:20px;align-items:flex-start}
.dynamic-pricing-head h2{margin:.2rem 0 .35rem}
.dynamic-priority-note{margin:0}
.dynamic-preview h3{margin:0 0 10px}
.dynamic-preview-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}
.dynamic-preview-grid>div{border:1px solid var(--line,#dbe4df);border-radius:14px;padding:12px;background:#f8fbf9;display:grid;gap:5px}
.dynamic-preview-grid span{font-size:.78rem;color:var(--muted,#68766f)}
.dynamic-preview-grid strong{font-size:1.05rem}
.dynamic-preview-grid small{font-weight:700;color:#315b45}
.dynamic-advanced{border:1px solid var(--line,#dbe4df);border-radius:14px;padding:0 14px;background:#fff}
.dynamic-advanced summary{cursor:pointer;font-weight:800;padding:13px 0}
.price-source{display:block;margin-top:5px;font-size:.72rem;line-height:1.25}
.price-source.dynamic{color:#0f6b3b;font-weight:800}.price-source.manual{color:#8a5a00;font-weight:800}.price-source.base{color:var(--muted,#68766f)}
.dynamic-price-badge{margin-left:6px}
.dynamic-booking-note{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:10px 0}
.dynamic-booking-note small{color:var(--muted,#68766f)}
@media(max-width:900px){.dynamic-preview-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.dynamic-pricing-head{align-items:center}}
@media(max-width:560px){.dynamic-preview-grid{grid-template-columns:1fr}.dynamic-pricing-head{display:grid}}

/* GanGanStay R6.1 — formulaires Chambres et Tarifs simplifiés */
body.context-hotel .room-simple-form{display:grid;gap:11px}
body.context-hotel .simple-form-intro{
  display:grid;gap:3px;padding:12px 14px;border:1px solid #d8e7de;border-radius:14px;background:#f3f8f5;color:#183e2a;
}
body.context-hotel .simple-form-intro strong{font-size:.94rem}
body.context-hotel .simple-form-intro span{font-size:.8rem;color:#667970;line-height:1.42}
body.context-hotel .room-essential-grid{align-items:start}
body.context-hotel .room-essential-grid small{display:block;margin-top:5px;color:#718078;line-height:1.35}
body.context-hotel .room-advanced-options,
body.context-hotel .inventory-advanced-options{
  margin-top:7px;border:1px solid #dce6e0;border-radius:14px;background:#fbfdfc;overflow:hidden;
}
body.context-hotel .room-advanced-options>summary,
body.context-hotel .inventory-advanced-options>summary{
  cursor:pointer;list-style:none;padding:13px 14px;font-weight:850;color:#17412a;display:flex;align-items:center;justify-content:space-between;gap:12px;
}
body.context-hotel .room-advanced-options>summary::-webkit-details-marker,
body.context-hotel .inventory-advanced-options>summary::-webkit-details-marker{display:none}
body.context-hotel .room-advanced-options>summary::after,
body.context-hotel .inventory-advanced-options>summary::after{
  content:'+';display:grid;place-items:center;width:25px;height:25px;border-radius:999px;background:#eaf4ed;color:#176038;font-weight:900;
}
body.context-hotel .room-advanced-options[open]>summary::after,
body.context-hotel .inventory-advanced-options[open]>summary::after{content:'−'}
body.context-hotel .advanced-options-body{display:grid;gap:10px;padding:0 14px 15px;border-top:1px solid #e5ece8;padding-top:14px}
body.context-hotel .advanced-options-body h3{margin:5px 0 0!important;font-size:1rem}
body.context-hotel .inventory-propagation-note{display:block;padding:10px 12px;border-radius:11px;background:#f8faf9;color:#6b7a72}

body.context-hotel .inventory-simple-page{max-width:1320px!important}
body.context-hotel .inventory-summary-simple{grid-template-columns:repeat(5,minmax(0,1fr))}
body.context-hotel .inventory-guide{
  display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin:0 0 16px;
}
body.context-hotel .inventory-guide>div{
  display:grid;gap:4px;padding:12px 14px;border:1px solid #dce7e0;border-radius:14px;background:#fff;
}
body.context-hotel .inventory-guide strong{color:#17432b;font-size:.83rem}
body.context-hotel .inventory-guide span{color:#6c7c73;font-size:.77rem;line-height:1.4}

body.context-hotel .dynamic-pricing-simple .dynamic-mode-block{display:grid;gap:6px}
body.context-hotel .dynamic-pricing-simple .dynamic-mode-block label{font-weight:850}
body.context-hotel .dynamic-limits-grid{display:grid;grid-template-columns:1fr minmax(180px,.8fr) 1fr;gap:12px;align-items:stretch}
body.context-hotel .dynamic-limits-grid>div{min-width:0}
body.context-hotel .dynamic-base-reference{
  display:grid;align-content:center;gap:4px;padding:12px 14px;border:1px solid #dbe6df;border-radius:13px;background:#f7faf8;
}
body.context-hotel .dynamic-base-reference span{font-size:.75rem;color:#687970;font-weight:800;text-transform:uppercase;letter-spacing:.03em}
body.context-hotel .dynamic-base-reference strong{font-size:1.16rem;color:#153d28}
body.context-hotel .dynamic-base-reference small{color:#718078;line-height:1.35}

body.context-hotel .bulk-inventory-simple>summary{font-size:1rem;padding:3px 0}
body.context-hotel .bulk-inventory-simple form{display:grid;gap:14px}
body.context-hotel .bulk-simple-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}
body.context-hotel .bulk-simple-grid>div{min-width:0}
body.context-hotel .restrictions-grid-simple{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
body.context-hotel .restrictions-grid-simple>div{padding:11px;border:1px solid #e0e8e3;border-radius:12px;background:#fff}
body.context-hotel .restrictions-grid-simple small{display:block;margin-top:5px;color:#748179;line-height:1.35}

body.context-hotel .inventory-table-help{
  display:flex;align-items:flex-start;justify-content:space-between;gap:18px;margin-bottom:12px;padding:11px 13px;border-radius:12px;background:#f5f8f6;border:1px solid #e0e7e3;
}
body.context-hotel .inventory-table-help strong{color:#17402a}
body.context-hotel .inventory-table-help span{max-width:680px;color:#687970;font-size:.79rem;line-height:1.4;text-align:right}
body.context-hotel .inventory-table-simple table{min-width:900px}
body.context-hotel .inventory-table-simple th:nth-child(1){width:145px}
body.context-hotel .inventory-table-simple th:nth-child(2){width:230px}
body.context-hotel .inventory-table-simple th:nth-child(3){width:300px}
body.context-hotel .inventory-table-simple th:nth-child(4){width:auto}
body.context-hotel .inventory-table-simple td{vertical-align:top}
body.context-hotel .inventory-date-cell strong{white-space:nowrap}
body.context-hotel .inventory-mobile-label{display:none}
body.context-hotel .inventory-row-advanced details{border:1px solid #dce6e0;border-radius:11px;background:#fbfdfc;min-width:250px}
body.context-hotel .inventory-row-advanced summary{cursor:pointer;padding:10px 11px;font-weight:800;color:#185033;list-style:none}
body.context-hotel .inventory-row-advanced summary::-webkit-details-marker{display:none}
body.context-hotel .inventory-row-advanced summary::after{content:'+';float:right;color:#1d7044;font-weight:900}
body.context-hotel .inventory-row-advanced details[open] summary::after{content:'−'}
body.context-hotel .inventory-advanced-body{display:grid;gap:10px;padding:0 11px 12px;border-top:1px solid #e5ece8;padding-top:11px}
body.context-hotel .restriction-choice{
  display:flex!important;align-items:flex-start!important;gap:9px!important;margin:0!important;padding:9px 10px;border:1px solid #e3e9e5;border-radius:11px;background:#fff;color:#253c30!important;font-weight:400!important;
}
body.context-hotel .restriction-choice input{width:auto!important;flex:0 0 auto;margin-top:3px!important}
body.context-hotel .restriction-choice span{display:grid;gap:2px}
body.context-hotel .restriction-choice strong{font-size:.8rem;color:#193c29}
body.context-hotel .restriction-choice small{font-size:.71rem;color:#748078;line-height:1.35}
body.context-hotel .price-reset-choice{background:#fffaf3}

body.context-hotel [data-money-input]{font-variant-numeric:tabular-nums}

@media(max-width:1100px){
  body.context-hotel .inventory-summary-simple{grid-template-columns:repeat(3,minmax(0,1fr))}
  body.context-hotel .bulk-simple-grid{grid-template-columns:1fr 1fr}
}
@media(max-width:820px){
  body.context-hotel .inventory-summary-simple{grid-template-columns:1fr 1fr}
  body.context-hotel .inventory-guide{grid-template-columns:1fr}
  body.context-hotel .dynamic-limits-grid{grid-template-columns:1fr}
  body.context-hotel .restrictions-grid-simple{grid-template-columns:1fr}
  body.context-hotel .inventory-table-help{display:grid}
  body.context-hotel .inventory-table-help span{text-align:left}
}
@media(max-width:620px){
  body.context-hotel .room-essential-grid{grid-template-columns:1fr!important}
  body.context-hotel .bulk-simple-grid{grid-template-columns:1fr}
  body.context-hotel .inventory-summary-simple{grid-template-columns:1fr}
}

/* =========================================================
   GanGanStay R6.2.1 — correctif menu « Mon accès »
   Le sélecteur générique details:has(form) de R5.6/R6.1
   captait aussi .account-menu à cause du formulaire Déconnexion,
   ce qui ajoutait un « + » et surtout overflow:hidden, masquant
   le menu déroulant positionné en absolu.
   ========================================================= */
body.context-hotel details.account-menu,
body.context-account details.account-menu,
body.context-admin details.account-menu{
  position:relative!important;
  border:0!important;
  border-radius:0!important;
  background:transparent!important;
  overflow:visible!important;
  margin:0!important;
}
body.context-hotel details.account-menu>summary,
body.context-account details.account-menu>summary,
body.context-admin details.account-menu>summary{
  list-style:none!important;
  cursor:pointer!important;
  display:flex!important;
  align-items:center!important;
  justify-content:flex-start!important;
  gap:8px!important;
  min-height:40px!important;
  padding:5px 7px!important;
  border:0!important;
  border-radius:12px!important;
  background:transparent!important;
  color:var(--ns-text)!important;
  font-weight:800!important;
}
body.context-hotel details.account-menu>summary::after,
body.context-account details.account-menu>summary::after,
body.context-admin details.account-menu>summary::after{
  content:none!important;
  display:none!important;
}
body.context-hotel details.account-menu[open]>summary,
body.context-account details.account-menu[open]>summary,
body.context-admin details.account-menu[open]>summary{
  background:#f1f5f2!important;
}
body.context-hotel details.account-menu .account-dropdown,
body.context-account details.account-menu .account-dropdown,
body.context-admin details.account-menu .account-dropdown{
  overflow:visible!important;
  z-index:250!important;
}
