.inline-select-action{display:flex;gap:8px}.inline-select-action select{flex:1}.event-mode-switch{margin:18px 22px 0;display:flex;gap:8px}.event-mode-switch label{padding:10px 14px;border:1px solid var(--line);border-radius:99px;background:#f8fbfb;font-weight:800}.event-participant-matrix{margin:0 22px 20px;padding:15px;border:1px solid var(--line);border-radius:10px}.event-participant-matrix>header{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.event-participant-matrix h3{margin:0}.event-participant-matrix p{margin:4px 0 12px;color:var(--muted);font-size:11px}.event-participant-matrix>header select{min-height:38px;padding:7px;border:1px solid var(--line);border-radius:8px;background:#fff}.participant-role-row{padding:8px 0;display:grid;grid-template-columns:1fr 240px 34px;gap:8px;align-items:center;border-top:1px solid var(--line)}.participant-role-row select{min-height:36px;padding:6px;border:1px solid var(--line);border-radius:7px}.participant-role-row button{height:32px;border:1px solid #efb4aa;border-radius:7px;color:#a14b40;background:#fff5f3}.loyverse-line{grid-template-columns:minmax(260px,1fr) 80px 95px minmax(210px,.6fr) 110px 32px}.loyverse-line select{min-width:0;height:38px;padding:7px;border:1px solid var(--line);border-radius:7px;background:#fff}@media(max-width:760px){.inline-select-action{align-items:stretch;flex-direction:column}.participant-role-row{grid-template-columns:1fr}.loyverse-line{grid-template-columns:1fr 1fr}.event-participant-matrix>header{flex-direction:column}}
.created-reservation{width:min(700px,90vw);padding:28px}.created-reservation h2{margin:4px 0 10px}.created-reservation label{display:grid;gap:7px;margin:20px 0}.created-reservation input{width:100%;padding:12px;border:1px solid var(--line);border-radius:8px}.created-reservation footer{display:flex;justify-content:flex-end;gap:9px;flex-wrap:wrap}
.reservation-range-toolbar{display:flex;align-items:end;gap:14px}.reservation-range-toolbar>label{display:grid;gap:5px;color:var(--muted);font-size:10px;font-weight:800}.reservation-range-toolbar select{min-width:190px;height:42px;padding:0 12px;border:1px solid var(--line);border-radius:9px;background:#fff}.reservation-range-toolbar>strong{margin-left:auto;padding-bottom:11px}.reservation-range-toolbar button:disabled{opacity:.35;cursor:default}

.reservation-validation{align-items:start;padding:36px 16px}.reservation-validation .auth-card{width:min(760px,100%);padding:34px}.reservation-validation .auth-brand{margin-bottom:26px}.validation-summary{margin:24px 0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.validation-summary>div{padding:14px;border:1px solid var(--line);border-radius:10px;background:#f8fbfb}.validation-summary dt{color:var(--muted);font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.05em}.validation-summary dd{margin:6px 0 0;font-size:16px;font-weight:800}.validation-program{display:grid;gap:14px}.validation-event{padding:17px;border:1px solid var(--line);border-radius:12px;background:#fff}.validation-event header{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;flex-wrap:wrap}.validation-event header strong,.validation-event header span{display:block}.validation-event header strong{font-size:16px}.validation-event header span{padding:4px 8px;border-radius:99px;background:#e7f2f2;color:var(--sea);font-size:12px;font-weight:800}.validation-event p{margin:12px 0;color:var(--muted)}.validation-event ul{margin:0;padding-left:22px}.reservation-validation form{margin-top:26px;padding-top:22px;display:grid;gap:20px;border-top:1px solid var(--line)}.reservation-validation form .check-line{display:flex;align-items:flex-start;gap:12px;line-height:1.5}.reservation-validation form .check-line input{flex:0 0 auto;margin-top:4px}.reservation-validation form .primary-button{justify-self:start;min-height:48px;padding:0 22px}@media(max-width:600px){.validation-summary{grid-template-columns:1fr}.reservation-validation .auth-card{padding:24px 20px}.validation-event header{display:grid}.reservation-validation form .primary-button{width:100%}}
.reservation-record{padding-bottom:40px}.reservation-record>.reservation-panel{margin-top:0}.reservation-record-summary{max-width:1100px}.reservation-record-summary .validation-program{margin-top:24px}
.reservation-payment-panel{margin:24px 0;padding:22px;border:1px solid #cfe0e4;border-radius:18px;background:#f8fbfb}.reservation-payment-panel header{display:flex;align-items:center;justify-content:space-between;gap:20px}.payment-balance{display:flex;gap:22px;flex-wrap:wrap;margin:18px 0;font-size:1.05rem}.payment-history,.reservation-movements ul{display:grid;gap:8px;padding:0;list-style:none}.payment-history li,.reservation-movements li{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px;border-radius:10px;background:#fff}.reservation-movements{margin-top:24px}.reservation-movements li{display:grid}.reservation-movements small{color:#607983}.sumup-payment-form{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin:22px 0;padding:18px;border-radius:14px;background:#eef7f7}
.reserved-place-summary{padding:10px 12px;border-radius:9px;background:#edf7f6;color:#234f56}.public-participant-form{margin-top:14px;border-top:1px solid var(--line);padding-top:14px}.public-participant-form summary{cursor:pointer;color:var(--sea);font-weight:900}.public-participant-form form{margin-top:14px;padding:0;border:0}.public-participant-form .form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.public-participant-form label{display:grid;gap:5px;color:var(--muted);font-size:11px;font-weight:800}.public-participant-form input,.public-participant-form select{min-height:42px;padding:8px 10px;border:1px solid var(--line);border-radius:8px;background:#fff}.public-participant-form small{font-weight:500}.public-participant-form .span-2{grid-column:1/-1}@media(max-width:600px){.public-participant-form .form-grid{grid-template-columns:1fr}.public-participant-form .span-2{grid-column:auto}}
.dossier-validities{display:flex;flex-wrap:wrap;gap:6px 14px;margin:0 0 12px;color:#254f58;font-size:13px;font-weight:700}.dossier-validities span{padding:3px 10px;border-radius:999px;background:#eef6f7}.dossier-validities .is-expired{background:#fdecea;color:#9b1c1c} /* (0.50.098) */
.reserved-role-grid{margin:8px 0 0;padding:14px;border:1px solid #cfe0e4;border-radius:10px;background:#f8fbfb}.reserved-role-grid legend{padding:0 6px;color:#254f58;font-weight:900}.reserved-role-grid>div{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}.reserved-role-grid label{display:grid;gap:5px}.reserved-role-grid input{min-height:40px}.reserved-role-grid>small{display:block;margin-top:10px;color:#607983}.reserved-role-grid .reserved-minors{color:#8a4b00;font-weight:700}.reserved-role-grid .reserved-minors input{border-color:#e8c9a0}@media(max-width:850px){.reserved-role-grid>div{grid-template-columns:repeat(2,minmax(0,1fr))}}
.public-participant-form .adult-choice{display:flex;align-items:center;gap:10px;font-size:13px;color:var(--ink)}.public-participant-form .adult-choice input{min-height:auto;width:20px;height:20px}.participant-identity-fields:has(.adult-toggle:checked) .minor-birth-field{display:none}
.loyverse-search{min-width:0;height:38px;padding:7px 10px;border:1px solid var(--line);border-radius:7px;background:#fff}.loyverse-line.with-search{grid-template-columns:minmax(180px,.7fr) minmax(260px,1fr) 80px 95px minmax(210px,.6fr) 110px 32px}@media(max-width:980px){.loyverse-line.with-search{grid-template-columns:1fr 1fr 90px 100px}.loyverse-line.with-search strong,.loyverse-line.with-search button{justify-self:end}}@media(max-width:760px){.loyverse-line.with-search{grid-template-columns:1fr 1fr}}
.public-participant-form .adult-choice{display:flex!important;flex-direction:row!important;align-items:center!important;gap:8px}.public-participant-form .adult-choice .adult-toggle{appearance:auto!important;width:16px!important;height:16px!important;min-height:16px!important;padding:0!important;margin:0!important;flex:0 0 16px}.public-participant-form .minor-birth-field[hidden]{display:none!important}
.link-button{padding:0;border:none;background:none;color:var(--sea);text-decoration:underline;font-size:inherit;cursor:pointer}
.booker-type-switch{display:flex;align-items:center;gap:18px;flex-wrap:wrap;padding:10px 14px;border:1px solid var(--line);border-radius:10px;background:#f8fbfb}.booker-type-label{font-weight:800;color:var(--muted);font-size:11px;text-transform:uppercase;letter-spacing:.05em}.booker-type-switch .check-line{margin:0}
/* (0.60.029) le réservant posé par la fiche client : une ligne de rappel grisée, en lecture seule, à la place des champs */
.booker-recap{margin:0;padding:8px 12px;border:1px dashed var(--line);border-radius:8px;background:#f6f8f8;color:var(--muted);font-size:13px}.booker-recap[hidden]{display:none}
.item-package-grant-toggle{margin:8px 0 0;font-size:12px}.item-package-grant-panel{margin-top:8px;padding:12px;border:1px solid #cfe0e4;border-radius:9px;background:#f8fbfb;display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:10px}.item-package-grant-panel label{display:grid;gap:5px;font-size:11px;font-weight:800;color:var(--muted)}.item-package-grant-panel select{min-height:38px;padding:7px;border:1px solid var(--line);border-radius:7px;background:#fff}.item-package-grant-panel em{grid-column:1/-1;color:var(--muted);font-size:12px}.item-package-grant-detected{grid-column:1/-1;margin:0;color:#16636d;font-size:12px}
.identity-review-panel{margin:18px 0;padding:16px;border:2px solid #e9b85c;border-radius:14px;background:#fffaf0}.identity-review-panel>header{display:flex;align-items:center;justify-content:space-between;gap:20px}.identity-review{margin-top:12px;padding:14px;border:1px solid #ead7ad;border-radius:11px;background:#fff}.identity-review>header{display:flex;justify-content:space-between;gap:15px;margin-bottom:8px}.identity-review>header strong,.identity-review>header small{display:block}.identity-review>header span{font-size:11px;font-weight:900;color:#9a6500;text-transform:uppercase}.identity-candidate{display:flex;gap:10px;align-items:flex-start;margin:6px 0;padding:9px;border-radius:8px;background:#f6f9f9}.identity-candidate input{width:16px;height:16px}.identity-candidate span,.identity-candidate strong,.identity-candidate small{display:block}.identity-candidate small{margin-top:3px;color:var(--muted)}.identity-candidate.create-new{background:#fff7e7}.identity-review>[data-resolve-identity]{margin-top:8px}
.identity-review .certification-card-control{margin:10px 0;padding:11px;border:1px solid #cddfe2;border-radius:9px;background:#f8fbfb}.identity-review .certification-analysis{display:grid;gap:3px;padding:9px;border-left:4px solid #c28b29;border-radius:7px;background:#fff8e9}.identity-review .certification-analysis.ok{border-left-color:#278365;background:#edf8f3}.identity-review .certification-analysis.danger{border-left-color:#bd574b;background:#fff0ee}.identity-review .certification-analysis strong,.identity-review .certification-analysis span,.identity-review .certification-analysis small{display:block}.identity-review .certification-analysis span{font-size:10px}.identity-review .certification-analysis small{color:var(--muted);font-size:9px}.identity-review [data-analyze-public-certification]{margin-top:8px}
.certification-name-decision{display:grid;gap:7px;margin:10px 0 0;padding:10px;border:1px solid #e4c98e;border-radius:8px;background:#fff}.certification-name-decision legend{padding:0 5px;font-size:11px;font-weight:900}.certification-name-decision label{display:flex;align-items:flex-start;gap:8px;padding:7px;border-radius:7px;background:#f7f9f9}.certification-name-decision input{flex:0 0 auto;width:16px;height:16px;margin-top:2px}.certification-name-decision span,.certification-name-decision strong,.certification-name-decision small{display:block}.certification-name-decision small{margin-top:2px;color:var(--muted)}
/* (0.50.078) La carte lue propose, le bureau décide : les propositions d'une lecture, sur la fiche du dossier. */
.card-proposals{display:grid;gap:7px;margin:10px 0 0;padding:10px;border:1px solid #e4c98e;border-radius:8px;background:#fff}.card-proposal{display:block;margin:0;padding:8px 9px;border-radius:7px;background:#f7f9f9}.card-proposal strong,.card-proposal small{display:block}.card-proposal small{margin-top:3px;color:var(--muted)}.card-proposal.card-unreadable{border-left:4px solid #bd574b;background:#fff0ee}.card-proposal.card-confirmed{border-left:4px solid #278365;background:#edf8f3}.card-proposal.card-check{display:flex;align-items:flex-start;gap:8px;cursor:pointer}.card-proposal.card-check input{flex:0 0 auto;width:16px;height:16px;margin-top:2px}.card-proposal.card-check input:disabled+span{opacity:.7}.card-name-choice{display:grid;gap:6px;padding:8px;border:1px solid #e4c98e}.card-name-choice legend{padding:0 5px;font-size:11px;font-weight:900}.card-name-choice label{display:flex;align-items:flex-start;gap:8px;padding:7px;border-radius:7px;background:#f7f9f9;cursor:pointer}.card-name-choice input[type=radio]{flex:0 0 auto;width:16px;height:16px;margin-top:2px}.card-name-choice span,.card-name-choice strong,.card-name-choice small{display:block}.card-name-choice small{margin-top:3px;color:var(--muted)}.card-name-choice select{display:block;width:100%;max-width:100%;margin-top:3px;font:inherit;font-size:12px}.card-proposals,.card-name-choice,.card-proposal{min-width:0;max-width:100%;box-sizing:border-box}.card-proposal.card-check>span,.card-name-choice label>span{flex:1 1 auto;min-width:0}
.hotel-ticket-payment{border:1px solid #d5b86b;border-radius:9px;background:#fff9e9}.hotel-ticket-payment legend{font-weight:900}.ticket-rules{margin:12px 0;padding:12px 15px;border-left:5px solid #d6a532;border-radius:8px;background:#fff8e7}.ticket-rules strong,.ticket-rules p{display:block;margin:0}.ticket-rules p{margin-top:4px}.ticket-toolbar{display:flex;gap:10px;flex-wrap:wrap;margin:14px 0}.ticket-toolbar label{display:grid;gap:4px;min-width:160px}.ticket-layout{display:grid;grid-template-columns:minmax(280px,.8fr) minmax(420px,1.4fr);gap:14px}.ticket-book,.hotel-ticket{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px;margin:7px 0;border:1px solid var(--line);border-radius:8px;background:#f8fbfb}.ticket-book{width:100%;color:inherit;text-align:left;cursor:pointer}.ticket-book:hover{border-color:#65a2ad;background:#f0f8f9}.ticket-book.selected{border:2px solid var(--teal);background:#eaf6f7;box-shadow:0 0 0 2px rgba(39,137,151,.12)}.ticket-book strong,.ticket-book small,.hotel-ticket strong,.hotel-ticket small{display:block}.ticket-book small,.hotel-ticket small{margin-top:3px;color:var(--muted)}.ticket-book>b,.hotel-ticket>span{font-size:10px;font-weight:900;white-space:nowrap}.hotel-ticket.used_pending_return{border-left:5px solid #d49a25;background:#fff8e8}.hotel-ticket.returned{border-left:5px solid #4f9679;background:#f1faf6}.hotel-ticket.lost,.hotel-ticket.cancelled{opacity:.62}.hotel-ticket>div:last-child{display:flex;gap:5px}.hotel-ticket button{padding:6px 8px;border:1px solid var(--line);border-radius:6px;background:#fff;font-size:9px;font-weight:800}@media(max-width:900px){.ticket-layout{grid-template-columns:1fr}}

.certification-autofill-status{display:block;margin-top:5px;padding:7px 9px;border-radius:7px;background:#f1f7f7;color:#47666d;line-height:1.4}.reservation-final-confirmation{margin-top:30px;padding:20px;border:1px solid #c8e0e3!important;border-radius:14px;background:#f7fbfb}.reservation-final-confirmation .confirmation-note{margin:0;color:var(--muted);font-size:12px;line-height:1.5}.reservation-final-confirmation .terms-actions{display:flex;gap:10px;flex-wrap:wrap;margin:4px 0}.reservation-final-confirmation .terms-actions .secondary-button{text-decoration:none}.reservation-final-confirmation .terms-acceptance span{font-weight:850;color:var(--ink)}

/* Échéance d'option : une date et un créneau de 30 minutes, plutôt qu'un datetime-local à taper. */
.option-expiry-field{display:flex;gap:8px}
.option-expiry-field input[type="date"]{flex:1 1 auto;min-width:0}
.option-expiry-field select{flex:0 0 106px}
.option-expiry-rule{display:block;margin-top:4px;font-size:11px;color:var(--muted);font-weight:400} /* (échéance des options) la règle qui a décidé */
@media(max-width:600px){.option-expiry-field{flex-direction:column}.option-expiry-field select{flex:1 1 auto}}
/* (0.50.057) le journal des règlements : un remboursement en négatif, un solde négatif signalé, les gestes en fin de ligne */
.payment-history li.payment-refund strong{color:#a13d2d}.payment-history li.payment-pending-refund{background:#fff6e5}.payment-history .payment-warning{color:#8a5a00} /* (0.50.062) remboursement en attente du prestataire */.payment-balance-negative{color:#a13d2d}.payment-history li{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px}.payment-history li .secondary-button{min-height:32px;padding:4px 10px;font-size:12px}
#payment-form-dialog .form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}#payment-form-dialog .span-2{grid-column:1/-1}#payment-form-dialog fieldset{border:1px solid var(--line);border-radius:10px;padding:10px 12px}
/* (0.50.076) Le mode « Croisière » de l'éditeur : la carte, la proposition de tarif. */
.reservation-cruise>header p{margin:6px 0 0;color:var(--muted);font-size:12px;max-width:70ch}
.reservation-cruise .form-grid{margin:16px 22px 0}
.cruise-proposal{margin:14px 22px 20px;padding:12px 14px;border:1px solid #cfe6ea;border-radius:10px;background:#f1fafa}
.cruise-proposal strong{display:block;color:var(--sea);font-size:14px}
.cruise-proposal strong.cruise-proposal-none{color:#984d43}
.cruise-proposal small{display:block;margin-top:4px;color:var(--muted);font-size:12px}
.event-mode-switch{flex-wrap:wrap}
.cruise-fields .span-3{grid-column:1/-1}
/* (0.50.077) Mêmes personnes sur toutes les sorties : sur la page de validation, les sorties en tête (sans personnes) et un seul bloc
   de personnes ; dans l'éditeur, les sorties 2 et suivantes lisent la sortie 1 (places et personnes) au lieu de blocs à part. */
.validation-outing-only{padding:12px 17px}
.validation-outing-only p{margin:8px 0 0}
.validation-people-shared{border-color:#9fc9d2;background:#f4fafb}
.validation-people-shared header span{background:#dff0f3;white-space:normal}
.reserved-role-shared{margin:8px 0 0;padding:12px 14px;border:1px dashed #9fc9d2;border-radius:10px;background:#f4fafb;color:#254f58}
.reserved-role-shared strong{display:block}
.reserved-role-shared small{display:block;margin-top:4px;color:#607983}
.participant-role-row.is-shared{grid-template-columns:1fr auto}.participant-role-row.is-shared span{color:#607983;font-size:13px}

/* (0.50.079) Le retrait d'une sortie d'un dossier réglé : trois choix, aucun coché ; la prestation en compte sur la fiche client. */
.event-removal-dialog{width:min(560px,calc(100vw - 32px));padding:0;border:0;border-radius:14px}
.event-removal-dialog form{display:grid;gap:12px;padding:20px 22px}
.event-removal-dialog header{display:flex;justify-content:space-between;align-items:flex-start;gap:12px}
.event-removal-dialog h2{margin:2px 0 0;font-size:20px;color:var(--navy)}
.event-removal-dialog .dialog-help{margin:0;color:var(--muted);font-size:14px}
.removal-choices{display:grid;gap:8px;margin:0;padding:0;border:0;min-width:0}
.removal-choices legend{font-weight:700;margin-bottom:6px}
.removal-choice{display:grid;grid-template-columns:22px minmax(0,1fr);gap:10px;align-items:start;padding:10px 12px;border:1px solid var(--line);border-radius:10px;cursor:pointer}
.removal-choice:has(input:checked){border-color:var(--teal,#1d7f86);background:#eef7f7}
.removal-choice input{margin-top:3px}
.removal-choice strong{display:block}.removal-choice small{display:block;color:var(--muted);font-size:13px}
.removal-motif{display:grid;gap:4px;margin:0 0 0 32px;font-size:13px}.removal-motif[hidden]{display:none}
.removal-motif input{width:100%;min-width:0}
.event-removal-dialog footer{display:flex;justify-content:flex-end;gap:10px;flex-wrap:wrap}
/* (0.50.107) « Annuler le dossier » : ce qui sera retiré, l'argent encaissé et la cote, les deux issues en toutes lettres, le motif. */
.cancel-dossier-dialog{width:min(600px,calc(100vw - 32px));padding:0;border:0;border-radius:14px}
.cancel-dossier-dialog form{display:grid;gap:14px;padding:20px 22px;max-height:calc(100vh - 48px);overflow:auto}
.cancel-dossier-dialog header{display:flex;justify-content:space-between;align-items:flex-start;gap:12px}
.cancel-dossier-dialog h2{margin:2px 0 0;font-size:20px;color:var(--navy)}
.cancel-dossier-dialog [data-cancel-body]{display:grid;gap:12px}
.cancel-section h3{margin:0 0 6px;font-size:14px;color:var(--navy)}
.cancel-section ul{margin:0;padding-left:18px;display:grid;gap:2px}
.cancel-section p{margin:6px 0 0;font-size:14px}
.cancel-section .muted-copy{color:var(--muted);font-size:13px}
.cancel-money{padding:12px 14px;border:1px solid var(--line);border-radius:10px;background:#f7f9fa}
.cancel-choice{display:grid;grid-template-columns:22px minmax(0,1fr);gap:10px;align-items:start;margin-top:8px;padding:10px 12px;border:1px solid var(--line);border-radius:10px;background:#fff;cursor:pointer;font-weight:600}
.cancel-choice:has(input:checked){border-color:var(--teal,#1d7f86);background:#eef7f7}
.cancel-choice input{margin-top:3px}
.cancel-blockers{padding:10px 14px;border-left:3px solid #b3261e;border-radius:8px;background:#fdecea;color:#7a1c16}
.cancel-notes{padding:8px 12px;border-left:3px solid #c77700;border-radius:8px;background:#fff6e5;color:#6b4200;font-size:13px}
.cancel-reason{display:grid;gap:4px;font-weight:600;font-size:14px}.cancel-reason[hidden]{display:none}
.cancel-reason textarea{width:100%;min-width:0;box-sizing:border-box;font:inherit;font-weight:400}
.cancel-dossier-dialog footer{display:flex;justify-content:flex-end;gap:10px;flex-wrap:wrap}
.client-service-row{grid-template-columns:minmax(0,1fr) auto}.client-service-row a.secondary-button{text-decoration:none;white-space:nowrap}.client-service-row small a{color:var(--teal,#1d7f86)}
.client-service-row.expired strong{color:#8a8a8a}
.client-old-credits{margin-top:10px}.client-old-credits summary{cursor:pointer;color:var(--muted);font-size:12px}
/* (0.50.080) Paramètres › Caisse : la reprise des avoirs — la liste des articles ne pousse jamais la page, au téléphone une ligne par activité. */
.credit-takeover-form table{width:100%;table-layout:fixed}.credit-takeover-form select{width:100%;min-width:0;max-width:100%}
.credit-takeover-form th:nth-child(2),.credit-takeover-form td:nth-child(2){width:110px;text-align:right}
@media(max-width:767px){.credit-takeover-form table,.credit-takeover-form tbody,.credit-takeover-form tr,.credit-takeover-form td{display:block;width:100%}.credit-takeover-form thead{display:none}.credit-takeover-form tr{padding:8px 0;border-top:1px solid var(--line)}.credit-takeover-form td:nth-child(2){width:auto;text-align:left}.credit-takeover-form td:nth-child(2)::before{content:"Avoirs : "}}
/* (0.50.101) Le ménage du catalogue (Paramètres › Caisse) : les listes de l’aperçu, bornées en hauteur. */
.catalogue-cleanup h3{margin:14px 0 6px;font-size:1rem}.catalogue-cleanup-list{max-height:240px;overflow:auto;margin:0 0 8px;padding-left:18px;font-size:.9rem}.catalogue-cleanup-list .mono{font-family:ui-monospace,Consolas,monospace}

/* (0.50.085) sous le net d'une ligne : le tarif du niveau (« Tarif résident −30 % ») ou « Non remisable » */
.item-line strong .line-tariff{display:block;font-weight:500;font-size:11px;color:#1f6f5c;white-space:nowrap}.item-line strong .line-tariff.is-nodiscount{color:#8a3d1f}.item-line input:disabled,.item-line select:disabled{background:#f1f3f4;color:#8a969c}
.item-line strong .line-tariff .help-icon{border:1px solid #a9bcc0;color:var(--muted);background:#fff;height:18px;width:18px;min-height:18px;border-radius:50%;font:600 12px/1 system-ui,sans-serif}
/* (0.50.087) Les articles proposés selon le mode : l'avertissement d'un SKU sans article, la ligne gardée au changement de mode — chacun sur sa ligne. */
.proposed-items .proposed-warning,.proposed-items .proposed-kept{flex-basis:100%;margin:2px 0}.proposed-items .proposed-warning strong{color:#984d43;font-size:13px}.proposed-items .proposed-kept small{color:#516a70;font-weight:500}

.cruise-partner-notice{margin:6px 0 0;padding:9px 12px;border-left:3px solid #d65f50;border-radius:8px;color:#8b3a2e;background:#fff0ed;font-size:13px} /* (0.50.088) une compagnie de croisière hors mode Croisière */
.places-over-sold{margin:10px 0;padding:10px 14px;border-left:3px solid #d99a2b;border-radius:8px;background:#fff6e5;color:#6f4a06;font-size:13px}.places-over-sold ul{margin:6px 0;padding-left:18px}.places-over-sold .check-line{font-weight:700} /* (0.50.088) places contre personnes vendues */
.receipt-delivery{display:flex;flex-wrap:wrap;gap:6px 16px;align-items:center}.receipt-delivery legend{font-weight:700}.receipt-delivery .form-hint{flex-basis:100%} /* (0.50.088) la remise du reçu */
/* (0.50.088) Le contrôle anti-doublon : rattacher par recherche, refuser la demande. */
.identity-search{margin:10px 0;display:grid;gap:6px}.identity-search label{display:grid;gap:4px;font-size:12px;font-weight:700;color:#35545b}
.identity-search input{width:100%;box-sizing:border-box;padding:9px 11px;border:1px solid #cfdfe2;border-radius:9px;font:inherit;font-weight:400}
.identity-search-results{display:grid;gap:4px;padding:6px;border:1px solid #d7e5e7;border-radius:10px;background:#fff}
.identity-search-results .participant-result{display:flex;width:100%;padding:8px 10px;border:0;border-radius:8px;background:#f4f9f9;text-align:left;cursor:pointer}
.identity-search-results .participant-result:hover{background:#e3f2f2}.identity-search-results strong,.identity-search-results small{display:block}.identity-search-results small{color:#5f777d;font-size:11px}
.identity-candidate-searched small{color:#1f6f5c}
.identity-reject{margin-top:10px;padding:8px 12px;border:1px dashed #e0b4ad;border-radius:10px;background:#fffaf9}
.identity-reject summary{cursor:pointer;color:#984d43;font-weight:700;font-size:13px}
.identity-reject label{display:grid;gap:4px;margin:8px 0;font-size:12px;font-weight:700;color:#6b3b34}
.identity-reject input{width:100%;box-sizing:border-box;padding:9px 11px;border:1px solid #e0b4ad;border-radius:9px;font:inherit;font-weight:400}
.card-existing-client-note{margin:0 0 6px;font-size:12px;color:#5f777d}
.public-participant-edit{margin:6px 0 4px}.public-participant-edit summary{cursor:pointer;font-weight:700;color:#1d6d73}
.participant-rejected small{color:#984d43}.certification-kept{display:block;margin:4px 0;color:#1f6f5c}
/* (0.50.091) L'heure de rendez-vous d'une étape ; l'essentiel de la politique d'annulation au-dessus de la case d'acceptation (fr, en) */.validation-event p.validation-meeting-time{margin:-4px 0 12px;color:var(--ink);font-size:14px}/* (0.50.093) replié derrière ses deux titres (FR · EN), un clic déroule les deux colonnes ensemble */.validation-policy{border:1px solid #d8e6e8;border-radius:12px;background:#fff}.policy-fold>summary{display:flex;align-items:flex-start;gap:10px;padding:12px 16px;cursor:pointer;list-style:none;font-weight:600;font-size:14px;line-height:1.35;color:var(--navy)}.policy-fold>summary::-webkit-details-marker{display:none}.policy-fold>summary:focus-visible{outline:2px solid var(--navy);outline-offset:2px;border-radius:10px}.policy-fold-chevron{flex:none;width:8px;height:8px;margin-top:5px;border-right:2px solid currentColor;border-bottom:2px solid currentColor;transform:rotate(-45deg);transition:transform .15s ease}.policy-fold[open] .policy-fold-chevron{transform:rotate(45deg)}.policy-fold-sep{color:var(--muted,#6b7c80);font-weight:400}.policy-fold-columns{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;padding:0 16px 14px}.policy-fold-column ul{margin:0;padding-left:18px;display:grid;gap:4px;font-size:13px;line-height:1.45;color:var(--ink)}@media(max-width:600px){.policy-fold-columns{grid-template-columns:1fr}}
/* (0.50.091) Le motif de la remise globale sous son libellé ; « Actualiser les prix » ; le dialogue du motif d'un geste */.cart-global-label{display:block;margin-top:2px;color:var(--muted);font-size:11px;font-weight:500}.cart-global-label:empty{display:none}.refresh-prices-wrap{display:inline-flex;align-items:center;gap:6px;margin-right:auto}.reason-dialog{width:min(480px,calc(100vw - 32px))}.reason-dialog-body{display:grid;gap:12px;padding:16px 24px}.reason-dialog-body label{display:grid;gap:6px;font-size:13px;color:var(--muted)}.reason-dialog-body textarea{width:100%;padding:8px 10px;border:1px solid #ceddde;border-radius:8px;background:#fbfdfd;font:inherit;resize:vertical}.reason-intro{margin:0;color:var(--ink);font-size:13px;line-height:1.5}.reason-intro:empty{display:none}.reason-choices{display:grid;gap:8px}.reason-choices[hidden]{display:none}.reason-dialog .form-error{margin:0}
/* (0.50.102, point 61) « Reporter sa plongée » par personne sur la fiche du dossier, et grisé sur la fiche de sortie pour un dossier non réglé. */
.record-event-people li{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:6px 12px;padding:3px 0}
.record-event-people .compact-button{min-height:32px;padding:4px 10px;font-size:12px}
.participant-actions button.is-unavailable,.record-event-people button:disabled{opacity:.5;cursor:not-allowed}
/* (0.50.103, § 10 ter point 1) Le bloc « J’ai vérifié » dans le pied de l’éditeur, à gauche de « Annuler », sur une ligne. */
.reservation-editor-actions{align-items:center}.reservation-editor-actions .places-over-sold{display:flex;align-items:center;gap:6px 14px;flex:1 1 auto;min-width:0;margin:0 auto 0 0;padding:8px 12px}
.places-over-sold-text{min-width:0;overflow-wrap:anywhere}.reservation-editor-actions .places-over-sold .check-line{flex:none;white-space:nowrap;margin:0}
@media (min-width:761px){.reservation-editor-actions > button,.reservation-editor-actions > a{flex:none;white-space:nowrap}}
@media (max-width:760px){.reservation-editor-actions{flex-wrap:wrap}.reservation-editor-actions .places-over-sold{flex-basis:100%;flex-wrap:wrap}}
/* (0.50.104, point 72) les places sans identité dans « Gérer les personnes » */
.record-anonymous-list{margin:10px 0;padding:8px 10px;border:1px dashed #cfdde1;border-radius:8px}
.record-anonymous-list .dialog-help{margin:0 0 6px}
.record-anonymous-row{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px;padding:4px 0}
.record-anonymous-row small{color:var(--muted)}
/* (0.50.114) la page de proposition n'a plus qu'une langue : sa colonne prend toute la largeur */
.policy-fold-columns>.policy-fold-column:only-child{grid-column:1/-1}
/* (0.50.115) La page dit quoi faire et quand : le bloc « À faire avant le » (la date en gros, la phrase dessous) ; expirée, un bandeau rouge,
   gras, en gros ; annulée ou devis expiré, gris foncé ; confirmée, vert ; « Bon à savoir » en bas */
.validation-deadline{margin:16px 0 8px;padding:16px 18px;border:2px solid #2f7f86;border-radius:14px;background:#f0f8f8}
.validation-deadline-title{margin:0;color:var(--muted);font-size:12px;font-weight:800;text-transform:uppercase;letter-spacing:.06em}
.validation-deadline-date{margin:4px 0 8px;font:700 30px/1.2 Georgia,serif;color:var(--navy)}
.validation-deadline-text{margin:0;font-size:14px;line-height:1.5;color:var(--ink)}
.validation-banner{margin:16px 0 8px;padding:16px 18px;border-radius:14px;font-weight:800;font-size:21px;line-height:1.35}
.validation-banner.is-expired{background:#fbe4e1;border:2px solid #c0392b;color:#a32616}
.validation-banner.is-closed{background:#e8ecee;border:2px solid #44545a;color:#25343a}
.validation-banner.is-confirmed{background:#e2f3e9;border:2px solid #1d7a4d;color:#135438}
.validation-good-to-know{margin-top:20px;padding:14px 16px;border:1px solid var(--line);border-radius:14px;background:#fff}
.validation-good-to-know h2{margin:0 0 6px;font:600 17px Georgia,serif;color:var(--navy)}
.validation-good-to-know ul{margin:0;padding-left:18px;font-size:13px;line-height:1.5;color:var(--ink)}
@media(max-width:600px){.validation-deadline-date{font-size:22px}.validation-banner{font-size:18px}}

/* (tickets numériques T.1) Le tableau des carnets : papier et numérique côte à côte, la vente et son état, les ventes sans carnet, le ticket
   attribué ou consommé ; le code sur la fiche de sortie. */
.hotel-tickets-page .heading-actions{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.ticket-book-row{margin:7px 0}.ticket-book-row .ticket-book{margin:0}.ticket-book.exhausted{opacity:.7}
.ticket-book-sale{display:flex;gap:8px;align-items:center;flex-wrap:wrap;padding:4px 2px 0}
.ticket-sale-tag{display:inline-block;padding:2px 8px;border-radius:999px;font-size:10px;font-weight:800;text-decoration:none;border:1px solid var(--line);background:#fff;color:var(--muted)}
.ticket-sale-tag.settled{border-color:#4f9679;color:#2f6f55;background:#f1faf6}.ticket-sale-tag.cancelled{color:#8a3b3b;border-color:#d9b3b3;background:#fbf2f2}.ticket-sale-tag.due{border-color:#d49a25;color:#8a5d0b;background:#fff8e8}
.ticket-book-sale .link-button{padding:0;border:0;background:none;color:var(--teal);font-size:10px;font-weight:800;cursor:pointer;text-decoration:underline}
.ticket-form{font-style:normal;font-size:10px;font-weight:900;padding:1px 6px;border-radius:5px;background:#eef3f4;color:#47666d}.ticket-form.digital{background:#e6f1fb;color:#1f5f93}
.ticket-sales-panel{margin-bottom:14px}.ticket-sale{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px;margin:7px 0;border:1px solid var(--line);border-left:5px solid #d49a25;border-radius:8px;background:#fff8e8}
.ticket-sale.settled{border-left-color:#4f9679;background:#f1faf6}.ticket-sale strong,.ticket-sale small{display:block}.ticket-sale small{margin-top:3px;color:var(--muted)}.ticket-sale>span{font-size:10px;font-weight:900;white-space:nowrap}
.ticket-sale button{padding:6px 8px;border:1px solid var(--line);border-radius:6px;background:#fff;font-size:10px;font-weight:800}
.hotel-ticket code{font-size:12px;letter-spacing:1px}.hotel-ticket.assigned{border-left:5px solid #2f7fbf;background:#f2f8fd}.hotel-ticket.used{border-left:5px solid #4f9679;background:#f1faf6}
.ticket-form-choice{display:flex;gap:16px;flex-wrap:wrap;border:1px solid var(--line);border-radius:8px;padding:8px 12px}.ticket-form-choice label{display:flex!important;flex-direction:row;gap:8px;align-items:center;font-weight:700}.ticket-form-choice input[type=radio]{width:auto;height:auto;min-height:0;margin:0;padding:0}
#ticket-book-form>.form-hint,#ticket-sale-form>.form-hint,#ticket-assign-form>.form-hint{margin:10px 24px}
.ticket-code-result{margin:0}.ticket-code-result.is-ok{color:#2f6f55;font-weight:700}.ticket-code-result.is-error{color:#a33;font-weight:700}
.partner-sell-book{justify-self:start;text-decoration:none}
.partner-billing-client{display:block!important}.partner-billing-client-actions{display:flex;gap:8px;flex-wrap:nowrap;align-items:center;width:100%}.partner-billing-client-actions .secondary-button{white-space:nowrap}.partner-billing-client-actions input{flex:1;min-width:200px}.partner-billing-client-current{margin:0 0 6px;font-weight:700}
.client-search-results{display:flex;flex-direction:column;gap:4px;margin-top:4px}.client-search-results button{text-align:left;padding:6px 8px;border:1px solid var(--line);border-radius:6px;background:#fff;font-size:12px}.ticket-sale-billing input[type=search]{width:100%}
@media(max-width:600px){.ticket-sale{flex-direction:column;align-items:flex-start}.hotel-tickets-page .heading-actions{width:100%}.hotel-tickets-page .heading-actions button{flex:1}}
/* (tickets numériques T.2, § 3.2) L'accès tickets de la fiche partenaire : les comptes RH et CE, leurs gestes, l'invitation. */
.partner-ticket-accounts{display:block!important}.partner-ticket-accounts[hidden]{display:none!important}
.partner-account-list{margin:0 0 10px;padding:0;list-style:none;display:grid;gap:8px}
.partner-account-list li{display:flex;gap:10px;align-items:center;justify-content:space-between;flex-wrap:wrap;padding:8px 10px;border:1px solid #dfe5e8;border-radius:8px}
.partner-account-list li small{display:block;color:#5d6f77}.partner-account-list li.is-ferme{opacity:.6}
.partner-account-state{font-size:12px;font-weight:700;padding:2px 8px;border-radius:99px;background:#eef2f3}
.partner-account-list li.is-actif .partner-account-state{background:#d9f0e4;color:#1c5b52}.partner-account-list li.is-suspendu .partner-account-state{background:#fff1dc;color:#8a5a12}
.partner-account-actions{display:flex;gap:6px;flex-wrap:wrap}
.partner-ticket-accounts-invite{display:flex;gap:8px;flex-wrap:wrap;align-items:center}.partner-ticket-accounts-invite input{flex:1;min-width:160px}
/* (tickets numériques T.2, § 3.3) L'activation d'un compte partenaire : le QR d'enrôlement, le secret à la main, les codes de secours. */
.partner-qr{margin:12px 0;display:grid;justify-items:center;gap:8px;text-align:center;font-size:12px;color:#5d6f77}
.partner-qr svg{width:200px;height:200px;max-width:100%}
.partner-secret{display:inline-block;margin-top:4px;padding:4px 8px;border-radius:6px;background:#f2f5f6;font-size:13px;letter-spacing:.06em;color:#16232a;overflow-wrap:anywhere}
.partner-recovery{margin:12px 0;padding:0 0 0 22px;columns:2;column-gap:24px;font-size:15px;line-height:1.9}
.partner-recovery code{letter-spacing:.08em}
/* (T.3, § 1.2) Le relevé d'un hôtel (Caisse › Tickets hôtels › Relevé). */
.ticket-statement-body{max-height:60vh;overflow:auto;padding:0 24px}.ticket-statement-table{width:100%;border-collapse:collapse;font-size:13px;margin:4px 0 10px}.ticket-statement-table th,.ticket-statement-table td{padding:5px 8px;border-bottom:1px solid #e4eaec;text-align:left}
/* (0.60.024) CHERCHER DANS LES RÉSERVATIONS : le texte, l'État, le Partenaire et le Type sur une barre qui se replie ; le compte des
   dossiers à droite ; au téléphone, le champ en pleine largeur au-dessus des trois listes. L'étiquette du partenaire et le mot du type sur la ligne. */
.reservation-filter-toolbar{display:flex;flex-wrap:wrap;align-items:end;gap:12px 14px}.reservation-filter-toolbar>label{display:grid;gap:5px;color:var(--muted);font-size:10px;font-weight:800}.reservation-filter-toolbar select{min-width:170px;height:42px;padding:0 12px;border:1px solid var(--line);border-radius:9px;background:#fff}.reservation-filter-toolbar>.reservation-search{flex:1 1 300px}
.reservation-search-field{position:relative;display:block}.reservation-search-field input{box-sizing:border-box;width:100%;height:42px;padding:0 40px 0 12px;border:1px solid var(--line);border-radius:9px;background:#fff;color:var(--navy);font-size:14px;font-weight:600}.reservation-search-field input:focus{border-color:var(--sea);outline:2px solid rgba(24,52,60,.08)}.reservation-search-field input::-webkit-search-cancel-button{-webkit-appearance:none;display:none}
.reservation-filter-toolbar .reservation-search-field button{min-height:0;min-width:0;position:absolute;right:6px;top:50%;width:30px;height:30px;margin-top:-15px;padding:0;border:0;border-radius:50%;background:#eef4f4;color:var(--navy);font-size:18px;line-height:30px;cursor:pointer}.reservation-search-field button:hover,.reservation-search-field button:focus-visible{background:#dcebeb;outline:none}
.reservation-filter-toolbar>.secondary-button{height:42px;font-size:12px}.reservation-count{margin-left:auto;padding-bottom:12px;color:var(--navy);font-size:12px;font-weight:800;white-space:nowrap}
.reservation-search-beyond{margin:12px 30px 0;color:var(--muted);font-size:12px}.reservation-search-beyond button{padding:0;border:0;background:none;color:var(--sea);font:inherit;font-weight:800;text-decoration:underline;cursor:pointer}
.reservation-row small.reservation-tag{display:inline-block;margin-left:6px;padding:1px 8px;border-radius:99px;background:#eef4f4;color:var(--navy);font-size:10px;font-weight:800;vertical-align:1px}.reservation-row small.reservation-tag.is-private{background:#fff1dc;color:#8a5a12}.reservation-row small.reservation-tag.is-cruise{background:#e3f0fb;color:#1f5a8a}
#reservation-partner-filter option.is-inactive{color:#9aa8ad}
@media(max-width:760px){.reservation-filter-toolbar>.reservation-search{flex-basis:100%}.reservation-filter-toolbar>label:not(.reservation-search){flex:1 1 140px;min-width:0}.reservation-filter-toolbar select{min-width:0;width:100%}.reservation-filter-toolbar>.secondary-button{flex:1 1 140px}.reservation-count{margin-left:0;padding-bottom:0;align-self:center}.reservation-search-beyond{margin:12px 16px 0}}
/* (Joker, lot J1) L'annulation tardive : la boîte partagée (la règle en une phrase, les gestes permis, le défaut coché), la pastille du Joker,
   les annulations tardives de la fiche de sortie (hors de la jauge, avec leur mention). */
.late-cancellation-dialog{width:min(560px,calc(100vw - 32px));padding:0;border:0;border-radius:14px}
.late-cancellation-dialog form{display:grid;gap:12px;padding:20px 22px;max-height:calc(100vh - 48px);overflow:auto}
.late-cancellation-dialog header{display:flex;justify-content:space-between;align-items:flex-start;gap:12px}
.late-cancellation-dialog h2{margin:2px 0 0;font-size:20px;color:var(--navy)}
.late-cancellation-dialog .dialog-help{margin:0;color:var(--ink);font-size:14px}
.late-cancellation-dialog footer{display:flex;justify-content:flex-end;gap:10px;flex-wrap:wrap;padding:0;border:0}
.late-case{display:grid;gap:8px;margin:0;padding:0;border:0;min-width:0}
.late-case+.late-case{padding-top:12px;border-top:1px solid var(--line)}
.late-case legend{font-weight:800;color:var(--navy);margin-bottom:6px}
.late-default{display:inline!important;margin-left:6px;color:var(--sea)!important;font-size:11px!important;font-weight:700;text-transform:uppercase}
.late-joker-note{margin:0;display:flex;align-items:center;gap:8px;flex-wrap:wrap;color:var(--muted);font-size:13px}
.joker-pill,.status-pill.joker-pill,.participant-badges i.joker-pill{color:#5b4683;background:#efe9f7;border-radius:99px;padding:3px 8px;font-style:normal;font-weight:800}
.joker-state{display:inline-flex;align-items:center;gap:6px;margin-left:8px}.joker-state[hidden]{display:none}
.late-cancellations-roster ul{list-style:none;margin:0;padding:0;display:grid;gap:6px}
.late-cancellations-roster li{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap;padding:8px 10px;border:1px dashed var(--line);border-radius:10px;background:#fff}
.late-cancellations-roster li>span{min-width:0;overflow-wrap:anywhere}
.late-mention{color:var(--coral);font-size:13px;font-weight:700}
.late-actions{display:inline-flex;gap:8px;align-items:center;flex-wrap:wrap}
