: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}
.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}

/* 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-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;}
}
@media (max-width:820px){
  .admin-filters-grid{grid-template-columns:repeat(2,minmax(0,1fr)) !important;}
  .admin-search-grid{grid-template-columns:1fr !important;}
}
@media (max-width:700px){
  .admin-filters-grid,.admin-search-grid{grid-template-columns:1fr !important;}
}

.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:#25D366 !important;border-color:#25D366 !important;background:#f0fdf4 !important;gap:0;}
.whatsapp-admin-btn .whatsapp-icon{width:20px;height:20px;display:block;}
.whatsapp-admin-btn .whatsapp-icon path{fill:#25D366;}
.booking-phone-action,.membership-phone-action{display:flex;align-items:center;gap:6px;}
.booking-phone-action input,.membership-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 */
.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;
  }
}


/* Go for SKI Membership — additions on top of the exact Booking V424 layout */
.app-title{font-size:1.08rem}.nav-user{margin-right:12px;font-size:.9rem;opacity:.92}
.is-embed .container{margin-top:8px}.embed-mini-bar{display:flex;justify-content:flex-end;margin:0 0 10px}.embed-logout-btn{display:inline-flex;padding:7px 10px;border:1px solid var(--border);border-radius:10px;background:#fff;text-decoration:none;font-size:.9rem}
.alert{margin:10px 0}.alert.warning,.notice.warning{border-color:#f0cc79;background:#fff9e8;color:#765100}
.btn-secondary{background:#fff!important;color:var(--txt)!important}.btn-danger{background:#b42318!important;color:#fff!important;border-color:#b42318!important}.btn-success{background:#1f7a3d!important;color:#fff!important;border-color:#1f7a3d!important}.btn-warning{background:#fff3cd!important;color:#6b4b00!important;border-color:#e6c66a!important}.btn-small{min-height:32px!important;padding:6px 9px!important;font-size:12px!important}
.button-row{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin:12px 0}.button-row .btn{width:auto}
.form-grid{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:12px}.field{grid-column:span 6;min-width:0}.field.full{grid-column:1/-1}.field.third{grid-column:span 4}.field.quarter{grid-column:span 3}.field small{display:block;color:var(--muted);margin-top:4px}.required{color:#a61b1b}.checkbox{display:flex;align-items:flex-start;gap:8px}.checkbox input{margin-top:3px}.inline{display:inline-flex;align-items:center;gap:7px}.nowrap{white-space:nowrap}.muted{color:var(--muted)}
.table-wrap{width:100%;overflow:auto;-webkit-overflow-scrolling:touch}.table-wrap .table{min-width:680px}
.search-row{display:flex;gap:10px;align-items:flex-end;flex-wrap:wrap}.search-row>*{flex:1 1 180px}.search-row .btn{flex:0 0 auto}
.hero{padding:22px}.hero h1{margin:0 0 8px}.hero-actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:16px}
.stat-card{text-decoration:none}.stat-number{font-size:2rem;font-weight:800;color:var(--brand)}.stat-label{font-size:.92rem;color:var(--muted)}.kpi-link:hover{border-color:var(--brand);text-decoration:none}
.login-shell{max-width:540px;margin:35px auto}.login-shell .card{padding:22px}
.definition-list{display:grid;grid-template-columns:minmax(150px,240px) 1fr;gap:8px 14px}.definition-list dt{font-weight:700}.definition-list dd{margin:0}
.code{font-family:ui-monospace,SFMono-Regular,Consolas,monospace;background:#f2f5f8;border:1px solid var(--border);border-radius:7px;padding:2px 6px}
.status-badge{display:inline-flex;align-items:center;justify-content:center;padding:3px 8px;border-radius:999px;border:1px solid var(--border);background:#eef3f8;font-size:12px;font-weight:700;white-space:nowrap}.status-active,.status-paid,.status-free,.status-exempted{background:#edf9f0;border-color:#9ad0a7;color:#1f6b32}.status-pending,.status-pending_email,.status-pending_payment,.status-payment_grace,.status-partially_paid{background:#fff8df;border-color:#e8cd75;color:#725300}.status-rejected,.status-suspended,.status-overdue,.status-failed{background:#fff0f0;border-color:#e6a7a7;color:#8a1f1f}.status-inactive,.status-deceased,.status-cancelled{background:#f0f2f4;color:#60666c}
.path-box{margin-top:8px;padding:9px 10px;border:1px solid var(--border);border-radius:10px;background:#fff}.esco-results{position:relative;z-index:25;max-height:280px;overflow:auto;border:1px solid var(--border);border-radius:10px;background:#fff;box-shadow:0 10px 24px rgba(25,57,84,.14)}.esco-option{padding:9px 10px;border-bottom:1px solid var(--border);cursor:pointer}.esco-option:last-child{border-bottom:0}.esco-option:hover,.esco-option:focus{background:var(--brand-soft)}.hidden{display:none!important}
.empty{padding:18px;text-align:center;color:var(--muted)}
@media(max-width:620px){.field,.field.third,.field.quarter{grid-column:1/-1}.definition-list{grid-template-columns:1fr}.button-row,.hero-actions{flex-direction:column;align-items:stretch}.button-row .btn,.hero-actions .btn{width:100%}.search-row{align-items:stretch}.search-row>*{flex-basis:100%}.search-row .btn{width:100%}}
.page-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin:0 0 14px}.page-heading h1{margin:0 0 6px;font-size:1.5rem;line-height:1.2}.page-heading p{margin:0;color:var(--muted)}
.alert-error{border-color:#e6a7a7!important;background:#fff0f0!important;color:#8a1f1f!important}.alert-warning{border-color:#f0cc79!important;background:#fff9e8!important;color:#765100!important}.alert-success{border-color:#9ad0a7!important;background:#edf9f0!important;color:#1f6b32!important}
.badge-active,.badge-paid,.badge-free,.badge-exempted{background:#edf9f0!important;border-color:#9ad0a7!important;color:#1f6b32!important}.badge-pending,.badge-pending_email,.badge-pending_payment,.badge-payment_grace,.badge-partially_paid{background:#fff8df!important;border-color:#e8cd75!important;color:#725300!important}.badge-rejected,.badge-suspended,.badge-overdue,.badge-failed{background:#fff0f0!important;border-color:#e6a7a7!important;color:#8a1f1f!important}.badge-inactive,.badge-deceased,.badge-cancelled{background:#f0f2f4!important;color:#60666c!important}
.card>h2:first-child,.card>h3:first-child{font-size:1.1rem;font-weight:700;line-height:1.25;margin:0 0 12px;color:var(--txt)}
@media(max-width:720px){.page-heading{flex-direction:column}.page-heading>*{width:100%}}

/* Membership V005 - ESCO picker: two rows of two columns. */
.esco-level-field{grid-column:span 6}
.esco-level-field select,[data-esco-profession]{width:100%;white-space:normal;min-height:42px}
.esco-results .esco-option{white-space:normal;line-height:1.35}
@media(max-width:620px){.esco-level-field{grid-column:1/-1}}

/* Composants historiques consolidés en V032 */
.admin-star{color:#b78500;font-size:1.05em;vertical-align:baseline}.profile-identity-grid>div{padding:6px 0}.profile-identity-grid>div>div{margin-top:4px}.profile-contact-columns>form{min-width:0}

.csv-columns-wrap{display:inline;white-space:normal;overflow-wrap:anywhere;word-break:break-word;}


.esco-search-row{display:flex;gap:.65rem;align-items:flex-start}
.esco-search-row input{flex:1;min-width:0}
.esco-search-row .esco-reset{white-space:nowrap}
@media (max-width:700px){.esco-search-row{flex-direction:column}.esco-search-row .esco-reset{width:100%}}
.admin-page-title{margin-top:16px;margin-bottom:16px}.admin-page-title h1{margin:0}.member-identity-main{display:flex;justify-content:space-between;gap:20px;align-items:flex-start}.member-identity-main h2{margin-top:0}.member-identity-badges{display:flex;flex-direction:column;align-items:flex-end;gap:8px}.category-badge{border:0}.category-row{display:grid;grid-template-columns:minmax(180px,1fr) 130px 80px 100px 120px auto;gap:10px;align-items:center;padding:10px 0;border-bottom:1px solid #e5e7eb}.recipient-list{max-height:360px;overflow:auto;display:grid;gap:7px;padding:10px;border:1px solid #dce6ef;border-radius:10px}.modal{position:fixed;inset:0;z-index:9999;background:rgba(15,23,42,.55);display:flex;align-items:center;justify-content:center;padding:20px}.modal.hidden{display:none}.modal-dialog{position:relative;width:min(560px,calc(100vw - 40px));max-height:calc(100vh - 40px);overflow:auto;background:#fff;border-radius:14px;padding:24px;box-shadow:0 20px 60px rgba(0,0,0,.3)}.modal-close{position:absolute;right:12px;top:10px;border:0;background:transparent;font-size:28px;cursor:pointer}.page-heading.card{display:flex;justify-content:space-between;align-items:flex-start}.member-admin-layout>div{min-width:0}@media(max-width:800px){.member-identity-main{display:block}.member-identity-badges{align-items:flex-start}.category-row{grid-template-columns:1fr}.page-heading.card{display:block}}

/* V023 */
.category-badge{display:inline-flex!important;width:auto!important;height:auto!important;min-width:0!important;padding:4px 10px!important;border-radius:999px!important;line-height:1.2!important;white-space:nowrap!important;margin:0!important;font-size:12px!important;font-weight:700!important}.category-preview{display:flex;align-items:center;justify-content:flex-start}.category-row{grid-template-columns:max-content minmax(170px,1fr) 130px 80px 100px auto}.fee-order-text{display:inline-block;margin-top:4px;font-weight:800;font-size:12px}.fee-order-text.is-ok{color:#1f6b32}.fee-order-text.is-not-ok{color:#8a1f1f}.fee-valid-until{display:inline-block;margin-top:2px;color:#5f6b7a;font-size:12px;white-space:nowrap}.mailing-filter-panel{display:flex;flex-direction:column;gap:14px}.mailing-filter-line{display:grid;gap:12px;align-items:end}.mailing-filter-line.first{grid-template-columns:minmax(260px,2fr) minmax(130px,.75fr) minmax(150px,.9fr) minmax(135px,.75fr)}.mailing-filter-line.second{grid-template-columns:minmax(240px,1.5fr) minmax(160px,.9fr) minmax(170px,1fr) auto}.mailing-filter-line .field{margin:0}.mailing-filter-actions{display:flex;align-items:end}.member-identity-badges .fee-order-text{margin-top:0;white-space:nowrap}.member-identity-badges{align-items:flex-end;gap:8px}.member-identity-badges>*{display:inline-flex}@media(max-width:900px){.mailing-filter-line.first,.mailing-filter-line.second{grid-template-columns:1fr 1fr}.mailing-filter-actions{grid-column:1/-1}}@media(max-width:560px){.category-row{grid-template-columns:1fr}.mailing-filter-line.first,.mailing-filter-line.second{grid-template-columns:1fr}}

/* V025 — alignements fiche membre, profil et filtres */
.mailing-filter-line.first,.mailing-filter-line.second{grid-template-columns:repeat(4,minmax(0,1fr))!important}.mailing-filter-actions{display:flex;align-items:end}.mailing-filter-actions .btn{width:100%}
.member-identity-three{display:grid!important;grid-template-columns:minmax(0,1fr) minmax(210px,.8fr) minmax(150px,1fr);align-items:start}.member-identity-name{text-align:left}.member-identity-affiliation{text-align:center}.member-identity-date-label{margin-top:8px}.member-identity-badges{justify-self:end;text-align:right}.status-inline-form{display:flex;gap:10px;align-items:center}.status-inline-form select{flex:1}.admin-rights-action{margin-top:12px}.affiliation-save-row{margin-top:14px}.financial-actions-cell{white-space:nowrap;width:1%}.financial-actions{display:flex;gap:6px;justify-content:flex-end}.profile-identity-three{display:grid;grid-template-columns:minmax(0,1fr) minmax(210px,.8fr) minmax(150px,1fr);gap:20px;align-items:start}.profile-identity-center{text-align:center}.profile-identity-right{display:flex;flex-direction:column;align-items:flex-end;gap:8px;text-align:right}.profile-birth,.profile-affiliation-date{margin-top:10px}
@media(max-width:800px){.member-identity-three,.profile-identity-three{grid-template-columns:1fr}.member-identity-affiliation,.profile-identity-center{text-align:left}.member-identity-badges,.profile-identity-right{justify-self:start;align-items:flex-start;text-align:left}.status-inline-form{align-items:stretch;flex-direction:column}.mailing-filter-line.first,.mailing-filter-line.second{grid-template-columns:1fr 1fr!important}}
@media(max-width:560px){.mailing-filter-line.first,.mailing-filter-line.second{grid-template-columns:1fr!important}.financial-actions{flex-wrap:wrap}}

/* V027 — Public registration: compact identity row with membership category. */
.register-membership-row{display:grid;grid-template-columns:minmax(140px,20fr) minmax(110px,23fr) minmax(210px,40fr) minmax(140px,17fr);gap:12px;align-items:end}
.register-membership-row>.field{grid-column:auto}
@media(max-width:980px){.register-membership-row{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:620px){.register-membership-row{grid-template-columns:1fr}}

/* V028 — Public registration split into Identification and ESCO cards. */
.register-form{display:flex;flex-direction:column;gap:16px}
.register-identification-row-two{display:grid;grid-template-columns:1fr 1fr 2fr;gap:12px;align-items:end}
.register-identification-row-three{display:grid;grid-template-columns:minmax(145px,.75fr) minmax(220px,1.625fr) minmax(220px,1.625fr);gap:12px;align-items:end}
.register-identification-row-two>.field,.register-identification-row-three>.field{grid-column:auto}
.register-submit-row{justify-content:flex-end;margin-top:0}
.register-submit-row .btn{margin-left:auto}
@media(max-width:900px){.register-identification-row-two{grid-template-columns:1fr 1fr}.register-identification-row-two>.field:last-child{grid-column:1/-1}.register-identification-row-three{grid-template-columns:1fr 1fr}.register-identification-row-three>.field:first-child{grid-column:1/-1}}
@media(max-width:620px){.register-identification-row-two,.register-identification-row-three{grid-template-columns:1fr}.register-identification-row-two>.field:last-child,.register-identification-row-three>.field:first-child{grid-column:auto}}

/* V029 — Harmonisation de l'espacement du formulaire public et alignement du bloc d'affiliation. */
.register-form{gap:0}
.register-form .card + .card{margin-top:0}
.member-identity-affiliation{justify-self:center;text-align:left}
@media(max-width:800px){.member-identity-affiliation{justify-self:start}}

/* =========================================================
   V032 — Responsive global Membership
   ========================================================= */
html{max-width:100%;overflow-x:hidden}
body{max-width:100%;overflow-x:hidden}
img,svg,video,canvas{max-width:100%;height:auto}
.container,.card,.field,form,section,main{min-width:0}
.table-wrap{width:100%;max-width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}
.table-wrap>.table{min-width:680px}
.button-row,.form-actions{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.inline{display:inline-flex;gap:8px;align-items:center;flex-wrap:wrap}
.form-grid{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:12px}
.form-grid .full{grid-column:1/-1}
.esco-picker-grid{grid-template-columns:repeat(12,minmax(0,1fr))}
.esco-search-row{display:flex;gap:8px;align-items:stretch}
.esco-search-row input{min-width:0;flex:1}
.esco-search-row .btn{flex:0 0 auto}

@media (max-width:980px){
  .container{max-width:100%;padding-left:12px;padding-right:12px}
  .grid-3,.grid-4{grid-template-columns:repeat(2,minmax(0,1fr))}
  .form-grid>.field.third,.form-grid>.field.quarter{grid-column:span 6}
  .mailing-filter-line.first,.mailing-filter-line.second{grid-template-columns:repeat(2,minmax(0,1fr))!important}
  .member-identity-three,.profile-identity-three{grid-template-columns:minmax(0,1fr) minmax(190px,.8fr)}
  .member-identity-badges,.profile-identity-right{grid-column:1/-1;justify-self:start;align-items:flex-start;text-align:left}
  .register-identification-row-two,.register-identification-row-three,.register-membership-row{grid-template-columns:repeat(2,minmax(0,1fr))}
  .register-identification-row-two>.field:last-child{grid-column:1/-1}
  .admin-nav-v536{align-items:stretch}
}

@media (max-width:760px){
  header{position:relative;gap:8px}
  .app-title{font-size:1rem;white-space:normal}
  .site-nav{margin-left:0}
  .site-nav .nav-links a,.nav-link-button{width:100%;margin:0;padding:9px 4px}
  .admin-nav-v536{display:flex!important;flex-direction:column!important;gap:8px!important}
  .admin-nav-v536-group{width:100%}
  .admin-nav-v536-group>summary{width:100%;justify-content:space-between;white-space:normal}
  .admin-nav-v536-panel{width:100%}
  .admin-nav-v536-panel a{white-space:normal}
  .container{margin:10px auto;padding:0 8px}
  .card{margin:10px 0;padding:12px;border-radius:11px}
  h1,.admin-page-title h1{font-size:1.25rem;overflow-wrap:anywhere}
  h2{font-size:1.08rem;overflow-wrap:anywhere}
  .grid-2,.grid-3,.grid-4,
  .register-identification-row-two,.register-identification-row-three,.register-membership-row,
  .mailing-filter-line.first,.mailing-filter-line.second,
  .member-identity-three,.profile-identity-three{grid-template-columns:1fr!important}
  .register-identification-row-two>.field:last-child,.register-identification-row-three>.field:first-child{grid-column:auto}
  .member-identity-affiliation,.profile-identity-center{justify-self:start;text-align:left}
  .member-identity-badges,.profile-identity-right{grid-column:auto;justify-self:start;align-items:flex-start;text-align:left}
  .row,.button-row,.form-actions,.inline,.status-inline-form,.financial-actions{flex-direction:column;align-items:stretch;width:100%}
  .row>*:not(input[type=checkbox]):not(input[type=radio]),.button-row>*,.form-actions>*,.inline>*{width:100%;max-width:100%}
  .btn,button.btn,a.btn,input.btn{width:100%;min-height:44px;white-space:normal;text-align:center}
  .btn+.btn{margin-top:0}
  .financial-actions-cell{white-space:normal;width:auto}
  .financial-actions{gap:8px}
  .esco-search-row{flex-direction:column}
  .esco-search-row .btn{width:100%}
  input,select,textarea{font-size:16px;max-width:100%}
  label{overflow-wrap:anywhere}
  .table-wrap{margin-left:0;margin-right:0;border-radius:8px}
  .table-wrap>.table{min-width:640px}
  .table th,.table td{font-size:13px;padding:8px;white-space:nowrap}
  .table td{max-width:260px;overflow-wrap:anywhere}
  .table td br+span,.table td .muted,.table td small{white-space:normal}
  dialog.card{max-width:calc(100vw - 20px)!important;width:calc(100vw - 20px)!important;margin:auto}
}

@media (max-width:480px){
  header{padding:10px}
  .container{padding:0 6px}
  .card{padding:10px}
  .lang-btn{min-width:36px;padding:6px 8px}
  .status-badge,.category-badge{max-width:100%;white-space:normal;text-align:center}
  .table-wrap>.table{min-width:580px}
  .notice,.alert{padding:9px 10px}
}


/* =========================================================
   V033 — Confirmation e-mail et disposition de l'inscription
   ========================================================= */
.register-identification-row-one,
.register-identification-row-two,
.register-identification-row-three{
  display:grid;
  gap:12px;
  align-items:end;
}
.register-identification-row-one{grid-template-columns:repeat(2,minmax(0,1fr))}
.register-identification-row-two,
.register-identification-row-three{grid-template-columns:repeat(4,minmax(0,1fr))}
.register-identification-row-one>.field,
.register-identification-row-two>.field,
.register-identification-row-three>.field{grid-column:auto;min-width:0}
.forgot-password-submit-row{margin-top:18px}
@media(max-width:980px){
  .register-identification-row-one,
  .register-identification-row-two,
  .register-identification-row-three{grid-template-columns:repeat(2,minmax(0,1fr))}
  .register-identification-row-one>.field,
  .register-identification-row-two>.field,
  .register-identification-row-three>.field{grid-column:auto!important}
}
@media(max-width:760px){
  .register-identification-row-one,
  .register-identification-row-two,
  .register-identification-row-three{grid-template-columns:1fr!important}
  .register-identification-row-one>.field,
  .register-identification-row-two>.field,
  .register-identification-row-three>.field{grid-column:auto!important}
}

/* V034 — Register: classification professionnelle en deux colonnes égales */
.register-professional-classification-row{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:12px;
  width:100%;
}
.register-professional-classification-row>.field{
  grid-column:auto!important;
  min-width:0;
}
@media(max-width:760px){
  .register-professional-classification-row{grid-template-columns:1fr!important}
}

/* =========================================================
   V035 — Restauration des layouts historiques et responsive ciblé
   ========================================================= */
/*
 * Desktop: the historical 12-column grid is authoritative:
 *   .field         = 50%
 *   .field.third   = 33.333%
 *   .field.quarter = 25%
 *   .field.full    = 100%
 * Tablet: compact 25% and 33% fields become two equal columns, while
 * standard 50% fields remain side by side.
 * Smartphone: form fields become one column only below 620px.
 */
.form-grid{grid-template-columns:repeat(12,minmax(0,1fr))}
.form-grid>.field{grid-column:span 6}
.form-grid>.field.third{grid-column:span 4}
.form-grid>.field.quarter{grid-column:span 3}
.form-grid>.field.full{grid-column:1/-1}
.esco-picker-grid{grid-template-columns:repeat(12,minmax(0,1fr))}
.esco-picker-grid>.esco-level-field{grid-column:span 6}

@media (min-width:621px) and (max-width:980px){
  .form-grid>.field.third,
  .form-grid>.field.quarter{grid-column:span 6}
  .esco-picker-grid>.esco-level-field{grid-column:span 6}
}

@media (max-width:620px){
  .form-grid,
  .esco-picker-grid{grid-template-columns:1fr!important}
  .form-grid>.field,
  .form-grid>.field.third,
  .form-grid>.field.quarter,
  .form-grid>.field.full,
  .esco-picker-grid>.field,
  .esco-picker-grid>.esco-level-field{grid-column:1/-1!important}
}

/* Applications: compact duplicate indicator and more room for the person. */
.table-wrap>.applications-table{min-width:1040px!important}
.applications-table .applications-col-person{min-width:280px}
.applications-table .applications-col-email{min-width:220px}
.applications-table .applications-col-profession{min-width:245px}
.applications-table .applications-col-date{width:145px;white-space:nowrap}
.applications-table .applications-col-duplicates{width:64px;min-width:64px;text-align:center;white-space:nowrap}
.applications-table .applications-col-action{width:86px;min-width:86px;text-align:right;white-space:nowrap}
.duplicate-count-badge{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  width:28px;
  height:28px;
  padding:0;
  border-radius:50%;
  border:1px solid #b42318;
  background:#fff0f0;
  color:#b42318;
  font-size:13px;
  font-weight:800;
  line-height:1;
}


/* =========================================================
   V036 — catégories, filtres avancés et tableaux sans débordement
   ========================================================= */
.category-create-grid>.field{grid-column:span 3!important}
.category-active-field{display:flex;flex-direction:column;justify-content:flex-end}
.category-active-field>label:first-child{margin-bottom:4px}
.category-active-field .checkbox{min-height:42px;align-items:center;margin:0;padding:10px;border:1px solid var(--border);border-radius:10px;background:#fff}
.category-member-count{margin-left:8px;white-space:nowrap}
.category-actions{display:flex;gap:6px;align-items:center;justify-content:flex-end;white-space:nowrap}
.category-delete-card{border-color:#e6a7a7;background:#fff8f8}
.filter-submit-row{display:flex;justify-content:flex-end;margin-top:14px}
.filter-submit-row .btn{min-width:150px}

/* Import/export: same vertical rhythm as the other admin cards. */
.page-import_export .admin-page-title{margin-bottom:12px}
.import-export-grid{margin-top:0}
.import-export-grid>.card{margin-top:0;margin-bottom:12px}

/* Applications: fit every desktop column inside the card, without a horizontal scrollbar. */
.applications-table-wrap{overflow-x:hidden!important}
.table-wrap>.applications-table{display:table!important;width:100%!important;min-width:0!important;table-layout:fixed!important;overflow:visible!important}
.applications-table th,.applications-table td{padding:8px 6px!important;white-space:normal!important;overflow-wrap:anywhere;word-break:normal}
.applications-table .applications-col-person{width:25%!important;min-width:0!important}
.applications-table .applications-col-email{width:24%!important;min-width:0!important}
.applications-table .applications-col-profession{width:25%!important;min-width:0!important}
.applications-table .applications-col-date{width:13%!important;min-width:0!important;white-space:normal!important}
.applications-table .applications-col-duplicates{width:6%!important;min-width:0!important;text-align:center;white-space:nowrap!important}
.applications-table .applications-col-action{width:7%!important;min-width:0!important;text-align:right;white-space:nowrap!important}
.applications-table .applications-col-action .btn{width:auto;max-width:100%;padding-left:7px!important;padding-right:7px!important}

@media (min-width:621px) and (max-width:980px){
  .category-create-grid>.field{grid-column:span 6!important}
  .category-actions{justify-content:flex-start}
}

@media (max-width:760px){
  .filter-submit-row{justify-content:stretch}
  .filter-submit-row .btn{width:100%}
  .category-actions{flex-direction:column;align-items:stretch}
  .category-actions .btn{width:100%}

  .applications-table-wrap{overflow:visible!important}
  .applications-table,.applications-table tbody{display:block!important;width:100%!important}
  .applications-table thead{display:none!important}
  .applications-table tr:not(.applications-empty-row){display:grid!important;grid-template-columns:1fr 1fr;gap:0;border:1px solid var(--border);border-radius:10px;margin-bottom:10px;overflow:hidden;background:#fff}
  .applications-table td{display:block!important;width:auto!important;max-width:none!important;border-bottom:1px solid var(--border);padding:9px 10px!important;white-space:normal!important}
  .applications-table td::before{content:attr(data-label);display:block;font-size:11px;font-weight:700;color:var(--muted);margin-bottom:3px;text-transform:uppercase;letter-spacing:.02em}
  .applications-table .applications-col-person,.applications-table .applications-col-email,.applications-table .applications-col-profession{grid-column:1/-1}
  .applications-table .applications-col-date{grid-column:1/2;border-bottom:0}
  .applications-table .applications-col-duplicates{grid-column:2/3;border-bottom:0;text-align:left!important}
  .applications-table .applications-col-action{grid-column:1/-1;border-top:1px solid var(--border);border-bottom:0;text-align:left!important}
  .applications-table .applications-col-action::before{display:none}
  .applications-table .applications-col-action .btn{width:100%;max-width:none}
  .applications-empty-row{display:block!important}
  .applications-empty-row td{display:block!important;width:100%!important}
}

@media (max-width:620px){
  .category-create-grid>.field{grid-column:1/-1!important}
}


/* =========================================================
   V039 — Filtres 4 x 25 %, inscription et profil
   ========================================================= */
.mailing-filter-line.first,
.mailing-filter-line.second{
  grid-template-columns:repeat(4,minmax(0,1fr))!important;
}
.mailing-filter-line>.field,
.mailing-filter-line>.mailing-filter-actions{
  grid-column:auto!important;
  min-width:0;
}
.mailing-filter-actions{
  width:100%;
}
.mailing-filter-actions .btn{
  width:100%;
}

.register-identification-row-three,
.register-identification-row-four{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:12px;
  align-items:end;
}
.register-identification-row-three>.field,
.register-identification-row-four>.field{
  grid-column:auto!important;
  min-width:0;
}

.profile-identity-center{
  justify-self:center;
  text-align:left!important;
}
.profile-affiliation-block{
  display:inline-block;
  text-align:left;
}

@media(max-width:800px){
  .profile-identity-center{
    justify-self:center!important;
    text-align:left!important;
  }
}
@media(max-width:800px) and (min-width:561px){
  .mailing-filter-line.first,
  .mailing-filter-line.second{
    grid-template-columns:repeat(2,minmax(0,1fr))!important;
  }
}
@media(max-width:760px){
  .register-identification-row-three,
  .register-identification-row-four{
    grid-template-columns:1fr!important;
  }
}
@media(max-width:560px){
  .mailing-filter-line.first,
  .mailing-filter-line.second{
    grid-template-columns:1fr!important;
  }
}


/* V039: cotisation annuelle, échéance et données bancaires */
.contribution-period-text,.payment-deadline-text{font-size:12px;font-weight:700;line-height:1.35;max-width:260px}
.contribution-period-text{color:#334155}.payment-deadline-text{color:#725300}
.contribution-payment-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(280px,1fr);gap:20px;align-items:stretch}
.contribution-summary-box,.bank-payment-box,.contribution-paid-message{border:1px solid var(--border);border-radius:12px;padding:16px;background:#f8fbfe}
.contribution-summary-box>div,.bank-payment-box>div{display:grid;grid-template-columns:minmax(150px,1fr) auto;gap:14px;padding:5px 0;align-items:baseline}
.contribution-summary-box span,.bank-payment-box span{text-align:right;font-variant-numeric:tabular-nums;overflow-wrap:anywhere}
.contribution-balance{font-size:1.08rem;border-top:1px solid var(--border);margin-top:5px;padding-top:10px!important}
.structured-payment-reference span{font-weight:800;white-space:nowrap}
.contribution-paid-message{display:flex;align-items:center;justify-content:center;color:#1f6b32;font-weight:800;text-align:center;background:#edf9f0;border-color:#9ad0a7}
@media(max-width:800px){.contribution-payment-grid{grid-template-columns:1fr}.contribution-summary-box>div,.bank-payment-box>div{grid-template-columns:1fr}.contribution-summary-box span,.bank-payment-box span{text-align:left}.structured-payment-reference span{white-space:normal}}

.member-category-period-line{display:flex;align-items:center;justify-content:flex-end;gap:8px;flex-wrap:wrap}.member-category-period-line .contribution-period-text{max-width:none}@media(max-width:800px){.member-category-period-line{justify-content:flex-start}}

.rejection-actions{margin-top:8px}


/* V041 — tableau de bord compact et renouvellement annuel */
.role-admin.page-index .admin-page-title{margin-bottom:10px}
.dashboard-maintenance-notice{margin:0 0 10px}
.dashboard-kpis{margin:0 0 10px}
.dashboard-kpis>.card{margin:0}
.dashboard-contributions{margin-top:0}
.annual-notice-form{display:grid;grid-template-columns:minmax(180px,1fr) auto;gap:12px;align-items:end}
.annual-notice-form>.field{grid-column:auto;margin:0}
.annual-notice-action{display:flex;align-items:end}
@media(max-width:620px){.annual-notice-form{grid-template-columns:1fr}.annual-notice-action .btn{width:100%}}


/* V041 — paramètres bancaires, catégories et gratuité */
.exemption-until-year-field{grid-column:span 6!important}
.category-advantage-field{grid-column:1/-1!important}
.category-summary-wrap{overflow-x:auto}
.category-summary-table th:nth-child(1){width:24%}
.category-summary-table th:nth-child(2){width:18%}
.category-summary-table th:nth-child(3){width:58%}
.category-summary-table td{vertical-align:top}
.category-row{grid-template-columns:max-content minmax(150px,.8fr) 120px minmax(230px,1.5fr) 72px 92px auto}
.category-row textarea{min-height:58px;resize:vertical}
@media(max-width:900px){.category-row{grid-template-columns:1fr}.exemption-until-year-field{grid-column:span 6!important}}
@media(max-width:620px){.exemption-until-year-field{grid-column:1/-1!important}.category-summary-table{min-width:0}.category-summary-table th,.category-summary-table td{white-space:normal}}


/* V042 — catégories de membres sur deux lignes propres */
.category-row{display:grid;grid-template-columns:minmax(150px,max-content) minmax(180px,1fr) 150px 90px 100px minmax(190px,max-content);gap:10px 12px;align-items:end;padding:14px 0;border-bottom:1px solid #e5e7eb;min-width:0}
.category-row>*,.category-row input{min-width:0}
.category-preview{align-self:center;display:flex;flex-direction:column;align-items:flex-start;gap:5px}
.category-name-field,.category-fee-field,.category-color-field{display:grid;gap:5px}
.category-color-field input[type=color]{width:100%;min-width:64px}
.category-active-checkbox{align-self:center;margin-bottom:8px}
.category-actions{display:flex;gap:6px;align-items:center;justify-content:flex-end;white-space:nowrap;min-width:0}
.category-existing-advantage{grid-column:1/-1;display:grid;grid-template-columns:150px minmax(0,1fr);gap:12px;align-items:center;margin-top:2px}
.category-existing-advantage label{margin:0;font-weight:700}
.category-existing-advantage input,.category-advantage-field input{width:100%}
@media(max-width:1050px){.category-row{grid-template-columns:minmax(140px,max-content) minmax(180px,1fr) 140px 85px}.category-actions{grid-column:3/-1;justify-content:flex-end}.category-active-checkbox{grid-column:1/3}}
@media(max-width:720px){.category-row{grid-template-columns:1fr}.category-row>*{grid-column:1!important}.category-preview{align-items:flex-start}.category-actions{justify-content:flex-start;flex-wrap:wrap}.category-active-checkbox{margin:0}.category-existing-advantage{display:grid;grid-template-columns:1fr;gap:5px}}


/* V042 — suivi des campagnes d’e-mails */
.grid.grid-5{grid-template-columns:repeat(5,minmax(0,1fr))}
@media(max-width:900px){.grid.grid-5{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:520px){.grid.grid-5{grid-template-columns:1fr}}

/* V045 — catégories bilingues et choix visuel lors de l'inscription */
.grid-1{grid-template-columns:1fr}
.category-benefits{margin:10px 0 14px;padding-left:20px;display:grid;gap:7px;line-height:1.35}
.category-benefits li{overflow-wrap:anywhere}
.category-no-advantage{margin:10px 0 14px}
.category-advantages-bilingual,.category-existing-advantages{display:grid;grid-template-columns:1fr;gap:14px;grid-column:1/-1;width:100%}
.category-advantages-bilingual textarea,.category-existing-advantages textarea{width:100%;min-height:116px;resize:vertical}
.category-row.category-row-bilingual{grid-template-columns:minmax(150px,max-content) minmax(180px,1fr) 150px 90px 100px minmax(190px,max-content)}
.category-summary-table th:nth-child(1){width:15%}
.category-summary-table th:nth-child(2){width:15%}
.category-summary-table th:nth-child(3),.category-summary-table th:nth-child(4){width:35%}
.category-summary-table .category-benefits{margin:0;padding-left:18px}
.membership-categories-section{margin:22px 0}
.membership-categories-heading h2{margin-bottom:4px}
.membership-categories-heading p{margin-top:0;color:var(--muted)}
.membership-category-grid{align-items:stretch}
.membership-category-card{display:flex;flex-direction:column;position:relative;overflow:hidden;border-top:6px solid var(--category-color)}
.membership-category-card-header{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap}
.membership-category-price{font-size:1.05rem;white-space:nowrap}
.membership-category-card .category-benefits{flex:1}
.membership-category-choice{width:100%;margin-top:auto}
.membership-information-grid{margin-top:22px}
.register-category-options{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-top:12px}
.register-category-option{display:flex;margin:0;padding:0;border:2px solid var(--border);border-top:6px solid var(--category-color);border-radius:14px;background:#fff;cursor:pointer;overflow:hidden;transition:border-color .15s ease,box-shadow .15s ease,transform .15s ease}
.register-category-option:hover{box-shadow:0 8px 24px rgba(15,23,42,.08);transform:translateY(-1px)}
.register-category-option>input{position:absolute;opacity:0;pointer-events:none}
.register-category-option-content{display:flex;flex-direction:column;width:100%;padding:14px}
.register-category-option-header{display:flex;justify-content:space-between;gap:8px;align-items:flex-start;font-size:1rem}
.register-category-option-header>span{font-weight:700;white-space:nowrap}
.register-category-option .category-benefits{font-size:.9rem;margin-bottom:0}
.register-category-option:has(input:checked){border-color:var(--category-color);background:color-mix(in srgb,var(--category-color) 10%,#fff);box-shadow:0 0 0 3px color-mix(in srgb,var(--category-color) 22%,transparent)}
.register-category-option:has(input:focus-visible){outline:3px solid color-mix(in srgb,var(--category-color) 35%,transparent);outline-offset:2px}
.register-identification-row-two{grid-template-columns:repeat(3,minmax(0,1fr))!important}
@media(max-width:1000px){.register-category-options{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:820px){.category-row.category-row-bilingual{grid-template-columns:1fr}.category-row.category-row-bilingual>*{grid-column:1!important}}
@media(max-width:620px){.register-category-options{grid-template-columns:1fr}.register-identification-row-two{grid-template-columns:1fr!important}.membership-category-card-header,.register-category-option-header{align-items:flex-start}}

/* V046 — champs bilingues des avantages empilés sur toute la largeur. */
.category-advantages-bilingual>.field,.category-existing-advantages>.field{width:100%;min-width:0}
.category-create-grid>.category-advantages-bilingual{grid-column:1/-1!important}
.category-row.category-row-bilingual>.category-existing-advantages{grid-column:1/-1!important}

/* V052/V053 — profil en trois cadres et message de cotisation sur deux lignes */
.profile-settings-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;align-items:stretch;margin:0 0 20px}
.profile-settings-grid>.profile-settings-card{margin:0;min-width:0;display:flex;flex-direction:column}
.profile-settings-card>h2{margin-bottom:16px}
.profile-settings-card>form{display:flex;flex-direction:column;flex:1;min-width:0}
.profile-settings-card .button-row{margin-top:auto;padding-top:14px}
.contribution-paid-message{flex-direction:column;gap:4px}
@media(max-width:980px){.profile-settings-grid{grid-template-columns:1fr}}


/* Privacy policy and common footer */
.site-footer{margin:28px 0 8px;padding:18px 4px 4px;border-top:1px solid #dbe3ea;text-align:center;font-size:14px}
.site-footer a{color:var(--topbar,#1769aa);font-weight:600;text-decoration:none}
.site-footer a:hover,.site-footer a:focus{text-decoration:underline}
.privacy-policy-card{max-width:980px;margin-left:auto;margin-right:auto}
.privacy-contact-box{margin-bottom:24px;padding:14px 16px;border:1px solid #cbd5e1;border-radius:10px;background:#f8fafc;line-height:1.55}
.privacy-policy-text{overflow-wrap:anywhere;line-height:1.65}
.privacy-policy-text h2{margin:28px 0 10px;font-size:20px;color:#1f2937}
.privacy-policy-text h2:first-child{margin-top:0}
.privacy-policy-text p{margin:0 0 14px}
.privacy-policy-text ul{margin:0 0 16px;padding-left:24px}
.privacy-policy-text li{margin:5px 0}
.page-register .checkbox a{font-weight:700}

/* Formulaire de test e-mail */
.form-grid>.field.two-thirds{grid-column:span 8}
.test-mail-button-field{display:flex;flex-direction:column;justify-content:flex-end}
@media(max-width:760px){.form-grid>.field.two-thirds{grid-column:1/-1}}


.card-title-row{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:12px}.card-title-row h2{margin:0;font-size:1.1rem;font-weight:700;line-height:1.25;color:var(--txt)}

/* V064 — affichage compact du journal général */
.journal-table{table-layout:auto;min-width:1040px}
.journal-table th{vertical-align:top;line-height:1.25;white-space:nowrap}
.journal-table td{vertical-align:top;line-height:1.3}
.journal-table small{color:#667;line-height:1.25}
.journal-col-date{width:98px;min-width:98px}
.journal-col-user{width:250px;min-width:230px}
.journal-col-event{width:310px;min-width:300px}
.journal-col-ip{width:300px;min-width:285px}
.journal-date-cell{white-space:nowrap}
.journal-event-cell{overflow-wrap:anywhere;word-break:normal}
.journal-ip-cell code{display:inline-block;white-space:nowrap;font-size:13px}
.journal-ip-cell small{display:block;white-space:normal;overflow-wrap:anywhere;max-width:300px}
@media (max-width: 760px){
  .journal-table{min-width:960px}
  .journal-col-user{min-width:210px}
  .journal-col-event{min-width:280px}
  .journal-col-ip{min-width:260px}
}


.login-fields-row{display:grid;grid-template-columns:1fr 1fr;gap:14px;align-items:end}
@media(max-width:700px){.login-fields-row{grid-template-columns:1fr}}

.bank-import-top-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px;align-items:stretch;margin-bottom:16px}
.bank-import-top-grid>.card{margin:0;height:100%}
.bank-import-control-list{display:grid;gap:10px;margin:14px 0}
.bank-import-control-list div{display:grid;grid-template-columns:170px 1fr;gap:10px;align-items:start}
.bank-import-control-list dt{font-weight:700;color:#334155}
.bank-import-control-list dd{margin:0;overflow-wrap:anywhere}
.bulk-action-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}.bulk-action-grid>.field{grid-column:auto!important}.bulk-action-card{padding-bottom:12px}.bulk-action-help{margin-top:0;margin-bottom:10px}
.bulk-members-table th:first-child,.bulk-members-table td:first-child{width:42px;text-align:center}
@media(max-width:1000px){.bank-import-top-grid{grid-template-columns:1fr}.bulk-action-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:620px){.bulk-action-grid{grid-template-columns:1fr}.bank-import-control-list div{grid-template-columns:1fr}}

/* V068: connexion membre, deux champs exactement à 50 % sur ordinateur */
.login-fields-row{display:grid!important;grid-template-columns:minmax(0,1fr) minmax(0,1fr)!important;gap:14px;align-items:end;width:100%}
.login-fields-row>.field{grid-column:auto!important;margin:0;min-width:0}
@media(max-width:700px){.login-fields-row{grid-template-columns:1fr!important}}
/* V068: présentation plus proche de Booking pour l'import bancaire */
.bank-import-booking-layout{grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:stretch}
.bank-import-booking-layout>.card{height:100%;margin:0}
.bank-import-control-list{border-top:1px solid var(--border);margin-top:12px;padding-top:8px}
.bank-import-control-list div{padding:6px 0;border-bottom:1px solid rgba(220,230,239,.75)}
