:root{--bg:#fff;--card:#f7fbff;--border:#dce6ef;--txt:#333;--muted:#667;--brand:#1F6FB2;--brand-dark:#185F98;--brand-soft:#e8f1fb;--locked-bg:#f1f3f5;--locked-border:#cfd4da;--locked-text:#6c757d;--admin-bg:#fff4e5;--admin-border:#f0b35a;--admin-text:#9a5b00;}
*{box-sizing:border-box}body{font-family:system-ui,Segoe UI,Arial,sans-serif;background:var(--bg);color:var(--txt);margin:0}
a{color:inherit}
header{background:var(--topbar,var(--brand));color:var(--topbar-text,#fff);border-bottom:1px solid var(--topbar-dark,var(--brand-dark));padding:14px 18px;display:flex;gap:14px;align-items:center;justify-content:space-between}
nav a{margin-right:12px;text-decoration:none;color:var(--topbar-text,#fff)}
nav a:hover{text-decoration:underline}

.nav-logout-form{display:inline;margin:0;padding:0}
.nav-link-button{margin-right:12px;padding:0;border:0;background:transparent;color:var(--topbar-text,#fff);font:inherit;text-decoration:none;cursor:pointer}
.nav-link-button:hover,.nav-link-button:focus{text-decoration:underline}

.nav-toggle{display:none;padding:8px 10px;border-radius:10px;border:1px solid var(--topbar-text,#fff);background:transparent;color:var(--topbar-text,#fff);font-size:18px;line-height:1;cursor:pointer}
.site-nav{flex:0 1 auto;display:flex;align-items:center;gap:12px;margin-left:auto}
.nav-links,.nav-lang{display:flex;align-items:center;flex-wrap:wrap}
.nav-links{justify-content:flex-end}
.nav-lang{margin-left:0;gap:8px}
.lang-btn{display:inline-flex;align-items:center;justify-content:center;min-width:40px;padding:6px 10px;border-radius:999px;border:1px solid var(--topbar-text,#fff);background:rgba(255,255,255,.18);color:var(--topbar-text,#fff);font-size:13px;font-weight:700;line-height:1;text-decoration:none;box-shadow:none}
.lang-btn:hover,.lang-btn:focus{text-decoration:none;background:rgba(255,255,255,.28);color:var(--topbar-text,#fff);border-color:var(--topbar-text,#fff)}
.lang-btn.active{background:var(--topbar-text,#fff);color:var(--topbar,var(--brand));border-color:var(--topbar-text,#fff);box-shadow:0 1px 2px rgba(0,0,0,.08)}
.container{max-width:1100px;margin:18px auto;padding:0 14px}
.card{background:var(--card);border:1px solid var(--border);border-radius:14px;padding:14px 16px;margin:12px 0}
.card-title{font-size:1.1rem;font-weight:700;line-height:1.25;margin:0 0 6px 0}

.h1{font-size:1.25rem;font-weight:700;margin:0 0 8px}
.badge{display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px;border-radius:999px;background:var(--brand-soft);border:1px solid var(--border);font-weight:700;margin-right:8px}
.badge-warn{background:#fff3cd;border:1px solid #ffeeba}
.grid{display:grid;gap:12px}
.grid-2{grid-template-columns:repeat(2,minmax(0,1fr))}
.grid-3{grid-template-columns:repeat(3,minmax(0,1fr))}
.grid-4{grid-template-columns:repeat(4,minmax(0,1fr))}
@media (max-width:820px){.grid-2,.grid-3,.grid-4{grid-template-columns:1fr}}
label{display:block;font-size:.9rem;margin:8px 0 4px}
input,select,textarea{width:100%;padding:10px 10px;border-radius:10px;border:1px solid var(--border);background:#fff;color:var(--txt)}
/* Validation: highlight fields that caused a save error */
input.is-invalid, select.is-invalid, textarea.is-invalid{
  border-color:#d92d20 !important;
  background:#fff5f5 !important;
  color:#7a1b12 !important;
  box-shadow:0 0 0 2px rgba(217,45,32,.14) !important;
}
input[type=checkbox].is-invalid, input[type=radio].is-invalid{
  outline:2px solid #d92d20;
  outline-offset:2px;
}

/* Don't stretch checkboxes/radios (fixes centered checkbox in some flex rows) */
input[type=checkbox], input[type=radio]{width:auto;padding:0;}
textarea{min-height:90px}
.btn,button.btn,a.btn,input.btn{display:inline-flex;align-items:center;justify-content:center;min-height:42px;padding:10px 12px;border-radius:12px;border:1px solid var(--border);background:#fff;color:var(--txt);font-family:inherit!important;font-size:14px!important;font-weight:400;line-height:1.2;text-decoration:none;transition:background-color .15s ease,border-color .15s ease,color .15s ease,box-shadow .15s ease;box-sizing:border-box;cursor:pointer;vertical-align:middle}
.btn.primary,button.btn.primary,a.btn.primary,input.btn.primary{background:var(--brand) !important;color:#fff !important;border-color:var(--brand) !important}
.btn.primary:hover,.btn.primary:focus,button.btn.primary:hover,button.btn.primary:focus,a.btn.primary:hover,a.btn.primary:focus,input.btn.primary:hover,input.btn.primary:focus{background:var(--brand-dark) !important;border-color:var(--brand-dark) !important;color:#fff !important}
.row{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.small{font-size:.9rem;color:var(--muted)}
.table{width:100%;border-collapse:collapse}
.table th,.table td{border-bottom:1px solid var(--border);padding:10px;text-align:left;vertical-align:top}
.notice{padding:10px 12px;border-radius:12px;border:1px solid var(--border);background:#fff}
.notice.ok,.notice.success,.alert.success{border-color:#9ad0a7;background:#f0fff3;color:#1f6b32}
.notice.err,.notice.error,.alert.error{border-color:#e6a7a7;background:#fff5f5;color:#8a1f1f}
.notice.warn,.alert.warn{border-color:#f2c97d;background:#fffaf0;color:#7a4b00}
.alert{padding:10px 12px;border-radius:12px;border:1px solid var(--border);background:#fff}
.right{text-align:right}

/* Mobile polish */
.table-scroll{width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}
.table-scroll .table{min-width:760px}

@media (max-width:720px){
  header{flex-wrap:wrap;align-items:flex-start}
  .nav-toggle{display:inline-flex;align-items:center;justify-content:center;margin-left:auto}
  header nav.site-nav{display:none;width:100%;flex-direction:column;align-items:stretch;gap:8px;padding-top:6px}
  header nav.site-nav.is-open{display:flex}
  .site-nav .nav-links,.site-nav .nav-lang{display:flex;flex-direction:column;align-items:flex-start;gap:6px;width:100%}
  .site-nav .nav-lang{padding-top:6px;border-top:1px solid rgba(255,255,255,.35);flex-direction:row}
  nav a{display:inline-block;margin:6px 12px 0 0}
}
@media (max-width:720px){
  .btn{width:100%;text-align:center}
  .btn + .btn{margin-top:8px}
}

/* Tablet & mobile: make any table usable without breaking layout */
@media (max-width:980px){
  .table{display:block;overflow-x:auto;-webkit-overflow-scrolling:touch;max-width:100%}
  .table thead,.table tbody{display:table;width:100%}
  .table th,.table td{white-space:nowrap}
  .table td .cell-sub,.table td .small{white-space:normal}
}

/* Mobile: tighten spacing and keep cards readable */
@media (max-width:720px){
  .container{margin:12px auto;padding:0 10px}
  header{padding:12px 12px}
  .card{padding:12px 12px;border-radius:12px}
  .card-title{font-size:1.05rem}
  .h1{font-size:1.15rem}
  input,select,textarea{padding:10px 10px}
  .table th,.table td{padding:8px;font-size:14px}
}

@media (max-width:720px){
  /* Make forms truly mobile-friendly: one control per line */
  form .row{flex-direction:column;align-items:stretch}
  form .row > *{width:100%;max-width:100%}
  input[type="text"],input[type="email"],input[type="tel"],input[type="number"],input[type="date"],input[type="time"],
  input[type="password"],select,textarea{width:100%;max-width:100%;box-sizing:border-box}
}




/* Admin-only / user-locked fields (visible but not editable by user) */
/* Readonly/disabled fields should look 'locked' (same bg as cards) */
input[readonly], textarea[readonly] { background: var(--card); color: #333; }
select:disabled { background: var(--card); color: #333; }
input[readonly] { cursor: not-allowed; }
textarea[readonly] { cursor: not-allowed; }


/* Cancelled badge */
.badge-cancelled{display:inline-block;white-space:nowrap;margin-top:4px;padding:2px 6px;border-radius:6px;background:#fff3cd;border:1px solid #ffeeba;font-size:12px;line-height:1.2;}

/* Booking edit: option add row (desktop) */
.option-add-row .option-add-main{flex:0 0 33.333%; max-width:33.333%; min-width:220px;}
.option-add-row .option-add-qty{flex:0 0 16.666%; min-width:90px; max-width:160px;}
.option-add-row .option-add-btn{flex:0 0 auto; min-width:140px;}

/* Extra mobile hardening: avoid overlaps in any flex rows */
@media (max-width:720px){
  .row{flex-direction:column !important; align-items:stretch !important;}
  .row > *{width:100% !important; max-width:100% !important;}
  /* Keep checkbox/radio controls natural size */
  .row input[type=checkbox], .row input[type=radio]{width:auto !important;}
  /* Prevent long labels from overlapping */
  label{line-height:1.25; white-space:normal;}
  .small{white-space:normal;}
}

/* Extra mobile hardening: avoid overlaps in any flex rows (not only inside forms) */
@media (max-width:720px){
  .row{flex-direction:column !important; align-items:stretch !important;}
  .row > *{width:100% !important; max-width:100% !important;}
  /* Keep checkbox/radio controls natural size */
  .row input[type=checkbox], .row input[type=radio]{width:auto !important;}
  /* Labels should wrap cleanly */
  label{white-space:normal; word-break:break-word;}
  /* Any element with fixed min-width can cause overlap; neutralize common cases */
  input, select, textarea, .btn{min-width:0 !important;}
}

/* Booking edit mobile: prevent overlaps (cards, headers, and grids) */
@media (max-width:720px){
  body.page-booking_edit .h1{display:flex;flex-wrap:wrap;gap:8px;align-items:flex-start}
  body.page-booking_edit .h1 span{white-space:normal}
  /* Keep "Réservation 001/2026" together */
  body.page-booking_edit .room-title{white-space:nowrap;}
  body.page-booking_edit .card{padding:12px 12px}
  /* Force single-column layout on booking_edit, even if inline grid-column spans exist */
  body.page-booking_edit .grid{grid-template-columns:1fr !important}
  body.page-booking_edit .grid > *{grid-column:auto !important}
  body.page-booking_edit .grid > div{min-width:0}
  body.page-booking_edit .row{gap:10px}
  body.page-booking_edit .btn{width:100%}

  /* Keep "Réservation 001/2026" on one line */
  body.page-booking_edit .room-title{white-space:nowrap;}

  /* Labels should wrap on words, not letter-by-letter */
  body.page-booking_edit label{word-break:normal !important; overflow-wrap:break-word !important;}

  /* Readonly fields should still be clickable/focusable for copy (mobile UX) */
  body.page-booking_edit input[readonly],
  body.page-booking_edit textarea[readonly]{cursor:text !important;}

  /* On mobile, keep option add row stacked */
  body.page-booking_edit .option-add-row .option-add-main,
  body.page-booking_edit .option-add-row .option-add-qty,
  body.page-booking_edit .option-add-row .option-add-btn{flex:1 1 100%; max-width:100%; min-width:0;}
}

/* Helpers */
.nowrap{white-space:nowrap;}
.app-title{white-space:nowrap;display:inline-block;color:var(--topbar-text,#fff);}

/* Booking edit help text */
.card-help{margin:6px 0 10px;color:#555;font-size:13px;line-height:1.35;white-space:pre-wrap;overflow-wrap:anywhere}
.multiline-end-marker{display:inline;white-space:inherit}
.help-text-link{color:inherit;text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:2px;overflow-wrap:anywhere}
.help-text-link:hover,.help-text-link:focus{color:var(--primary,#0b66c3)}

/* Admin-only visual cues (visible only to administrators) */
.admin-card{background:var(--admin-bg);border-color:var(--admin-border);}
.admin-card .h1 .badge{background:#ffe7bf;border:1px solid var(--admin-border);color:var(--admin-text);}
.btn.btn-admin, button.btn-admin, a.btn.btn-admin{display:inline-flex;align-items:center;justify-content:center;background:var(--admin-bg);border-color:var(--admin-border);color:var(--admin-text);font-family:inherit !important;font-size:14px !important;font-weight:400 !important;line-height:1.2 !important;padding:10px 12px;text-decoration:none;}
body.page-booking_edit .btn.btn-admin, body.page-booking_edit button.btn-admin, body.page-booking_edit a.btn.btn-admin{font-family:inherit !important;font-size:14px !important;font-weight:400 !important;line-height:1.2 !important;}
.btn.btn-admin:hover,.btn.btn-admin:focus{filter:brightness(0.98);}
.admin-only-field{background:var(--admin-bg) !important;border-color:var(--admin-border) !important;color:var(--admin-text) !important;}
.admin-only-field:focus{outline-color:var(--admin-border);}
.admin-only-note{background:var(--admin-bg);border:1px solid var(--admin-border);border-radius:10px;padding:8px;color:var(--admin-text);}

.user-visible-admin-editable-field{background:var(--locked-bg) !important;border-color:var(--locked-border) !important;color:var(--locked-text) !important;}
.user-visible-admin-editable-field:focus{outline-color:var(--locked-border);}

/* Visible to responsible, but locked for them */
.user-locked-card{background:var(--locked-bg);border-color:var(--locked-border);}
.user-locked-field{background:var(--locked-bg) !important;border-color:var(--locked-border) !important;color:var(--locked-text) !important;}
.user-locked-note{background:var(--locked-bg);border:1px solid var(--locked-border);border-radius:10px;padding:8px;color:var(--locked-text);}
.btn.btn-user-locked, button.btn.btn-user-locked, a.btn.btn-user-locked{display:inline-flex;align-items:center;justify-content:center;background:var(--locked-bg);border-color:var(--locked-border);color:var(--locked-text);font-family:inherit !important;font-size:14px !important;font-weight:400 !important;line-height:1.2 !important;padding:10px 12px;text-decoration:none;cursor:not-allowed;pointer-events:none;}

/* In booking_edit for responsible users, all non-editable controls should read as locked */
body.role-user.page-booking_edit input[readonly],
body.role-user.page-booking_edit textarea[readonly],
body.role-user.page-booking_edit select:disabled{background:var(--locked-bg);border-color:var(--locked-border);color:var(--locked-text);}


/* Compact admin tables to avoid horizontal scrolling */
.table-compact{table-layout:fixed;width:100%}
.table-compact th,.table-compact td{padding:7px 8px;font-size:13px;line-height:1.25;word-break:break-word;overflow-wrap:anywhere}
.table-compact .btn{padding:6px 8px;border-radius:10px;font-size:12px}
.table-compact .td-nr{width:8%}
.table-compact .td-date{width:9%}
.table-compact .td-user{width:16%}
.table-compact .td-trip{width:11%}
.table-compact .td-room{width:9%}
.table-compact .td-persons{width:5%}
.table-compact .td-shared{width:5%}
.table-compact .td-money{width:8%}
.table-compact .td-pay{width:10%}
.table-compact .td-history{width:10%}
.table-compact .td-flag{width:4%}
.table-compact .td-actions{width:8%}
.table-compact .cell-main{font-weight:600;color:#333}
.table-compact .cell-sub{font-size:12px;color:#667;line-height:1.2;margin-top:2px}
.table-compact .payment-stack{display:flex;flex-direction:column;gap:4px;align-items:flex-start}
.table-compact .action-stack{display:flex;flex-direction:column;gap:6px;align-items:stretch}
.table-scroll.table-scroll-fit{overflow-x:visible}
.table-scroll.table-scroll-fit .table{min-width:0}
@media (max-width:980px){
  .table-scroll.table-scroll-fit{overflow-x:auto}
  .table-scroll.table-scroll-fit .table{min-width:980px}
}

.admin-res-table{table-layout:fixed;width:100%}
.admin-res-table .td-nr{width:17%}.admin-res-table .td-trip{width:21%}.admin-res-table .td-pay{width:19%}.admin-res-table .td-history{width:13%}.admin-res-table .td-flag{width:5%}.admin-res-table .td-actions{width:9%}
.admin-res-table th,.admin-res-table td{vertical-align:top}
.message-broadcast-table input[type=checkbox]{width:18px;height:18px;accent-color:#1976d2}

.admin-res-table .td-pay{min-width:210px}
.admin-res-table .td-trip .cell-sub,.admin-res-table .td-nr .cell-sub{line-height:1.25}
.admin-res-table .payment-stack{white-space:normal}

.nowrap{white-space:nowrap}
.bank-col-date{width:110px;white-space:nowrap}
.bank-col-amount{width:125px;white-space:nowrap}
.bank-col-assign{width:280px}
.bank-assign-cell{vertical-align:top}
.bank-assign-form{display:flex;flex-direction:column;align-items:stretch;gap:6px}
.bank-target-select{min-width:260px;max-width:100%;width:100%}
.bank-assign-btn{align-self:flex-start}

.admin-res-table .td-trip{width:260px;max-width:260px}
.admin-res-table .td-pay{width:230px;min-width:230px}

.admin-res-table th,.admin-res-table td{font-size:16px;line-height:1.35;word-break:normal;overflow-wrap:break-word;padding-left:8px;padding-right:8px;}
.admin-res-table th{white-space:nowrap;}
.admin-res-table .btn{padding:10px 12px;border-radius:12px;font-size:14px;white-space:nowrap;}
.admin-res-table .cell-sub{font-size:14px;color:#667;line-height:1.25;margin-top:2px}
.admin-res-table .td-nr .resp-inline{font-weight:600;display:inline-block}



.admin-filters-form{display:block;width:100%}
.admin-filters-form .admin-filters-grid,
.admin-filters-form .admin-search-grid{width:100%}
.admin-filters-grid{display:grid !important;grid-template-columns:repeat(4,minmax(180px,1fr)) !important;gap:8px;align-items:end}
.admin-search-grid{display:grid !important;grid-template-columns:repeat(4,minmax(180px,1fr)) !important;gap:8px;margin-top:8px}
.admin-filters-grid > select,
.admin-filters-grid > input,
.admin-search-grid > input{display:block;width:100%;max-width:100%;min-width:0;box-sizing:border-box}

.admin-filter-actions-row{display:grid !important;grid-template-columns:repeat(4,minmax(180px,1fr)) !important;gap:8px;margin-top:10px;align-items:center;width:100%}
.admin-filter-actions-controls{grid-column:1 / span 2;display:flex;flex-wrap:wrap;gap:8px;align-items:center;min-width:0}
.admin-filter-count-box{display:block;width:100%;max-width:100%;min-width:0;box-sizing:border-box;font-weight:700;white-space:nowrap;padding:6px 10px;border-radius:8px;background:#f5f7fb;border:1px solid #e0e6ef;overflow:hidden;text-overflow:ellipsis}

.admin-res-table .alert-badges-row{display:flex;flex-wrap:wrap;gap:4px;margin-top:6px}
.admin-res-table .td-nr{width:22%}
.admin-res-table .td-trip{width:16%}
.admin-res-table .td-pay{width:27%;min-width:290px}
.admin-res-table .td-history{width:15%}
.admin-res-table th.td-pay,.admin-res-table td.td-pay{text-align:left;padding-left:110px;padding-right:6px}
.admin-res-table .td-pay .payment-stack{align-items:flex-start}
.admin-res-table .td-pay .cell-sub{text-align:left;white-space:nowrap}
.admin-res-table .td-trip .cell-main{white-space:nowrap}
@media (max-width:1100px){
  .admin-filters-grid{grid-template-columns:repeat(3,minmax(160px,1fr)) !important;}
  .admin-search-grid{grid-template-columns:repeat(2,minmax(180px,1fr)) !important;}
  .admin-filter-actions-row{grid-template-columns:repeat(3,minmax(160px,1fr)) !important;}
  .admin-filter-actions-controls{grid-column:1 / span 3;}
}
@media (max-width:820px){
  .admin-filters-grid{grid-template-columns:repeat(2,minmax(0,1fr)) !important;}
  .admin-search-grid{grid-template-columns:1fr !important;}
  .admin-filter-actions-row{grid-template-columns:repeat(2,minmax(0,1fr)) !important;}
  .admin-filter-actions-controls{grid-column:1 / span 2;}
}
@media (max-width:700px){
  .admin-filters-grid,.admin-search-grid,.admin-filter-actions-row{grid-template-columns:1fr !important;}
  .admin-filter-actions-controls{grid-column:1;}
}


.reminders-table .nowrap-money{white-space:nowrap;}
.reminders-table .td-ref .cell-main{font-weight:700;}
.reminders-table .td-ref .cell-sub{font-size:12px;color:#667;line-height:1.2;margin-top:2px}

body.page-inbox_message form .btn,
body.page-admin_index form .btn{font-family:inherit;font-size:14px;line-height:1.2;}


/* Unified admin page title block */
.admin-page-title{margin-top:12px}
.admin-page-title .card-title, .admin-page-title-text{font-size:1.25rem !important;font-weight:700;line-height:1.25;margin:0 0 6px 0;color:var(--txt)}
.admin-page-subtitle{color:#555;margin-top:4px}


body.page-backup .backup-page-wrap{max-width:1180px;margin:0 auto;padding:0 12px 24px;}
body.page-backup .card{max-width:100%;}
body.page-backup .row > .card{max-width:560px;}
body.page-backup .backup-actions-cell{white-space:normal;min-width:380px;}
body.page-backup .backup-actions-cell form,
body.page-backup .backup-actions-cell a.btn{margin-bottom:6px;vertical-align:middle;}
body.page-backup .backup-actions-cell .btn{white-space:nowrap;}
body.page-backup table.table th,
body.page-backup table.table td{vertical-align:top;}
@media (max-width:900px){
  body.page-backup .backup-actions-cell{min-width:260px;}
  body.page-backup .row > .card{max-width:100%;}
}

body.page-backup .backup-create-row > .card{display:flex;flex-direction:column}
body.page-backup .backup-summary-row > .card{min-height:96px}
body.page-backup .backup-actions-cell{display:flex;flex-direction:column;gap:8px}
body.page-backup .backup-action-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
body.page-backup .backup-action-row .btn{margin-bottom:0}
body.page-backup .backup-inline-check{margin-left:0 !important}
body.page-backup .backup-pin-inline input{margin:0}
body.page-backup .backup-page-wrap .notice{margin-bottom:12px}
body.page-log .card.admin-page-title, body.page-finance .card.admin-page-title{margin-top:12px}

body.page-backup .backup-actions-cell{min-width:520px;}
body.page-backup .backup-action-row-inline{display:flex;align-items:center;gap:10px;flex-wrap:nowrap;}
body.page-backup .backup-inline-check-compact{margin:0 !important;white-space:nowrap;}
body.page-backup .backup-pin-inline-compact{display:inline-flex;align-items:center;gap:6px;white-space:nowrap;margin:0;}
body.page-backup .backup-pin-inline-compact input{margin:0;}
@media (max-width:1100px){body.page-backup .backup-action-row-inline{flex-wrap:wrap;} body.page-backup .backup-actions-cell{min-width:340px;}}

body.page-backup .backup-summary-row{align-items:stretch;}
body.page-backup .backup-summary-row > .card{display:flex;flex-direction:column;justify-content:center;}
body.page-backup .backup-actions-cell .check span{font-size:.92rem;}
body.page-backup .backup-actions-cell .muted{font-size:.92rem;}


.admin-nav-mobile{display:block;border:1px solid #dce6ef;border-radius:12px;background:#f7fbff;padding:8px 10px;margin-top:10px;}
.admin-nav-mobile summary{cursor:pointer;font-weight:700;list-style:none;display:inline-flex;align-items:center;gap:6px;}
.admin-nav-mobile summary::-webkit-details-marker{display:none;}
.admin-nav-mobile-rows{margin-top:2px;}
.admin-nav-mobile-rows .btn{text-align:center;}
@media (max-width: 560px){
  .admin-nav-mobile-rows .row{gap:6px !important;}
}


/* Responsables list */
.responsibles-table{table-layout:fixed;width:100%}
.responsibles-table th,.responsibles-table td{padding-top:6px;padding-bottom:6px;vertical-align:middle}
.responsibles-table .td-service,.responsibles-table .td-lang,.responsibles-table .td-gsm{padding-left:5px;padding-right:5px;white-space:nowrap}
.responsibles-table .td-email{width:32%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.responsibles-table .td-actions{text-align:right;white-space:nowrap;width:120px}
.responsibles-table .td-actions .btn{display:inline-flex;justify-content:center;min-width:96px}

/* Activity checklist */
.activity-checklist-table .center{text-align:center}
.activity-checklist-table .check-flag-wrap{display:flex;justify-content:center;align-items:center}
.activity-checklist-table input[type=checkbox]{width:18px;height:18px}
.activity-checklist-table .btn{min-width:86px}

/* Admin menu V532B RECHECKED — dropdowns by theme, based on V531 links only */
.admin-nav-dropdown-v532b{border:1px solid #dce6ef;border-radius:12px;background:#f7fbff;padding:8px 10px;}
.admin-nav-dropdown-v532b > summary{cursor:pointer;font-weight:700;list-style:none;display:inline-flex;align-items:center;gap:6px;}
.admin-nav-dropdown-v532b > summary::-webkit-details-marker{display:none;}
.admin-nav-dropdown-v532b-wrap{display:flex;gap:8px;flex-wrap:wrap;align-items:flex-start;margin-top:10px;}
.admin-menu-dd-v532b{position:relative;}
.admin-menu-dd-v532b > summary{list-style:none;cursor:pointer;display:inline-flex;align-items:center;gap:6px;padding:8px 11px;border-radius:10px;border:1px solid var(--border);background:#fff;color:var(--brand);font-weight:700;line-height:1.15;white-space:nowrap;}
.admin-menu-dd-v532b > summary::-webkit-details-marker{display:none;}
.admin-menu-dd-v532b > summary:after{content:"▾";font-size:.85em;color:#667;margin-left:2px;}
.admin-menu-dd-v532b[open] > summary{border-color:var(--brand);background:#eef6ff;}
.admin-menu-dd-v532b[open] > summary:after{content:"▴";}
.admin-menu-dd-panel-v532b{position:absolute;z-index:3000;top:calc(100% + 6px);left:0;min-width:230px;background:#fff;border:1px solid var(--border);border-radius:12px;box-shadow:0 8px 22px rgba(0,0,0,.12);padding:8px;display:grid;gap:6px;}
.admin-menu-dd-panel-v532b .btn{display:block;text-align:left;padding:8px 10px;border-radius:9px;white-space:nowrap;}
@media (max-width:760px){
  .admin-nav-dropdown-v532b-wrap{display:block;}
  .admin-menu-dd-v532b{width:100%;margin:0 0 8px;}
  .admin-menu-dd-v532b > summary{width:100%;justify-content:space-between;}
  .admin-menu-dd-panel-v532b{position:static;box-shadow:none;margin-top:6px;min-width:0;}
}


/* V586: stronger responsive forms on public and booking pages */
@media (max-width:720px){
  body.page-register form .grid,
  body.page-profile form .grid,
  body.page-booking_new form .grid,
  body.page-booking_edit form .grid,
  body.page-responsible_edit form .grid{
    grid-template-columns:1fr !important;
    width:100% !important;
  }
  body.page-register form .grid > *,
  body.page-profile form .grid > *,
  body.page-booking_new form .grid > *,
  body.page-booking_edit form .grid > *,
  body.page-responsible_edit form .grid > *{
    grid-column:1 / -1 !important;
    min-width:0 !important;
  }
  body.page-booking_new .terms-consent,
  body.page-booking_new .terms-consent span{
    min-width:0 !important;
    max-width:100% !important;
    overflow-wrap:break-word;
  }
  body.page-booking_new form .grid > div[style*="display:flex"],
  body.page-booking_edit form .grid > div[style*="display:flex"]{
    flex-direction:column !important;
    align-items:stretch !important;
  }
}

.checklist-counter{
  display:flex;
  flex-wrap:wrap;
  gap:8px 18px;
  align-items:center;
}
.checklist-counter-pill{
  display:inline-block;
  padding:3px 10px;
  border:1px solid #d3e0ef;
  border-radius:999px;
  background:#f7fbff;
  font-weight:600;
  white-space:nowrap;
}

.checklist-counter-title{margin-right:2px;}

/* V125: keep admin reservation actions visible and uniform */
.admin-res-table .td-actions{width:110px!important;min-width:110px!important;text-align:right;white-space:nowrap;overflow:visible!important;}
.admin-res-table .td-actions .action-stack{align-items:flex-end;min-width:96px;}
.admin-res-table .td-actions .btn{display:inline-flex;justify-content:center;align-items:center;min-width:86px;}

/* V126: compact admin document actions */
.booking-documents-table{width:100%;table-layout:auto}
.booking-documents-table th,.booking-documents-table td{vertical-align:top}
.booking-doc-actions-head,.booking-doc-actions-cell{width:124px;text-align:right;white-space:nowrap}
.booking-doc-actions{display:flex;align-items:center;justify-content:flex-end;gap:5px;white-space:nowrap}
.inline-doc-action-form{display:inline-flex;margin:0;padding:0}
.icon-btn{width:32px;height:32px;min-width:32px!important;padding:4px!important;display:inline-flex;align-items:center;justify-content:center;line-height:1;font-size:16px!important;border-radius:8px!important}
.icon-btn svg,.doc-hidden-marker svg{display:block;width:18px;height:18px}
.booking-doc-hidden{background:var(--admin-bg)}
.booking-doc-edit-row td{background:#f7fbff;border-top:0}
.booking-doc-edit-form{max-width:760px;margin:0 0 0 auto;padding:10px;border:1px solid #d8e7f5;border-radius:12px;background:#fff}
.doc-note-inline{margin-top:3px}
.doc-preview-bubble{position:fixed;z-index:9999;pointer-events:none;background:#fff;border:1px solid #cfd8dc;border-radius:10px;box-shadow:0 8px 24px rgba(0,0,0,.18);padding:6px;max-width:260px;max-height:220px;display:none}
.doc-preview-bubble img{display:block;max-width:240px;max-height:200px;border-radius:6px}

/* V126: robust admin reservations table rendering */
.table-scroll.table-scroll-fit{overflow-x:auto!important}
.table-scroll.table-scroll-fit .admin-res-table{min-width:1120px!important;width:100%!important;table-layout:auto!important}
.admin-res-table th.td-pay,.admin-res-table td.td-pay{padding-left:8px!important;padding-right:8px!important;text-align:left!important}
.admin-res-table .td-pay{min-width:230px!important}
.admin-res-table .td-actions{width:120px!important;min-width:120px!important;text-align:right!important;white-space:nowrap!important;overflow:visible!important}
.admin-res-table .td-actions .action-stack{display:flex!important;align-items:flex-end!important;justify-content:flex-start!important;min-width:96px!important}
.admin-res-table .td-actions .admin-open-booking-btn{display:inline-flex!important;visibility:visible!important;opacity:1!important;min-width:86px!important;justify-content:center!important;align-items:center!important}

/* V127: document visibility and compact admin reservations table */
.booking-documents-table th:first-child{width:34%}
.booking-doc-hidden td{background:var(--admin-bg) !important;border-color:var(--admin-border) !important;}
.doc-hidden-marker-inline{display:inline-flex;vertical-align:middle;margin-right:7px;color:#9a5b00;}
.doc-hidden-marker-inline svg{display:block;width:18px;height:18px;}
.admin-res-table-wrap{width:100%;overflow-x:visible !important;}
.admin-res-table{width:100% !important;min-width:0 !important;table-layout:fixed !important;}
.admin-res-table th,.admin-res-table td{font-size:13px !important;line-height:1.25 !important;padding:6px 6px !important;white-space:normal !important;overflow:visible !important;word-break:normal;overflow-wrap:anywhere;}
.admin-res-table th{white-space:normal !important;}
.admin-res-table .td-nr{width:18% !important;min-width:0 !important;}
.admin-res-table .td-trip{width:17% !important;min-width:0 !important;max-width:none !important;}
.admin-res-table .td-pay{width:25% !important;min-width:0 !important;}
.admin-res-table .td-history{width:15% !important;min-width:0 !important;}
.admin-res-table .td-flag{width:5% !important;min-width:0 !important;text-align:center !important;}
.admin-res-table .td-actions{width:10% !important;min-width:0 !important;text-align:right !important;white-space:normal !important;}
.admin-res-table .td-pay .cell-sub{white-space:normal !important;}
.admin-res-table .td-trip .cell-main{white-space:normal !important;}
.admin-res-table .td-actions .action-stack{display:flex !important;align-items:flex-end !important;justify-content:flex-start !important;min-width:0 !important;}
.admin-res-table .td-actions .admin-open-booking-btn{display:inline-flex !important;visibility:visible !important;opacity:1 !important;min-width:0 !important;width:auto !important;padding:6px 8px !important;font-size:12px !important;justify-content:center !important;align-items:center !important;}


/* V128: admin-only document visibility color and admin list spacing */
.booking-doc-hidden td{background:var(--admin-bg) !important;border-color:var(--admin-border) !important;}
.booking-doc-hidden .doc-hidden-marker-inline{color:var(--admin-text) !important;}
.admin-res-table th,.admin-res-table td{font-size:14px !important;line-height:1.28 !important;padding:7px 6px !important;}
.admin-res-table .cell-sub{font-size:13px !important;line-height:1.24 !important;}
.admin-res-table .td-nr{width:17% !important;}
.admin-res-table .td-trip{width:17% !important;}
.admin-res-table .td-pay{width:22% !important;}
.admin-res-table .td-history{width:13% !important;}
.admin-res-table .td-flag{width:7% !important;white-space:nowrap !important;overflow-wrap:normal !important;word-break:normal !important;text-align:center !important;}
.admin-res-table th.td-flag{white-space:nowrap !important;}
.admin-res-table .td-actions{width:10% !important;}
.admin-res-table .td-actions .admin-open-booking-btn{font-size:13px !important;padding:7px 10px !important;border-radius:10px !important;}
.responsible-bookings-table .td-actions{width:120px;text-align:right;white-space:nowrap}
.no-autofill-sensitive-password{background:#fff !important;}

/* V129: final spacing/readability tweaks requested 2026-05-19 */
.admin-res-table th,.admin-res-table td{
  font-size:15px !important;
  line-height:1.30 !important;
  padding:7px 5px !important;
}
.admin-res-table .cell-sub{
  font-size:14px !important;
  line-height:1.25 !important;
}
.admin-res-table .td-pay{
  width:20% !important;
  padding-right:2px !important;
}
.admin-res-table .td-history{
  width:14% !important;
  padding-left:2px !important;
}
.admin-res-table .td-trip{width:17% !important;}
.admin-res-table .td-nr{width:17% !important;}
.admin-res-table .td-flag{width:7% !important;}
.admin-res-table .td-actions{width:11% !important;}
.admin-res-table .td-actions .admin-open-booking-btn{
  font-size:14px !important;
  padding:8px 11px !important;
}
.responsible-bookings-table th,
.responsible-bookings-table td{
  font-size:15px !important;
  line-height:1.32 !important;
  padding-top:8px !important;
  padding-bottom:8px !important;
}
.responsible-bookings-table .cell-sub{
  font-size:14px !important;
}
.responsible-bookings-table th:nth-child(2),
.responsible-bookings-table td:nth-child(2){
  width:28% !important;
  min-width:220px !important;
}
.responsible-bookings-table .btn{
  font-size:14px !important;
}

/* V130: admin reservation table column spacing refinements */
.admin-res-table th,.admin-res-table td{
  font-size:15px !important;
  line-height:1.30 !important;
}
/* Keep a clearer visual gap after Séjour / logement before Paiement */
.admin-res-table .td-trip{
  width:17% !important;
  padding-right:12px !important;
}
.admin-res-table .td-pay{
  width:20% !important;
  padding-left:10px !important;
  padding-right:0 !important;
}
/* Reduce the gap between Paiement and Historique */
.admin-res-table .td-history{
  width:14% !important;
  padding-left:0 !important;
  padding-right:4px !important;
}
/* Reduce the gap between Message and Ouvrir */
.admin-res-table th.td-flag,
.admin-res-table td.td-flag{
  width:7% !important;
  padding-left:3px !important;
  padding-right:2px !important;
}
.admin-res-table th.td-actions,
.admin-res-table td.td-actions{
  width:9% !important;
  padding-left:0 !important;
  padding-right:4px !important;
}
.admin-res-table .td-actions .action-stack{
  align-items:flex-end !important;
}
.admin-res-table .td-actions .admin-open-booking-btn{
  font-size:14px !important;
  padding:8px 10px !important;
}

/* V131: finer admin reservation table spacing requested 2026-05-19 */
.admin-res-table th,.admin-res-table td{
  font-size:15px !important;
  line-height:1.30 !important;
  padding-top:7px !important;
  padding-bottom:7px !important;
}
/* Réservation plus proche de Séjour / logement */
.admin-res-table th.td-nr,
.admin-res-table td.td-nr{
  width:16% !important;
  padding-right:2px !important;
}
/* Keep extra breathing room between Séjour / logement and Paiement */
.admin-res-table th.td-trip,
.admin-res-table td.td-trip{
  width:17% !important;
  padding-left:2px !important;
  padding-right:18px !important;
}
.admin-res-table th.td-pay,
.admin-res-table td.td-pay{
  width:19% !important;
  padding-left:6px !important;
  padding-right:0 !important;
}
/* Paiement closer to Historique, with Historique slightly wider */
.admin-res-table th.td-history,
.admin-res-table td.td-history{
  width:16% !important;
  padding-left:0 !important;
  padding-right:3px !important;
}
/* Message closer to Ouvrir */
.admin-res-table th.td-flag,
.admin-res-table td.td-flag{
  width:6% !important;
  padding-left:2px !important;
  padding-right:1px !important;
}
.admin-res-table th.td-actions,
.admin-res-table td.td-actions{
  width:8% !important;
  padding-left:0 !important;
  padding-right:3px !important;
}
.admin-res-table .td-actions .action-stack{
  align-items:flex-end !important;
  justify-content:flex-start !important;
}
.admin-res-table .td-actions .admin-open-booking-btn{
  font-size:14px !important;
  padding:8px 9px !important;
}

/* V132: tighter spacing between Paiement and Historique in admin reservation list */
.admin-res-table th.td-pay,
.admin-res-table td.td-pay{
  width:17% !important;
  padding-left:5px !important;
  padding-right:0 !important;
}
.admin-res-table th.td-history,
.admin-res-table td.td-history{
  width:18% !important;
  padding-left:0 !important;
  padding-right:3px !important;
}

/* V133: requested final spacing for admin reservation list */
.admin-res-table th.td-nr,
.admin-res-table td.td-nr{
  width:15.5% !important;
  padding-right:1px !important;
}
.admin-res-table th.td-trip,
.admin-res-table td.td-trip{
  width:18% !important;
  padding-left:1px !important;
  padding-right:24px !important;
}
.admin-res-table th.td-pay,
.admin-res-table td.td-pay{
  width:16% !important;
  padding-left:2px !important;
  padding-right:0 !important;
}
.admin-res-table th.td-history,
.admin-res-table td.td-history{
  width:18.5% !important;
  padding-left:0 !important;
  padding-right:2px !important;
}
.admin-res-table th:nth-child(5),
.admin-res-table td:nth-child(5){
  width:5% !important;
  padding-left:2px !important;
  padding-right:1px !important;
  white-space:nowrap !important;
}
.admin-res-table th:nth-child(6),
.admin-res-table td:nth-child(6){
  width:7% !important;
  padding-left:1px !important;
  padding-right:0 !important;
  white-space:nowrap !important;
}
.admin-res-table th.td-actions,
.admin-res-table td.td-actions{
  width:8% !important;
  padding-left:0 !important;
  padding-right:2px !important;
}
.admin-res-table .td-actions .admin-open-booking-btn{
  margin-left:0 !important;
}

/* V134: final requested spacing between Paiement/Historique/OK/Message/Ouvrir */
/* Keep Séjour / logement breathing room before Paiement, but make Paiement closer to Historique. */
.admin-res-table th.td-trip,
.admin-res-table td.td-trip{
  width:18% !important;
  padding-right:24px !important;
}
.admin-res-table th.td-pay,
.admin-res-table td.td-pay{
  width:14.5% !important;
  padding-left:2px !important;
  padding-right:0 !important;
}
/* Move Historique closer to Paiement but reserve more room after Historique before OK. */
.admin-res-table th.td-history,
.admin-res-table td.td-history{
  width:21% !important;
  padding-left:0 !important;
  padding-right:16px !important;
}
/* Keep OK and Message on a single line and positioned further right. */
.admin-res-table th:nth-child(5),
.admin-res-table td:nth-child(5){
  width:5% !important;
  padding-left:2px !important;
  padding-right:1px !important;
  white-space:nowrap !important;
}
.admin-res-table th:nth-child(6),
.admin-res-table td:nth-child(6){
  width:6.5% !important;
  padding-left:1px !important;
  padding-right:0 !important;
  white-space:nowrap !important;
}
/* Reduce the space between Message and Ouvrir. */
.admin-res-table th.td-actions,
.admin-res-table td.td-actions{
  width:7% !important;
  padding-left:0 !important;
  padding-right:1px !important;
}
.admin-res-table .td-actions .action-stack{
  justify-content:flex-start !important;
  align-items:flex-end !important;
}
.admin-res-table .td-actions .admin-open-booking-btn{
  margin-left:0 !important;
  padding-left:8px !important;
  padding-right:8px !important;
}


/* WhatsApp admin action buttons */
.whatsapp-admin-btn{min-width:34px;width:34px;height:34px;padding:6px 7px !important;color:#0b7a3b !important;gap:0;}
.whatsapp-admin-btn .whatsapp-icon{width:20px;height:20px;display:block;}
.booking-phone-action{display:flex;align-items:center;gap:6px;}
.booking-phone-action input{min-width:0;flex:1 1 auto;}
/* Recipient tables in Mailing/WhatsApp */
.mailing-recipient-table col.col-select{width:38px;}
.mailing-recipient-table col.col-recipient{width:28%;}
.mailing-recipient-table col.col-email{width:21%;}
.mailing-recipient-table col.col-type{width:13%;}
.mailing-recipient-table col.col-booking{width:23%;}
.mailing-recipient-table col.col-lang{width:7%;}
.mailing-recipient-table th,.mailing-recipient-table td{white-space:nowrap;vertical-align:top;}
.mailing-recipient-table th:nth-child(6),.mailing-recipient-table td:nth-child(6){white-space:nowrap;min-width:62px;padding-left:2px;padding-right:8px;}
.mailing-recipient-table td:nth-child(2){white-space:normal;}

/* WhatsApp: keep GSM close to Type, add room between Type and Réservations, and keep Langue away from the far right. */
.whatsapp-recipient-table col.col-recipient{width:30%;}
.whatsapp-recipient-table col.col-email{width:17%;}
.whatsapp-recipient-table col.col-type{width:16%;}
.whatsapp-recipient-table col.col-booking{width:19%;}
.whatsapp-recipient-table col.col-lang{width:8%;}
.whatsapp-recipient-table td:nth-child(3),.whatsapp-recipient-table th:nth-child(3){padding-right:4px;}
.whatsapp-recipient-table td:nth-child(4),.whatsapp-recipient-table th:nth-child(4){padding-left:4px;padding-right:34px;}
.whatsapp-recipient-table td:nth-child(5),.whatsapp-recipient-table th:nth-child(5){padding-left:24px;padding-right:2px;}
.whatsapp-recipient-table td:nth-child(6),.whatsapp-recipient-table th:nth-child(6){padding-left:2px;padding-right:14px;}

/* Mailing: less space Destinataire→E-mail, more E-mail→Type and Type→Réservations, less Réservations→Langue. */
.mailing-page-recipient-table col.col-recipient{width:26%;}
.mailing-page-recipient-table col.col-email{width:24%;}
.mailing-page-recipient-table col.col-type{width:16%;}
.mailing-page-recipient-table col.col-booking{width:18%;}
.mailing-page-recipient-table col.col-lang{width:8%;}
.mailing-page-recipient-table td:nth-child(2),.mailing-page-recipient-table th:nth-child(2){padding-right:2px;}
.mailing-page-recipient-table td:nth-child(3),.mailing-page-recipient-table th:nth-child(3){padding-left:4px;padding-right:36px;}
.mailing-page-recipient-table td:nth-child(4),.mailing-page-recipient-table th:nth-child(4){padding-left:28px;padding-right:32px;}
.mailing-page-recipient-table td:nth-child(5),.mailing-page-recipient-table th:nth-child(5){padding-left:28px;padding-right:2px;}
.mailing-page-recipient-table td:nth-child(6),.mailing-page-recipient-table th:nth-child(6){padding-left:2px;padding-right:12px;}
.mailing-recipient-table .recipient-sublist{margin-top:3px;color:#5f6b7a;font-size:.92em;line-height:1.25;}
.mailing-recipient-table .recipient-type-list div,.mailing-recipient-table .recipient-booking-list div{line-height:1.35;}
.whatsapp-prepared-table .btn{white-space:nowrap;}

/* V144: responsive hardening for smartphone and tablet tests */
img, svg, video, canvas, iframe{max-width:100%;height:auto;}
pre, code, .path, .cell-main, .cell-sub{max-width:100%;overflow-wrap:anywhere;}
.card, .notice, .alert{max-width:100%;}

/* Make all standard tables usable on small screens, even when a page forgot a wrapper. */
.table-scroll,
.admin-res-table-wrap,
.csv-grid-shell{max-width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;}

@media screen and (max-width:980px){
  .container{width:100%;max-width:100%;}
  table.table,
  table.admin-table,
  table.compact-admin-table,
  table.mailing-recipient-table,
  table.message-broadcast-table,
  table.sqlite-backup-table,
  table.booking-documents-table,
  table.responsible-bookings-table,
  table.responsibles-table,
  table.activity-checklist-table,
  table.bank-table,
  table.whatsapp-prepared-table{
    display:block;
    max-width:100%;
    overflow-x:auto;
    -webkit-overflow-scrolling:touch;
  }
  table.table th,
  table.table td,
  table.admin-table th,
  table.admin-table td{
    overflow-wrap:break-word;
  }
  .mailing-recipient-table,
  .message-broadcast-table,
  .whatsapp-prepared-table,
  .booking-documents-table,
  .responsible-bookings-table,
  .responsibles-table,
  .activity-checklist-table,
  .bank-table,
  .sqlite-backup-table{
    min-width:760px;
  }
  .admin-res-table-wrap .admin-res-table,
  .table-scroll.table-scroll-fit .admin-res-table{
    min-width:920px !important;
    table-layout:auto !important;
  }
  .admin-res-table-wrap{overflow-x:auto !important;}
}

@media screen and (max-width:760px){
  html{font-size:15px;}
  body{min-width:0;}
  .container{margin:10px auto;padding:0 10px;}
  header{gap:8px;}
  header > .row{width:100%;}
  .app-title{white-space:normal;line-height:1.2;max-width:calc(100% - 54px);}
  .offline-badge{margin-left:0;margin-top:6px;}
  .card{margin:10px 0;padding:12px;}

  /* Inline desktop grids exist on many pages. Force one readable column on phone. */
  .container .grid,
  .container [style*="grid-template-columns"]{
    grid-template-columns:1fr !important;
  }
  .container .grid > *,
  .container [style*="grid-column"]{
    grid-column:1 / -1 !important;
    min-width:0 !important;
    max-width:100% !important;
  }
  .container [style*="display:grid"] > *{
    min-width:0 !important;
    max-width:100% !important;
  }
  .container [style*="display:flex"]{
    max-width:100%;
    flex-wrap:wrap !important;
  }

  /* Form controls and actions */
  input, select, textarea, button{max-width:100%;}
  input[type=file]{width:100%;}
  textarea{min-height:110px;}
  .btn, button.btn, input.btn, a.btn{min-height:42px;}
  .right{text-align:left;}

  /* Keep inline checkbox labels readable without stretching the checkbox itself. */
  label[style*="display:flex"]{flex-wrap:wrap !important;align-items:flex-start !important;}
  label[style*="display:flex"] input[type=checkbox],
  label[style*="display:flex"] input[type=radio]{flex:0 0 auto;margin-top:3px;}

  /* Search/filter/import toolbars should stack instead of overflowing. */
  .list-toolbar,
  .list-toolbar-right,
  .backup-action-row,
  .backup-action-row-inline,
  .bank-assign-form,
  .booking-phone-action,
  .csv-line-confirm-form{
    flex-direction:column !important;
    align-items:stretch !important;
    width:100% !important;
  }
  .list-toolbar-right input[type=file],
  .bank-target-select,
  .booking-phone-action input,
  .csv-line-confirm-form input[type=file]{
    width:100% !important;
    max-width:100% !important;
    min-width:0 !important;
  }

  /* Booking/document action zones */
  .booking-doc-actions{justify-content:flex-start;flex-wrap:wrap;}
  .booking-doc-actions-head,.booking-doc-actions-cell{width:auto;text-align:left;}
  .booking-doc-edit-form{max-width:100%;margin:0;}
  .transfer-target{width:100% !important;max-width:100% !important;}
  .participant-voucher-apply{width:100%;}

  /* Very wide admin tables scroll instead of squeezing text until unreadable. */
  .admin-res-table-wrap .admin-res-table,
  .table-scroll.table-scroll-fit .admin-res-table,
  .message-broadcast-table,
  .mailing-recipient-table,
  .whatsapp-prepared-table{
    min-width:880px !important;
  }
}

@media screen and (min-width:761px) and (max-width:1100px){
  /* Tablet: keep two usable columns where possible, but avoid fixed desktop widths. */
  .container .grid-3,
  .container .grid-4{grid-template-columns:repeat(2,minmax(0,1fr));}
  .container [style*="min-width:340px"],
  .container [style*="min-width:320px"],
  .container [style*="min-width:260px"]{
    min-width:0 !important;
  }
  .admin-res-table-wrap{overflow-x:auto !important;}
}

/* Booking edit: detailed settlement / afrekening */
.settlement-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:14px;margin-top:10px;align-items:start}
.settlement-panel{background:#fff;border:1px solid var(--border);border-radius:14px;padding:12px 14px}
.settlement-side{display:flex;flex-direction:column;gap:12px}
.settlement-section{padding:0 0 12px 0;margin:0 0 12px 0;border-bottom:1px solid var(--border)}
.settlement-section:last-child{margin-bottom:0;padding-bottom:0;border-bottom:0}
.settlement-section-title{font-weight:700;font-size:1rem;margin:0 0 8px 0;color:#223}
.settlement-line,.settlement-summary-line,.settlement-bank-line{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:12px;align-items:baseline;padding:3px 0}
.settlement-label{min-width:0;overflow-wrap:anywhere}
.settlement-amount{font-variant-numeric:tabular-nums;text-align:right;white-space:nowrap}
.settlement-line-total{border-top:1px solid var(--border);margin-top:6px;padding-top:7px;font-weight:700}
.settlement-bank-line strong{font-variant-numeric:tabular-nums;text-align:right;white-space:nowrap}
.settlement-payments-table{width:100%;border-collapse:collapse;font-size:.9rem;margin-top:4px}
.settlement-payments-table th,.settlement-payments-table td{border-bottom:1px solid var(--border);padding:6px 4px;text-align:left;vertical-align:top}
.settlement-account-cell{overflow-wrap:anywhere}
.settlement-payments-table th.right,.settlement-payments-table td.right{text-align:right;white-space:nowrap;font-variant-numeric:tabular-nums}
.settlement-total-paid-line{margin-top:8px;border-top:1px solid var(--border);padding-top:8px;font-weight:700}
.settlement-summary-box{background:#fff;border:1px solid var(--border);border-radius:14px;padding:12px 14px;margin-top:0;max-width:none;margin-left:0}
.settlement-summary-line{font-size:1rem}.settlement-summary-line strong{font-variant-numeric:tabular-nums;text-align:right;white-space:nowrap}.settlement-balance{font-size:1.08rem;font-weight:800;border-top:1px solid var(--border);padding-top:8px;margin-top:6px}
@media (max-width:920px){.settlement-grid{grid-template-columns:1fr}.settlement-summary-box{max-width:none;margin-left:0}.settlement-payments-table{display:block;overflow-x:auto;white-space:nowrap}}
@media (max-width:760px){.voucher-participants-grid{grid-template-columns:1fr !important}}


/* V167: responsables - plus d'espace pour Nom / Type de service, moins d'espace perdu avant Actions. */
.responsibles-table{table-layout:fixed!important;width:100%!important;}
.responsibles-table th:first-child,.responsibles-table td:first-child{width:28%!important;padding-right:16px!important;}
.responsibles-table .td-service{width:21%!important;padding-left:12px!important;padding-right:8px!important;white-space:normal!important;}
.responsibles-table .td-lang{width:7%!important;text-align:center!important;}
.responsibles-table .td-gsm{width:13%!important;}
.responsibles-table .td-email{width:23%!important;white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important;}
.responsibles-table .td-actions{width:8%!important;min-width:84px!important;text-align:right!important;white-space:nowrap!important;}
.responsibles-table .td-actions .btn{min-width:78px!important;padding-left:8px!important;padding-right:8px!important;}

/* V168: responsables admin rééquilibrés sans ascenseur horizontal. */
.responsibles-table{table-layout:fixed!important;width:100%!important;min-width:0!important;}
.responsibles-table th,.responsibles-table td{padding:6px 8px!important;vertical-align:middle!important;line-height:1.22!important;}
.responsibles-table th:first-child,.responsibles-table td:first-child{width:25%!important;padding-right:12px!important;white-space:normal!important;}
.responsibles-table .td-service{width:18%!important;padding-left:8px!important;padding-right:8px!important;white-space:normal!important;}
.responsibles-table .td-lang{width:5%!important;min-width:34px!important;text-align:center!important;white-space:nowrap!important;padding-left:3px!important;padding-right:3px!important;}
.responsibles-table .td-gsm{width:13%!important;white-space:nowrap!important;padding-left:6px!important;padding-right:6px!important;}
.responsibles-table .td-email{width:27%!important;white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important;padding-right:12px!important;}
.responsibles-table .td-actions{width:12%!important;min-width:92px!important;text-align:right!important;white-space:nowrap!important;padding-left:6px!important;}
.responsibles-table .td-actions .btn{min-width:82px!important;padding:6px 10px!important;}


/* V172: liste responsables - rééquilibrage final sans chevauchement ni ascenseur sur écran large. */
.table-scroll.table-scroll-fit:has(.responsibles-table){overflow-x:visible!important;max-width:100%!important;}
.responsibles-table{table-layout:fixed!important;width:100%!important;min-width:0!important;}
.responsibles-table th,.responsibles-table td{padding:6px 8px!important;vertical-align:middle!important;line-height:1.22!important;white-space:normal!important;overflow-wrap:break-word!important;word-break:normal!important;}
.responsibles-table th:first-child,.responsibles-table td:first-child{width:25%!important;padding-right:12px!important;}
.responsibles-table .td-service{width:18%!important;padding-left:8px!important;padding-right:10px!important;white-space:normal!important;}
.responsibles-table .td-lang{width:6%!important;min-width:42px!important;text-align:center!important;white-space:nowrap!important;padding-left:8px!important;padding-right:10px!important;}
.responsibles-table .td-gsm{width:13%!important;white-space:nowrap!important;padding-left:14px!important;padding-right:8px!important;}
.responsibles-table .td-email{width:27%!important;white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important;padding-right:14px!important;}
.responsibles-table .td-actions{width:11%!important;min-width:92px!important;text-align:right!important;white-space:nowrap!important;padding-left:8px!important;}
.responsibles-table .td-actions .btn{min-width:82px!important;padding:6px 10px!important;}
@media(max-width:900px){.table-scroll.table-scroll-fit:has(.responsibles-table){overflow-x:auto!important}.responsibles-table{min-width:760px!important}}

/* V173: responsables - éviter chevauchement Langue/GSM sans ascenseur sur écran large. */
.table-scroll.table-scroll-fit:has(.responsibles-table){overflow-x:visible!important;max-width:100%!important;}
.responsibles-table{table-layout:fixed!important;width:100%!important;min-width:0!important;}
.responsibles-table th,.responsibles-table td{box-sizing:border-box!important;padding:6px 8px!important;vertical-align:middle!important;line-height:1.22!important;white-space:normal!important;overflow-wrap:break-word!important;}
.responsibles-table th:first-child,.responsibles-table td:first-child{width:24%!important;padding-right:12px!important;}
.responsibles-table .td-service{width:17%!important;padding-left:8px!important;padding-right:12px!important;}
.responsibles-table .td-lang{width:7%!important;min-width:52px!important;text-align:center!important;white-space:nowrap!important;padding-left:8px!important;padding-right:16px!important;}
.responsibles-table .td-gsm{width:14%!important;white-space:nowrap!important;padding-left:18px!important;padding-right:10px!important;}
.responsibles-table .td-email{width:26%!important;white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important;padding-left:8px!important;padding-right:16px!important;}
.responsibles-table .td-actions{width:12%!important;min-width:92px!important;text-align:right!important;white-space:nowrap!important;padding-left:8px!important;}
.responsibles-table .td-actions .btn{min-width:82px!important;padding:6px 10px!important;}
@media(max-width:900px){.table-scroll.table-scroll-fit:has(.responsibles-table){overflow-x:auto!important}.responsibles-table{min-width:760px!important}}

/* V174: responsables - espace Langue/GSM renforcé, sans ascenseur horizontal sur écran large. */
.table-scroll.table-scroll-fit:has(.responsibles-table){overflow-x:visible!important;max-width:100%!important;width:100%!important;}
.responsibles-table{width:100%!important;max-width:100%!important;min-width:0!important;table-layout:fixed!important;border-collapse:collapse!important;}
.responsibles-table th,.responsibles-table td{box-sizing:border-box!important;padding:7px 8px!important;vertical-align:middle!important;line-height:1.24!important;white-space:normal!important;overflow-wrap:break-word!important;}
.responsibles-table th:first-child,.responsibles-table td:first-child{width:24%!important;padding-right:14px!important;}
.responsibles-table .td-service{width:16%!important;padding-left:8px!important;padding-right:14px!important;}
.responsibles-table .td-lang{width:7%!important;min-width:0!important;text-align:center!important;white-space:nowrap!important;padding-left:8px!important;padding-right:26px!important;}
.responsibles-table .td-gsm{width:16%!important;white-space:nowrap!important;padding-left:28px!important;padding-right:12px!important;}
.responsibles-table .td-email{width:25%!important;white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important;padding-left:8px!important;padding-right:18px!important;}
.responsibles-table .td-actions{width:12%!important;text-align:right!important;white-space:nowrap!important;padding-left:8px!important;}
.responsibles-table .td-actions .btn{min-width:82px!important;padding:6px 10px!important;}
@media(max-width:900px){.table-scroll.table-scroll-fit:has(.responsibles-table){overflow-x:auto!important}.responsibles-table{min-width:760px!important}}

/* Joomla Wrapper / iframe embedded mode */
body.is-embed header,body.is-embed .site-nav,body.is-embed .admin-nav-v536{display:none!important}
.embed-mini-bar,.embed-bottom-bar{display:flex!important;justify-content:flex-end!important;align-items:center;width:100%;box-sizing:border-box;padding:0;background:transparent;border:0;text-align:right}
.embed-mini-bar{margin:0 0 8px 0}
.embed-bottom-bar{margin:18px 0 0 0}
.embed-logout-form{margin:0!important;display:inline-flex!important;justify-content:flex-end!important}
.embed-logout-btn{display:inline-flex;align-items:center;justify-content:center;min-width:116px;padding:8px 15px;border-radius:999px;border:1px solid var(--border);background:#fff;color:var(--txt);font:inherit;font-size:13px;font-weight:400;cursor:pointer;line-height:1.1;white-space:nowrap;box-shadow:0 2px 8px rgba(0,0,0,.14)}
.embed-logout-btn:hover,.embed-logout-btn:focus{background:var(--brand-soft);text-decoration:none;box-shadow:0 3px 10px rgba(0,0,0,.18)}
@media(max-width:520px){.embed-mini-bar,.embed-bottom-bar{padding:8px}.embed-logout-btn{min-width:0;padding:8px 12px;font-size:12px;font-weight:400}}

.layout-colors-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;align-items:start}
.color-config-block label{display:block;margin-bottom:6px;line-height:1.25}
.color-config-row{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.color-config-inline-row{display:grid;grid-template-columns:minmax(90px,1fr) 108px 88px;gap:8px;width:100%;align-items:center}
.color-config-wide-row{width:100%}
.color-config-row input[type=color],.color-preview-input{width:100%;min-width:0;height:48px;padding:4px;border:1px solid var(--border);border-radius:10px;background:#fff;cursor:pointer}
.color-config-row input[type=text],.color-config-row .js-color-text,.color-code-input{width:100%;min-width:0;height:48px;text-transform:uppercase;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-weight:700;letter-spacing:.02em;text-align:center}
.color-config-row .js-eyedropper{height:48px;white-space:nowrap;padding-left:10px;padding-right:10px;min-width:0}
.color-config-row .js-eyedropper.is-disabled,.color-config-row .js-eyedropper.is-unavailable{opacity:.72;cursor:pointer}
@media (max-width:900px){.layout-colors-grid{grid-template-columns:1fr}.color-config-inline-row{grid-template-columns:minmax(120px,1fr) 120px 96px}}
@media (max-width:520px){.color-config-inline-row{grid-template-columns:1fr}.color-config-row .js-eyedropper{width:100%}}

/* Public trip cards: adaptive layout for one to four visible trips */
.public-trips-grid{
  display:grid;
  gap:18px;
  align-items:stretch;
  margin:12px 0 0;
}
.public-trips-grid.trips-count-1{
  grid-template-columns:minmax(0,880px);
  justify-content:center;
}
.public-trips-grid.trips-count-2{
  grid-template-columns:repeat(2,minmax(0,420px));
  justify-content:center;
}
.public-trips-grid.trips-count-3{
  grid-template-columns:repeat(3,minmax(0,1fr));
}
.public-trips-grid.trips-count-4{
  grid-template-columns:repeat(4,minmax(0,1fr));
}
.public-trips-grid .trip-card{
  display:flex;
  flex-direction:column;
  min-width:0;
  height:100%;
  margin:0;
  padding:18px;
}
.trip-card-content{
  display:flex;
  flex:1 1 auto;
  flex-direction:column;
  align-items:stretch;
  min-width:0;
  text-align:center;
}
.trip-card-info{
  min-width:0;
}
.trip-card-title{
  margin:0;
  line-height:1.18;
  overflow-wrap:anywhere;
}
.trip-card-destination{
  margin-top:6px;
}
.trip-card-dates{
  margin-top:4px;
}
.trip-card-action-stack{
  display:flex;
  flex-direction:column;
  gap:10px;
  margin-top:auto;
  padding-top:16px;
  min-width:0;
}
.trip-availability-box{
  width:100%;
  margin:0;
  padding:10px 12px;
  text-align:center;
  line-height:1.45;
}
.trip-card-buttons{
  display:flex;
  flex-direction:column;
  gap:8px;
  width:100%;
}
.trip-card-buttons .btn{
  display:flex;
  align-items:center;
  justify-content:center;
  width:100%;
  min-height:42px;
  margin:0;
  white-space:normal;
  text-align:center;
  line-height:1.2;
}
.trip-registration-state{
  width:100%;
  margin:12px 0 0;
  text-align:left;
}

/* A single trip keeps a spacious horizontal presentation. */
.trips-count-1 .trip-card{
  padding:20px 22px;
}
.trips-count-1 .trip-card-content{
  display:grid;
  grid-template-columns:minmax(0,1fr) minmax(430px,.95fr);
  gap:24px;
  align-items:center;
  text-align:left;
}
.trips-count-1 .trip-card-info{
  text-align:left;
}
.trips-count-1 .trip-card-action-stack{
  display:grid;
  grid-template-columns:minmax(205px,1fr) minmax(195px,1fr);
  gap:12px;
  align-items:stretch;
  margin:0;
  padding:0;
}
.trips-count-1 .trip-availability-box{
  display:flex;
  flex-direction:column;
  justify-content:center;
  text-align:left;
}
.trips-count-1 .trip-card-buttons{
  justify-content:center;
}

/* Four cards remain compact enough to fit on a wide desktop. */
.trips-count-4 .trip-card{
  padding:16px 13px;
}
.trips-count-4 .trip-card-title{
  font-size:1.12rem;
}
.trips-count-4 .trip-availability-box{
  padding-left:8px;
  padding-right:8px;
  font-size:13px;
}
.trips-count-4 .trip-card-buttons .btn{
  padding-left:8px;
  padding-right:8px;
  font-size:13px;
}

/* Medium screens: four or three trips become two centered columns. */
@media (max-width:980px){
  .public-trips-grid.trips-count-3,
  .public-trips-grid.trips-count-4{
    grid-template-columns:repeat(2,minmax(0,420px));
    justify-content:center;
  }
  .trips-count-1 .trip-card-content{
    grid-template-columns:minmax(0,1fr) minmax(380px,.95fr);
    gap:18px;
  }
  .trips-count-1 .trip-card-action-stack{
    grid-template-columns:1fr 1fr;
  }
}

/* Small screens: every trip becomes one centered vertical card. */
@media (max-width:720px){
  .public-trips-grid.trips-count-1,
  .public-trips-grid.trips-count-2,
  .public-trips-grid.trips-count-3,
  .public-trips-grid.trips-count-4{
    grid-template-columns:minmax(0,430px);
    justify-content:center;
  }
  .trips-count-1 .trip-card{
    padding:18px;
  }
  .trips-count-1 .trip-card-content{
    display:flex;
    flex-direction:column;
    text-align:center;
  }
  .trips-count-1 .trip-card-info{
    text-align:center;
  }
  .trips-count-1 .trip-card-action-stack{
    display:flex;
    flex-direction:column;
    margin-top:auto;
    padding-top:16px;
  }
  .trips-count-1 .trip-availability-box{
    text-align:center;
  }
}


/* V432 — prix de référence dans les cartes séjour */
.trip-card-reference-price{margin-top:10px;padding:9px 11px;border-radius:10px;background:#f2f8fd;border:1px solid #d8e8f5;color:#123e63;text-align:center}
