/* APP RENTAL — DESIGN TOKENS CANONIQUES */
:root {
  --app-font: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  --app-bg: #f4f6fb;
  --app-surface: #ffffff;
  --app-surface-soft: #f8fafc;
  --app-surface-subtle: #fafbfc;
  --app-surface-muted: #f2f5fa;
  --app-text: #172033;
  --app-text-muted: #667085;
  --app-text-subtle: #98a2b3;
  --app-border: #dfe5ef;
  --app-border-strong: #cfd8e8;
  --app-divider: #edf0f5;
  --app-table-head: #f2f5fa;
  --app-table-head-border: #d8e0ec;
  --app-table-row-border: #e7ecf3;
  --app-table-hover: #fafbfe;
  --app-primary: var(--rental-primary, var(--app-primary-color, #385bf8));
  --app-primary-hover: color-mix(in srgb, var(--app-primary) 88%, #000);
  --app-primary-soft: #eef2ff;
  --app-on-primary: #ffffff;
  --app-danger: #b42318;
  --app-danger-accent: #f04438;
  --app-danger-soft: #fff1f0;
  --app-danger-border: #fecdca;
  --app-danger-subtle: #fff6f5;
  --app-success: #067647;
  --app-success-accent: #17b26a;
  --app-success-soft: #ecfdf3;
  --app-success-border: #abefc6;
  --app-warning: #b54708;
  --app-warning-soft: #fff7e8;
  --app-warning-text: #9a6700;
  --app-info: #6172f3;
  --app-info-soft: #eef4ff;
  --app-info-border: #c7d7fe;
  --app-info-text: #3448a8;
  --app-neutral-soft: #f2f4f7;
  --app-neutral-border: #d0d5dd;
  --app-neutral-text: #475467;
  --app-control-text: #344054;
  --app-row-hover: #f8f9fd; 
  --app-radius-sm: 6px;
  --app-radius-md: 12px;
  --app-radius: 14px;
  --app-radius-lg: 18px;
  --app-shadow-sm: 0 2px 8px rgba(25,48,83,.035);
  --app-primary-action-shadow: 0 4px 12px rgba(25,48,83,.12);
  --app-shadow: 0 8px 24px rgba(25,48,83,.055);
  --app-shadow-modal: 0 28px 80px rgba(9,25,52,.26);
  --app-control-h: 44px;
  --app-control-h-compact: 36px;
  /* Boutons icône : géométrie détenue uniquement par la base. */
  --app-icon-button-size: 40px;
  --app-icon-button-size-compact: 32px;
  --app-icon-button-radius: 10px;
  --app-icon-button-icon-size: 18px;
  --app-space-3: 12px;
  --app-space-4: 16px; 
  --app-content-max: 1800px;
  --app-page-max: 1840px;
  --app-section-gap: 18px;
  --app-block-gap: 14px;
  --app-table-action-gap: 14px;
  --app-title-kpi-gap: 26px;
  --app-page-pad: 24px;
  --app-page-header-min-height: 72px;
  --app-page-header-padding: 12px 14px;
  --app-page-title-size: clamp(24px, 2vw, 30px);
  --app-form-gap: 16px;
  --app-card-pad: 20px;  
  --app-gap: var(--app-section-gap);
  /* primitive visuelle commune des vrais compteurs/KPI. */
  --app-kpi-min-h: 52px;
  --app-kpi-pad-y: 8px;
  --app-kpi-pad-x: 11px;
  --app-kpi-gap: 12px;
  --app-kpi-label-size: 12px;
  --app-kpi-value-size: 20px;
  --app-kpi-finance-value-size: 18px;
  --app-kpi-mobile-min-h: 48px;
  --app-kpi-mobile-pad-y: 6px;
  --app-kpi-mobile-pad-x: 8px;
  --app-kpi-mobile-label-size: 9px;
  --app-kpi-mobile-value-size: 17px;
  --app-modal-title-size:18px;
  --app-modal-kpi-min-h:48px;
  --app-modal-kpi-value-size:18px;
  --app-checkbox-size:18px;
}

html[data-app-page] {
  font-family: var(--app-font);
  
  
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
}

html[data-app-page] body {
  margin: 0;
  
  
  
  
  
}

html[data-app-page] *,
html[data-app-page] *::before,
html[data-app-page] *::after { box-sizing: border-box; }

html[data-app-page] h1:not(.rental-page-title),
html[data-app-page] h2,
html[data-app-page] h3,
html[data-app-page] h4,
html[data-app-page] .topbar h1:not(.rental-page-title){
  margin: 0;
  
  
  
  
}
html[data-app-page] h2 { font-size: 20px; line-height: 1.25; }
html[data-app-page] h3 { font-size: 17px; line-height: 1.3; }
html[data-app-page] h4 { font-size: 14px; line-height: 1.35; }

html[data-app-page] .subtitle,
html[data-app-page] .muted,
html[data-app-page] .admin-field-help,
html[data-app-page] .owner-field-help,
html[data-app-page] .field-help,
html[data-app-page] small{ color: var(--app-text-muted); }

html[data-app-page] label {
  display: block;
  
  
  
  
  
}

html[data-app-page] input:not([type="checkbox"]):not([type="radio"]):not([type="hidden"]),
html[data-app-page] select,
html[data-app-page] textarea {
  width: 100%;
  min-height: var(--app-control-h);
  margin: 0;
  
  border: 1px solid var(--app-border-strong);
  border-radius: var(--app-radius-sm);
  
  color: var(--app-text);
  font: inherit;
  line-height: 1.3;
  
  transition: border-color .16s ease, box-shadow .16s ease, background .16s ease;
}
html[data-app-page] select { cursor: pointer; }
html[data-app-page] input::placeholder,
html[data-app-page] textarea::placeholder { color: var(--app-text-subtle,#98a2b3); }
html[data-app-page] input:focus,
html[data-app-page] select:focus,
html[data-app-page] textarea:focus {
  outline: 0;
  border-color: var(--app-primary);
  
}
html[data-app-page] input:disabled,
html[data-app-page] select:disabled,
html[data-app-page] textarea:disabled {
  cursor: not-allowed;
  background: var(--app-neutral-soft,#f2f4f7);
  color: #667085;
}

html[data-app-page] button,
html[data-app-page] .btn {
  min-height: var(--app-control-h);
  padding: 8px 14px;
  border: 1px solid var(--app-border-strong);
  border-radius: var(--app-radius-sm);
  background: var(--app-surface);
  color: #344054;
  font: 600 14px/1.2 var(--app-font);
  box-shadow: var(--app-shadow-sm);
  cursor: pointer;
  transition: transform .12s ease, border-color .16s ease, background .16s ease, color .16s ease, box-shadow .16s ease;
}
html[data-app-page] button:hover,
html[data-app-page] .btn:hover { border-color: var(--app-text-subtle,#98a2b3); background: var(--app-surface-soft); }
html[data-app-page] button:active,
html[data-app-page] .btn:active { transform: translateY(1px); }
html[data-app-page] button:focus-visible,
html[data-app-page] .btn:focus-visible { outline: 3px solid color-mix(in srgb, var(--app-primary) 22%, transparent); outline-offset: 2px; }
html[data-app-page] .btn.primary:hover,
html[data-app-page] .btn.active:hover,
html[data-app-page] button.primary:hover,
html[data-app-page] button.active:hover { background: var(--app-primary-hover); }
html[data-app-page] .btn.danger:not(.icon-action-btn):not(.admin-icon-btn),
html[data-app-page] button.danger:not(.icon-action-btn):not(.admin-icon-btn) { border-color: var(--app-danger); background: var(--app-danger); color: #fff; }
html[data-app-page] button:disabled,
html[data-app-page] .btn:disabled { cursor: not-allowed; opacity: .56; transform: none; }

html[data-app-page] .container,
html[data-app-page] .main,
html[data-app-page] .admin-main-content,
html[data-app-page] .owner-content {
  color: var(--app-text);
}
html[data-app-page] .admin-main-content,
html[data-app-page] .owner-content,
html[data-app-page="gestion"] .main,
html[data-app-page="profitability"] .main { min-width: 0; }

html[data-app-page="legal-center"] .topbar,
html[data-app-page="legal-center"] .owner-topbar,
html[data-app-page="legal-center"] .page-header{
  min-height: 72px;
  padding: 0px;
  border: 1px solid var(--app-border);
  
  
  
}

.topbar {
  padding-bottom: 0px;
}

html[data-app-page] .summary-grid,
html[data-app-page] .summary {
  gap: var(--app-space-3);
}
html[data-app-page] .summary-card {
  min-height: 92px;
  padding: var(--app-space-4);
  text-align: left;
}
html[data-app-page] .summary-number {
  margin: 0 0 4px;
  color: var(--app-text);
  font-size: var(--app-kpi-value-size);
  font-weight: 750;
  line-height: 1.1;
}
html[data-app-page] .summary-label { color: var(--app-text-muted); font-size: 12px; font-weight: 600; }
html[data-app-page] th {
  
  
  
  
  
  
  
  text-align: left;
  
}

/* Modales courtes — contrat global. Les modules métier ne redéfinissent pas
   overlay, surface, rayon, ombre, padding ou barre d’actions. */
html[data-app-page] :where(.modal-backdrop,.owner-modal-backdrop,.dialog-backdrop,.audit-modal-backdrop){
  position:fixed;inset:0;z-index:2147483200;display:flex;align-items:center;justify-content:center;
  overflow:auto;padding:20px;background:rgba(15,23,42,.48);box-sizing:border-box;
}
html[data-app-page] :where(.modal-backdrop,.owner-modal-backdrop,.dialog-backdrop,.audit-modal-backdrop).hidden{display:none;}
html[data-app-page] :where(.modal-backdrop,.owner-modal-backdrop,.dialog-backdrop,.audit-modal-backdrop) > :where(.admin-modal,.admin-param-modal,.admin-logement-modal,.owner-modal,.modal-card,.dialog,.audit-modal),
html[data-app-page] :where(.admin-modal,.admin-param-modal,.admin-logement-modal,.owner-modal,.modal-card,.dialog,.audit-modal)[role="dialog"]{
  position:relative;width:min(720px,100%);max-width:100%;max-height:calc(100dvh - 40px);
  overflow:auto;overscroll-behavior:contain;padding:20px;box-sizing:border-box;
  border:1px solid var(--app-border);border-radius:var(--app-radius-lg,16px);
  background:var(--app-surface,#fff);color:var(--app-text);box-shadow:0 24px 64px rgba(15,23,42,.22);
}
html[data-app-page] :where(.owner-confirm-modal,.admin-config-password-modal){width:min(560px,100%);}
/* Boîte de confirmation courte (confirmDialog()/historicalCorrectionDialog() dans core/ui.js,
   openAdminConfirm() dans admin/core.js) : un message d'une phrase n'a pas besoin de la même
   largeur qu'un vrai formulaire. Classe partagée malgré son nom, volontairement pas dupliquée. */
html[data-app-page] .profitability-confirm-dialog{width:min(420px,100%);}
html[data-app-page] .rental-modal-wide{width:min(880px,100%);}

html[data-app-page] :where(.modal-actions,.owner-modal-actions),
html[data-app-page] :where(.dialog-backdrop,.modal-backdrop,.owner-modal-backdrop) > :where(.dialog,.admin-modal,.owner-modal,.modal-card) > .actions{
  display:flex;align-items:center;justify-content:flex-end;flex-wrap:wrap;gap:10px;margin-top:20px;
}
html[data-app-page] .rental-modal-close{
  position:absolute;top:12px;right:12px;z-index:20;display:inline-flex;align-items:center;justify-content:center;
  width:36px;min-width:36px;height:36px;min-height:36px;padding:0;border:1px solid var(--app-border);
  border-radius:999px;background:#fff;color:var(--app-text);box-shadow:var(--app-shadow-sm);font-size:22px;line-height:1;
}
@media(max-width:700px){
  html[data-app-page] :where(.modal-backdrop,.owner-modal-backdrop,.dialog-backdrop,.audit-modal-backdrop){padding:8px;}
  html[data-app-page] :where(.modal-backdrop,.owner-modal-backdrop,.dialog-backdrop,.audit-modal-backdrop) > :where(.admin-modal,.admin-param-modal,.admin-logement-modal,.owner-modal,.modal-card,.dialog,.audit-modal),
  html[data-app-page] :where(.admin-modal,.admin-param-modal,.admin-logement-modal,.owner-modal,.modal-card,.dialog,.audit-modal)[role="dialog"]{
    width:100%;max-width:100%;max-height:calc(100dvh - 16px);padding:16px;border-radius:16px;
  }
  html[data-app-page] :where(.modal-actions,.owner-modal-actions),
  html[data-app-page] :where(.dialog-backdrop,.modal-backdrop,.owner-modal-backdrop) > :where(.dialog,.admin-modal,.owner-modal,.modal-card) > .actions{
    display:grid;grid-template-columns:1fr;gap:8px;
  }
  html[data-app-page] :where(.modal-actions,.owner-modal-actions) > .btn,
  html[data-app-page] :where(.dialog-backdrop,.modal-backdrop,.owner-modal-backdrop) > :where(.dialog,.admin-modal,.owner-modal,.modal-card) > .actions > .btn{width:100%;min-width:0;}
}

html[data-app-page] .admin-modal-grid,
html[data-app-page] .owner-modal-grid,
html[data-app-page] .form-grid { gap: var(--app-space-4); }
html[data-app-page] .form-message,
html[data-app-page] .message {
  margin-top: 12px;
  padding: 10px 12px;
  border-radius: var(--app-radius-sm);
  font-size: 13px;
}

html[data-app-page] .filters,
html[data-app-page] #adminReservationTopFilters,
html[data-app-page] .owner-header-actions{
  gap: var(--app-space-3);
}
html[data-app-page] .filters select,
html[data-app-page] #adminReservationTopFilters select,
html[data-app-page] .owner-header-actions select{ min-height: var(--app-control-h-compact); }

html[data-app-page] .badge,
html[data-app-page] .status,
html[data-app-page] [class*="status-badge"]{
  display: inline-flex;
  align-items: center;
  min-height: 26px;
  padding: 4px 9px;
  border-radius: 999px;
  font-size: 12px;
  font-weight: 700;
  line-height: 1;
}

html[data-app-page] .hidden { display: none; }

@media (max-width: 900px) {
  html[data-app-page="legal-center"] .topbar,
html[data-app-page="legal-center"] .owner-topbar,
html[data-app-page="legal-center"] .page-header{ min-height: 0; padding: 14px; border-radius: 12px; }
}

@media (max-width: 640px) {
  :root { --app-control-h: 42px; }
  html[data-app-page] body { font-size: 14px; }
  html[data-app-page] h1,
html[data-app-page] .topbar h1:not(.rental-page-title){ font-size: 22px; }
}
html[data-app-page] h1:not(.rental-page-title),
html[data-app-page] h2,
html[data-app-page] h3,
html[data-app-page] h4,
html[data-app-page] .topbar h1:not(.rental-page-title){
  color: var(--app-text) ;
  font-family: var(--app-font) ;
  font-weight: 700 ;
  letter-spacing: -.02em ;
}
html[data-app-page] h1,
html[data-app-page] .topbar h1:not(.rental-page-title){
  font-size: var(--app-page-title-size) ;
  line-height: 1.2 ;
}
html[data-app-page] label {
  
  font-family: var(--app-font);
  
  
}
html[data-app-page] input:not([type="checkbox"]):not([type="radio"]):not([type="hidden"]),
html[data-app-page] select,
html[data-app-page] textarea {
  
  padding: 8px 11px ;
  
  
  background: var(--app-surface) ;
  
  
  box-shadow: var(--app-shadow-sm) ;
}
html[data-app-page] input:focus,
html[data-app-page] select:focus,
html[data-app-page] textarea:focus {
  
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--app-primary) 18%, transparent);
}
html[data-app-page] .btn:not(.icon-action-btn):not(.admin-icon-btn):not(.view-icon-btn):not(.icon),
html[data-app-page] button:not(.rental-modal-close):not([class*="calendar"]):not([class*="date-picker"]):not(.cleaner-kpi-button):not(.admin-legal-filter):not(.admin-res-sort-button):not(.icon-action-btn):not(.admin-icon-btn):not(.view-icon-btn):not(.icon) {
  min-height: var(--app-control-h) ;
  padding: 8px 14px ;
  border-radius: var(--app-radius-sm) ;
  font-family: var(--app-font) ;
  font-size: 14px ;
  font-weight: 600 ;
}
html[data-app-page] .btn.primary,
html[data-app-page] .btn.active,
html[data-app-page] button.primary,
html[data-app-page] button.active {
  border-color: var(--app-primary);
  background: var(--app-primary);
  color: #fff;
}
html[data-app-page="legal-center"] .topbar,
html[data-app-page="legal-center"] .owner-topbar,
html[data-app-page="legal-center"] .page-header{
  border-color: var(--app-border) ;
  border-radius: var(--app-radius) ;
  background: var(--app-surface) ;
  box-shadow: var(--app-shadow-sm) ;
}
html[data-app-page] .admin-modal,
html[data-app-page] .owner-modal,
html[data-app-page] [role="dialog"]:not(.rental-auth-card) {
  border: 1px solid var(--app-border) ;
  border-radius: var(--app-radius-lg) ;
  background: var(--app-surface) ;
  color: var(--app-text) ;
  box-shadow: 0 24px 64px rgba(15, 23, 42, .22) ;
}

html[data-app-page] button.admin-date-picker-card.active,
html[data-app-page] button.owner-date-picker-card.active {
  background: var(--app-surface);
  color: var(--app-text);
  border: 1px solid var(--app-primary);
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--app-primary) 14%, transparent);
}

html[data-app-page] button.admin-date-picker-card.active strong,
html[data-app-page] button.owner-date-picker-card.active strong,
html[data-app-page] button.admin-date-picker-card.active .admin-date-picker-hint,
html[data-app-page] button.owner-date-picker-card.active .owner-date-picker-hint,
html[data-app-page] button.admin-date-picker-card.active .admin-date-picker-label,
html[data-app-page] button.owner-date-picker-card.active .owner-date-picker-label {
  color: var(--app-text);
}

html[data-app-page] button.admin-date-picker-card,
html[data-app-page] button.owner-date-picker-card {
  justify-items: start ;
  align-content: center ;
}

html[data-app-page="admin"]{ 
  --admin-form-soft:#f8f9fc;
  --admin-form-border:#dce3f0;
  --admin-form-text:#18233b;
  --admin-form-muted:#66728b;
  --admin-form-radius:14px;
  --admin-form-section-radius:18px;
  --admin-form-field-height:44px;
}

html[data-app-page="admin"] :where(
  .admin-unified-form,
  .admin-param-modal,
  .admin-logement-modal,
  .admin-reservation-page-card,
  .admin-tech-panel.admin-param-modern-panel,
  .admin-param-modern-panel
){
  color:var(--admin-form-text);
  font-family:Inter,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;
}

html[data-app-page="admin"] :where(
  .admin-param-modal-section,
  .admin-logement-modal-section,
  #adminReservationModal .admin-logement-modal-section,
  .admin-param-subsection
){
  width:100%;
  margin:14px 0 0;
  padding:18px;
  background:#fff;
  border:0;
  border-radius:var(--admin-form-section-radius);
  box-shadow:none;
  box-sizing:border-box;
}

html[data-app-page="admin"] :where(
  .admin-param-modal-section:first-of-type,
  .admin-logement-modal-section:first-of-type,
  #adminReservationModal .admin-logement-modal-section:first-of-type,
  .admin-param-subsection-first
){margin-top:0;}

html[data-app-page="admin"] :where(.admin-reservation-page-card) > h3{
  margin:0 44px 8px 0;
  color:var(--admin-form-text);
  font-size:24px;
  line-height:1.2;
  font-weight:850;
  letter-spacing:0;
}
html[data-app-page="admin"] :where(.admin-reservation-page-card) > p{
  margin:0 44px 16px 0;
  color:var(--admin-form-muted);
  font-size:14px;
  line-height:1.5;
}
html[data-app-page="admin"] :where(.admin-param-modal-section,.admin-logement-modal-section,.admin-param-subsection) > h4,
html[data-app-page="admin"] :where(.admin-param-modal-section,.admin-logement-modal-section,.admin-param-subsection) > h3{
  margin:0 0 14px;
  color:var(--admin-form-text);
  font-size:16px;
  line-height:1.25;
  font-weight:850;
}

html[data-app-page="admin"] :where(.admin-param-modal-grid,.admin-logement-modal-grid,.admin-modal-grid,.admin-form-grid){
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:16px;
  align-items:start;
  width:100%;
  min-width:0;
}
html[data-app-page="admin"] :where(.admin-param-modal-grid,.admin-logement-modal-grid,.admin-modal-grid,.admin-form-grid) > *{
  min-width:0;
  margin:0;
}
html[data-app-page="admin"] :where(.admin-param-modal-grid,.admin-logement-modal-grid,.admin-modal-grid,.admin-form-grid) > .full{
  grid-column:1/-1;
}

html[data-app-page="admin"] :where(
  .admin-unified-form,
  .admin-param-modal,
  .admin-logement-modal,
  .admin-reservation-page-card,
  .admin-param-modern-panel,
  #content
) label:not(.checkline):not(.admin-logement-switch){
  display:block;
  margin:0 0 7px;
  color:var(--admin-form-text);
  font-size:13px;
  line-height:1.25;
  font-weight:750;
  text-transform:none;
  letter-spacing:0;
}

html[data-app-page="admin"] :where(
  .admin-unified-form,
  .admin-param-modal,
  .admin-logement-modal,
  .admin-reservation-page-card,
  .admin-param-modern-panel,
  #content
) :where(input:not([type="checkbox"]):not([type="radio"]):not([type="hidden"]),select,textarea){
  width:100%;
  min-width:0;
  max-width:none;
  min-height:var(--admin-form-field-height);
  padding:10px 12px;
  color:var(--admin-form-text);
  background:#fff;
  border:1px solid #ced7e8;
  border-radius:var(--admin-form-radius);
  box-shadow:none;
  font:inherit;
  font-size:14px;
  line-height:1.3;
  box-sizing:border-box;
}
html[data-app-page="admin"] :where(.admin-unified-form,.admin-param-modal,.admin-logement-modal,.admin-reservation-page-card,.admin-param-modern-panel,#content) textarea{
  min-height:96px;
  height:auto;
  resize:vertical;
}
html[data-app-page="admin"] :where(.admin-unified-form,.admin-param-modal,.admin-logement-modal,.admin-reservation-page-card,.admin-param-modern-panel,#content) :where(input,select,textarea):focus{
  outline:3px solid color-mix(in srgb,var(--app-primary) 16%,transparent);
  outline-offset:0;
  border-color:var(--app-primary);
  background:#fff;
}
html[data-app-page="admin"] :where(.admin-unified-form,.admin-param-modal,.admin-logement-modal,.admin-reservation-page-card,.admin-param-modern-panel,#content) :where(input,select,textarea):disabled{
  color:#66728b;
  background:#f1f3f7;
  border-color:#d8dee9;
  opacity:1;
  cursor:not-allowed;
}

html[data-app-page="admin"] :where(.admin-field-help,.field-help,.admin-table-subtitle){
  margin-top:6px;
  color:var(--admin-form-muted);
  font-size:12px;
  line-height:1.4;
  font-weight:500;
}
html[data-app-page="admin"] :where(.form-message,.message){
  margin-top:14px;
  padding:12px 14px;
  border-radius:12px;
  border:1px solid var(--admin-form-border);
  font-size:13px;
  line-height:1.45;
}
html[data-app-page="admin"] :where(.form-message,.message):empty{display:none;}

html[data-app-page="admin"] :where(.admin-logement-switch,.checkline){
  display:flex;
  align-items:flex-start;
  gap:10px;
  margin:0;
  padding:12px 14px;
  color:var(--admin-form-text);
  background:var(--admin-form-soft);
  border:1px solid var(--admin-form-border);
  border-radius:14px;
  box-sizing:border-box;
}
html[data-app-page="admin"] :where(.admin-logement-switch,.checkline) input[type="checkbox"]{
  width:16px;
  height:16px;
  min-width:16px;
  margin:1px 0 0;
  accent-color:var(--app-primary);
}

html[data-app-page="admin"] :where(.modal-actions,.admin-client-head-actions){
  display:flex;
  align-items:center;
  justify-content:flex-end;
  flex-wrap:wrap;
  gap:10px;
}
html[data-app-page="admin"] .modal-actions{
  position:sticky;
  bottom:-1px;
  z-index:3;
  margin:18px -20px -20px;
  padding:14px 20px;
  background:rgba(255,255,255,.96);
  border-top:1px solid var(--admin-form-border);
  backdrop-filter:blur(8px);
}
html[data-app-page="admin"] :where(.admin-unified-form,.admin-param-modal,.admin-logement-modal,.admin-reservation-page-card,.admin-param-modern-panel) :where(button,.btn){
  min-height:42px;
  padding:9px 16px;
  border-radius:12px;
  font-size:14px;
  font-weight:750;
}

/* Carte canonique liste+action : Propriétaires (Admin) et Prestataires (Rentabilité)
   partagent le même contrat visuel, pas une carte par module métier. */
:is(html[data-app-page="admin"],html[data-app-page="profitability"]) .admin-param-modern-panel{
  width:100%;
  padding:20px;
  background:#fff;
  border:1px solid var(--admin-form-border,var(--app-border));
  border-radius:20px;
  box-shadow:0 12px 35px rgba(24,35,59,.06);
}
:is(html[data-app-page="admin"],html[data-app-page="profitability"]) .admin-param-modern-panel.admin-main-parameter-panel{
  background:var(--app-surface);
  border-color:var(--app-border);
  border-radius:var(--app-radius);
  box-shadow:var(--app-shadow-sm);
}
html[data-app-page="admin"] .admin-param-modern-panel.admin-main-parameter-panel.admin-inventory-panel{
  background:transparent;
}
html[data-app-page="admin"] .admin-param-modern-hero{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:16px;
  margin:0 0 18px;
  padding:0;
  background:transparent;
  border:0;
  box-shadow:none;
}

@media(max-width:760px){
  html[data-app-page="admin"] :where(.admin-param-modal-grid,.admin-logement-modal-grid,.admin-modal-grid,.admin-form-grid){
    grid-template-columns:1fr;
    gap:12px;
  }
  html[data-app-page="admin"] :where(.admin-param-modal-section,.admin-logement-modal-section,#adminReservationModal .admin-logement-modal-section,.admin-param-subsection){
    padding:14px;
    border-radius:15px;
  }
  html[data-app-page="admin"] :where(.admin-param-modal,.admin-logement-modal){
    width:calc(100vw - 16px);
    max-width:calc(100vw - 16px);
    padding:14px;
    border-radius:18px;
  }
  html[data-app-page="admin"] .modal-actions{
    margin:16px -14px -14px;
    padding:12px 14px;
  }
  html[data-app-page="admin"] .admin-param-modern-hero{
    align-items:flex-start;
    flex-direction:column;
  }
}

html[data-app-page="admin"] body {
  overflow-x: hidden;
  --app-content-margin-inline:0;
}

html[data-app-page="admin"] .topbar {
  min-height: 0 ;
  padding: 0 ;
  border: 0 ;
  border-radius: 0 ;
  background: transparent ;
  box-shadow: none ;
}

html[data-app-page="admin"] #adminReservationTopCard.top-card {
  width: 100% ;
  min-width: 0 ;
  min-height: 72px ;
  display: grid ;
  align-items: center ;
  gap: 18px 24px ;
  padding: 12px 14px ;
  border: 1px solid var(--app-border) ;
  border-radius: var(--app-radius-lg) ;
  background: var(--app-surface) ;
  box-shadow: var(--app-shadow-sm) ;
}

html[data-app-page="admin"] #adminReservationTopCard.hidden,
html[data-app-page="admin"] #adminReservationTopCard.admin-top-card-hidden {
  display: none;
}

html[data-app-page="admin"] #adminReservationTopFilters{--arf-y:var(--rental-filter-year-width,120px);--arf-p:168px;--arf-l:var(--rental-filter-property-width,280px);--arf-s:172px;--arf-m:154px;--arf-g:10px;min-width:0;margin:0;padding:0;border:0;border-radius:0;background:transparent;box-shadow:none}
html[data-app-page="admin"] #adminReservationTopFilters.hidden{display:none}
html[data-app-page="admin"] #adminReservationTopFilters .admin-top-field{display:grid;grid-template-rows:46px;align-content:end;gap:0;min-width:0;margin:0}
html[data-app-page="admin"] #adminReservationTopFilters .admin-top-field>span{min-height:0}
html[data-app-page="admin"] #adminReservationTopFilters select{width:100%;min-width:0;max-width:none;height:46px;border-radius:var(--rental-filter-radius,12px);appearance:auto;border:1px solid var(--app-border-strong,#c9d2e3);background:#fff}
@media(min-width:900px){html[data-app-page="admin"]:not(.app-sidebar-collapsed) #adminReservationTopFilters{--arf-y:var(--rental-filter-year-width,120px);--arf-p:130px;--arf-l:var(--rental-filter-property-width,280px);--arf-s:140px;--arf-m:125px;--arf-g:8px}}
@media(min-width:1280px){html[data-app-page="admin"] #adminReservationTopCard.top-card{grid-template-columns:minmax(170px,.8fr) minmax(0,auto)}html[data-app-page="admin"] #adminReservationTopFilters{display:flex;align-items:end;justify-content:flex-end;flex-wrap:nowrap;gap:var(--arf-g);width:auto;max-width:100%}html[data-app-page="admin"] #adminReservationTopFilters .admin-top-field{flex:0 0 auto}html[data-app-page="admin"] #adminReservationTopFilters .admin-top-field--year{width:var(--arf-y)}html[data-app-page="admin"] #adminReservationTopFilters .admin-top-field--property{width:var(--arf-l)}html[data-app-page="admin"] #adminReservationTopFilters .admin-top-field--mode{width:var(--arf-m)}}
@media(min-width:900px) and (max-width:1279px){html[data-app-page="admin"] #adminReservationTopCard.top-card{grid-template-columns:1fr}html[data-app-page="admin"] #adminReservationTopFilters{display:grid;grid-template-columns:var(--arf-y) var(--arf-p) var(--arf-l) var(--arf-s) var(--arf-m);align-items:end;justify-content:end;gap:var(--arf-g);width:100%}}

html[data-app-page="admin"] #adminReservationTopFilters select{
  overflow:visible;text-overflow:clip;white-space:nowrap;
}
/* V3.0.0-rc.85 — commandes de vue Réservations visibles et stables. */
html[data-app-page="admin"] .admin-view-glyph{
  width:20px;height:20px;display:inline-flex;
  align-items:center;justify-content:center;color:currentColor;
  pointer-events:none;
}
html[data-app-page="admin"] .admin-view-glyph svg{
  width:20px;height:20px;display:block;overflow:visible;
  color:currentColor;stroke:currentColor;fill:none;
  stroke-width:2;stroke-linecap:round;stroke-linejoin:round;
}
html[data-app-page="admin"] .view-icon-btn[aria-label="Vue cartes"] .admin-view-glyph svg path{
  fill:currentColor;stroke:none;
}
html[data-app-page="admin"] .view-icon-btn[aria-label="Vue tableau"] .admin-view-glyph svg path,
html[data-app-page="admin"] .view-icon-btn[aria-label="Vue Liste"] .admin-view-glyph svg path,
html[data-app-page="admin"] .view-icon-btn[aria-label="Vue Liste"] .admin-view-glyph svg rect{
  fill:none;stroke:currentColor;
}
html[data-app-page="admin"] .admin-view-error{width:100%;padding:18px;border:1px solid var(--app-danger-border,#efb9b9);border-radius:var(--app-radius-lg);background:var(--app-danger-surface,#fff5f5)}
html[data-app-page="admin"] .admin-view-error p{margin:8px 0 14px}
html[data-app-page="admin"] body.admin-view-data-refreshing #adminReservationTopCard{cursor:progress}
@media (max-width:899px){
  html[data-app-page="admin"] #adminReservationTopFilters .admin-top-field--property{grid-column:1/-1}
}
html[data-app-page="admin"] .admin-technical-controls {
  display: none;
}

html[data-app-page="admin"] .admin-content.content {
  min-width: 0;
  padding-top: 0;
}

html[data-app-page="admin"] #summary.hidden,
html[data-app-page="admin"] #summary:empty,
html[data-app-page="admin"] #meta:empty,
html[data-app-page="admin"] #content:empty {
  display: none;
}

html[data-app-page="admin"] #summary.summary-grid {
  margin: 0;
}

html[data-app-page="admin"] #meta.meta {
  margin: 0;
}

html[data-app-page="admin"] #content,
html[data-app-page="admin"] #content > * {
  width: 100%;
  min-width: 0;
  max-width: none;
  margin-left: 0;
  margin-right: 0;
  margin-top: 6px;
  box-sizing: border-box;
}

html[data-app-page="admin"] .admin-page-flat {
  width: 100%;
  min-width: 0;
  margin: 0;
}

html[data-app-page="admin"] .admin-configuration-panel{
  width:100%;max-width:none;min-width:0;margin:0;
}

@media (max-width: 899px) {
  html[data-app-page="admin"] .app-shell.admin-shell {
    display: block;
  }

  html[data-app-page="admin"] #adminReservationTopCard.top-card {
    grid-template-columns: 1fr;
  }

  html[data-app-page="admin"] #adminReservationTopFilters {
    width: 100%;
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 10px;
  }
}

@media (max-width: 560px) {
  html[data-app-page="admin"] #adminReservationTopFilters {
    grid-template-columns: 1fr;
  }
}

html[data-app-page="admin"] .admin-extra-types-view{
  width:100%;min-width:0;display:grid;gap:var(--app-table-action-gap);
}
html[data-app-page="admin"] .admin-extra-types-table-wrap{width:100%;min-width:0;overflow-x:auto}
html[data-app-page="admin"] .admin-extra-types-table input{width:100%}
html[data-app-page="admin"] .admin-standalone-content{width:100%;min-width:0;max-width:none;display:grid;gap:12px}

html[data-app-page="admin"] .admin-vat-control{
  display:grid;grid-template-columns:minmax(180px,.8fr) minmax(150px,.55fr);gap:10px;align-items:center;
}
html[data-app-page="admin"] .admin-vat-control > :where(select,input){width:100%;min-width:0}
html[data-app-page="admin"] .admin-vat-control > input[hidden]{display:none}

html[data-app-page="admin"] #content :where(.rental-table-frame,.admin-reference-table-wrap,.admin-modern-table-wrap,.admin-business-table-wrap,.admin-log-table-wrap,.admin-param-table-wrap,.admin-res-table-wrap,.table-wrap,.journal-table-wrap):not(.rental-admin-table-frame){
  width:100%;max-width:100%;padding:0;
  border:0;border-radius:0;background:transparent;
  box-shadow:none;overflow-x:auto;
}
html[data-app-page="admin"] #content table{
  width:100%;max-width:none;border-collapse:collapse;border-spacing:0;
  border:0;border-radius:0;background:transparent;box-shadow:none;
  font-variant-numeric:tabular-nums;
}
html[data-app-page="admin"] #content table :where(thead,tr,th,td){border-radius:0;box-shadow:none}
html[data-app-page="admin"] #content table th{
  padding:11px 12px;background:var(--app-surface-soft);color:var(--app-text);
  border:0;border-bottom:1px solid var(--app-border);
  text-align:left;font-size:12px;font-weight:800;line-height:1.25;white-space:nowrap;
}
html[data-app-page="admin"] #content table td{
  padding:11px 12px;background:var(--app-surface);color:var(--app-text);
  border:0;border-bottom:1px solid var(--app-border);
  vertical-align:middle;line-height:1.35;
}
html[data-app-page="admin"] #content table tbody tr:last-child > td{border-bottom:0}
html[data-app-page="admin"] #content table tbody tr:hover > td{background:var(--app-surface-soft)}
html[data-app-page="admin"] #content table :where(.numeric,[data-align="right"]),
html[data-app-page="admin"] #content table th:last-child:empty,
html[data-app-page="admin"] #content table td:last-child:has(button){text-align:right}
html[data-app-page="admin"] #content table :where(input[type="number"]){text-align:right;font-weight:850;line-height:1.08;font-variant-numeric:tabular-nums;}
html[data-app-page="admin"] #content table :where(.col-actions,.action-column,.admin-param-actions,.admin-extra-type-actions){
  text-align:right;white-space:nowrap;box-shadow:none;
}
html[data-app-page="admin"] #content table .col-actions{position:static;background:var(--app-surface)}

@media(max-width:700px){
  html[data-app-page="admin"] .admin-vat-control{grid-template-columns:1fr}

}

html[data-app-page="gestion"] .filters > .field > .sr-only,
html[data-app-page="admin"] #adminReservationTopFilters .admin-top-field > .sr-only,
html[data-app-page="admin"] .journal-filter-row label > .sr-only {
  position: absolute ;
  width: 1px ;
  height: 1px ;
  padding: 0 ;
  margin: -1px ;
  overflow: hidden ;
  clip: rect(0, 0, 0, 0) ;
  white-space: nowrap ;
  border: 0 ;
}

html[data-app-page="admin"] body :where(.rental-table-frame,.rental-table-scroll-region,.rental-reservation-table-scroll,.table-responsive-rental,.table-wrap,.admin-table-wrap,.admin-reference-table-wrap,.admin-modern-table-wrap,.admin-business-table-wrap,.admin-ownerfollowup-table-wrap,.admin-management-table-wrap,.admin-log-table-wrap,.admin-param-table-wrap,.admin-res-table-wrap,.admin-ical-table-wrap,.admin-legal-table-wrap,.admin-extra-types-table-wrap,.admin-operation-table-shell,.admin-operation-table-scroll,.journal-table-wrap):not(.rental-admin-table-frame) {
  width: 100% ;
  max-width: 100% ;
  padding: 0 ;
  border: 0 ;
  border-radius: 0 ;
  background: transparent ;
  box-shadow: none ;
  overflow-x: auto ;
}

html[data-app-page="admin"] body :where(
  .admin-content,
  .admin-standalone-content,
  .rental-page-view
) :where(div, section):has(> table):not(.rental-admin-table-frame) {
  width: 100% ;
  max-width: 100% ;
  padding: 0 ;
  border: 0 ;
  border-radius: 0 ;
  background: transparent ;
  box-shadow: none ;
  overflow-x: auto ;
}

html[data-app-page="admin"] body table {
  border-radius: 0 ;
  box-shadow: none ;
}

html[data-app-page] .topbar > .top-card{
  width:100% ;
  min-width:0 ;
  padding:0 14px ;
  border:1px solid var(--app-border,#dbe2f0) ;
  border-radius:14px ;
  background:#fff ;
  box-shadow:0 8px 22px rgba(20,34,70,.07) ;
}
html[data-app-page="admin"] #adminReservationTopCard.top-card,
html[data-app-page="gestion"] .topbar > .top-card,
html[data-app-page="admin"] .journal-main .topbar > .top-card{
  gap:12px ;
}

html[data-app-page="admin"] .journal-page,
html[data-app-page="admin"] .journal-page > *{min-width:0;}
html[data-app-page="admin"] .journal-table-panel,
html[data-app-page="admin"] .journal-detail-card{
  background:#fff ;
}
html[data-app-page="admin"] .journal-table-panel{
  border:1px solid var(--app-border,#dbe2f0) ;
  border-radius:14px ;
  box-shadow:0 8px 22px rgba(20,34,70,.07) ;
  padding:14px ;
}
html[data-app-page="admin"] .journal-table-wrap{background:transparent ;}
html[data-app-page="admin"] .journal-table,
html[data-app-page="admin"] .journal-table td{background:#fff ;}
html[data-app-page="admin"] .journal-table th{background:var(--app-surface-soft,#f5f7fb) ;}

html[data-app-page="admin"] .admin-extra-types-view{
  background:#fff ;
}
html[data-app-page="admin"] .admin-extra-types-table{min-width:420px ;}
html[data-app-page="admin"] .admin-extra-type-name-cell{text-align:left ;}
html[data-app-page="admin"] .admin-extra-type-name{
  width:100% ;
  display:flex ;
  align-items:center ;
  justify-content:flex-start ;
  min-height:42px ;
  padding:0 ;
  border:0 ;
  background:transparent ;
  box-shadow:none ;
  color:var(--app-text,#17143f) ;
  font:inherit ;
  font-weight:700 ;
  text-align:left ;
  cursor:pointer ;
}
html[data-app-page="admin"] .admin-extra-type-name:hover{
  color:var(--app-primary-color,#385bf8);
}

html[data-app-page="admin"] .admin-extra-type-modal{
  width:min(520px, calc(100vw - 28px)) ;
  max-width:520px ;
  padding:22px ;
  background:#fff ;
}
html[data-app-page="admin"] .admin-extra-type-modal-grid{display:grid ; gap:12px ;}
html[data-app-page="admin"] .admin-extra-type-modal-grid .full{min-width:0 ;}
html[data-app-page="admin"] .admin-extra-type-modal-grid input{
  width:100% ;
  min-height:44px ;
  height:44px ;
}
body.admin-extra-type-modal-open{overflow:hidden ;}

@media (max-width: 760px){
  html[data-app-page] .topbar > .top-card{
    padding:0 14px;
  }
  html[data-app-page="admin"] .journal-header-actions,
  html[data-app-page="admin"] .admin-extra-types-actions{
    width:100%;
  }
  html[data-app-page="admin"] .journal-header-actions .btn,
  html[data-app-page="admin"] .admin-extra-types-actions .btn{
    flex:1 1 auto;
  }
  html[data-app-page="admin"] .admin-extra-types-table{min-width:360px;}
}

html[data-app-page="admin"] body.admin-view-access :where(
  .admin-param-modal-section,
  .admin-logement-modal-section,
  #adminReservationModal .admin-logement-modal-section,
  .admin-param-subsection
) {
  width: 100% ;
  margin: 14px 0 0 ;
  padding: 0 ;
  background: #fff ;
  border: 0 ;
  border-radius: var(--admin-form-section-radius) ;
  box-shadow: none ;
  box-sizing: border-box ;
}

html[data-app-page="admin"] .admin-extra-type-delete-wrap{
  display:inline-flex ;
  align-items:center ;
  justify-content:center ;
}
html[data-app-page="admin"] .admin-extra-type-delete .rental-mask-icon{
  width:18px ;
  height:18px ;
}
html[data-app-page="admin"] .admin-extra-type-delete-wrap.is-disabled .admin-extra-type-delete{
  opacity:.38;
  cursor:not-allowed;
  filter:grayscale(.25);
}

html[data-app-page],
html[data-app-page] body{
  width:100%;
  max-width:100%;
  min-width:0;
  overflow-x:hidden;
}
html[data-app-page] :where(.app-shell,.admin-shell,.owner-shell,.lc-app,.main,.admin-main-content,.owner-content,.lc-main,.app-content,.content,#content,#viewRoot,.section,.panel,.card,.box,.topbar,.top-card,.summary,.summary-grid,.summary-card,.owner-view-panel,form,fieldset){min-width:0;max-width:100%;box-sizing:border-box}
html[data-app-page] :where(input,select,textarea,.field,.full,.detail,.comment,.guest,.guest-phone,.property,.admin-date-box,.admin-inline-detail){min-width:0;max-width:100%}
html[data-app-page] :where(.guest,.guest-phone,.property,.detail,.comment,.admin-inline-detail,.admin-date-value,.owner-field-help,.admin-field-help){overflow-wrap:anywhere;word-break:normal}
html[data-app-page] :where(.table-wrap,.table-responsive,.rental-table-frame,.admin-res-table-wrap,.report-table-desktop,.journal-table-wrap){max-width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}

html[data-app-page="admin"] .topbar,
html[data-app-page="gestion"] .topbar,
html[data-app-page="admin"] .journal-main .topbar{
  position:relative;
  z-index:1;
}

@media(max-width:1024px){
  html[data-app-page="gestion"]:not([data-admin-parent-viewport="desktop"]) main.main,
html[data-app-page="legal-center"] .lc-main{
    width:100%;
    max-width:100vw;
    min-width:0;
    margin:0;
    overflow-x:hidden;
  }
  html[data-app-page="owner"] #ownerApp:not(.hidden){
    width:100%;
    max-width:100vw;
    min-width:0;
    margin:0;
    overflow-x:hidden;
  }
  html[data-app-page="owner"] .owner-shell,
  html[data-app-page="owner"] .owner-content{
    width:100%;
    max-width:100%;
    min-width:0;
    margin:0;
  }
  html[data-app-page]:not([data-admin-parent-viewport="desktop"]) .topbar,
html[data-app-page]:not([data-admin-parent-viewport="desktop"]) .owner-topbar{
    width:100%;
    max-width:100%;
    min-width:0;
    margin:0 0 12px;
  }
  html[data-app-page]:not([data-admin-parent-viewport="desktop"]) .topbar > .top-card,
html[data-app-page]:not([data-admin-parent-viewport="desktop"]) .owner-topbar{
    width:100%;
    max-width:100%;
    min-width:0;
    border-radius:14px;
  }
  html[data-app-page]:not([data-admin-parent-viewport="desktop"]) .top-title,
  html[data-app-page]:not([data-admin-parent-viewport="desktop"]) .top-title h1:not(.rental-page-title),
  html[data-app-page]:not([data-admin-parent-viewport="desktop"]) .owner-page-title{
    min-width:0;
    max-width:100%;
    overflow-wrap:anywhere;
  }
  html[data-app-page]:not([data-admin-parent-viewport="desktop"]) :where(.filters,#adminReservationTopFilters,.owner-header-actions,.journal-header-actions,.panel-head,.section-title){
    width:100%;
    min-width:0;
    max-width:100%;
    flex-wrap:wrap;
  }
  html[data-app-page]:not([data-admin-parent-viewport="desktop"]) :where(.filters .field,#adminReservationTopFilters .admin-top-field,.owner-header-actions>* ){
    min-width:0;
    max-width:100%;
  }
  html[data-app-page] :where(.admin-modal-grid,.owner-modal-grid,.form-grid,.lc-settings-grid,.lc-form-row){
    grid-template-columns:minmax(0,1fr);
  }
  html[data-app-page] :where(.admin-modal,.owner-modal,[role="dialog"]:not(.rental-auth-card)){
    width:min(100%,720px);
    max-width:calc(100vw - 20px);
    max-height:calc(100dvh - 20px);
    padding:16px;
    overflow:auto;
  }
}

@media(max-width:640px){
  html[data-app-page="admin"] #summary.summary-grid,
  html[data-app-page="owner"] .summary{
    grid-template-columns:repeat(2,minmax(0,1fr));
    gap:8px;
  }
  html[data-app-page="admin"] #summary .summary-card,
  html[data-app-page="owner"] .summary-card{
    width:100%;
    min-width:0;
    min-height:68px;
    padding:10px 12px;
  }
  html[data-app-page="admin"] #content .admin-cards{
    display:grid;
    grid-template-columns:minmax(0,1fr);
    width:100%;
    min-width:0;
    gap:10px;
  }
  html[data-app-page="admin"] #content .admin-cards > article.card{
    width:100%;
    min-width:0;
    max-width:100%;
    margin:0;
    padding:12px;
    overflow:hidden;
  }
  html[data-app-page="admin"] #content article.card .card-head{
    display:grid;
    grid-template-columns:minmax(0,1fr);
    gap:8px;
  }
  html[data-app-page="admin"] #content article.card .guest{
    display:block;
    width:100%;
    white-space:normal;
    overflow:visible;
    text-overflow:clip;
    font-size:17px;
  }
  html[data-app-page="admin"] #content article.card .guest-phone{
    display:block;
    width:100%;
    margin-top:3px;
    color:var(--app-text-muted);
    font-size:13px;
    font-weight:650;
    white-space:normal;
  }
  html[data-app-page="admin"] #content article.card .admin-inline-detail{
    display:grid;
    grid-template-columns:minmax(0,1fr);
    gap:4px;
    white-space:normal;
    overflow:visible;
  }
  html[data-app-page="admin"] #content article.card .admin-inline-detail > span{
    width:100%;
    min-width:0;
    white-space:normal;
    overflow:visible;
    text-overflow:clip;
  }
  html[data-app-page="admin"] #content article.card .admin-inline-detail > span:nth-child(2){display:none}
  html[data-app-page="admin"] #content article.card .admin-dates-row{
    grid-template-columns:minmax(0,1fr);
    gap:7px;
  }
  html[data-app-page="admin"] #content article.card .comment{
    width:100%;
    min-width:0;
    white-space:normal;
    overflow:visible;
    text-overflow:clip;
  }
  html[data-app-page="admin"] #content article.card .comment strong{display:block;margin-bottom:3px}
  html[data-app-page="admin"] #content article.card .admin-edit-actions{
    width:100%;
    max-width:100%;
    justify-content:flex-end;
    flex-wrap:wrap;
  }
}

@media(max-width:380px){
  html[data-app-page="admin"] #summary.summary-grid,
  html[data-app-page="owner"] .summary{grid-template-columns:minmax(0,1fr)}
  html[data-app-page] :where(.btn,button:not(.rental-modal-close)){
    max-width:100%;
  }
}

@media (max-width: 700px){
  html[data-app-page],
  html[data-app-page] body{
    width:100%;
    max-width:100%;
    overflow-x:hidden;
  }
  html[data-app-page] :where(main.main,.admin-main-content,.owner-content,.lc-main,#ownerApp,#viewRoot,.content,.panel,.section,.form-grid,.field,.actions,.panel-head,.table-wrap,.data-table){
    min-width:0;
    max-width:100%;
    box-sizing:border-box;
  }

  
  html[data-app-page="admin"] .top-card,
html[data-app-page="gestion"] .top-card,
html[data-app-page="owner"] .owner-topbar{
    padding-left:76px;
  }
  html[data-app-page] .top-title h1:not(.rental-page-title){
    font-size:20px;
    line-height:1.12;
    word-break:break-word;
    overflow-wrap:anywhere;
  }

  
  html[data-app-page="gestion"] .filters,
  html[data-app-page="admin"] .filters,
  html[data-app-page="legal-center"] .filters,
  html[data-app-page="owner"] .filters{
    display:grid;
    grid-template-columns:minmax(0,1fr);
    gap:10px;
    align-items:stretch;
  }
  html[data-app-page] .filters .field,
html[data-app-page] .filters > *,
html[data-app-page] .actions > *{
    min-width:0;
  }
  html[data-app-page="gestion"] .panel-head,
  html[data-app-page="admin"] .panel-head{
    flex-direction:column;
    align-items:stretch;
  }
  html[data-app-page="gestion"] .panel-head.actions-only .actions,
  html[data-app-page="gestion"] .panel-head .actions,
  html[data-app-page="admin"] .panel-head .actions{
    width:100%;
    justify-content:flex-end;
    flex-wrap:wrap;
  }
  html[data-app-page="gestion"] .panel-head .actions .btn,
  html[data-app-page="admin"] .panel-head .actions .btn{
    min-height:42px;
  }

  
  html[data-app-page="gestion"] .panel{padding:14px;overflow:hidden}
  html[data-app-page="gestion"] .table-wrap{
    width:100%;
    max-width:100%;
    overflow-x:auto;
    overflow-y:hidden;
    -webkit-overflow-scrolling:touch;
    padding-bottom:8px;
  }
  html[data-app-page="gestion"] .data-table{
    width:max-content;
    min-width:100%;
    max-width:none;
    table-layout:auto;
  }
  
  html[data-app-page="gestion"] #settingsTable{min-width:980px}
  
  html[data-app-page="gestion"] #settingsTable th,
html[data-app-page="gestion"] #settingsTable td{
    white-space:nowrap;
  }
  
  
  
  
  
  html[data-app-page="gestion"] #settingsTable input,
html[data-app-page="gestion"] #settingsTable select{
    width:100%;
    min-width:0;
    max-width:100%;
  }
  
  html[data-app-page="gestion"] .form-grid .wide,
html[data-app-page="gestion"] .form-actions{
    grid-column:1 / -1;
  }
  html[data-app-page="gestion"] .field textarea{min-height:120px}

  
  html[data-app-page="admin"] .admin-param-subsection .admin-modern-table-wrap,
html[data-app-page="admin"] .admin-extra-types-table-wrap,
html[data-app-page="admin"] .table-wrap{
    width:100%;
    max-width:100%;
    overflow-x:auto;
    overflow-y:hidden;
    -webkit-overflow-scrolling:touch;
    padding-bottom:10px;
  }
  html[data-app-page="admin"] .admin-access-roles-table{min-width:760px;width:760px;max-width:none}
  html[data-app-page="admin"] .admin-access-fields-table{min-width:860px;width:860px;max-width:none}
  html[data-app-page="admin"] .admin-extra-types-table{min-width:560px;width:560px;max-width:none}
  html[data-app-page="admin"] .admin-access-roles-table :where(th,td),
  html[data-app-page="admin"] .admin-access-fields-table :where(th,td),
  html[data-app-page="admin"] .admin-extra-types-table :where(th,td){
    white-space:nowrap;
    overflow:hidden;
    text-overflow:ellipsis;
  }
  html[data-app-page="admin"] .admin-access-roles-table :where(th,td):nth-child(1),
  html[data-app-page="admin"] .admin-access-fields-table :where(th,td):nth-child(1),
  html[data-app-page="admin"] .admin-extra-types-table :where(th,td):nth-child(1){
    white-space:normal;
    overflow-wrap:anywhere;
  }
  html[data-app-page="admin"] .admin-access-roles-table :where(th,td):nth-child(4),
  html[data-app-page="admin"] .admin-access-fields-table :where(th,td):nth-child(4),
  html[data-app-page="admin"] .admin-extra-types-table :where(th,td):last-child{
    min-width:88px;
    text-align:center;
  }
  html[data-app-page="admin"] .admin-mini-badge,
html[data-app-page="admin"] .admin-table-actions{
    white-space:nowrap;
  }
}

@media (max-width: 420px){
  html[data-app-page="gestion"] .metric-grid,
html[data-app-page="admin"] #summary.summary-grid,
html[data-app-page="owner"] .summary{
    grid-template-columns:minmax(0,1fr);
  }
  html[data-app-page="gestion"] .panel-head .actions .btn,
  html[data-app-page="admin"] .panel-head .actions .btn{
    flex:1 1 100%;
  }
}

@media (max-width: 640px){
  
  html[data-app-page="gestion"] .report-extra-group,
html[data-app-page="gestion"] .card-list,
html[data-app-page="gestion"] .mobile-card{
    width:100%;
    min-width:0;
    max-width:100%;
  }
  html[data-app-page="gestion"] .report-extra-group{
    padding:12px 0;
    overflow:hidden;
  }
  html[data-app-page="gestion"] .report-extra-group-head,
  html[data-app-page="gestion"] .mobile-card header{
    display:grid;
    grid-template-columns:minmax(0,1fr) auto;
    align-items:start;
    gap:8px 12px;
  }
  html[data-app-page="gestion"] .report-extra-group-head > *,
  html[data-app-page="gestion"] .mobile-card header > *{
    min-width:0;
    max-width:100%;
  }
  html[data-app-page="gestion"] .report-extra-group-head h3,
  html[data-app-page="gestion"] .mobile-card header > div > strong,
  html[data-app-page="gestion"] .mobile-card .status-line{
    white-space:normal;
    overflow:visible;
    text-overflow:clip;
    overflow-wrap:anywhere;
    word-break:break-word;
  }
  html[data-app-page="gestion"] .report-extra-group-head > strong,
  html[data-app-page="gestion"] .mobile-card header > strong,
  html[data-app-page="gestion"] .mobile-card header > span{
    white-space:nowrap;
    text-align:right;
    justify-self:end;
  }
  html[data-app-page="gestion"] .mobile-card dl{
    width:100%;
    min-width:0;
    grid-template-columns:repeat(2,minmax(0,1fr));
  }
  html[data-app-page="gestion"] .mobile-card dl > div,
  html[data-app-page="gestion"] .mobile-card dd{
    min-width:0;
    max-width:100%;
    overflow-wrap:anywhere;
  }

  

  
  html[data-app-page="admin"] body.admin-view-access .admin-param-subsection{
    overflow:visible;
  }
  html[data-app-page="admin"] body.admin-view-access .admin-modern-table-wrap{
    overflow:visible;
    padding:0;
  }
  html[data-app-page="admin"] body.admin-view-access :where(.admin-access-roles-table,.admin-access-fields-table),
  html[data-app-page="admin"] body.admin-view-access :where(.admin-access-roles-table,.admin-access-fields-table) tbody{
    display:block;
    width:100%;
    min-width:0;
    max-width:100%;
  }
  html[data-app-page="admin"] body.admin-view-access :where(.admin-access-roles-table,.admin-access-fields-table) thead,
  html[data-app-page="admin"] body.admin-view-access :where(.admin-access-roles-table,.admin-access-fields-table) colgroup{
    display:none;
  }
  html[data-app-page="admin"] body.admin-view-access :where(.admin-access-roles-table,.admin-access-fields-table) tbody tr{
    position:relative;
    display:grid;
    grid-template-columns:minmax(0,1fr) auto;
    gap:8px 12px;
    width:100%;
    min-width:0;
    margin:0 0 10px;
    padding:14px;
    border:1px solid var(--app-border,#dbe2f0);
    border-radius:14px;
    background:#fff;
    box-shadow:0 5px 14px rgba(20,34,70,.04);
  }
  html[data-app-page="admin"] body.admin-view-access :where(.admin-access-roles-table,.admin-access-fields-table) tbody td{
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:10px;
    width:auto;
    min-width:0;
    max-width:100%;
    padding:3px 0;
    border:0;
    background:#fff;
    white-space:normal;
    overflow:visible;
    text-overflow:clip;
    overflow-wrap:anywhere;
  }
  html[data-app-page="admin"] body.admin-view-access .admin-access-roles-table tbody td:nth-child(1),
  html[data-app-page="admin"] body.admin-view-access .admin-access-fields-table tbody td:nth-child(1){
    grid-column:1 / -1;
    padding-right:48px;
    font-size:16px;
    font-weight:800;
  }
  html[data-app-page="admin"] body.admin-view-access .admin-access-roles-table tbody td:nth-child(2),
  html[data-app-page="admin"] body.admin-view-access .admin-access-roles-table tbody td:nth-child(3),
  html[data-app-page="admin"] body.admin-view-access .admin-access-fields-table tbody td:nth-child(2){
    grid-column:1 / -1;
    border-top:1px solid var(--app-border,#dbe2f0);
    padding-top:9px;
  }
  html[data-app-page="admin"] body.admin-view-access .admin-access-roles-table tbody td:nth-child(2)::before{content:"Droits actifs";font-size:12px;font-weight:800;color:var(--app-text-muted,#667085)}
  html[data-app-page="admin"] body.admin-view-access .admin-access-roles-table tbody td:nth-child(3)::before{content:"Statut";font-size:12px;font-weight:800;color:var(--app-text-muted,#667085)}
  html[data-app-page="admin"] body.admin-view-access .admin-access-fields-table tbody td:nth-child(2)::before{content:"Utilisé par";font-size:12px;font-weight:800;color:var(--app-text-muted,#667085)}
  html[data-app-page="admin"] body.admin-view-access .admin-access-roles-table tbody td:nth-child(4),
  html[data-app-page="admin"] body.admin-view-access .admin-access-fields-table tbody td:nth-child(3){
    position:absolute;
    top:10px;
    right:10px;
    width:auto;
    min-width:0;
    padding:0;
  }
  html[data-app-page="admin"] body.admin-view-access .admin-table-actions{
    justify-content:flex-end;
    flex-wrap:nowrap;
  }
  html[data-app-page="admin"] body.admin-view-access .admin-mini-badge{
    max-width:68%;
    white-space:normal;
    text-align:center;
  }

  
  
  
  
  

  
  html[data-app-page="admin"] .journal-header-actions,
html[data-app-page="admin"] .language-filters-toolbar,
html[data-app-page="admin"] .phone-rules-list{
    min-width:0;
    max-width:100%;
  }
}

@media (max-width: 380px){
  html[data-app-page="gestion"] .mobile-card dl{
    grid-template-columns:minmax(0,1fr);
  }
  html[data-app-page="admin"] .admin-extra-types-actions{
    grid-template-columns:minmax(0,1fr);
  }
}

@media(max-width:700px){
  
  html[data-app-page="admin"] .journal-table-wrap{overflow:visible;background:transparent}
  html[data-app-page="admin"] .journal-table,
  html[data-app-page="admin"] .journal-table tbody{display:block;width:100%;min-width:0}
  html[data-app-page="admin"] .journal-table thead,
  html[data-app-page="admin"] .journal-table colgroup{display:none}
  html[data-app-page="admin"] .journal-table .journal-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:7px 12px;width:100%;min-width:0;margin:0 0 12px;padding:14px;border:1px solid var(--app-border,#dbe2f0);border-radius:14px;background:#fff;box-shadow:0 6px 16px rgba(20,34,70,.045)}
  html[data-app-page="admin"] .journal-table .journal-row td{display:block;width:auto;min-width:0;padding:0;border:0;background:transparent;white-space:normal;overflow:visible;text-overflow:clip;overflow-wrap:anywhere}
  html[data-app-page="admin"] .journal-table .journal-row td:nth-child(1){grid-column:1;font-size:12px;color:var(--app-text-muted,#667085)}
  html[data-app-page="admin"] .journal-table .journal-row td:nth-child(2){grid-column:2;grid-row:1 / span 2;align-self:start;text-align:right}
  html[data-app-page="admin"] .journal-table .journal-row td:nth-child(3){grid-column:1;font-size:13px}
  html[data-app-page="admin"] .journal-table .journal-row td:nth-child(4){grid-column:1/-1;padding-top:8px;border-top:1px solid var(--app-border,#dbe2f0);font-weight:850}
  html[data-app-page="admin"] .journal-table .journal-row td:nth-child(4)::before{content:"Action";display:block;margin-bottom:3px;color:var(--app-text-muted,#667085);font-size:11px;font-weight:750}
  html[data-app-page="admin"] .journal-table .journal-row td:nth-child(5){grid-column:1/-1}
  html[data-app-page="admin"] .journal-table .journal-row td:nth-child(5)::before{content:"Logement";display:block;margin-bottom:3px;color:var(--app-text-muted,#667085);font-size:11px;font-weight:750}
  html[data-app-page="admin"] .journal-table .journal-row td:nth-child(6){grid-column:1/-1}
  html[data-app-page="admin"] .journal-table .journal-row td:nth-child(6)::before{content:"Message";display:block;margin-bottom:3px;color:var(--app-text-muted,#667085);font-size:11px;font-weight:750}

  
  html[data-app-page="admin"] body.rental-language-clients-page .table-wrap{overflow:visible;background:transparent}
  html[data-app-page="admin"] body.rental-language-clients-page .lang-whatsapp-table,
  html[data-app-page="admin"] body.rental-language-clients-page .lang-whatsapp-table tbody{display:block;width:100%;min-width:0;max-width:100%}
  html[data-app-page="admin"] body.rental-language-clients-page .lang-whatsapp-table thead{display:none}
  html[data-app-page="admin"] body.rental-language-clients-page .lang-whatsapp-table tbody tr{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px 12px;width:100%;min-width:0;margin:0 0 12px;padding:14px;border:1px solid var(--app-border,#dbe2f0);border-radius:14px;background:#fff;box-shadow:0 6px 16px rgba(20,34,70,.045)}
  html[data-app-page="admin"] body.rental-language-clients-page .lang-whatsapp-table tbody td{display:block;width:auto;min-width:0;max-width:100%;padding:0;border:0;background:transparent;white-space:normal;overflow:visible;text-overflow:clip;overflow-wrap:anywhere}
  html[data-app-page="admin"] body.rental-language-clients-page .lang-whatsapp-table tbody td:nth-child(1){grid-column:1;font-size:16px;font-weight:850}
  html[data-app-page="admin"] body.rental-language-clients-page .lang-whatsapp-table tbody td:nth-child(2){grid-column:2;grid-row:1;align-self:start}
  html[data-app-page="admin"] body.rental-language-clients-page .lang-whatsapp-table tbody td:nth-child(3){grid-column:1/-1;padding-top:8px;border-top:1px solid var(--app-border,#dbe2f0)}
  html[data-app-page="admin"] body.rental-language-clients-page .lang-whatsapp-table tbody td:nth-child(3)::before{content:"Dates";display:block;margin-bottom:3px;color:var(--app-text-muted,#667085);font-size:11px;font-weight:750}
  html[data-app-page="admin"] body.rental-language-clients-page .lang-whatsapp-table tbody td:nth-child(4){grid-column:1/-1}
  html[data-app-page="admin"] body.rental-language-clients-page .lang-whatsapp-table tbody td:nth-child(4)::before{content:"Téléphone";display:block;margin-bottom:3px;color:var(--app-text-muted,#667085);font-size:11px;font-weight:750}
  html[data-app-page="admin"] body.rental-language-clients-page .lang-whatsapp-table tbody td:nth-child(5){grid-column:1/-1}
  html[data-app-page="admin"] body.rental-language-clients-page .lang-whatsapp-table tbody td:nth-child(5)::before{content:"Langue client";display:block;margin-bottom:5px;color:var(--app-text-muted,#667085);font-size:11px;font-weight:750}
  html[data-app-page="admin"] body.rental-language-clients-page .lang-whatsapp-table .lang-select{width:100%;min-height:44px;height:44px;font-size:14px}
}

html[data-app-page] :where(.icon-action-btn,.admin-icon-btn,.btn.icon,.view-icon-btn){display:inline-flex;align-items:center;justify-content:center;line-height:1;}
html[data-app-page] :where(.icon-action-btn,.admin-icon-btn,.btn.icon) .rental-mask-icon{width:var(--app-icon-button-icon-size);height:var(--app-icon-button-icon-size);}
html[data-app-page] .rental-modal-close{width:38px;height:38px;padding:0;border-radius:12px;}
html[data-app-page] .icon-action-btn.cancel .rental-mask-icon{width:17px;height:17px;}
html[data-app-page] :where(.view-icon-btn) .rental-mask-icon{width:18px;height:18px;}

html[data-app-page="admin"] .admin-param-modern-hero--actions-only{
  display:flex;
  align-items:center;
  justify-content:flex-end;
  width:100%;
  min-height:0;
  margin:0 0 14px;
  padding:0;
  gap:10px;
  background:transparent;
  border:0;
  box-shadow:none;
}
html[data-app-page="admin"] .admin-param-modern-hero--actions-only > .admin-client-head-actions{
  margin-left:auto;
  display:flex;
  align-items:center;
  justify-content:flex-end;
  gap:8px;
  flex-wrap:wrap;
}
html[data-app-page="admin"] body.admin-view-access .admin-param-modern-panel > .admin-param-subsection-first{
  margin-top:0;
}
html[data-app-page="admin"] .admin-extra-types-table th:last-child{
  width:170px;
  min-width:170px;
  text-align:right;
  white-space:nowrap;
}
html[data-app-page="admin"] .admin-extra-types-table td:last-child{
  width:170px;
  min-width:170px;
  text-align:right;
}
html[data-app-page="admin"] .admin-extra-types-table th[data-no-sort="1"]::after{
  content:none;
  display:none;
}
html[data-app-page="admin"] .icon-action-btn.cancel .rental-icon-cancel-action{
  display:inline-block;
  width:20px;
  height:20px;
  flex:0 0 20px;
  background-color:currentColor;
}
html[data-app-page="admin"] .admin-extra-type-delete .rental-icon-trash,
html[data-app-page="admin"] .admin-icon-btn .rental-mask-icon,
html[data-app-page="admin"] .icon-action-btn .rental-mask-icon{
  display:inline-block;
  background-color:currentColor;
}
@media(max-width:700px){
  html[data-app-page="admin"] .admin-param-modern-hero--actions-only{
    margin-bottom:12px;
  }
  html[data-app-page="admin"] .admin-param-modern-hero--actions-only > .admin-client-head-actions{
    width:100%;
    display:grid;
    grid-template-columns:repeat(2,minmax(0,1fr));
  }
  html[data-app-page="admin"] .admin-param-modern-hero--actions-only > .admin-client-head-actions .btn{
    width:100%;
    min-width:0;
  }
  html[data-app-page="admin"] .admin-extra-types-table td:last-child{
    width:auto;
    min-width:0;
  }
}
@media(max-width:380px){
  html[data-app-page="admin"] .admin-param-modern-hero--actions-only > .admin-client-head-actions{
    grid-template-columns:minmax(0,1fr);
  }
}

@media (max-width:640px){
  
  html[data-app-page="gestion"] .report-extra-group{
    width:100%;
    min-width:0;
    margin:0;
    padding:14px;
    border:1px solid var(--border);
    border-radius:16px;
    background:#fff;
    box-shadow:0 7px 18px rgba(20,34,70,.045);
    overflow:hidden;
  }
  html[data-app-page="gestion"] .report-extra-group + .report-extra-group{
    padding-top:14px;
    border-top:1px solid var(--border);
  }
  html[data-app-page="gestion"] .report-extra-group-head{
    margin:0 0 12px;
    padding:0 0 10px;
    border-bottom:1px solid var(--border);
  }
  html[data-app-page="gestion"] .report-extra-group .mobile-card{
    padding:12px 0;
    border-bottom:1px solid var(--border);
  }
  html[data-app-page="gestion"] .report-extra-group .mobile-card:last-child{
    border-bottom:0;
    padding-bottom:0;
  }
}

html[data-app-page="admin"] .admin-platform-data-table{width:100%;min-width:0;max-width:100%;table-layout:fixed}
html[data-app-page="admin"] .admin-platform-data-table col:nth-child(1){width:auto}
html[data-app-page="admin"] .admin-platform-data-table col:nth-child(2){width:96px}
html[data-app-page="admin"] .admin-platform-data-table :where(th,td):nth-child(1){width:auto;max-width:none;white-space:normal}
html[data-app-page="admin"] .admin-platform-data-table :where(th,td):nth-child(2){width:96px;min-width:96px;max-width:96px;text-align:center;white-space:nowrap}
html[data-app-page="admin"] .admin-platform-data-table .admin-table-actions{justify-content:center}
@media(max-width:700px){
  html[data-app-page="admin"] .admin-platform-data-table{width:100%;min-width:0}
  html[data-app-page="admin"] .admin-platform-data-table col:nth-child(2){width:84px}
  html[data-app-page="admin"] .admin-platform-data-table :where(th,td):nth-child(2){width:84px;min-width:84px;max-width:84px}
}

@media (min-width:1200px){
  html.app-sidebar-collapsed[data-app-page="admin"] body.admin-view-reservations #content .admin-cards{
    display:grid;
    grid-template-columns:repeat(3,minmax(0,1fr));
    gap:16px;
  }
}

html[data-app-page="admin"] body.admin-view-reservations .admin-res-table :where(th,td):nth-child(2),
html[data-app-page="admin"] body.admin-view-reservations .rental-reservation-table :where(th,td).col-status{
  text-align:left;
}


html[data-app-page="admin"] body.admin-view-currentstays .admin-currentstay-details-body{
  padding:14px;
  background:#f7f8fc;
  border-top:1px solid var(--app-border,#dfe3f2);
}
html[data-app-page="admin"] body.admin-view-currentstays .admin-currentstay-info-grid{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:12px;
}
html[data-app-page="admin"] body.admin-view-currentstays .admin-currentstay-info-grid .admin-operation-info{
  min-width:0;
  min-height:54px;
  padding:12px 14px;
  border:1px solid var(--app-border,#dfe3f2);
  border-radius:12px;
  background:#fff;
  box-shadow:none;
}
@media(max-width:760px){
  html[data-app-page="admin"] body.admin-view-currentstays .admin-currentstay-info-grid{
    grid-template-columns:minmax(0,1fr);
  }
}

html[data-app-page="admin"] .admin-param-modern-hero--actions-only .admin-extra-types-actions,
html[data-app-page="admin"] .admin-extra-types-actions{
  width:auto;
  margin-left:auto;
  justify-content:flex-end;
}
html[data-app-page="admin"] .admin-extra-types-table th:last-child,
html[data-app-page="admin"] .admin-extra-types-table td:last-child{
  width:112px;
  min-width:112px;
  text-align:right;
}
html[data-app-page="admin"] .admin-extra-type-actions{
  display:flex;
  align-items:center;
  justify-content:flex-end;
  gap:8px;
}
html[data-app-page="admin"] .admin-extra-type-edit,
html[data-app-page="admin"] .admin-extra-type-delete{
  background:#fff;
  border:1px solid var(--app-border,#dfe3f2);
  box-shadow:none;
}
html[data-app-page="admin"] .admin-extra-type-edit{color:var(--app-text,#17143f);}
html[data-app-page="admin"] .admin-extra-type-delete{
  color:#9b3333;
  background:var(--app-danger-bg,#fff0f0);
  border-color:var(--app-danger-border,#e2b8b8);
}

html[data-app-page="admin"] .admin-config-main-form{display:grid;gap:18px;width:100%;max-width:none;padding:0}
html[data-app-page="admin"] .admin-config-section-block{display:grid;gap:18px;min-width:0;padding:22px;border:1px solid var(--app-border,#dfe3f2);border-radius:16px;background:var(--app-surface,#fff)}
html[data-app-page="admin"] .admin-config-section-block .admin-form-section-title{
  margin:0;
}
html[data-app-page="admin"] .admin-config-pwa-icons{
  display:grid;
  gap:12px;
}
html[data-app-page="admin"] .admin-config-main-form > .admin-form-actions{
  justify-content:flex-end;
  margin-top:0;
}
@media(min-width:901px){
  html[data-app-page="admin"] .admin-config-section-block .admin-form-section-title{
    margin:0 0 5px;
    color:var(--text,var(--app-text,#17143f));
    font-size:20px;
    font-weight:700;
    line-height:1.2;
  }
  html[data-app-page="admin"] .admin-config-main-form .admin-form-field{
    display:grid;
    gap:8px;
    align-content:start;
  }
  html[data-app-page="admin"] .admin-config-main-form .admin-form-field > label:not(.admin-config-check){
    margin:0;
    color:var(--text,var(--app-text,#17143f));
    font-size:14px;
    font-weight:850;
    line-height:1.25;
  }
}

html[data-app-page="gestion"] .btn.icon.danger,
html[data-app-page="gestion"] button.btn.icon.danger{
  width:38px;
  min-width:38px;
  max-width:38px;
  height:38px;
  min-height:38px;
  padding:0;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  border-radius:11px;
  background:#fff0f0;
  border:1px solid #e2b8b8;
  color:#9b3333;
  box-shadow:none;
}
html[data-app-page="gestion"] .btn.icon.danger:hover:not(:disabled),
html[data-app-page="gestion"] button.btn.icon.danger:hover:not(:disabled){
  background:#ffe8e8;
  border-color:#d99b9b;
}

html[data-app-page="gestion"] .calendar-tariff-actions{
  display:flex;
  width:100%;
  justify-content:flex-end;
  align-items:center;
}
html[data-app-page="gestion"] .calendar-tariff-actions .actions{
  width:auto;
  margin-left:auto;
  justify-content:flex-end;
}
html[data-app-page="gestion"] .calendar-tariff-toolbar{display:flex;align-items:center;justify-content:flex-end;gap:8px;flex-wrap:nowrap}
html[data-app-page="gestion"] .calendar-tariff-month-nav{display:flex;align-items:center;gap:8px;margin-right:auto;flex-wrap:wrap}
html[data-app-page="gestion"] .calendar-tariff-month-field{display:block;width:auto;margin:0}
html[data-app-page="gestion"] .calendar-year-grid{
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(250px,1fr));
  gap:14px;
  align-items:start;
}
html[data-app-page="gestion"] .calendar-month-card{
  min-width:0;
  overflow:hidden;
  border:1px solid var(--app-border,#dfe3f2);
  border-radius:15px;
  background:#fff;
}
html[data-app-page="gestion"] .calendar-month-card.is-single{
  border:0;
  border-radius:0;
}
html[data-app-page="gestion"] .calendar-month-title{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:10px;
  padding:12px 14px;
  border-bottom:1px solid var(--app-border,#dfe3f2);
  background:#f7f8fc;
}
html[data-app-page="gestion"] .calendar-month-card.is-single .calendar-month-title{
  padding:0 0 12px;
  background:#fff;
}
html[data-app-page="gestion"] .calendar-month-title h3{margin:0;font-size:16px;}
html[data-app-page="gestion"] .calendar-month-title span{color:var(--app-muted,#6f768b);font-size:12px;font-weight:800;}
html[data-app-page="gestion"] .calendar-grid-compact{
  grid-template-columns:repeat(7,minmax(0,1fr));
  border:0;
  border-radius:0;
  overflow:hidden;
}
html[data-app-page="gestion"] .calendar-grid-compact .calendar-head{
  min-width:0;
  padding:6px 2px;
  font-size:10px;
}
html[data-app-page="gestion"] .calendar-grid-compact .calendar-day{
  min-width:0;
  min-height:52px;
  padding:5px;
  overflow:hidden;
}
html[data-app-page="gestion"] .calendar-grid-compact .calendar-day strong{font-size:10px;}
html[data-app-page="gestion"] .calendar-rate.compact{
  margin-top:5px;
  padding:3px 2px;
  border-radius:6px;
  font-size:9px;
  text-align:center;
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
}
html[data-app-page="gestion"] .calendar-tariff-notice{margin-top:14px;}
@media(max-width:980px){
  html[data-app-page="gestion"] .calendar-year-grid{grid-template-columns:repeat(2,minmax(0,1fr));}
}
@media(max-width:650px){
  html[data-app-page="gestion"] .calendar-year-grid{grid-template-columns:minmax(0,1fr);}
  html[data-app-page="gestion"] .calendar-tariff-actions .actions,
  html[data-app-page="gestion"] .calendar-tariff-actions .btn{width:100%;}
  html[data-app-page="gestion"] .calendar-tariff-month-field{flex:1 1 156px;min-width:132px;}
}

html[data-app-page="gestion"] .calendar-month-card.is-compact[data-calendar-month]{
  cursor:pointer;
  transition:border-color .16s ease,box-shadow .16s ease,transform .16s ease;
}
html[data-app-page="gestion"] .calendar-month-card.is-compact[data-calendar-month]:hover{
  border-color:var(--app-primary-color,#385bf8);
  box-shadow:0 10px 24px rgba(23,22,63,.10);
  transform:translateY(-1px);
}
html[data-app-page="gestion"] .calendar-month-card.is-compact[data-calendar-month]:focus-visible{
  outline:3px solid color-mix(in srgb,var(--app-primary-color,#385bf8) 28%,transparent);
  outline-offset:2px;
  border-color:var(--app-primary-color,#385bf8);
}
html[data-app-page="gestion"] .calendar-month-card.is-single .calendar-grid{
  width:100%;
  grid-template-columns:repeat(7,minmax(82px,1fr));
}
@media(max-width:650px){
  html[data-app-page="gestion"] .calendar-month-card.is-single{overflow:hidden;}
  html[data-app-page="gestion"] .calendar-month-card.is-single .calendar-grid{
    width:100%;
    min-width:0;
    grid-template-columns:repeat(7,minmax(0,1fr));
    overflow:hidden;
  }
  html[data-app-page="gestion"] .calendar-month-card.is-single .calendar-head{
    min-width:0;
    padding:8px 1px;
    font-size:10px;
  }
  html[data-app-page="gestion"] .calendar-month-card.is-single .calendar-day{
    min-width:0;
    min-height:70px;
    padding:6px 3px;
    overflow:hidden;
  }
  html[data-app-page="gestion"] .calendar-month-card.is-single .calendar-rate{
    display:block;
    width:100%;
    min-width:0;
    max-width:100%;
    margin-top:7px;
    padding:4px 1px;
    font-size:10px;
    line-height:1.1;
    letter-spacing:-.03em;
    text-align:center;
    white-space:nowrap;
    overflow:hidden;
    text-overflow:clip;
  }
}

html body.rental-language-clients-page #stats .stat-filter{
  cursor:pointer;
  pointer-events:auto;
  user-select:none;
}
html body.rental-language-clients-page #stats .stat-filter.is-active,
html body.rental-language-clients-page #stats .stat-filter[aria-pressed="true"]{
  border-color:var(--app-primary-color,#385bf8);
  background:var(--app-primary-surface,#eef3ff);
  box-shadow:inset 0 0 0 1px var(--app-primary-color,#385bf8);
}

html[data-app-page="admin"] body.admin-view-reservations .admin-res-table .rental-reservation-status-badge[data-status="current"],
html[data-app-page="admin"] body.admin-view-reservations .rental-reservation-table .rental-reservation-status-badge[data-status="current"]{
  background:var(--app-primary-surface,#eef3ff);
  color:var(--app-primary-color,#385bf8);
  border:1px solid var(--app-primary-border,rgba(56,91,248,.22));
}
html[data-app-page="admin"] body.admin-view-reservations .admin-res-table .rental-reservation-status-badge[data-status="upcoming"],
html[data-app-page="admin"] body.admin-view-reservations .rental-reservation-table .rental-reservation-status-badge[data-status="upcoming"]{
  background:var(--app-primary-surface,#eef3ff);
  color:var(--app-primary-color,#385bf8);
  border:1px solid var(--app-primary-border,rgba(56,91,248,.22));
}



@media (max-width:899px){
  html[data-app-page="admin"] #adminReservationTopCard.top-card,
  html[data-app-page="admin"] .topbar > .top-card,
  html[data-app-page="gestion"] .topbar > .top-card,
  html[data-app-page="profitability"] .topbar > .top-card,
  html[data-app-page="legal-center"] .topbar > .top-card,
  html[data-app-page="owner"] .owner-topbar{
    padding-left:76px;
  }
}

table th.rental-table-actions-header,
table td.rental-table-actions-cell,
table th.admin-table-actions-cell,
table td.admin-table-actions-cell,
table th.admin-extra-type-actions,
table td.admin-extra-type-actions,
table th.rental-col-action,
table td.rental-col-action,
table th.col-actions,
table td.col-actions,
table th.action-col,
table td.action-col,
table th.action-column,
table td.action-column{
  text-align:center;
}
table td.rental-table-actions-cell > :where(.actions,.table-actions,.admin-table-actions,.admin-extra-type-actions,.action-col,.action-column,.lc-actions,.lc-booking-actions),
table td.admin-table-actions-cell > :where(.actions,.table-actions,.admin-table-actions),
table td.col-actions > :where(.actions,.table-actions),
table td.action-col > :where(.actions,.table-actions),
table td.action-column > :where(.actions,.table-actions){
  margin-inline:auto;
  justify-content:center;
}
table td.rental-table-actions-cell > :where(button,a,.btn),
table td.admin-table-actions-cell > :where(button,a,.btn),
table td.col-actions > :where(button,a,.btn),
table td.action-col > :where(button,a,.btn),
table td.action-column > :where(button,a,.btn){
  vertical-align:middle;
}

.rental-detail-summary-row{
  cursor:pointer;
  transition:background-color .16s ease;
}
.rental-detail-summary-row:hover>td,
.rental-detail-summary-row:focus-visible>td{
  background:#f8fafc;
}
.rental-detail-summary-row:focus-visible{
  outline:2px solid var(--app-primary-color,#385bf8);
  outline-offset:-2px;
}
.rental-detail-primary{
  display:inline-flex;
  align-items:center;
  gap:8px;
  min-width:0;
}
.rental-row-chevron{
  width:14px;
  height:14px;
  min-width:14px;
  flex:0 0 14px;
  color:var(--muted,#64748b);
  transition:transform .16s ease;
}
.rental-detail-summary-row.is-open .rental-row-chevron,
.rental-detail-summary-row[aria-expanded="true"] .rental-row-chevron{
  transform:rotate(90deg);
}

.rental-detail-summary-row:hover,
.rental-detail-summary-row:focus-visible{
  background:#f8fafc;
}
.rental-modal-detail-row .rental-row-chevron{
  transform:none;
}
#adminReservationModal .admin-native-date-hidden,
#ownerReservationModal .owner-native-date-hidden{
  display:none;
}

.rental-table-empty-state{margin:12px 0;padding:18px;border:1px dashed var(--border,#dfe3f2);border-radius:14px;background:var(--surface-soft,#f8f9fc);color:var(--muted,#667085);text-align:center;font-weight:700}

html.app-sidebar-collapsed[data-app-page="gestion"] .calendar-year-grid{
  grid-template-columns:repeat(3,minmax(0,1fr));
}
html[data-app-page="gestion"] .calendar-grid-compact .calendar-rate.compact{
  display:block;
  width:100%;
  min-width:0;
  max-width:100%;
  margin:5px 0 0;
  box-sizing:border-box;
  padding:3px 4px;
  color:#172033;
  font-size:8.5px;
  font-weight:850;
  line-height:1.15;
  letter-spacing:-.015em;
  text-align:right;
  white-space:nowrap;
  overflow:hidden;
  text-overflow:clip;
}
@media(max-width:1100px){
  html.app-sidebar-collapsed[data-app-page="gestion"] .calendar-year-grid{
    grid-template-columns:repeat(2,minmax(0,1fr));
  }
}
@media(max-width:650px){
  html.app-sidebar-collapsed[data-app-page="gestion"] .calendar-year-grid{
    grid-template-columns:minmax(0,1fr);
  }
}

@media (max-width:640px){
  
  html[data-app-page="gestion"] #reportBody > .metric-grid{
    display:grid;
    grid-template-columns:repeat(2,minmax(0,1fr));
    gap:8px;
  }
  html[data-app-page="gestion"] #reportBody > .metric-grid > .metric{
    width:100%;
    min-width:0;
    min-height:72px;
    padding:11px 12px;
    border:1px solid var(--border,#dbe3ef);
    border-radius:16px;
    background:#fff;
    box-shadow:0 7px 18px rgba(20,34,70,.045);
  }
  html[data-app-page="gestion"] #reportBody > .metric-grid > .metric span{
    font-size:11px;
    line-height:1.25;
  }
  html[data-app-page="gestion"] #reportBody > .metric-grid > .metric strong{
    font-size:18px;
    line-height:1.15;
    overflow-wrap:anywhere;
  }

  
  html[data-app-page="gestion"] #reportBody .card-list{
    display:grid;
    grid-template-columns:minmax(0,1fr);
    gap:10px;
  }
  html[data-app-page="gestion"] #reportBody .report-mobile-card{
    width:100%;
    min-width:0;
    max-width:100%;
    margin:0;
    padding:14px;
    overflow:hidden;
    border:1px solid var(--border,#dbe3ef);
    border-radius:16px;
    background:#fff;
    box-shadow:0 7px 18px rgba(20,34,70,.045);
    box-sizing:border-box;
  }
  html[data-app-page="gestion"] #reportBody .report-mobile-card[role="button"]{
    cursor:pointer;
  }
  html[data-app-page="gestion"] #reportBody .report-mobile-card header{
    display:grid;
    grid-template-columns:minmax(0,1fr) auto;
    gap:8px 12px;
    align-items:start;
    margin:0;
    padding:0 0 12px;
    border-bottom:1px solid var(--border,#dbe3ef);
  }
  html[data-app-page="gestion"] #reportBody .report-mobile-card header > *{
    min-width:0;
    max-width:100%;
  }
  html[data-app-page="gestion"] #reportBody .report-mobile-card header > div > strong{
    display:block;
    color:var(--text,#17143f);
    font-size:16px;
    line-height:1.25;
    overflow-wrap:anywhere;
  }
  html[data-app-page="gestion"] #reportBody .report-mobile-card header > strong,
  html[data-app-page="gestion"] #reportBody .report-mobile-card header > span{
    justify-self:end;
    color:var(--text,#17143f);
    font-size:14px;
    font-weight:850;
    line-height:1.25;
    text-align:right;
    white-space:nowrap;
  }
  html[data-app-page="gestion"] #reportBody .report-mobile-card dl{
    display:grid;
    grid-template-columns:repeat(2,minmax(0,1fr));
    gap:8px;
    width:100%;
    min-width:0;
    margin:12px 0 0;
  }
  html[data-app-page="gestion"] #reportBody .report-mobile-card dl > div{
    min-width:0;
    padding:9px 10px;
    border:1px solid var(--border,#dbe3ef);
    border-radius:12px;
    background:var(--soft,#f7f8fc);
  }
  html[data-app-page="gestion"] #reportBody .report-mobile-card dt{
    color:var(--muted,#667085);
    font-size:11px;
    font-weight:750;
    line-height:1.2;
  }
  html[data-app-page="gestion"] #reportBody .report-mobile-card dd{
    min-width:0;
    margin:4px 0 0;
    color:var(--text,#17143f);
    font-size:13px;
    font-weight:800;
    line-height:1.3;
    overflow-wrap:anywhere;
  }
  html[data-app-page="gestion"] #reportBody .report-extra-group{
    width:100%;
    min-width:0;
    margin:0;
    padding:0;
    overflow:visible;
    border:0;
    border-radius:0;
    background:transparent;
    box-shadow:none;
  }
  html[data-app-page="gestion"] #reportBody .report-extra-group-head{
    margin:0 0 10px;
    padding:0 0 10px;
    border-bottom:1px solid var(--border,#dbe3ef);
  }

  
  html[data-app-page="admin"] body.admin-view-reservations #summary.summary-grid{
    display:grid;
    grid-template-columns:repeat(2,minmax(0,1fr));
    gap:8px;
  }
  html[data-app-page="admin"] body.admin-view-reservations #summary.summary-grid > .summary-card{
    grid-column:auto;
    display:grid;
    grid-template-columns:minmax(0,1fr) auto;
    align-items:center;
    width:100%;
    min-width:0;
    min-height:72px;
    padding:10px 12px;
    gap:8px;
  }
  html[data-app-page="admin"] body.admin-view-reservations #summary.summary-grid > .summary-card:nth-child(5){
    grid-column:1 / -1;
  }
  html[data-app-page="admin"] body.admin-view-reservations #summary .summary-number{
    grid-column:2;
    grid-row:1;
    margin:0;
    font-size:20px;
    line-height:1.05;
    white-space:nowrap;
    text-align:right;
  }
  html[data-app-page="admin"] body.admin-view-reservations #summary .summary-label{
    grid-column:1;
    grid-row:1;
    min-width:0;
    margin:0;
    font-size:11px;
    line-height:1.2;
    overflow-wrap:normal;
    word-break:normal;
    hyphens:none;
  }
}

/* APP RENTAL — dialogues de confirmation intégrés, sans fenêtre native du navigateur. */
.rental-app-dialog-backdrop{position:fixed;inset:0;z-index:1000003;display:grid;place-items:center;padding:16px;background:rgba(15,23,42,.52);backdrop-filter:blur(3px)}
.rental-app-dialog{width:min(420px,calc(100vw - 32px));min-height:0;height:auto;max-height:calc(100dvh - 32px);overflow:auto;box-sizing:border-box;padding:18px;border:1px solid var(--app-border,#dce2ea);border-radius:16px;background:var(--app-surface,#fff);color:var(--app-text,#111827);box-shadow:0 20px 56px rgba(15,23,42,.26)}
.rental-app-dialog h2{margin:0;font-size:18px;line-height:1.25}.rental-app-dialog-message{margin:8px 0 0;white-space:pre-line;overflow-wrap:anywhere;color:var(--app-text-muted,#667085);font-size:14px;line-height:1.45}.rental-app-dialog-message:empty{display:none}
.rental-app-dialog-input{display:block;width:100%;min-height:40px;box-sizing:border-box;margin-top:14px;padding:8px 10px;border:1px solid var(--app-border-strong,#c7d0dc);border-radius:10px;background:#fff;color:inherit;font:inherit}.rental-app-dialog textarea.rental-app-dialog-input{min-height:100px;resize:vertical}
.rental-app-dialog-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:16px}.rental-app-dialog-actions .btn{min-height:38px;padding:7px 14px;border-radius:6px}
@media(max-width:560px){.rental-app-dialog-backdrop{padding:10px}.rental-app-dialog{width:min(400px,calc(100vw - 20px));padding:16px}.rental-app-dialog-actions{display:flex;flex-wrap:wrap}.rental-app-dialog-actions .btn{width:auto;flex:1 1 120px}}

/* V3.0.0-rc.85 — dialogues partagés : empêcher le défilement de l’arrière-plan. */
body.rental-app-dialog-open{overflow:hidden}

/* APP RENTAL — messages, modales et gabarits unifiés */
.rental-feedback-host{position:fixed;left:50%;bottom:24px;transform:translateX(-50%);z-index:2147483000;width:min(680px,calc(100vw - 28px));pointer-events:none}
.rental-feedback{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:14px 14px 14px 18px;border:1px solid var(--app-border,#dbe3ef);border-radius:16px;background:#fff;box-shadow:0 18px 48px rgba(15,35,70,.22);opacity:0;transform:translateY(18px) scale(.98);transition:.18s ease;pointer-events:auto}
.rental-feedback.is-visible{opacity:1;transform:none}.rental-feedback.is-leaving{opacity:0;transform:translateY(12px)}
.rental-feedback__body{display:grid;gap:2px;min-width:0}.rental-feedback__body strong{font-size:13px}.rental-feedback__body span{overflow-wrap:anywhere}
.rental-feedback__actions{display:flex;gap:6px;flex:0 0 auto}.rental-feedback__actions button{min-height:36px;border:1px solid #d5deeb;border-radius:10px;background:#fff;padding:7px 10px;font-weight:750;cursor:pointer}

.rental-create-modal-backdrop{position:fixed;inset:0;z-index:2147482000;background:rgba(13,28,55,.52);display:grid;place-items:center;padding:22px;overflow:auto}
.rental-create-modal{overflow:auto;background:#fff;box-shadow:0 28px 80px rgba(9,25,52,.3);}
.rental-create-modal__head{position:sticky;top:0;z-index:2;display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid #e1e7f0;background:#fff;}.rental-create-modal__head h2{margin:0}.rental-create-modal__head button{width:42px;height:42px;border:1px solid #d5deeb;border-radius:12px;background:#fff;font-size:24px;cursor:pointer}.rental-create-modal__content>[hidden]{display:none}.rental-create-modal__content>.card,.rental-create-modal__content>.users-card,.rental-create-modal__content>.lc-card{margin:0;border:0;border-radius:0;box-shadow:none}
.rental-add-trigger{margin:0 0 var(--app-table-action-gap) auto;display:flex;width:max-content;max-width:100%}.users-main{min-width:0}html:not([data-app-page="admin"]) :where(.app-content,.admin-content,.users-wrap){width:100%;max-width:1440px;margin-inline:auto;box-sizing:border-box}
@media(max-width:700px){.rental-feedback-host{bottom:12px}.rental-feedback{align-items:flex-start}.rental-feedback__actions [data-copy]{display:none}.rental-create-modal-backdrop{padding:8px}.rental-create-modal{max-height:calc(100vh - 16px);border-radius:16px}.rental-create-modal__head{padding:16px}}

/* APP RENTAL — largeur et formulaires harmonisés */
html:not([data-app-page="admin"]) :where(.app-content,.admin-content,.users-wrap){max-width:var(--app-page-max);width:calc(100% - 32px);margin-inline:auto}.filters select,
.filters input{min-width:0;width:100%}.btn.primary,button[type=submit]{min-height:var(--app-control-h)}.modal-actions{gap:10px}.modal-actions .btn{width:auto;min-width:110px}.rental-modal-close{opacity:1;visibility:visible;z-index:20}

/* APP RENTAL — SaaS UI consolidation */

html{overflow-x:hidden;overflow-y:auto;scrollbar-gutter:stable}
body{overflow-x:hidden}
/* html est l'unique conteneur de scroll vertical de l'app, en permanence (pas seulement
   quand une page métier est ouverte) : scrollbar-gutter:stable réserve la place de la
   scrollbar en continu, donc son apparition/disparition ne déplace plus jamais la grille
   sidebar+contenu. Ne jamais réintroduire un overflow-y conditionnel sur body : cela
   recrée un second conteneur de scroll concurrent et le décalage qui va avec. */
.app-shell,
.admin-shell,
.owner-shell,
.lc-app{width:100%;min-width:0}
.app-shell>main,
.admin-shell>main,
.owner-shell>main,
.lc-app>main,
.main,
.admin-main-content{min-width:0;width:100%;max-width:none}
html:not([data-app-page="admin"]) :where(.topbar,.content,.admin-content){width:100%;max-width:var(--app-shell-content-max,var(--app-content-max));margin-inline:var(--app-content-margin-inline,auto);box-sizing:border-box}
.top-card,
.panel,
.card,
.platform-card{box-sizing:border-box}

html:not([data-app-page="admin"]) :where(.topbar,.top-card,.page-header){left:auto;right:auto;max-width:none}
.table-wrap,
.admin-table-wrap{max-width:100%;overflow-x:auto;overflow-y:hidden}
table{max-width:100%}
thead{z-index:4}

.top-card,
.panel,
.card,
.platform-card{border:1px solid #dbe3f1;border-radius:16px;background:#fff;box-shadow:0 8px 24px rgba(25,48,83,.055)}
.btn,.button,button{min-height:var(--app-control-h);border-radius:6px}
.btn.primary,.button.primary{padding-left:18px;padding-right:18px;width:auto;max-width:100%}
input:not([type="checkbox"]):not([type="radio"]),select,textarea{min-height:46px;border-radius:6px}

.rental-create-modal{width:min(900px,calc(100vw - 32px));max-height:min(82vh,760px);border-radius:18px}
.rental-create-modal__head{min-height:68px;padding:16px 20px}
.rental-create-modal__head h2{font-size:24px;line-height:1.2}
.rental-modal-x{display:grid;place-items:center;width:42px;height:42px;min-width:42px;padding:0;color:#17233b;background:#fff;border:1px solid #cfd8e8;border-radius:12px;font-size:24px;font-weight:800;line-height:1;opacity:1}
.rental-modal-x:hover{background:#f2f5fb}
.rental-create-modal__content{padding:18px 20px 20px}
.rental-create-modal__content form,.rental-create-modal__content section{margin:0;padding:0;border:0;box-shadow:none}
.rental-create-modal__content .form-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}
.rental-create-modal__content .actions,.rental-create-modal__content .form-actions{justify-content:flex-end}
.rental-create-modal__content button[type=submit]{width:auto;min-width:130px}

[data-password-toggle]{position:absolute;right:6px;top:50%;transform:translateY(-50%);width:38px;height:38px;min-height:38px;padding:0}

.users-card{width:100%;max-width:none}
.users-card form:not(.user-editor-form){display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px 22px;align-items:start}
.users-card form:not(.user-editor-form) .actions{grid-column:1/-1;justify-content:flex-end}

.empty,.empty-state{border-radius:14px}
@media(max-width:1050px){.rental-create-modal__content .form-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:700px){.rental-create-modal{width:calc(100vw - 16px);max-height:92vh}.rental-create-modal__content .form-grid,.users-card form:not(.user-editor-form){grid-template-columns:1fr}html:not([data-app-page="admin"]) :where(.topbar,.content,.admin-content){padding-left:10px;padding-right:10px}}

/* APP RENTAL — hiérarchie globale des modales au-dessus du menu latéral */
html.rental-embedded-modal-active,
html.rental-embedded-modal-active body{overflow:hidden;}
html[data-app-page="admin"] iframe.rental-embedded-modal-frame-active{
  position:fixed;
  inset:0;
  z-index:2147483300;
  width:100vw;
  height:100dvh;
  max-width:none;
  max-height:none;
  margin:0;
  border:0;
  border-radius:0;
  background:var(--app-surface-subtle,#f4f6fb);
}
html[data-app-page] :where(.dialog-backdrop,.stay-charge-modal-backdrop,.modal-backdrop,.owner-modal-backdrop,.rental-app-dialog-backdrop,.rental-create-modal-backdrop,.rate-info-modal){z-index:2147483200}
html[data-app-page="admin"] body #adminCalendarDayModal.modal-backdrop:not(.hidden){z-index:2147483210}
html[data-app-page] .rental-feedback-host{z-index:2147483400}
@media(min-width:901px){
  html[data-app-page] .app-shell>main,
html[data-app-page] .admin-shell>main,
html[data-app-page] .owner-shell>main,
html[data-app-page] .lc-app>main{z-index:auto}
}

html[data-app-page]{background:var(--app-bg);color:var(--app-text)}
html[data-app-page] body{background:var(--app-bg);color:var(--app-text);font-family:var(--app-font,Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif);font-size:14px;line-height:1.45}
html[data-app-page] :where(.main,.admin-main-content,.platform-console-main,.technical-main){min-width:0}
html[data-app-page]:not([data-app-page="admin"]) :where(.content,.admin-content,.owner-content,.platform-console-wrap,.technical-wrap){box-sizing:border-box;min-width:0;max-width:var(--app-shell-content-max,var(--app-content-max))}

html[data-app-page] :where(h1:not(.rental-page-title),.top-title h1:not(.rental-page-title),.platform-hero h1:not(.rental-page-title)){color:var(--app-text);font-size:clamp(24px,2vw,30px);font-weight:800;line-height:1.16;letter-spacing:-.025em}
html[data-app-page] :where(h2,.panel-head h2,.platform-panel h2,.platform-card h2,.users-card h2,.lc-card h2,.maint-card h2){color:var(--app-text);font-size:20px;font-weight:800;line-height:1.25;letter-spacing:-.015em}
html[data-app-page] :where(h3,.panel-head h3,.platform-card h3,.maint-card h3){color:var(--app-text);font-size:16px;font-weight:800;line-height:1.3}
html[data-app-page] :where(.muted,.subtitle,.field-help,.admin-field-help,.owner-field-help,.cell-sub,small){color:var(--app-text-muted)}

html[data-app-page] :where(.top-card,.owner-page-header,.platform-hero,.page-header){
  width:100%;min-height:var(--app-page-header-min-height);margin:0 0 var(--app-section-gap);padding:var(--app-page-header-padding);
  border:1px solid var(--app-border);border-radius:var(--app-radius-lg);background:var(--app-surface);
  box-shadow:var(--app-shadow);box-sizing:border-box;
}
html[data-app-page] :where(.top-card,.owner-page-header,.platform-hero,.page-header){display:flex;align-items:center;justify-content:space-between;gap:18px}

:is(html[data-app-page="gestion"],html[data-app-page="profitability"]) .topbar>.top-card{
  display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:18px;min-width:0;
}
:is(html[data-app-page="gestion"],html[data-app-page="profitability"]) .topbar .top-title{min-width:0}
:is(html[data-app-page="gestion"],html[data-app-page="profitability"]) .topbar .top-title h1:not(.rental-page-title){white-space:nowrap}
:is(html[data-app-page="gestion"],html[data-app-page="profitability"]) .topbar .filters{
  display:flex;align-items:center;justify-content:flex-end;flex-wrap:nowrap;gap:8px;
  width:auto;min-width:0;max-width:100%;margin:0;
}
:is(html[data-app-page="gestion"],html[data-app-page="profitability"]) .topbar .filters>.field{
  display:block;min-width:0;width:auto;margin:0;flex:0 0 auto;
}
:is(html[data-app-page="gestion"],html[data-app-page="profitability"]) .topbar .filters select{
  height:44px;min-height:44px;padding:8px 34px 8px 12px;border-radius:10px;font-size:13px;font-weight:750;
}
/* Largeurs fixes desktop uniquement : au-delà de 760px, un seul point de vérité pour
   ces trois champs. En mobile (<=760px), le contrat plein-largeur de
   rental-filter-layout.css doit s'appliquer sans concurrence d'une règle ID
   inconditionnelle qui gagnerait toujours la cascade. */
@media(min-width:761px){
  :is(html[data-app-page="gestion"],html[data-app-page="profitability"]) .topbar #yearSelect{width:var(--rental-filter-year-width,120px);min-width:var(--rental-filter-year-width,120px);max-width:var(--rental-filter-year-width,120px)}
  :is(html[data-app-page="gestion"],html[data-app-page="profitability"]) .topbar #monthSelect{width:var(--rental-filter-period-width,170px);min-width:var(--rental-filter-period-width,170px);max-width:var(--rental-filter-period-width,170px)}
  :is(html[data-app-page="gestion"],html[data-app-page="profitability"]) .topbar #logementSelect{width:var(--rental-filter-property-width,280px);min-width:var(--rental-filter-property-width,280px);max-width:var(--rental-filter-property-width,280px)}
}
html[data-app-page] .platform-hero p{max-width:900px}
html[data-app-page] :where(.top-title p,.platform-hero p,.page-header p){margin:5px 0 0;color:var(--app-text-muted);font-size:13px;line-height:1.45}

html[data-app-page] :where(.panel,.card,.platform-panel,.platform-card,.users-card,.lc-card,.maint-card,.connector-panel,.rental-page-panel,.ob-card,.summary-card,.metric-grid>.metric,.platform-stat,.platform-stat-card,.platform-audit-stat){
  box-sizing:border-box;border:1px solid var(--app-border);border-radius:var(--app-radius);
  background:var(--app-surface);box-shadow:var(--app-shadow-sm);
}
html[data-app-page] :where(.panel,.platform-panel,.platform-card,.users-card,.lc-card,.maint-card,.connector-panel,.rental-page-panel,.ob-card){padding:20px}
html[data-app-page] :where(.panel-head,.platform-card-head,.connector-panel-head,.maint-section-head){display:flex;align-items:flex-start;justify-content:space-between;gap:14px;margin:0 0 18px}
html[data-app-page] :where(.panel-head,.platform-card-head,.connector-panel-head,.maint-section-head) :where(h2,h3,p){margin-top:0}

html[data-app-page] label{margin:0;color:#344054;font-size:13px;font-weight:700;line-height:1.3}
html[data-app-page] :where(.field,.platform-field,.lc-field){gap:6px}
html[data-app-page] input:not([type="checkbox"]):not([type="radio"]):not([type="hidden"]),
html[data-app-page] select:not(.rental-control-intrinsic),
html[data-app-page] textarea{
  width:100%;max-width:100%;min-height:var(--app-control-h);margin:0;padding:9px 11px;
  border:1px solid var(--app-border-strong);border-radius:var(--app-radius-sm);background:#fff;color:var(--app-text);
  font:inherit;line-height:1.3;box-shadow:none;box-sizing:border-box;
}
html[data-app-page] textarea{min-height:104px;resize:vertical}
html[data-app-page] input:focus,html[data-app-page] select:focus,html[data-app-page] textarea:focus{outline:0;border-color:var(--app-primary);box-shadow:0 0 0 3px color-mix(in srgb,var(--app-primary) 14%,transparent)}
html[data-app-page] :where(.form-grid,.grid,.admin-modal-grid,.owner-modal-grid){gap:16px}
html[data-app-page] :where(.form-actions,.actions,.platform-actions,.modal-actions,.owner-modal-actions,.lc-actions){gap:9px}
html[data-app-page] form :where(.form-actions,.actions,.platform-actions,.lc-actions,.cleaner-save-row){display:flex;align-items:center;justify-content:flex-end}

html[data-app-page] :where(.btn,.button,.platform-btn,.lc-btn){
  align-items:center;justify-content:center;gap:7px;min-height:var(--app-control-h);
  padding:8px 14px;border:1px solid var(--app-border-strong);border-radius:var(--app-radius-sm);
  background:#fff;color:#344054;font:600 14px/1.2 var(--app-font,Inter,system-ui,sans-serif);
  text-decoration:none;box-shadow:var(--app-shadow-sm);cursor:pointer;white-space:nowrap;
}
html[data-app-page] :where(.btn:not(.rental-add-trigger),.button,.platform-btn,.lc-btn,.action-button){display:inline-flex}
html[data-app-page] :where(.btn,.button,.platform-btn,.lc-btn):hover{border-color:#aeb9c8;background:var(--app-surface-soft);box-shadow:0 5px 14px rgba(25,48,83,.10);transform:none}
html[data-app-page] :where(.btn.primary,.btn.active,.button.primary,.platform-btn.primary,.lc-btn.primary,button.primary){border-color:var(--app-primary);background:var(--app-primary);color:#fff}
html[data-app-page] :where(.btn.primary,.btn.active,.button.primary,.platform-btn.primary,.lc-btn.primary,button.primary):is(:hover,:focus-visible,:active){border-color:var(--app-primary-hover);background:var(--app-primary-hover);color:#fff}
html[data-app-page] :where(.btn.secondary,.button.secondary,.platform-btn.secondary,.lc-btn.secondary){border-color:var(--app-border-strong);background:#fff;color:#344054}
html[data-app-page] :where(.btn.danger,.button.danger,.platform-btn.danger,.lc-btn.danger,button.danger){border-color:var(--app-danger);background:var(--app-danger);color:#fff}

html[data-app-page] :where(.btn.small,.btn.compact,.platform-btn.compact,.lc-btn.compact){min-height:36px;padding:6px 11px;font-size:12px}
html[data-app-page] .btn.icon,
html[data-app-page] .icon-action-btn,
html[data-app-page] .admin-icon-btn,
html[data-app-page] .view-icon-btn{
  width:var(--app-icon-button-current-size,var(--app-icon-button-size));
  min-width:var(--app-icon-button-current-size,var(--app-icon-button-size));
  height:var(--app-icon-button-current-size,var(--app-icon-button-size));
  min-height:var(--app-icon-button-current-size,var(--app-icon-button-size));
  padding:0;
  border-radius:var(--app-icon-button-radius);
}
html[data-app-page="admin"],
html[data-app-page="owner"]{--app-icon-button-current-size:var(--app-icon-button-size-compact)}
html[data-app-page] :where(.btn,.button,.platform-btn,.lc-btn):disabled{opacity:.56;cursor:not-allowed}

html[data-app-page] input[type="checkbox"],html[data-app-page] input[type="radio"]{width:var(--app-checkbox-size);height:var(--app-checkbox-size);min-width:var(--app-checkbox-size);min-height:var(--app-checkbox-size);box-sizing:border-box;margin:0;accent-color:var(--app-primary)}
html[data-app-page] .module-setting-card{border:1px solid var(--app-border);border-radius:var(--app-radius);background:#fff;box-shadow:none}
html[data-app-page] .module-setting-card:hover{border-color:color-mix(in srgb,var(--app-primary) 38%,var(--app-border));background:#fbfcff}

/* Tableau métier canonique : aspect Analyse CA + tri visuel commun. */
html[data-app-page] :where(.table-wrap,[class*="table-wrap"],.scroll){
  width:100%;max-width:100%;overflow-x:auto;overflow-y:hidden;border:1px solid var(--app-border);border-radius:var(--app-radius);background:#fff;box-shadow:none;
}
html[data-app-page] table,html[data-app-page="admin"] body #content table.rental-admin-data-table{width:100%;min-width:100%;max-width:100%;border-collapse:separate;border-spacing:0;background:#fff;color:var(--app-text);font-size:13px}
html[data-app-page] th{padding:12px 12px;border:0;border-bottom:1px solid var(--app-table-head-border);background:var(--app-table-head);color:var(--app-neutral-text,#475467);font-size:11px;font-weight:800;line-height:1.2;letter-spacing:.025em;text-transform:uppercase;vertical-align:middle;white-space:nowrap}
html[data-app-page] td{padding:13px 12px;border:0;border-bottom:1px solid var(--app-table-row-border);background:#fff;color:var(--app-text);vertical-align:middle;line-height:1.35}
html[data-app-page] tbody tr:last-child td{border-bottom:0}
html[data-app-page] tbody tr:hover td{background:var(--app-table-hover)}

/* Contrat global des tableaux métier : fond continu, en-tête continu et dernière colonne sans rupture visuelle. */
html[data-app-page] table:not([role="presentation"]) thead,
html[data-app-page] table:not([role="presentation"]) thead tr{background:var(--app-table-head)}
html[data-app-page] table:not([role="presentation"]) tbody{background:#fff}
html[data-app-page] table:not([role="presentation"]) :is(th,td):first-child{border-left:0}
html[data-app-page] table:not([role="presentation"]) :is(th,td):last-child{border-right:0}
html[data-app-page] :where(.table-wrap,[class*="table-wrap"]){box-sizing:border-box;background:#fff}
html[data-app-page] :where(.cell-primary){font-weight:800;color:var(--app-text)}
html[data-app-page] :where(.cell-sub){margin-top:3px;color:var(--app-text-muted);font-size:12px;line-height:1.35}
html[data-app-page] :where(td.cell-action){white-space:normal}

html[data-app-page] :where(.tabs,.tenant-tabs,.cleaner-view-tabs){display:flex;align-items:center;flex-wrap:wrap;gap:6px;padding:5px;border:1px solid var(--app-border);border-radius:12px;background:#eef2f7;box-shadow:none}
html[data-app-page] :where(.tabs button,.tenant-tab,.cleaner-view-tab){min-height:38px;padding:7px 13px;border:0;border-radius:9px;background:transparent;color:var(--app-neutral-text,#475467);font-weight:750;text-decoration:none;box-shadow:none}
html[data-app-page] :where(.tabs button.active,.tenant-tab.active.is-active,.cleaner-view-tab.is-active){background:#fff;color:var(--app-primary);box-shadow:0 1px 4px rgba(25,48,83,.10)}

/* Analyse CA : tabs compacts à deux niveaux, sans empilement vertical. */
html[data-app-page="gestion"] body[data-gestion-view="report"] :where(.report-main-tabs,.report-extra-tabs){
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  align-items:stretch;
  gap:6px;
  width:100%;
  margin:0;
  padding:5px;
  border:1px solid var(--app-border);
  border-radius:12px;
  background:#eef2f7;
}
html[data-app-page="gestion"] body[data-gestion-view="report"] :where(.report-main-tabs,.report-extra-tabs)>button{
  display:flex;
  align-items:center;
  justify-content:center;
  width:auto;
  min-width:0;
  min-height:40px;
  margin:0;
  padding:8px 12px;
  border:0;
  border-radius:9px;
  background:transparent;
  color:var(--app-neutral-text,#475467);
  font-weight:750;
  line-height:1.15;
  text-align:center;
  white-space:normal;
}
html[data-app-page="gestion"] body[data-gestion-view="report"] :where(.report-main-tabs,.report-extra-tabs)>button.active{
  background:var(--app-primary);
  color:#fff;
  box-shadow:0 1px 4px rgba(25,48,83,.12);
}
html[data-app-page="gestion"] body[data-gestion-view="report"] .report-analysis-panel{gap:var(--app-section-gap)}
html[data-app-page="gestion"] body[data-gestion-view="report"] .report-extra-tabs-shell>.report-extra-tabs{margin-bottom:12px}
@media(max-width:650px){
  html[data-app-page="gestion"] body[data-gestion-view="report"] :where(.report-main-tabs,.report-extra-tabs){gap:4px;padding:4px}
  html[data-app-page="gestion"] body[data-gestion-view="report"] :where(.report-main-tabs,.report-extra-tabs)>button{min-height:38px;padding:7px 6px;font-size:12px}
}
html[data-app-page] .filters:not(.cleaner-title-filters){border:0;border-radius:0;background:transparent;box-shadow:none;padding:0}
:is(html[data-app-page="gestion"],html[data-app-page="profitability"]) .topbar .filters{border:0;border-radius:0;background:transparent;padding:0}

html[data-app-page] :where(.badge,.status,.platform-badge,.tag,[class*="status-badge"]){display:inline-flex;align-items:center;justify-content:center;min-height:25px;padding:4px 8px;border-radius:999px;background:#eef2f7;color:var(--app-neutral-text,#475467);font-size:11px;font-weight:800;line-height:1;white-space:nowrap}
html[data-app-page] :where(.badge.ok,.platform-badge.ok,.status.ok,.tag.ok){background:var(--app-success-soft,#ecfdf3);color:#067647}
html[data-app-page] :where(.badge.bad,.platform-badge.bad,.status.bad,.tag.bad){background:var(--app-danger-soft,#fff1f0);color:#b42318}
html[data-app-page] :where(.badge.warn,.platform-badge.warn,.status.warn,.tag.warn){background:#fffaeb;color:#b54708}

html[data-app-page] :where(.notice,.platform-notice,.lc-notice){padding:12px 14px;border:1px solid var(--app-border);border-radius:12px;background:#f8fafc;color:var(--app-neutral-text,#475467);box-shadow:none}
html[data-app-page] :where(.notice.error,.platform-notice.error){border-color:var(--app-danger-border,#fecdca);background:#fff6f5;color:#b42318}
html[data-app-page] :where(.notice.ok,.platform-notice.success){border-color:var(--app-success-border,#abefc6);background:var(--app-success-soft,#ecfdf3);color:#067647}
html[data-app-page] :where(.notice.warning,.platform-notice.warning){border-color:#fedf89;background:#fffaeb;color:#b54708}
html[data-app-page] :where(.empty,.empty-state,.platform-empty,.rental-page-empty-state){min-height:84px;padding:20px;border:1px dashed var(--app-border-strong);border-radius:var(--app-radius);background:var(--app-surface-subtle,#fafbfc);color:var(--app-text-muted);text-align:center;box-shadow:none}

html[data-app-page] :where(.modal-backdrop,.owner-modal-backdrop,.rental-create-modal-backdrop,.audit-modal-backdrop,.rental-app-dialog-backdrop){padding:18px}
html[data-app-page] :where(.admin-modal,.owner-modal,.rental-create-modal,.audit-modal,.rental-app-dialog,[role="dialog"]:not(.rental-auth-card)){position:relative;border:1px solid var(--app-border);border-radius:var(--app-radius-lg);background:#fff;color:var(--app-text);box-shadow:var(--app-shadow-modal)}
html[data-app-page] :where(.admin-modal,.owner-modal){padding:22px}
html[data-app-page] .rental-create-modal{display:flex;flex-direction:column;width:min(980px,calc(100vw - 28px));max-height:min(90dvh,860px);overflow:hidden}
html[data-app-page] .rental-create-modal__head{min-height:66px;padding:15px 20px;border-bottom:1px solid var(--app-border);background:#fff}
html[data-app-page] .rental-create-modal__head h2{font-size:21px}
html[data-app-page] .rental-create-modal__content{flex:1 1 auto;overflow:auto;padding:20px}
html[data-app-page] :where(.rental-modal-close,.rental-modal-x){position:absolute;top:12px;right:12px;z-index:30;display:grid;place-items:center;width:40px;min-width:40px;height:40px;min-height:40px;padding:0;border:1px solid var(--app-border-strong);border-radius:10px;background:#fff;color:#344054;opacity:1}
html[data-app-page] :where(.modal-actions,.owner-modal-actions,.rental-app-dialog-actions){display:flex;align-items:center;justify-content:flex-end;flex-wrap:wrap;gap:9px;margin-top:18px}

html[data-app-page="auth"] :where(.rental-auth-page,.login-wrap,.standalone-page){min-height:100dvh;padding:24px;background:var(--app-bg)}
html[data-app-page="auth"] :where(.rental-auth-card,.login-card,.standalone-card,.card){width:min(520px,100%);margin-inline:auto;padding:24px;border:1px solid var(--app-border);border-radius:var(--app-radius-lg);background:#fff;box-shadow:var(--app-shadow)}
html[data-app-page="auth"] :where(.login-actions,.actions){display:flex;gap:9px;margin-top:16px}
html[data-app-page="auth"] :where(.login-actions .btn,.actions .btn,button[type="submit"]){min-height:44px}

html[data-app-page="owner"] .owner-content{display:grid;gap:var(--app-gap)}
html[data-app-page="owner"] .owner-view-panel,
html[data-app-page="owner"] .owner-topbar{max-width:var(--app-shell-content-max,var(--app-content-max));margin-left:auto;margin-right:auto}

html[data-app-page="admin"] .platform-hero{min-height:var(--app-page-header-min-height)}
html[data-app-page="admin"] .platform-panel,
html[data-app-page="admin"] .platform-card{margin-bottom:var(--app-gap)}
html[data-app-page="admin"] .platform-stat-grid,
html[data-app-page="admin"] .platform-audit-stats{grid-template-columns:repeat(auto-fit,minmax(170px,1fr))}

@media(max-width:900px){
  
  html[data-app-page] :where(.top-card,.owner-page-header,.platform-hero,.page-header){min-height:0;padding:16px;border-radius:14px}
  html[data-app-page] :where(.top-card,.owner-page-header,.platform-hero,.page-header){align-items:flex-start;flex-direction:column}
  
:is(html[data-app-page="gestion"],html[data-app-page="profitability"]) .topbar>.top-card{grid-template-columns:minmax(0,1fr);gap:12px}
  :is(html[data-app-page="gestion"],html[data-app-page="profitability"]) .topbar .top-title h1:not(.rental-page-title){white-space:normal}
  :is(html[data-app-page="gestion"],html[data-app-page="profitability"]) .topbar .filters{display:grid;grid-template-columns:96px minmax(0,1fr);width:100%;justify-content:stretch;gap:8px}
  :is(html[data-app-page="gestion"],html[data-app-page="profitability"]) .topbar .filters>.field{width:100%;max-width:none}
  :is(html[data-app-page="gestion"],html[data-app-page="profitability"]) .topbar .filters select{width:100%;min-width:0;max-width:none}
  html[data-app-page="gestion"] body:is([data-gestion-view="report"],[data-gestion-view="calendar"]) .topbar #logementField,
  html[data-app-page="profitability"] body[data-profitability-view="dashboard"] .topbar .filters>.field:nth-child(3){grid-column:1/-1}
  html[data-app-page] :where(.panel,.platform-panel,.platform-card,.users-card,.lc-card,.maint-card,.connector-panel,.rental-page-panel,.ob-card){padding:16px;border-radius:14px}
  html[data-app-page] .rental-create-modal{width:calc(100vw - 16px);max-height:calc(100dvh - 16px)}
  html[data-app-page] .rental-create-modal__content{padding:16px}
}
@media(max-width:640px){
  html[data-app-page] :where(h1:not(.rental-page-title),.top-title h1:not(.rental-page-title),.platform-hero h1:not(.rental-page-title)){font-size:23px}
  html[data-app-page] :where(.modal-actions,.owner-modal-actions,.rental-app-dialog-actions){display:grid;grid-template-columns:1fr}
  html[data-app-page] :where(.modal-actions,.owner-modal-actions,.rental-app-dialog-actions) :where(.btn,.button,.platform-btn,.lc-btn){width:100%}
}

@media(max-width:760px){html[data-app-page="admin"] .platform-table-wrap:has(.platform-table--responsive){overflow:visible;border:0;border-radius:0;background:transparent}}




html[data-app-page="admin"] .billing-kpi-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:12px;margin:14px 0 18px}
html[data-app-page="admin"] .billing-kpi{min-height:var(--app-kpi-min-h);padding:var(--app-kpi-pad-y) var(--app-kpi-pad-x);display:flex;align-items:center;justify-content:space-between;gap:var(--app-kpi-gap);border:1px solid var(--app-border);border-left:4px solid var(--app-primary);border-radius:var(--app-radius);background:var(--app-surface,#fff);box-shadow:var(--app-shadow-sm)}
html[data-app-page="admin"] .billing-kpi span{display:block;margin:0;color:var(--app-text-muted);font-size:var(--app-kpi-label-size);font-weight:800}
html[data-app-page="admin"] .billing-kpi strong{display:block;margin:0;color:var(--app-text);font-size:var(--app-kpi-value-size);font-weight:850;text-align:right}
html[data-app-page="admin"] .billing-form-grid{grid-template-columns:repeat(3,minmax(0,1fr))}
html[data-app-page="admin"] .billing-notes{grid-column:1/-1}
html[data-app-page="admin"] .billing-notes textarea{min-height:104px}
@media(max-width:900px){html[data-app-page="admin"] .billing-kpi-grid{grid-template-columns:repeat(2,minmax(0,1fr))}html[data-app-page="admin"] .billing-form-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:560px){html[data-app-page="admin"] .billing-kpi-grid,
html[data-app-page="admin"] .billing-form-grid{grid-template-columns:1fr}html[data-app-page="owner"] .owner-report-toolbar .field{width:100%}}

html[data-app-page] :where(.topbar > .top-card,.panel,.card,.box,.rental-page-panel,.owner-view-panel,.platform-card,.filters){
  border-width:0 ;
}

.admin-owner-stay-simple-options,.owner-stay-services-options{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-top:10px}.admin-owner-stay-simple-options .checkline,.owner-stay-services-options .checkline{display:grid;grid-template-columns:22px minmax(0,1fr);align-items:start;gap:10px;margin:0;min-width:0;padding:12px 14px}.admin-owner-stay-simple-options .checkline input,.owner-stay-services-options .checkline input{width:18px;height:18px;margin:2px 0 0}.admin-owner-stay-simple-options .checkline>span,.owner-stay-services-options .checkline>span{display:flex;flex-direction:column;gap:3px;min-width:0}.admin-owner-stay-simple-options .checkline strong,.owner-stay-services-options .checkline strong{display:block;line-height:1.25}.admin-owner-stay-simple-options .checkline small,.owner-stay-services-options .checkline small{display:block;line-height:1.35;color:var(--muted)}.admin-logement-edit-guard{margin:0 18px 14px;padding:12px 14px;border-radius:14px;background:#f7f9ff;display:flex;flex-direction:column;gap:4px}.admin-logement-edit-guard.is-protected{background:#fff8e8}.admin-logement-edit-guard strong{font-size:13px}.admin-logement-edit-guard span,.admin-logement-edit-guard small{line-height:1.35;color:var(--muted)}.admin-logement-section-note{margin:0 0 12px;padding:9px 12px;border-radius:var(--app-radius-md,12px);background:#fff8e8;font-size:12px;line-height:1.4}.admin-logement-modal select:disabled,.admin-logement-modal input:disabled{opacity:.72;cursor:not-allowed;background:#f3f5f8}@media(max-width:680px){.admin-owner-stay-simple-options,.owner-stay-services-options{grid-template-columns:1fr}.admin-logement-edit-guard{margin-left:0;margin-right:0}}

@media (max-width: 900px){
  :root{--app-mobile-gutter:8px}

  html[data-app-page]:not([data-app-page="admin"]) :where(.app-content,.admin-content,.owner-content,.platform-console-wrap,.users-wrap,.technical-wrap,.content,#content,#viewRoot,.cleaner-content){
    width:100%;
    min-width:0;
    max-width:100%;
    margin-left:0;
    margin-right:0;
    padding-left:0;
    padding-right:0;
    box-sizing:border-box;
  }

  html[data-app-page="gestion"] main.main,
html[data-app-page="profitability"] main.main,
html[data-app-page="legal-center"] .lc-main{
    padding-left:var(--app-mobile-gutter);
    padding-right:var(--app-mobile-gutter);
  }
  html[data-app-page="owner"] #ownerApp:not(.hidden){
    padding-left:var(--app-mobile-gutter);
    padding-right:var(--app-mobile-gutter);
  }

  html[data-app-page] :where(.cards,.admin-cards,.card-list,.cleaner-grid,.summary,.summary-grid,.metric-grid,.platform-stat-grid,.platform-audit-stats,.billing-kpi-grid){
    width:100%;
    min-width:0;
    max-width:100%;
    margin-left:0;
    margin-right:0;
    box-sizing:border-box;
  }

  html[data-app-page] :where(.card,.summary-card,.mobile-card,.platform-card,.maint-card,.users-card,.lc-card,.connector-panel,.rental-page-panel,.ob-card,.owner-view-panel,.cleaner-task,.billing-kpi){
    width:100%;
    min-width:0;
    max-width:100%;
    margin-left:0;
    margin-right:0;
    box-sizing:border-box;
  }

  
  html[data-app-page="admin"] #content .admin-cards,
  html[data-app-page="admin"] .admin-reservations-section .admin-cards,
  :is(html[data-app-page="cleaner"],html[data-app-page="interventions"]) .cleaner-grid{
    grid-template-columns:minmax(0,1fr);
  }
}

@media (max-width:900px){
  html[data-app-page="gestion"] body .app-shell > main.main,
html[data-app-page="profitability"] body .app-shell > main.main,
html[data-app-page="owner"] body #ownerApp:not(.hidden),
html[data-app-page="cleaner"] body .cleaner-app,
html[data-app-page="interventions"] body .cleaner-app,
html[data-app-page] body .platform-console-main{
    width:100%;min-width:0;max-width:100%;
    margin-left:0;margin-right:0;box-sizing:border-box;
  }
  html[data-app-page="admin"] body #content,
html[data-app-page="admin"] body #content > .admin-cards,
html[data-app-page="profitability"] body #viewRoot,
html[data-app-page="owner"] body .owner-content,
:is(html[data-app-page="cleaner"],html[data-app-page="interventions"]) body .cleaner-content,
:is(html[data-app-page="cleaner"],html[data-app-page="interventions"]) body .cleaner-grid{
    width:100%;min-width:0;max-width:100%;
    margin-left:0;margin-right:0;box-sizing:border-box;
  }
}

/* APP RENTAL — canonical form/page system. One source of truth. */
/* rythme vertical commun des pages. `gap` reste inerte sur les conteneurs non flex/grid. */
html[data-app-page] :where(.content,.admin-content,.cleaner-content,.owner-content,.platform-console-wrap,.technical-wrap,.users-wrap,#viewRoot){gap:var(--app-section-gap)}
html[data-app-page]:not([data-app-page="admin"]) :where(.main,.admin-main-content,.platform-console-main,.users-main,.lc-main){padding:var(--app-page-pad);min-width:0;width:100%}
html[data-app-page]:not([data-app-page="admin"]) :where(.content,.admin-content,#viewRoot,.platform-console-wrap,.users-wrap,.cleaner-app,.lc-main>*){width:100%;max-width:var(--app-content-max);margin-inline:var(--app-content-margin-inline,auto);box-sizing:border-box}
html[data-app-page] :where(.field,.platform-field,.lc-field){display:grid;min-width:0;margin:0;}
html[data-app-page] :where(.field input,.field select,.field textarea,.platform-field input,.platform-field select,.platform-field textarea,.lc-field input,.lc-field select,.lc-field textarea){width:100%;min-height:var(--app-control-h);box-sizing:border-box}
html[data-app-page] :where(.form-grid,.language-settings-grid,.whatsapp-automation-grid){gap:var(--app-form-gap)}
html[data-app-page] :where(.panel,.card,.users-card,.language-card,.lc-card){padding:var(--app-card-pad);box-sizing:border-box}
@media(max-width:900px){:root{--app-page-pad:10px}}

/* apparence KPI canonique : une source visuelle, grilles locales. */
html[data-app-page] :is(.cleaner-kpi,.summary-card,.metric-grid>.metric,.platform-stat,.platform-stat-card,.admin-legal-filter,.admin-management-kpi,.admin-business-card,.billing-kpi,.owner-finance-kpi,.report-summary-metric,.profitability-metric,.profitability-detail-metric,.lc-kpi,.connector-status-card){min-height:var(--app-kpi-min-h);padding:var(--app-kpi-pad-y) var(--app-kpi-pad-x);border:1px solid var(--app-border);border-left:4px solid var(--app-primary);border-radius:var(--app-radius);background:var(--app-surface);box-shadow:var(--app-shadow-sm);font-family:var(--app-font);box-sizing:border-box}
html[data-app-page] :is(.cleaner-kpi,.summary-card,.metric-grid>.metric,.platform-stat,.platform-stat-card,.admin-legal-filter,.admin-management-kpi,.admin-business-card,.billing-kpi,.owner-finance-kpi,.report-summary-metric,.profitability-metric,.profitability-detail-metric,.lc-kpi,.connector-status-card){display:flex;align-items:center;justify-content:space-between;gap:var(--app-kpi-gap)}
html[data-app-page] :is(.cleaner-kpi,.summary-card,.metric-grid>.metric,.platform-stat,.platform-stat-card,.admin-legal-filter,.admin-management-kpi,.admin-business-card,.billing-kpi,.owner-finance-kpi,.report-summary-metric,.profitability-metric,.profitability-detail-metric,.lc-kpi,.connector-status-card) :is(span,.summary-label){margin:0;color:var(--app-text-muted);font-size:var(--app-kpi-label-size);font-weight:800;line-height:1.2;text-align:left}
html[data-app-page] :is(.cleaner-kpi,.summary-card,.metric-grid>.metric,.platform-stat,.platform-stat-card,.admin-legal-filter,.admin-management-kpi,.admin-business-card,.billing-kpi,.owner-finance-kpi,.report-summary-metric,.profitability-metric,.profitability-detail-metric,.lc-kpi,.connector-status-card) :is(strong,.summary-number){margin:0;color:var(--app-text);font-size:var(--connector-kpi-value-size,var(--app-kpi-value-size));font-weight:850;line-height:1.08;text-align:right;font-variant-numeric:tabular-nums}
html[data-app-page] .platform-audit-stat{min-height:68px;padding:var(--app-kpi-pad-y) var(--app-kpi-pad-x)}
html[data-app-page="admin"] body.admin-view-reservations #summary .summary-card{min-height:var(--app-kpi-min-h);padding:var(--app-kpi-pad-y) var(--app-kpi-pad-x);border-radius:var(--app-radius);background:var(--app-surface);box-shadow:var(--app-shadow-sm);display:flex;flex-direction:row;align-items:center;justify-content:space-between}
html[data-app-page="admin"] body.admin-view-reservations #summary .summary-card.main,html[data-app-page="admin"] body.admin-view-reservations #summary .summary-card.main *{background:var(--app-surface);color:inherit}
html[data-app-page="admin"] .admin-legal-filterbar{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:var(--app-kpi-gap);margin:0 0 var(--app-section-gap)}
html[data-app-page="admin"] .admin-legal-filter{border-radius:var(--app-radius);min-height:var(--app-kpi-min-h);padding:var(--app-kpi-pad-y) var(--app-kpi-pad-x);width:100%}
html[data-app-page="admin"] .admin-legal-filter strong{min-width:0;height:auto;padding:0;border-radius:0;background:transparent}
html[data-app-page="admin"] .admin-legal-filter.active{background:var(--app-surface);color:var(--app-text);border-color:var(--app-border);border-left-color:var(--app-primary)}
html[data-app-page="gestion"] body[data-gestion-view="report"] .report-summary-metric strong,html[data-app-page="profitability"] .profitability-metric strong{font-size:var(--app-kpi-finance-value-size);white-space:nowrap;overflow:visible;text-overflow:clip;letter-spacing:-.025em;max-width:none}
@media(max-width:760px){html[data-app-page] :is(.cleaner-kpi,.summary-card,.metric-grid>.metric,.platform-stat,.platform-stat-card,.admin-legal-filter,.admin-management-kpi,.admin-business-card,.billing-kpi,.owner-finance-kpi,.report-summary-metric,.profitability-metric,.profitability-detail-metric,.lc-kpi,.connector-status-card){min-height:var(--app-kpi-mobile-min-h);padding:var(--app-kpi-mobile-pad-y) var(--app-kpi-mobile-pad-x)}html[data-app-page] :is(.cleaner-kpi,.summary-card,.metric-grid>.metric,.platform-stat,.platform-stat-card,.admin-legal-filter,.admin-management-kpi,.admin-business-card,.billing-kpi,.owner-finance-kpi,.report-summary-metric,.profitability-metric,.profitability-detail-metric,.lc-kpi,.connector-status-card) :is(span,.summary-label){font-size:var(--app-kpi-mobile-label-size)}html[data-app-page] :is(.cleaner-kpi,.summary-card,.metric-grid>.metric,.platform-stat,.platform-stat-card,.admin-legal-filter,.admin-management-kpi,.admin-business-card,.billing-kpi,.owner-finance-kpi,.report-summary-metric,.profitability-metric,.profitability-detail-metric,.lc-kpi,.connector-status-card) :is(strong,.summary-number){font-size:var(--connector-kpi-mobile-value-size,var(--app-kpi-mobile-value-size))}html[data-app-page="admin"] .admin-legal-filterbar{grid-template-columns:repeat(2,minmax(0,1fr))}}

html[data-app-page] table:not([role="presentation"]) thead th{background:var(--app-surface-muted);color:var(--app-text);font-size:11px;font-weight:850;text-transform:uppercase;letter-spacing:.035em;border-bottom:1px solid var(--app-border)}
html[data-app-page] table thead th[data-rental-sortable="1"]{cursor:pointer;user-select:none;white-space:nowrap}
html[data-app-page] table thead th[data-rental-sortable="1"]::after{content:"⇅";display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;min-width:16px;margin-left:5px;border:1px solid color-mix(in srgb,var(--app-text-subtle) 48%,transparent);border-radius:4px;color:var(--app-text-subtle);font-size:10px;font-weight:900;line-height:1;vertical-align:middle;opacity:.78}
html[data-app-page] table thead th[data-rental-sort-dir="asc"]::after{content:"↑";color:var(--app-primary);border-color:color-mix(in srgb,var(--app-primary) 50%,transparent)}html[data-app-page] table thead th[data-rental-sort-dir="desc"]::after{content:"↓";color:var(--app-primary);border-color:color-mix(in srgb,var(--app-primary) 50%,transparent)}

/* rythme vertical, titres et actions harmonisés globalement. */
html[data-app-page] body .topbar>.top-card .top-title h1:not(.rental-page-title),html[data-app-page] body .rental-page-header>h1:not(.rental-page-title){margin:0;font-size:30px;line-height:1.08;font-weight:800;letter-spacing:-.03em}
html[data-app-page] :where(.summary-grid,.metric-grid,.lc-summary,.cleaner-summary)+*{margin-top:var(--app-section-gap)}
html[data-app-page] :where(.panel-head,.section-title,.connector-panel-head,.admin-management-head)+:where(.table-wrap,.admin-table-wrap,.platform-table-wrap,.connector-table-wrap,.admin-modern-table-wrap){margin-top:var(--app-block-gap)}
html[data-app-page] .rental-subsection-title{margin:var(--app-section-gap) 0 var(--app-block-gap)}
@media(max-width:760px){html[data-app-page] body .topbar>.top-card .top-title h1:not(.rental-page-title),html[data-app-page] body .rental-page-header>h1:not(.rental-page-title){font-size:26px}}

/* Planning Admin : pleine largeur sans cadre décoratif. */
html[data-app-page="admin"] body.admin-view-planning .admin-planning-section.owner-planning-shell,
html[data-app-page="admin"] body.admin-view-planning #content .rental-admin-planning-overview{
  padding:0;
  border:0;
  border-radius:0;
  background:transparent;
  box-shadow:none;
}

/* titres de modale et KPI compacts communs. */
html[data-app-page] :is(.dialog,.admin-modal,.owner-modal)>.panel-head h3,html[data-app-page] :is(.dialog,.admin-modal,.owner-modal)>h3{font-size:var(--app-modal-title-size);line-height:1.2;font-weight:800;letter-spacing:-.015em}
html[data-app-page="gestion"] .report-detail-dialog .metric{min-height:var(--app-modal-kpi-min-h);padding:9px 11px;gap:7px;min-width:0}
html[data-app-page="gestion"] .report-detail-dialog .metric span{color:var(--app-text-muted);font-size:11px;font-weight:800;line-height:1.15}
html[data-app-page="gestion"] .report-detail-dialog .metric strong{min-width:max-content;flex:0 0 auto;font-size:clamp(14px,1.35vw,var(--app-modal-kpi-value-size));font-weight:850;line-height:1.08;text-align:right;white-space:nowrap;overflow:visible;text-overflow:clip;font-variant-numeric:tabular-nums}
html[data-app-page="profitability"] .profitability-detail-dialog>.panel-head h3{font-size:var(--app-modal-title-size);font-weight:800}
html[data-app-page="profitability"] .profitability-detail-metric{min-height:var(--app-modal-kpi-min-h);padding:9px 11px;gap:7px;min-width:0}
html[data-app-page="profitability"] .profitability-detail-metric span{color:var(--app-text-muted);font-size:11px;font-weight:800;line-height:1.15}
html[data-app-page="profitability"] .profitability-detail-metric strong{min-width:max-content;flex:0 0 auto;font-size:clamp(14px,1.35vw,var(--app-modal-kpi-value-size));font-weight:850;line-height:1.08;text-align:right;overflow:visible;text-overflow:clip;white-space:nowrap;font-variant-numeric:tabular-nums}

/* titre principal de page canonique.
   La typographie d’un H1 applicatif se règle ici, jamais dans un module local. */
html[data-app-page] .rental-page-title{
  margin:0;
  color:var(--app-text);
  font-family:var(--app-font);
  font-size:var(--app-page-title-size);
  font-weight:850;
  line-height:1.1;
  letter-spacing:-.02em;
  text-align:left;
}
@media(max-width:760px){
  html[data-app-page] .rental-page-title{font-size:26px;}
}


/* Canvas métier et tableaux : Espace interventions est la référence de largeur.
   Titre, KPI, actions et tableau utilisent la même voie de contenu. Les wrappers
   de layout restent transparents : seules les vraies cartes/tableaux peignent une surface. */
html[data-app-page] body :where(.topbar,.rental-page-header,.admin-content,.content,.owner-content,.cleaner-topbar,.cleaner-content,#viewRoot,.platform-console-wrap,.technical-wrap,.journal-page,.lc-main>*){
  width:100%;max-width:var(--app-content-max);box-sizing:border-box;
}
html[data-app-page] body :where(.summary-grid,.cleaner-summary,.admin-business-grid,.platform-stat-grid,.billing-kpi-grid,.report-kpi-grid,.profitability-kpi-grid,.rental-kpi-grid,[class*="kpi-grid"],[class*="summary-grid"]){
  width:100%;max-width:100%;box-sizing:border-box;
}
html[data-app-page] body :where(.table-wrap,[class*="table-wrap"],.rental-table-frame,.rental-table-card,.admin-operation-table-shell),
html[data-app-page="admin"] body #content .rental-admin-table-frame{
  width:100%;max-width:100%;box-sizing:border-box;
}

/* En-tête de colonne canonique — référence Analyse CA. */
html[data-app-page][data-app-page] body table:not([role="presentation"]) thead th,
html[data-app-page="admin"] body #content table.rental-admin-data-table>thead>tr>th{
  height:46px;padding:9px 10px;background:var(--app-table-head);
  border:0;border-bottom:1px solid var(--app-table-head-border);
  color:var(--app-text);font-size:11px;font-weight:850;line-height:1.15;
  text-transform:uppercase;letter-spacing:.035em;vertical-align:middle;white-space:nowrap;
}
html[data-app-page][data-app-page] body table:not([role="presentation"]) thead th :where(button,.admin-res-sort-button){
  display:inline-flex;align-items:center;min-height:0;height:auto;
  padding:0;border:0;border-radius:0;background:transparent;
  color:inherit;box-shadow:none;font:inherit;font-size:inherit;font-weight:inherit;
  line-height:inherit;text-transform:inherit;letter-spacing:inherit;cursor:pointer;
}
html[data-app-page][data-app-page] body table:not([role="presentation"]) thead th :where(button,.admin-res-sort-button):is(:hover,:active,:focus){
  border:0;background:transparent;color:inherit;box-shadow:none;transform:none;
}

/* workspace runtime : le wrapper compose les blocs sans dessiner une carte. */
html[data-app-page] body .rental-page-workspace,html[data-app-page="admin"] body #content .rental-admin-workspace{width:100%;max-width:100%;min-width:0;margin:0;padding:0;border:0;border-radius:0;background:transparent;box-shadow:none;box-sizing:border-box}
html[data-app-page] body .rental-page-workspace>:where(.summary-grid,.report-summary-metrics,[class*="kpi-grid"],[class*="summary-grid"],[class*="table-wrap"],.rental-table-frame){width:100%;max-width:100%;min-width:0;box-sizing:border-box}


/* Planning Administration : suppression du vrai cadre extérieur obsolète.
   .global-strip peignait encore une carte blanche avec 15/16px de padding et
   réduisait visuellement le Gantt malgré le canvas pleine largeur. */
html[data-app-page="admin"] body.admin-view-planning #content .global-strip{
  width:100%;max-width:100%;min-width:0;
  margin:0;padding:0;border:0;border-radius:0;
  background:transparent;box-shadow:none;box-sizing:border-box;
}
html[data-app-page="admin"] body.admin-view-planning #content .global-strip > .rpg-month{
  width:100%;max-width:100%;margin:0;
}

/* Actions de tableau : contrat compact unique, indépendant des boutons de formulaire. */
html[data-app-page] table .icon-action-btn,
html[data-app-page] table .admin-icon-btn,
html[data-app-page] table .btn.icon,
html[data-app-page] table .view-icon-btn{
  width:32px;min-width:32px;max-width:32px;
  height:32px;min-height:32px;max-height:32px;
  padding:0;border-radius:9px;display:inline-flex;
  align-items:center;justify-content:center;line-height:1;box-shadow:none;
}
html[data-app-page] table :where(.table-actions,.admin-table-actions,.actions){
  display:flex;align-items:center;justify-content:flex-end;gap:6px;flex-wrap:nowrap;white-space:nowrap;
}
html[data-app-page] table :where(.icon-action-btn.delete,.icon-action-btn.cancel,.admin-icon-btn.danger,.btn.icon.danger){
  background:var(--app-danger-surface,#fff5f5);border-color:var(--app-danger-border,#efc2c2);color:var(--app-danger,#d92d20);
}


/* Admin Check-in légal : onglets strictement identiques dans les 3 états. */
html[data-app-page="admin"] body.admin-view-legalcheckin .admin-legal-mossos-alert{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin:0 0 14px;padding:12px 14px;border:1px solid #f0b5b5;border-left:4px solid #b42318;border-radius:var(--app-radius-md,12px);background:#fff5f5;color:#7a1f1f}
html[data-app-page="admin"] body.admin-view-legalcheckin .admin-legal-mossos-alert strong{font-size:13px;line-height:1.35;color:#8f1d1d}
html[data-app-page="admin"] body.admin-view-legalcheckin .admin-legal-mossos-alert span{font-size:12px;line-height:1.4;color:#7a3030;text-align:right}
@media(max-width:760px){html[data-app-page="admin"] body.admin-view-legalcheckin .admin-legal-mossos-alert{flex-direction:column;gap:4px}html[data-app-page="admin"] body.admin-view-legalcheckin .admin-legal-mossos-alert span{text-align:left}}


/* Géométrie globale stabilisée.
   - le menu réduit libère réellement le canvas ;
   - les surfaces de données gardent les angles du design system ;
   - les contrôles ne retombent plus au rayon carré/6px introduit par une ancienne surcharge locale. */
html[data-app-page] body :where(.btn,.button,button:not(.rental-day-cell):not(.rpg-bar)){border-radius:var(--app-radius-sm,10px)}
html[data-app-page] body :where(input:not([type="checkbox"]):not([type="radio"]),select,textarea){border-radius:var(--app-radius-sm,10px)}
html[data-app-page] body :where(.res-tab,.tab,.cleaner-view-tab,.channex-filter-tab){border-radius:var(--app-radius-sm,10px)}

html[data-app-page] body :where(
  .admin-res-table-wrap,.owner-res-table-wrap,.data-table,.table-wrap,.admin-table-wrap,
  .admin-modern-table-wrap,.rental-table-frame,.rental-table-card,.cleaner-table-wrap,
  .connector-table-wrap,.platform-table-wrap,.lc-table-wrap
){
  border-radius:var(--app-radius-md,12px);
  overflow-x:auto;
  overflow-y:hidden;
  background:var(--app-surface,#fff);
}
html[data-app-page] body :where(.admin-res-table-wrap,.owner-res-table-wrap,.data-table,.cleaner-table-wrap,.connector-table-wrap) > table{
  border-radius:inherit;
}

/* Quand le menu latéral est réduit, aucun centrage/max-width historique ne doit
   conserver la largeur de l'ancien menu. Le contenu utilise toute la colonne libre. */
@media(min-width:1025px){
  html.app-sidebar-collapsed[data-app-page] body :where(
    .topbar,.rental-page-header,.admin-content,.content,.owner-content,.cleaner-topbar,.cleaner-content,
    #viewRoot,.platform-console-wrap,.technical-wrap,.journal-page,.users-wrap,.admin-standalone-content,
    .connector-page,.lc-main>*
  ){
    width:100%;
    max-width:none;
    margin-left:0;
    margin-right:0;
  }
  html.app-sidebar-collapsed[data-app-page] body :where(.cleaner-app,.connector-main,.admin-main-content,.platform-console-main,.technical-main,.main){
    width:100%;
    max-width:none;
    min-width:0;
  }
}

/* Check-in légal : même contrat d'onglets et de tableau que Réservations/Analyse. */
html[data-app-page="admin"] body.admin-view-legalcheckin :where(.res-tab,.admin-legal-tab){border-radius:var(--app-radius-sm,10px)}
html[data-app-page="admin"] body.admin-view-legalcheckin :where(.admin-legal-table-wrap,.data-table,.table-wrap){border-radius:var(--app-radius-md,12px);overflow:hidden}

/* I18n : l'espagnol et l'anglais ont souvent des libellés plus longs que le français.
   Les onglets/filtres s'élargissent ou reviennent à la ligne sans tronquer le texte. */
html[lang="es"][data-app-page] body :where(.res-tabs,.connector-tabs,.admin-legal-unified-tabs),
html[lang="en"][data-app-page] body :where(.res-tabs,.connector-tabs,.admin-legal-unified-tabs){flex-wrap:wrap;overflow:visible}
html[lang="es"][data-app-page] body :where(.res-tab,.tab,.admin-legal-tab,.connector-tabs button),
html[lang="en"][data-app-page] body :where(.res-tab,.tab,.admin-legal-tab,.connector-tabs button){white-space:normal;min-width:max-content;line-height:1.25}
html[lang="es"][data-app-page] body :where(.filters select,.rental-page-filterbar select,.service-header-filters select),
html[lang="en"][data-app-page] body :where(.filters select,.rental-page-filterbar select,.service-header-filters select){min-width:170px;width:auto;max-width:100%}


/* canvas desktop réellement extensible sur toute la colonne disponible. */
@media(min-width:1025px){
  html[data-app-page] body :where(
    .topbar,.content,.admin-content,#content,#viewRoot,.owner-content,
    .cleaner-topbar,.cleaner-content,.platform-console-wrap,.technical-wrap,
    .journal-page,.users-wrap,.admin-standalone-content,.connector-page
  ){
    width:100%;
    max-width:none;
    min-width:0;
    margin-left:0;
    margin-right:0;
    box-sizing:border-box;
  }
}

/* largeur de page liée uniquement à la colonne réelle du menu.
   Quand le menu passe de 264px à 72px, le canvas métier récupère immédiatement l'espace. */
@media(min-width:1025px){
  html[data-app-page] body :where(.app-shell,.admin-shell,.owner-shell,.lc-app,.technical-shell){width:100%;max-width:none;min-width:0}
  html[data-app-page] body :where(.main,.admin-main-content,.owner-content,.platform-console-main,.technical-main,.users-main,.journal-main,.connector-main,.lc-main){width:100%;max-width:none;min-width:0;margin-left:0;margin-right:0}
  html[data-app-page="admin"] body :where(.topbar,.admin-content,.content,#content,#viewRoot,.users-wrap,.platform-console-wrap,.technical-wrap,.admin-standalone-content){width:100%;max-width:none;min-width:0;margin-left:0;margin-right:0}
  html[data-app-page="gestion"] body :where(.topbar,.content,#viewRoot),
  html[data-app-page="profitability"] body :where(.topbar,.content,#viewRoot),
  html[data-app-page="owner"] body :where(.owner-content,#reservations,#planning,#ownerReportContent){width:100%;max-width:none;min-width:0;margin-left:0;margin-right:0}
}


/* Business pages canonique : les formulaires et détails métier complexes vivent dans la page. */
.rental-business-page{display:block;position:static;width:100%;min-width:0;margin:0;padding:0;background:transparent;z-index:auto;}
.rental-business-page.hidden{display:none;}
.rental-business-page-card{position:static;width:100%;max-width:none;max-height:none;min-height:0;overflow:visible;margin:0;padding:24px;border:1px solid var(--rental-border,#d9e1ee);border-radius:18px;background:var(--rental-surface,#fff);box-shadow:0 10px 28px rgba(21,39,72,.06);}
/* Famille A — Ajout/Modification plein écran : largeur canonique unique, centrée.
   Le token global évite les exceptions de largeur page par page. */
:root{--app-business-form-max-width:900px;--app-reservation-form-max-width:1080px;}
.rental-business-page-card--form{max-width:var(--app-business-form-max-width);margin-inline:auto;}
/* Typographie de titre canonique, commune à toutes les apps (Admin avait déjà la sienne
   en local ; Rentabilité n'en avait aucune — d'où le titre "Prestataires" sans style avant
   ce correctif). Le badge éventuel (ex. "Fiche centralisée") est un enfant du <h3>, jamais
   un wrapper séparé : il partage la même ligne sans ajouter de hauteur arbitraire.
   S'applique à toute .rental-business-page-card (formulaire ou fiche plein largeur en
   lecture seule) : les deux familles partagent le même contrat de titre. */
.rental-business-page-card > h3{margin:0 0 8px;color:var(--rental-text,#172033);font-size:24px;font-weight:850;line-height:1.2;display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;}
.rental-business-page-card > p{margin:0 0 16px;color:var(--rental-muted,#6f7890);font-size:14px;line-height:1.45;}
/* Un identifiant technique long et sans espace (ex. "PROFITABILITY_AUTO_FREEZE_RUN") est un
   seul "mot" pour le navigateur : sans ce garde-fou, l'élément flex ne le laisse jamais
   passer à la ligne et le titre déborde hors de l'écran sur mobile. */
.rental-business-page-card > h3 > span:first-child{min-width:0;overflow-wrap:anywhere;}
.rental-business-page-header{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:20px;}
.rental-business-page-title{margin:0;font-size:clamp(1.25rem,2vw,1.65rem);line-height:1.2;}
.rental-business-page-back{display:inline-flex;align-items:center;gap:8px;margin:0 0 18px;align-self:flex-start;}
.rental-business-page-back .rental-mask-icon{width:16px;height:16px;}
.rental-business-page-actions{display:flex;align-items:center;justify-content:flex-end;gap:10px;flex-wrap:wrap;margin-top:22px;padding-top:18px;border-top:1px solid var(--rental-border,#d9e1ee);}
.rental-business-page .rental-modal-close{position:static;}
.rental-business-page [role="dialog"]{max-width:none;max-height:none;overflow:visible;}
@media(max-width:720px){.rental-business-page-card{padding:18px;border-radius:14px;}.rental-business-page-back{display:flex;width:max-content;margin-left:auto;margin-right:0;align-self:flex-end;}.rental-business-page-actions{justify-content:stretch;}.rental-business-page-actions>.btn{flex:1 1 auto;}}
@media(max-width:720px){
html[data-app-page] :where(.rental-business-page-card--form,.admin-modal,.owner-modal,.lc-modal,.cleaner-task-modal,.profitability-modal) :where(.admin-param-modal-grid,.admin-logement-modal-grid,.admin-modal-grid,.admin-form-grid,.owner-modal-grid,.profitability-form-grid,.cleaner-grid,.service-type-form){grid-template-columns:minmax(0,1fr);width:100%;min-width:0;max-width:none;}
html[data-app-page] :where(.rental-business-page-card--form,.admin-modal,.owner-modal,.lc-modal,.cleaner-task-modal,.profitability-modal) :where(form,.admin-param-modal-section,.admin-logement-modal-section,.field,.lc-field,.cleaner-field,.admin-form-field,.full){width:100%;min-width:0;max-width:none;box-sizing:border-box;}
html[data-app-page] :where(.rental-business-page-card--form,.admin-modal,.owner-modal,.lc-modal,.cleaner-task-modal,.profitability-modal) :where(input:not([type="checkbox"]):not([type="radio"]):not([type="hidden"]),select,textarea){display:block;width:100%;min-width:0;max-width:none;box-sizing:border-box;}
}


/* Page métier exclusive : LISTE -> PAGE DÉTAIL -> RETOUR.
   Une fiche métier visible remplace la vue de liste dans son host et ne crée jamais de second scroll. */
.rental-business-page-host-open > :not(.rental-business-page):not(.rental-business-view-persistent){display:none;}
.rental-business-page-host-open > .rental-business-page:not(.hidden){display:block;width:100%;max-width:none;min-width:0;}
/* Le scroll est déjà géré en permanence par html (voir plus haut) : ce bloc ne gère plus
   que la mise en page de la page métier elle-même, pas l'overflow du body. */
html[data-app-page="admin"] body.rental-business-page-active #adminPageActions{display:none;}
html[data-app-page="admin"] body.rental-business-page-active #adminReservationTopFilters{display:none;}
/* Une fiche métier remplace complètement son en-tête de liste. L'état global est
   synchronisé par microtâche avant peinture : aucun bandeau vide ne précède la fiche. */
html[data-app-page="admin"] body.rental-business-page-active #adminReservationTopCard.top-card{display:none;}
body.rental-business-page-active .rental-business-page:not(.hidden){width:100%;max-width:none;min-width:0;height:auto;max-height:none;overflow:visible;}
body.rental-business-page-active .rental-business-page:not(.hidden) .rental-business-page-card,
body.rental-business-page-active .rental-business-page:not(.hidden) [role="region"]{min-width:0;height:auto;max-height:none;overflow:visible;}
/* Famille A (--form) garde sa largeur canonique via --app-business-form-max-width : ce verrou de scroll
   plein écran ne doit forcer width:100%/max-width:none/margin:0 que pour les autres
   pages métier (canvas pleine largeur, liste -> détail). */
body.rental-business-page-active .rental-business-page:not(.hidden) .rental-business-page-card:not(.rental-business-page-card--form),
body.rental-business-page-active .rental-business-page:not(.hidden) [role="region"]:not(.rental-business-page-card--form){width:100%;max-width:none;margin:0;}

/* contrat visuel global : actions, modales et journal. */
html[data-app-page] body .rental-add-trigger{
  height:46px;
  min-height:46px;
  padding:10px 18px;
  border-radius:14px;
  gap:8px;
  font-weight:850;
  line-height:1.1;
  white-space:nowrap;
  box-shadow:var(--app-primary-action-shadow);
}
html[data-app-page] .rental-add-trigger .rental-vicon{width:18px;height:18px;flex:0 0 18px;}

/* Une vraie modale courte garde toujours sa fermeture dans l’angle supérieur droit. */
html[data-app-page] body :where(.modal-backdrop,.owner-modal-backdrop,.dialog-backdrop) > :where(.admin-modal,.owner-modal,.modal-card,.dialog){position:relative;}
html[data-app-page] body :where(.modal-backdrop,.owner-modal-backdrop,.dialog-backdrop) > :where(.admin-modal,.owner-modal,.modal-card,.dialog) > :where(.rental-modal-close,.rental-modal-x){
  position:absolute;
  top:12px;
  right:12px;
  left:auto;
  margin:0;
}
html[data-app-page="admin"] body .modal-backdrop > .admin-config-password-modal{
  width:min(520px,calc(100vw - 32px));
  max-width:520px;
  padding:22px;
}
html[data-app-page="admin"] body .admin-config-password-modal .admin-config-password-fields{grid-template-columns:1fr;}

/* Journal organisation : une ligne = une ligne. Aucun étirement vertical artificiel. */
html[data-app-page="admin"] body .admin-log-table tbody{display:table-row-group;height:auto;}
html[data-app-page="admin"] body .admin-log-table tbody tr{display:table-row;height:40px;min-height:40px;}
html[data-app-page="admin"] body .admin-log-table tbody td{
  height:40px;
  min-height:40px;
  padding:5px 8px;
  line-height:1.25;
  vertical-align:middle;
}
html[data-app-page="admin"] body .admin-log-table .admin-log-cell{
  display:block;
  height:auto;
  min-height:0;
  padding:0;
  line-height:1.25;
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
}

/* une seule bordure de tableau métier, portée par le frame canonique. */
html[data-app-page] .rental-table-frame{
  border:1px solid var(--app-table-head-border,#d8e1ee);
  border-radius:18px;
  background:#fff;
  overflow-x:auto;
  overflow-y:hidden;
  box-sizing:border-box;
}
html[data-app-page] .rental-table-frame > .rental-data-table,
html[data-app-page] .rental-table-frame .rental-data-table{
  width:100%;
  border:0;
  border-collapse:separate;
  border-spacing:0;
  background:#fff;
}

/* filtres, journaux et tableaux métier canoniques. */
html[data-app-page] :where(.filters,.rental-filter-toolbar,.analysis-filters,.journal-filter-row)>*{min-width:0;max-width:100%}
html[data-app-page] :where(.filters,.rental-filter-toolbar,.analysis-filters,.journal-filter-row) :is(select,input){max-width:100%}
html[data-app-page="admin"] .journal-table :is(th,td){height:auto;min-height:0;vertical-align:middle;line-height:1.35}
html[data-app-page="admin"] .journal-table td{padding-block:10px}
html[data-app-page="services"] .service-table-simplified .cleaner-table-property{min-width:260px;width:34%}
.service-history-assignee{display:block;margin-top:3px;color:var(--app-text-muted,#667085);font-size:12px;font-weight:750}

/* Palier tablette uniquement : en dessous de 761px, le contrat plein-largeur mobile de
   rental-filter-layout.css doit s'appliquer sans qu'un plafond de 280px ne survive. */
@media(max-width:1300px) and (min-width:761px){:is(html[data-app-page="gestion"],html[data-app-page="profitability"]) .topbar .filters{flex-wrap:wrap}:is(html[data-app-page="gestion"],html[data-app-page="profitability"]) .topbar #logementSelect{min-width:0;width:min(100%,var(--rental-filter-property-width,280px))}}


/* KPI mobiles : lecture renforcée sur tous les compteurs. */
@media(max-width:760px){
  html[data-app-page] :is(.cleaner-kpi,.summary-card,.metric-grid>.metric,.platform-stat,.platform-stat-card,.admin-legal-filter,.admin-management-kpi,.admin-business-card,.billing-kpi,.owner-finance-kpi,.report-summary-metric,.profitability-metric,.profitability-detail-metric,.lc-kpi,.connector-status-card){
    display:grid;
    grid-template-columns:minmax(0,1fr);
    align-items:start;
    justify-content:start;
    gap:8px;
  }
  html[data-app-page] :is(.cleaner-kpi,.summary-card,.metric-grid>.metric,.platform-stat,.platform-stat-card,.admin-legal-filter,.admin-management-kpi,.admin-business-card,.billing-kpi,.owner-finance-kpi,.report-summary-metric,.profitability-metric,.profitability-detail-metric,.lc-kpi,.connector-status-card) :is(span,.summary-label){
    display:block;
    max-width:100%;
    white-space:normal;
    overflow-wrap:anywhere;
    word-break:break-word;
  }
  html[data-app-page] :is(.cleaner-kpi,.summary-card,.metric-grid>.metric,.platform-stat,.platform-stat-card,.admin-legal-filter,.admin-management-kpi,.admin-business-card,.billing-kpi,.owner-finance-kpi,.report-summary-metric,.profitability-metric,.profitability-detail-metric,.lc-kpi,.connector-status-card) :is(strong,.summary-number){
    display:block;
    max-width:100%;
    text-align:left;
    white-space:normal;
    overflow-wrap:anywhere;
    word-break:break-word;
    line-height:1.05;
  }
  html[data-app-page="gestion"] body[data-gestion-view="report"] .report-summary-metric strong,
  html[data-app-page="profitability"] .profitability-metric strong,
  html[data-app-page="profitability"] .profitability-detail-metric strong{
    font-size:clamp(1.55rem,6vw,2rem);
  }
}

/* Header de page canonique : structure sans carte décorative.
   Les cartes blanches sont réservées au contenu métier, pas au titre/filtres de page.
   :where(...), pas :is(...) : un simple reset partagé ne doit jamais hériter de la spécificité d'un ID
   présent dans sa liste (#adminReservationTopCard, page Réservations, sans rapport avec les autres) —
   ça empêchait toute page tierce de surclasser min-height avec un sélecteur de classe, même très
   qualifié (constaté le 22/09/2026 sur Missions, qui doit réserver une hauteur de header supérieure). */
html[data-app-page] body :where(
  .rental-page-header,
  .top-card.page-header,
  .owner-page-header,
  #adminReservationTopCard.top-card
){
  min-height:0;
  background:transparent;
  border:0;
  border-radius:0;
  box-shadow:none;
  padding-left:0;
  padding-right:0;
}

/* Un filtre Propriété conserve son gabarit canonique, y compris dans le header Planning Admin. */
@media (min-width:900px){
  html[data-app-page="admin"] #adminReservationTopFilters{--arf-l:var(--rental-filter-property-width,280px)}
  html[data-app-page="admin"] #adminReservationTopFilters .admin-top-field--property{
    width:var(--rental-filter-property-width,280px);
    min-width:var(--rental-filter-property-width,280px);
    max-width:var(--rental-filter-property-width,280px);
  }
}

/* Header global allégé : le premier header n'est jamais une carte décorative.
   Le contenu reste visible ; seuls fond, bordure, ombre et padding de carte disparaissent. */
html[data-app-page] body :is(
  .topbar > .top-card,
  .rental-page-header,
  .owner-page-header,
  .platform-hero,
  .page-header
){
  min-height:0;
  background:transparent;
  border:0;
  border-radius:0;
  box-shadow:none;
  padding-left:0;
  padding-right:0;
}

/* Actions Ajouter : composant primaire canonique, texte et pictogramme toujours blancs. */
html[data-app-page] body :where(.rental-add-trigger,.btn.primary.rental-add-trigger){color:#fff;}
html[data-app-page] body :where(.rental-add-trigger,.btn.primary.rental-add-trigger) > *{color:inherit;}
html[data-app-page] body .btn.primary.rental-add-trigger :is(.rental-vicon,.rental-mask-icon){color:#fff;background-color:#fff;}
html[data-app-page="admin"] body #addReservationBtn .rental-vicon{color:#fff;background-color:#fff;width:18px;height:18px;flex:0 0 18px;}
html[data-app-page="admin"] body #addReservationBtn{color:#fff;}
html[data-app-page="admin"] body #addReservationBtn:disabled{color:#fff;opacity:.72;}
html[data-app-page="admin"] body #addReservationBtn:disabled :is(.rental-vicon,.rental-mask-icon){color:#fff;background-color:#fff;}

/* Actions au-dessus d'un tableau : Plateformes est la référence de rythme. */
html[data-app-page] body :is(.admin-param-modern-hero--actions-only,.profitability-toolbar,.admin-reservation-list-actions,.rental-table-actions-row,.connector-panel-head-actions,.service-actions){
  margin-bottom:var(--app-table-action-gap);
}
html[data-app-page] body :is(.admin-param-modern-hero--actions-only,.profitability-toolbar,.admin-reservation-list-actions,.rental-table-actions-row,.connector-panel-head-actions,.service-actions) .rental-add-trigger{
  margin-bottom:0;
}
html[data-app-page="admin"] body .admin-reservation-list-actions{display:flex;justify-content:flex-end;align-items:center;min-height:46px;}

/* Respiration volontaire entre le titre et les compteurs — uniforme sur toutes les pages
   utilisant l'en-tête .topbar, plus seulement les pages connecteurs. */
html[data-app-page] body :where(.topbar,.cleaner-topbar){margin-bottom:var(--app-title-kpi-gap);}

/* Colonne Propriété : alignement métier strict à gauche, contenu compris. */
html[data-app-page] body table :where(th,td).rental-col-logement,
html[data-app-page] body table :where(th,td)[data-rental-column="property"],
html[data-app-page] body table :where(th,td)[data-rental-column="logement"]{text-align:left;}
html[data-app-page] body table :where(th,td).rental-col-logement > *,
html[data-app-page] body table :where(th,td)[data-rental-column="property"] > *,
html[data-app-page] body table :where(th,td)[data-rental-column="logement"] > *{text-align:left;justify-content:flex-start;margin-left:0;margin-right:0;}

/* Contrat métier : toute colonne Propriété/Logement reste alignée à gauche. */
html[data-app-page] body table :where(th,td).rental-col-logement{ text-align:left; }
html[data-app-page] body table :where(th,td).rental-col-logement :where(a,button,div,span,strong,small){ text-align:left; justify-content:flex-start; }

/* Sémantique HTML canonique : un contrôle marqué hidden ne doit jamais être réaffiché
   par une règle de composant (.btn { display:inline-flex }, etc.). */
/* Contract: the semantic hidden attribute always wins over component display rules. */
html[data-app-page] [hidden]{display:none;}

/* Mobile 2026-08 — Réservations Admin : header/actions et cartes/tableaux réellement adaptés au téléphone. */
@media(max-width:760px){
  html[data-app-page="admin"] body.admin-view-reservations .admin-reservation-list-actions{margin:10px 0 12px}
  html[data-app-page="admin"] body.admin-view-reservations .admin-reservation-header-actions{display:flex;justify-content:flex-end;gap:8px;flex-wrap:wrap;width:100%}
  html[data-app-page="admin"] body.admin-view-reservations .admin-reservation-header-actions .btn{min-height:44px;padding:0 14px}
  html[data-app-page="admin"] body.admin-view-reservations .admin-res-table-wrap{overflow:visible;border:0;background:transparent}
  html[data-app-page="admin"] body.admin-view-reservations .admin-res-table,
  html[data-app-page="admin"] body.admin-view-reservations .admin-res-table tbody{display:block;width:100%;min-width:0}
  html[data-app-page="admin"] body.admin-view-reservations .admin-res-table colgroup,
  html[data-app-page="admin"] body.admin-view-reservations .admin-res-table thead{display:none}
  html[data-app-page="admin"] body.admin-view-reservations .admin-res-table tbody{display:grid;gap:10px}
  html[data-app-page="admin"] body.admin-view-reservations .admin-res-table tbody tr{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px 12px;width:100%;min-width:0;padding:12px;border:1px solid var(--app-border,#dbe2f0);border-radius:14px;background:#fff;box-shadow:0 4px 14px rgba(20,34,70,.04)}
  html[data-app-page="admin"] body.admin-view-reservations .admin-res-table tbody td{display:block;width:auto;min-width:0;padding:0;border:0;overflow-wrap:anywhere}
  html[data-app-page="admin"] body.admin-view-reservations .admin-res-table tbody td:last-child{grid-column:2;grid-row:1;align-self:start;justify-self:end}
  html[data-app-page="admin"] body.admin-view-reservations .admin-res-table tbody td:not(:first-child):not(:last-child){grid-column:1/-1;padding-top:6px;border-top:1px solid #edf0f5}
  html[data-app-page="admin"] body.admin-view-reservations .admin-res-table .admin-table-actions,
  html[data-app-page="admin"] body.admin-view-reservations .admin-res-table .table-actions{gap:6px}
  html[data-app-page="admin"] body.admin-view-reservations .admin-res-table :where(.icon-action-btn,.admin-icon-btn){width:40px;min-width:40px;height:40px;min-height:40px}
}


/* Shared release badge: visible consistently on every application surface. */
.rental-app-version{position:fixed;right:10px;bottom:max(8px,env(safe-area-inset-bottom));z-index:8000;padding:4px 8px;border:1px solid rgba(107,114,128,.22);border-radius:999px;background:rgba(255,255,255,.88);color:#687083;font:750 10px/1.2 system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;letter-spacing:.01em;box-shadow:0 4px 14px rgba(15,23,42,.08);pointer-events:none;user-select:none;backdrop-filter:blur(4px)}
@media(max-width:640px){.rental-app-version{right:7px;bottom:max(6px,env(safe-area-inset-bottom));font-size:9px}}

/* Admin shell persistant : modules Administration embarqués sans recréer la sidebar. */
html[data-app-page="admin"] .admin-embedded-module-host{
  display:none;min-width:0;width:100%;height:auto;overflow:visible;
  background:var(--app-bg,#f4f6fb);
}
/* Scroll vertical canonique : le document Admin parent reste l'unique propriétaire.
   Les iframes embarquées grandissent avec leur contenu et ne scrollent jamais en interne. */
html:has(body.admin-embedded-module-active){overflow-y:auto}
html[data-app-page="admin"] body.admin-embedded-module-active{height:auto;min-height:100vh;overflow:visible}
html[data-app-page="admin"] body.admin-embedded-module-active .admin-shell{height:auto;min-height:100vh;overflow:visible}
html[data-app-page="admin"] body.admin-embedded-module-active .admin-main-content{height:auto;min-height:100vh;overflow:visible}
html[data-app-page="admin"] body.admin-embedded-module-active .admin-main-content>.topbar,
html[data-app-page="admin"] body.admin-embedded-module-active .admin-content{display:none}
html[data-app-page="admin"] body.admin-embedded-module-active .admin-embedded-module-host{display:block}
html[data-app-page="admin"] .admin-embedded-module-frame{display:block;width:100%;height:auto;min-height:0;border:0;overflow:hidden;background:var(--app-bg,#f4f6fb)}
html[data-app-page="admin"] .admin-embedded-module-frame[hidden]{display:none}
html[data-admin-embedded-module="1"],html[data-admin-embedded-module="1"] body{margin:0;height:auto;min-height:0;overflow:hidden}
/* html{scrollbar-gutter:stable} (base.css:2319) réserve ~15px pour la scrollbar verticale du
   document parent — mais ce html embarqué (iframe) est en overflow:hidden : il ne défile jamais
   lui-même (le parent défile et l'iframe est redimensionnée à sa hauteur naturelle), donc ce
   gutter n'est jamais utilisé. Sans ce reset, il reste hérité et crée un vide asymétrique
   permanent à droite du contenu embarqué (mesuré : ~15px, absent à gauche). */
html[data-admin-embedded-module="1"]{scrollbar-gutter:auto}
html[data-admin-embedded-module="1"] app-sidebar{display:none}
html[data-admin-embedded-module="1"] .app-shell{display:block;grid-template-columns:minmax(0,1fr);height:auto;min-height:0;overflow:visible}
/* navigation.css garde un :has(>app-sidebar[space=...]) qui reconstitue la colonne sidebar même
   quand app-sidebar est display:none (:has() ignore l'affichage) ; sa spécificité dépasse la règle
   ci-dessus, donc sans ce renfort .lc-app garde 2 colonnes en embarqué et <main> (grid-column:2)
   se retrouve poussé dans une colonne implicite vide à gauche. */
html[data-admin-embedded-module="1"][data-app-page] :is(.app-shell,.lc-app):has(>app-sidebar[space]){grid-template-columns:minmax(0,1fr)}
html[data-admin-embedded-module="1"] main.main,html[data-admin-embedded-module="1"] .admin-main-content,html[data-admin-embedded-module="1"] .users-main,html[data-admin-embedded-module="1"] .cleaner-app{width:100%;max-width:none;height:auto;min-height:0;margin:0;overflow:visible}
/* legal-center.html : <main class="lc-main app-content"> ne porte pas la classe littérale "main",
   donc la règle ci-dessus ne le cible pas ; grid-column:1 corrige le placement dans la grille
   désormais réduite à 1 colonne (sinon <main> hérite grid-column:2 de navigation.css et se
   retrouve poussé dans une colonne implicite vide à gauche). */
html[data-admin-embedded-module="1"] .lc-main{width:100%;max-width:none;height:auto;min-height:0;margin:0;overflow:visible;grid-column:1}
/* Même correctif que .lc-main ci-dessus, pour les autres mains embarqués (Diffusion, Langues
   clients, Utilisateurs, Analyse CA, Marges) : ils rendent déjà correctement aujourd'hui car
   Chromium redistribue l'espace d'une grille à 1 colonne explicite même quand l'élément demande
   grid-column:2 (colonne implicite), mais ce comportement n'est pas garanti par la spec ni entre
   navigateurs — grid-column:1 le rend explicite plutôt que de dépendre d'un comportement de repli. */
html[data-admin-embedded-module="1"] main.main,html[data-admin-embedded-module="1"] .admin-main-content,html[data-admin-embedded-module="1"] .users-main,html[data-admin-embedded-module="1"] .cleaner-app{grid-column:1}
html[data-admin-embedded-module="1"] main.main{padding-top:0}
html[data-admin-embedded-module="1"] body>.app-shell{width:100%;max-width:none;height:auto;min-height:0}
html[data-admin-embedded-module="1"] .mobile-menu-trigger,
html[data-admin-embedded-module="1"] .sidebar-mobile-trigger,
html[data-admin-embedded-module="1"] .rental-app-version{display:none}

/* Listes Propriétaires / Prestataires : même structure visuelle partagée. */
.admin-owner-mobile-list{display:none}
@media(max-width:700px){
  html[data-app-page] body .admin-owner-desktop-table{display:none}
  html[data-app-page] body .admin-owner-mobile-list{display:grid;grid-template-columns:minmax(0,1fr);gap:10px;width:100%;min-width:0}
  html[data-app-page] body .admin-owner-mobile-card{display:block;width:100%;min-width:0;max-width:100%;margin:0;padding:14px;border:1px solid var(--app-border,#dce2ea);border-radius:16px;background:var(--app-surface,#fff);box-shadow:0 7px 18px rgba(20,34,70,.045);box-sizing:border-box}
  html[data-app-page] body .admin-owner-mobile-card header{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px 12px;align-items:start;padding:0 0 12px;border-bottom:1px solid var(--app-border,#dce2ea)}
  html[data-app-page] body .admin-owner-mobile-card header strong{font-size:16px;line-height:1.25;overflow-wrap:anywhere}
  html[data-app-page] body .admin-owner-mobile-card header>:last-child{justify-self:end}
  html[data-app-page] body .admin-owner-mobile-card dl{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;width:100%;margin:12px 0 0}
  html[data-app-page] body .admin-owner-mobile-card dl>div{min-width:0;padding:9px 10px;border:1px solid var(--app-border,#dce2ea);border-radius:12px;background:var(--app-surface-soft,#f8fafc)}
  html[data-app-page] body .admin-owner-mobile-card dt{color:var(--app-text-muted,#667085);font-size:11px;font-weight:750;line-height:1.2}
  html[data-app-page] body .admin-owner-mobile-card dd{margin:4px 0 0;font-size:13px;font-weight:750;line-height:1.35}
  html[data-app-page] body .admin-owner-mobile-actions{display:flex;align-items:center;justify-content:flex-end;gap:8px;width:100%;margin-top:12px;padding-top:12px;border-top:1px solid var(--app-border,#dce2ea)}
  html[data-app-page] body .admin-owner-mobile-actions .admin-icon-btn{width:40px;min-width:40px;height:40px;min-height:40px}
}
html[data-admin-embedded-module="1"][data-app-page="profitability"] body,html[data-admin-embedded-module="1"][data-app-page="profitability"] .app-shell,html[data-admin-embedded-module="1"][data-app-page="profitability"] .main{background:transparent}html[data-admin-embedded-module="1"][data-app-page="profitability"] .profitability-suppliers-workspace{border:0;box-shadow:none;background:transparent;padding:0}
/* Boot Admin atomique : le HTML générique n'est jamais une vue visible.
   La destination retire data-admin-target-boot uniquement dans commitView(). */
html[data-app-page="admin"][data-admin-target-boot="1"] body .admin-content > .summary-grid,
html[data-app-page="admin"][data-admin-target-boot="1"] body .admin-content > #meta{display:none;}
html[data-app-page="admin"][data-admin-target-boot="1"] body #adminReservationTopCard > .top-title{visibility:hidden;}
/* Catalogue Admin : canvas et panel de premier niveau, source unique pour les pages d’administration. */
html[data-app-page="admin"] body .admin-catalog-workspace{
  width:100%;max-width:none;min-width:0;margin:0;padding:0;
  display:grid;grid-template-columns:minmax(0,1fr);gap:18px;align-items:start;
  box-sizing:border-box;
}
html[data-app-page="admin"] body .admin-catalog-panel{
  width:100%;max-width:none;min-width:0;margin:0;padding:20px;
  box-sizing:border-box;border:1px solid var(--app-border,#dbe2f0);
  border-radius:var(--app-radius,14px);background:var(--app-surface,#fff);
  box-shadow:var(--app-shadow-sm,0 8px 22px rgba(20,34,70,.07));
}
@media(max-width:900px){
  html[data-app-page="admin"] body .admin-catalog-workspace{gap:14px;}
  html[data-app-page="admin"] body .admin-catalog-panel{padding:16px;}
}

/* Mobile forms: one readable column, full useful width, back action away from menu. */
@media(max-width:760px){
  html[data-app-page] .rental-business-page .rental-business-page-card--form{width:calc(100vw - 16px);max-width:calc(100vw - 16px);min-width:0;box-sizing:border-box;}
  html[data-app-page] .rental-business-page-card--form > .rental-business-page-back,
  html[data-app-page] .rental-business-page-card > [data-rental-shell-back],
  html[data-app-page] .rental-business-page-card > .admin-reservation-page-back{display:flex;width:max-content;margin-left:auto;margin-right:0;align-self:flex-end;}
  html[data-app-page] :where(.rental-business-page-card--form,.admin-modal,.owner-modal,.lc-modal,.cleaner-task-modal,.profitability-modal) :where(form,.admin-param-modal-section,.admin-logement-modal-section,.service-type-form,.admin-param-modal-grid,.admin-logement-modal-grid,.admin-modal-grid,.admin-form-grid){width:100%;max-width:none;min-width:0;box-sizing:border-box;}
  html[data-app-page] :where(.rental-business-page-card--form,.admin-modal,.owner-modal,.lc-modal,.cleaner-task-modal,.profitability-modal) :where(.admin-param-modal-grid,.admin-logement-modal-grid,.admin-modal-grid,.admin-form-grid,.service-type-form){grid-template-columns:minmax(0,1fr);}
  html[data-app-page] :where(.rental-business-page-card--form,.admin-modal,.owner-modal,.lc-modal,.cleaner-task-modal,.profitability-modal) :where(.admin-param-modal-grid,.admin-logement-modal-grid,.admin-modal-grid,.admin-form-grid,.service-type-form) > *{width:100%;max-width:none;min-width:0;box-sizing:border-box;}
  html[data-app-page] :where(.rental-business-page-card--form,.admin-modal,.owner-modal,.lc-modal,.cleaner-task-modal,.profitability-modal) :where(input:not([type="checkbox"]):not([type="radio"]):not([type="hidden"]),select,textarea,.password-toggle-wrap){display:block;width:100%;max-width:none;min-width:0;box-sizing:border-box;}
  html[data-app-page] .rental-business-page-card--form .rental-business-page-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));width:100%;gap:10px;align-items:stretch;justify-content:stretch;}
  html[data-app-page] .rental-business-page-card--form .rental-business-page-actions > .btn{width:100%;min-width:0;max-width:none;min-height:46px;margin:0;justify-content:center;}
}

/* Mobile business forms: fields/actions share the same useful width; back stays away from menu. */
@media(max-width:760px){
  html[data-app-page] .rental-business-page :where(.rental-business-page-back,[data-rental-shell-back],.admin-reservation-page-back){display:flex;width:max-content;margin-left:auto;margin-right:0;align-self:flex-end;}
  html[data-app-page] .rental-business-page-card--form > :where(.admin-param-modal-section,.admin-logement-modal-section,form){padding-left:0;padding-right:0;}
  html[data-app-page] .rental-business-page-card--form :where(.admin-param-modal-section,.admin-logement-modal-section,.admin-param-modal-grid,.admin-logement-modal-grid,.admin-modal-grid,.service-type-form){width:100%;max-width:none;min-width:0;}
  html[data-app-page] .rental-business-page-card--form :where(input:not([type="checkbox"]):not([type="radio"]):not([type="hidden"]),select,textarea,.password-toggle-wrap){width:100%;max-width:none;min-width:0;}
}

/* Admin desktop : sidebar déplié = header sans titre, outils stables sur toute la largeur. */
@media(min-width:761px){
  html[data-app-page="admin"]:not(.app-sidebar-collapsed) #adminReservationTopCard > .top-title{display:none;}
  html[data-app-page="admin"]:not(.app-sidebar-collapsed) #adminReservationTopCard{grid-template-columns:minmax(0,1fr);}
  html[data-app-page="admin"]:not(.app-sidebar-collapsed) #adminReservationTopCard > .rental-page-header-tools{grid-column:1/-1;width:100%;max-width:none;min-width:0;}
}

/* Palette canonique des plateformes : utilisée par Diffusion et les aperçus Planning. */
.rental-platform-dot{background:#94a3b8;color:#94a3b8;}
.rental-platform-dot[data-platform="AIRBNB"]{background:#ff385c;color:#ff385c;}
.rental-platform-dot[data-platform="BOOKING"]{background:#003580;color:#003580;}
.rental-platform-dot[data-platform="VRBO"],
.rental-platform-dot[data-platform="ABRITEL"]{background:#3b5ca9;color:#3b5ca9;}
.rental-platform-dot[data-platform="EXPEDIA"]{background:#ffc72c;color:#ffc72c;}
.rental-platform-dot[data-platform="TRIPADVISOR"]{background:#34e0a1;color:#34e0a1;}
.rental-platform-dot[data-platform="HOMETOGO"]{background:#ee5a36;color:#ee5a36;}
.rental-platform-dot[data-platform="INTERHOME"]{background:#0072ce;color:#0072ce;}

/* UX formulaires : marque discrète et automatique des champs réellement obligatoires. */
html[data-app-page] :is(label,.field):has(input[required],select[required],textarea[required])>span:first-child::after{content:" *";color:#b42318;font-weight:800;font-size:.9em;vertical-align:top}
html[data-app-page] :is(label,.field):has(input[required],select[required],textarea[required])>span:first-child{display:inline-block}
