/* Parcours client (demande du 13/10/2026) : accueil, logements, demande en écrans successifs, liste. */
.visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.property-list,.document-list{margin:10px 0 0;padding:0;list-style:none;display:grid;gap:10px}
.pay-detail .property-list li,.pay-detail .document-list li{display:flex;align-items:center;gap:10px;border-top:0;padding-top:0}
.property-card{display:grid;gap:3px;width:100%;padding:14px 16px;border:1px solid var(--line);border-left:6px solid var(--blue);border-radius:14px;background:var(--surface);color:var(--ink);text-decoration:none}
.property-card strong{font-size:17px}.property-card span{font-size:14px;color:var(--structure)}.property-card small{font-size:13px;color:var(--muted)}
.document-list a{display:flex;align-items:center;gap:10px;flex:1;min-height:56px;color:var(--ink);text-decoration:none}
.document-list img{width:56px;height:56px;object-fit:cover;border-radius:10px;border:1px solid var(--line)}
.document-kind{display:grid;place-items:center;width:56px;height:56px;border-radius:10px;background:var(--danger-soft);color:var(--danger);font-weight:800;font-size:13px}
.document-name{flex:1;font-weight:600;word-break:break-word}.document-list small{color:var(--muted);font-size:12px}
.document-delete{min-height:44px;border:1px solid var(--line);border-radius:10px;padding:0 12px;background:#fff;color:var(--danger);font-weight:650}
.document-upload{display:grid;gap:10px;margin-top:14px}.document-upload .field{display:grid;gap:6px;font-size:14px;font-weight:650}
.document-upload input[type=file]{min-height:44px;font-size:15px}
.wizard-progress{width:100%;height:10px;accent-color:#16a34a}
.space-gauge{width:100%;height:12px;margin:8px 0 4px;accent-color:#2457c5}.space-gauge.space-full{accent-color:#c2410c}
.request-wizard{display:grid;gap:14px}.request-wizard .wizard-step[hidden]{display:none}
.request-wizard:not(.wizard-on) .wizard-actions{display:none}
.wizard-actions{display:grid;grid-template-columns:1fr 2fr;gap:10px}.wizard-actions [hidden]{display:none}
.wizard-actions .mission-home:only-child,.wizard-actions #wizardNext:only-child{grid-column:1/-1}
.wizard-error{margin:0;padding:12px;border-radius:12px;background:var(--danger-soft);color:var(--danger);font-weight:650}
.choice-list{display:grid;gap:10px}
.choice-card{display:flex;align-items:center;gap:12px;min-height:56px;padding:12px 14px;border:1px solid var(--line);border-radius:14px;background:var(--surface);cursor:pointer}
.choice-card input{width:22px;height:22px;accent-color:var(--blue)}.choice-card span{display:grid;gap:2px}.choice-card small{color:var(--muted)}
.choice-card:has(input:checked){border-color:var(--blue);background:var(--blue-soft)}
.request-wizard .form-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.request-wizard .field{display:grid;gap:6px}.request-wizard .field label{font-size:13px;font-weight:650;color:var(--muted)}
.request-wizard input[type=date],.request-wizard input[type=time],.request-wizard textarea{min-height:46px;border:1px solid var(--line);border-radius:10px;padding:8px 10px;font:inherit;font-size:16px;color:var(--ink);background:#fff;width:100%}
.task-group{border:0;margin:0 0 12px;padding:0;display:grid;gap:6px}.task-group[hidden]{display:none}
.task-choice{display:flex;align-items:center;gap:10px;min-height:48px;padding:8px 12px;border:1px solid var(--line);border-radius:12px;background:var(--surface);font-size:15px}
.task-choice input{width:22px;height:22px;accent-color:#16a34a}
.request-summary{display:grid;grid-template-columns:auto 1fr;gap:8px 14px;margin:0}.request-summary dt{font-weight:650;color:var(--muted);font-size:13px}
.request-summary dd{margin:0}.request-summary dd::first-letter{text-transform:uppercase}.request-summary ul{margin:0;padding-left:18px}
.list-group{display:grid;gap:10px;margin-bottom:18px}.list-group h2{margin:4px 0;font-size:17px}
.list-activity{padding:14px;border:1px solid var(--line);border-left:6px solid var(--status-planned);border-radius:14px;background:#fff}
.list-activity.state-pending{border-left-color:var(--status-awaiting)}.list-activity.state-paid{border-left-color:var(--status-completed)}
.list-activity.state-invoiced_unpaid{border-left-color:var(--status-confirmed)}.list-activity.state-cancelled{border-left-color:var(--status-cancelled)}
.list-activity h3{margin:0 0 4px;font-size:16px}.list-when{margin:0;font-weight:600;color:var(--structure)}.list-when::first-letter{text-transform:uppercase}
.list-meta{margin:4px 0 0;color:var(--muted);font-size:13px}.list-cancel{margin-top:10px}
.list-cancel button{min-height:44px;border:1px solid var(--line);border-radius:10px;padding:0 12px;background:#fff;color:var(--danger);font-weight:650}
.report-remarks{margin:0;white-space:pre-wrap;line-height:1.5}
@media(max-width:420px){.request-wizard .form-grid{grid-template-columns:1fr}}
.task-group .task-choice{margin:0}
.pay-detail .request-summary li{display:list-item;border-top:0;padding-top:0}
.pay-detail .property-list li.property-item{display:grid;gap:10px;padding:12px;border:1px solid var(--line);border-radius:16px;background:var(--background)}
.property-item .property-card{border:0;border-left:6px solid var(--blue);border-radius:12px}.property-link{color:var(--blue)!important;font-weight:650}
.property-request{min-height:48px;font-size:16px}
.pay-detail .property-list li.property-item>*{width:100%;box-sizing:border-box}
.wizard-actions #wizardBack[hidden]+#wizardNext{grid-column:1/-1}
.pay-detail .property-list li.property-item{grid-template-columns:minmax(0,1fr);justify-content:stretch}
.summary-edit{margin-top:4px;min-height:36px;padding:0 10px;border:1px solid var(--blue);border-radius:9px;background:#fff;color:var(--blue);font-weight:650;font-size:13px}
.request-summary dt{display:block}.request-summary dd{padding-bottom:10px;border-bottom:1px solid var(--line)}
.task-heading{margin:4px 0 2px;font-size:15px}
.task-category{border:1px solid var(--line);border-radius:12px;background:var(--surface);padding:0 12px}
.task-category summary{display:flex;justify-content:space-between;align-items:center;min-height:50px;font-weight:650;cursor:pointer}
.task-category summary small{color:var(--muted);font-weight:500}.task-category[open]{padding-bottom:10px}
.task-category .task-choice{margin:0 0 6px}
/* Avis en étoiles (demande du 13/10/2026, 18 h 56) */
.review-question{margin:0 0 10px;font-size:17px;font-weight:650}
.star-rating{border:0;margin:0;padding:0;display:flex;justify-content:center;gap:4px}
.star{position:relative;display:grid;place-items:center;width:56px;height:56px;cursor:pointer}
.star input{position:absolute;opacity:0;width:1px;height:1px}
.star span[aria-hidden]{font-size:46px;line-height:1;color:#d1d5db;transition:transform .12s,color .12s}
.star.lit span[aria-hidden]{color:#f59e0b}
.star input:focus-visible+span{outline:3px solid #16a34a;outline-offset:2px;border-radius:8px}
.star:active span[aria-hidden]{transform:scale(1.2)}
.star-caption{margin:4px 0 12px;text-align:center;font-weight:650;color:var(--muted)}
.review-why[hidden]{display:none}
.not-concerned{margin-bottom:12px}
.summary-stars,.report-stars{color:#f59e0b;font-size:20px;letter-spacing:2px}
.review-invite{background:#fffbeb;border:1px solid #fde68a}
.review-invite .invite-stars{display:block;text-align:center;font-size:40px;letter-spacing:6px;color:#f59e0b;text-decoration:none;margin:6px 0 10px}
.review-criteria{list-style:none;margin:0;padding:0;display:grid;gap:10px}
.review-criteria li{display:grid;gap:2px}.review-criteria small{color:var(--muted)}
/* Avis : signification des notes, commentaire et photo facultatifs, vérification par l'administrateur (13/10/2026, 21 h 44) */
.star-legend{list-style:none;margin:0 0 12px;padding:0;display:grid;gap:4px;font-size:14px;color:var(--muted)}
.pay-detail .star-legend li{display:flex;justify-content:flex-start;gap:10px;align-items:baseline;padding:4px 8px;border:0;border-radius:8px;text-align:left}
.pay-detail .star-legend li span{flex:none;color:#f59e0b;min-width:5.5em;letter-spacing:1px}
.pay-detail .star-legend li.selected{background:#fffbeb;color:var(--ink);font-weight:650}
.review-why{display:grid;gap:12px}.review-why .field{display:grid;gap:6px}
.review-why .field-label{font-size:13px;font-weight:650;color:var(--muted)}
.photo-pick{display:flex;align-items:center;justify-content:center;gap:8px;cursor:pointer}
.review-photo-preview,.review-photo-current img{max-width:160px;max-height:160px;border-radius:12px;border:1px solid var(--line);object-fit:cover}
.review-photo-current{display:grid;gap:6px}
.summary-photo{width:72px;height:72px;object-fit:cover;border-radius:8px;margin-top:4px}
.review-caption{color:var(--muted)}.review-comment{margin:2px 0 0}
.review-photo img{width:96px;height:96px;object-fit:cover;border-radius:10px;border:1px solid var(--line);margin-top:4px}
.review-card h2{margin-bottom:4px}.review-overall{margin:0 0 10px}
.review-pending{border:2px solid #f59e0b}
.review-actions{display:grid;gap:8px;margin-top:12px}.review-actions form{margin:0}.review-actions button,.review-actions a{width:100%}
.review-answer{margin-top:12px}
/* Accueil de l'administrateur : ce qui attend une décision (13/10/2026, 21 h 55) */
.inbox-list{list-style:none;margin:0;padding:0;display:grid;gap:10px}
.inbox-card{display:grid;grid-template-columns:52px minmax(0,1fr);align-items:center;gap:12px;padding:14px;border:1px solid var(--line);border-radius:16px;background:var(--surface);color:var(--ink);text-decoration:none;font-weight:650}
.inbox-card strong{display:grid;place-items:center;width:52px;height:52px;border-radius:14px;background:#dcfce7;color:#166534;font-size:22px}
.inbox-card span{display:grid;gap:3px}.inbox-card small{color:var(--muted);font-weight:500}
.inbox-card::after{content:"›";position:absolute;right:16px;color:var(--muted);font-size:22px}
.inbox-card{position:relative;padding-right:34px}
.inbox-card.urgent{border-color:#fecaca;background:#fef2f2}.inbox-card.urgent strong{background:#dc2626;color:#fff}
/* Réservations Airbnb (demande du 13/10/2026, 22 h 10) */
.form-error{margin:8px 0;padding:10px 12px;border-radius:10px;background:#fef2f2;color:#b91c1c;font-size:14px}
.calendar-help{margin:8px 0 0;padding-left:20px;font-size:14px;color:var(--structure);display:grid;gap:4px}
.calendar-window{display:grid;grid-template-columns:1fr 1fr;gap:10px}.calendar-window input{min-height:44px;font-size:16px}
.calendar-unlink{margin-top:10px}
.booking-list{margin:10px 0 0;padding:0;list-style:none;display:grid;gap:10px}
.pay-detail .booking-list li.booking-item{display:grid;gap:10px;padding:12px;border:1px solid var(--line);border-left:6px solid #f97316;border-radius:14px;background:var(--surface)}
.pay-detail .booking-list li.booking-item.done{border-left-color:var(--blue);grid-template-columns:1fr auto;align-items:center}
.booking-item span{display:grid;gap:2px}.booking-item strong{font-size:16px}.booking-item small{font-size:13px;color:var(--muted)}
.booking-item small::first-letter{text-transform:uppercase}
.booking-check{display:flex;gap:12px;align-items:flex-start}.booking-check input{width:24px;height:24px;margin-top:2px;flex:0 0 auto}
.booking-actions{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.booking-validate,.booking-ignore{min-height:44px;border-radius:10px;font-weight:700;font-size:15px;border:1px solid var(--line);background:#fff;color:var(--ink)}
.booking-validate{background:#16a34a;border-color:#16a34a;color:#fff}
.booking-bulk{display:grid;gap:8px;margin-top:14px}.booking-bulk button{width:100%}
.booking-warning{color:#b45309!important;font-weight:650}
.booking-form+form .mission-action,.client-home>.mission-action{width:100%;margin-top:12px;display:flex;align-items:center;justify-content:center;text-decoration:none;box-sizing:border-box}
.pay-detail .calendar-help li{display:list-item;border:0;padding:0}
.booking-form .pay-detail>.mission-action{display:flex;align-items:center;justify-content:center;width:100%;margin-top:12px;box-sizing:border-box;text-decoration:none}
.slot-warning{color:#b42318;font-weight:650}

/* Menu du logement (audit du 13/10/2026) : un sujet par écran. */
.property-menu a.choice-card{text-decoration:none;color:inherit}
.property-menu a.choice-card small{display:block;margin-top:2px}
/* Nouveau client depuis le téléphone (demande du 16/10/2026) : prestations cochées et leurs tarifs. */
.new-client input:not([type=checkbox]):not([type=radio]),.new-client select{min-height:46px;border:1px solid var(--line);border-radius:10px;padding:8px 10px;font:inherit;font-size:16px;color:var(--ink);background:#fff;width:100%}
.service-choice{display:grid;gap:8px;margin-bottom:10px}.service-prices{display:grid;gap:8px;padding:0 4px 4px 14px;border-left:3px solid var(--blue-soft)}
.service-prices[hidden]{display:none}.housing-choices{display:grid;grid-template-columns:repeat(auto-fill,minmax(96px,1fr));gap:8px;margin-bottom:12px}
/* Channel manager Nestiz (demande du 23/10/2026) : bandeau du mode test, écran d'un séjour. */
.channel-test{margin:0 0 12px;padding:10px 12px;border-radius:10px;background:var(--warning-soft,#fdf0e1);color:var(--warning,#9a4a06);font-weight:650;font-size:14px;text-align:center}
.step-progress.two{grid-template-columns:repeat(2,1fr)}
.stay-facts li{display:grid;gap:2px;padding:8px 0;border-top:1px solid var(--line)}.stay-facts li:first-child{border-top:0}.stay-facts small{color:var(--muted);font-weight:650}
.stay-link{display:grid;gap:2px;color:inherit;text-decoration:none}.stay-link small{color:var(--muted)}
/* To-do de l'administratrice (demande du 02/11/2026) : une tâche par ligne, « Fait » d'un appui. */
.todo-list{list-style:none;margin:0;padding:0;display:grid;gap:8px}
.todo-row{display:grid;grid-template-columns:44px minmax(0,1fr);align-items:center;gap:10px;padding:10px 12px;border:1px solid var(--line);border-radius:14px;background:var(--surface)}
.todo-row.late{border-color:#fecaca;background:#fef2f2}
.todo-row.done a{color:var(--muted);text-decoration:line-through}
.todo-row form{margin:0}
.todo-check{width:40px;height:40px;border-radius:12px;border:2px solid var(--blue);background:var(--surface);color:var(--blue);font-size:18px;font-weight:700;cursor:pointer}
.todo-row.done .todo-check{background:#dcfce7;border-color:#16a34a;color:#166534}
.todo-row a{display:grid;gap:2px;color:var(--ink);text-decoration:none;font-weight:650;min-width:0;overflow-wrap:anywhere}
.todo-row small{color:var(--muted);font-weight:500}
.todo-row.late small{color:#b91c1c}
.todo-group{margin:16px 0 6px;font-size:14px;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}
.todo-notes{margin:0;padding-left:18px;display:grid;gap:4px}
.todo-section-title{display:flex;justify-content:space-between;align-items:baseline;gap:8px}
.todo-section-title a{font-size:15px;font-weight:650}
/* Dictée de la to-do (demande du 03/11/2026) : un grand bouton, le texte transcrit puis le récapitulatif. */
.todo-section-links{display:flex;gap:14px}
.todo-mic{display:block;width:100%;min-height:64px;margin:4px 0 2px;border:0;border-radius:18px;background:var(--blue);color:#fff;font-size:19px;font-weight:750}
.todo-mic[hidden]{display:none}
.todo-mic.listening{background:#e5484d;animation:copilot-pulse 1.2s ease-in-out infinite}
.request-wizard textarea.dictated{border-color:var(--blue);box-shadow:0 0 0 3px rgba(37,99,235,.15)}
.todo-dictated{margin:0 0 8px;padding:10px 12px;border-radius:12px;background:var(--surface-2,#eef2f8);font-size:15px}
.pay-detail .copilot-dictation{padding:0 0 10px;background:none;color:var(--muted)}
/* Calendrier compact du client (demande de Sophia du 02/11/2026) : une intervention par date, le mois tient dans l'écran. */
.compact-calendar{--mark:var(--blue)}
.compact-calendar .weekday{height:26px;padding:6px 0 4px;text-align:center}
.compact-calendar .week-grid .day,.compact-calendar .day{display:grid;place-items:center;min-height:46px;padding:2px}
.compact-calendar .day-number{width:34px;height:34px;margin:0;font-size:14px}
.compact-calendar .day.has-event .day-number{background:var(--mark);color:#fff;font-weight:750}
.compact-calendar .day.today:not(.has-event) .day-number{background:transparent;color:var(--danger);box-shadow:inset 0 0 0 2px var(--danger)}
.compact-calendar .day.today.has-event .day-number{box-shadow:0 0 0 2px #fff,0 0 0 4px var(--danger)}
.compact-calendar .day.outside.has-event .day-number{opacity:.6}
.compact-calendar .state-pending{--mark:var(--warning-strong)}
.compact-calendar .state-invoiced_unpaid,.compact-calendar .state-invoiced{--mark:#6d28d9}
.compact-calendar .state-paid{--mark:#15803d}
.compact-calendar .state-cancelled{--mark:#9ca3af}
.compact-calendar .state-cancelled .day-number{text-decoration:line-through}
.compact-calendar .day-more{position:absolute;bottom:1px;right:2px;font-size:10px;font-weight:750;color:var(--muted)}
.compact-legend{display:flex;flex-wrap:wrap;gap:6px 14px;margin:0;padding:10px 14px 12px;font-size:12px;color:var(--muted)}
.compact-legend span::before{content:"";display:inline-block;width:10px;height:10px;margin-right:5px;border-radius:50%;vertical-align:-1px;background:var(--blue)}
.compact-legend .legend-pending::before{background:var(--warning-strong)}
.compact-legend .legend-invoiced_unpaid::before{background:#6d28d9}
.compact-legend .legend-paid::before{background:#15803d}
body[data-role="client"] #calendarView{min-height:0}
/* Accueil du client réorganisé (demande du 03/11/2026) : deux montants côte à côte, puis le logement et la
   création d'interventions ; page du logement ouverte sur ses listes de tâches. */
.home-duo{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:10px}
.duo-card{display:grid;align-content:start;gap:4px;padding:14px;border:1px solid var(--line);border-radius:16px;background:#fff;color:var(--ink);text-decoration:none;min-width:0}
.duo-card small{color:var(--muted);font-size:12px;font-weight:650;text-transform:uppercase;letter-spacing:.02em}
.duo-card strong{font-size:24px;font-variant-numeric:tabular-nums;overflow-wrap:anywhere}
.duo-card span{font-size:13px;color:var(--structure)}
.duo-card:first-child{border-top:4px solid #16a34a}.duo-card:last-child{border-top:4px solid var(--blue)}
.home-block{display:grid;gap:10px;padding:16px;border:1px solid var(--line);border-radius:16px;background:var(--surface)}
.home-block h2{margin:0;font-size:18px}.home-block .pay-note{margin:0}
.home-block .property-list{margin:0}
.task-list-card{display:grid;gap:10px;padding:16px;border:1px solid var(--line);border-radius:16px;background:#fff}
.task-list-main{border:2px solid #16a34a;box-shadow:0 2px 10px rgba(22,163,74,.12)}
.task-list-main h2{margin:0;font-size:20px}
.task-list-head{display:flex;justify-content:space-between;align-items:baseline;gap:10px;width:100%}
.task-list-head>span{color:var(--muted);font-size:13px;font-weight:650;white-space:nowrap}
.task-list-deep{background:var(--surface);padding:0 16px}
.task-list-deep summary{display:flex;align-items:center;min-height:54px;cursor:pointer;font-size:16px}
.task-list-deep[open]{padding-bottom:16px}
.task-lines{margin:0;padding-left:20px;display:grid;gap:4px;font-size:15px;line-height:1.4}
.task-list-card .pay-note{margin:0}
.property-place p{margin:0}.property-place .wrap{overflow-wrap:anywhere}
.property-place .facade-thumb{margin-top:6px}
.instructions-text{white-space:pre-wrap;line-height:1.5;padding:12px;border:1px solid var(--line);border-radius:12px;background:var(--background);margin-bottom:10px;overflow-wrap:anywhere}
.instructions-editor{min-height:260px;line-height:1.5}
.kind-group[hidden]{display:none}.kind-card{align-items:flex-start}
.kind-main{border-width:2px}
.kind-edit{justify-self:start;color:var(--blue);font-weight:650;font-size:14px;padding:6px 0}
.date-picker{display:grid;grid-template-columns:minmax(0,1fr);gap:10px;margin-top:6px}
.date-add{min-height:48px;margin:0;width:100%;border:1px solid var(--blue);color:var(--blue)}
.date-chips{list-style:none;margin:0;padding:0;display:grid;gap:8px}
.date-chips li{display:flex;justify-content:space-between;align-items:center;gap:10px;min-height:48px;padding:6px 6px 6px 14px;border:1px solid var(--blue);border-radius:12px;background:var(--blue-soft);font-weight:650}
.date-chips li span::first-letter{text-transform:uppercase}
.date-remove{min-height:38px;border:1px solid var(--line);border-radius:9px;padding:0 10px;background:#fff;color:var(--danger);font-weight:650}
@media(max-width:360px){.home-duo{grid-template-columns:1fr}}
.duo-detail{font-style:normal;font-size:12px;color:var(--muted)}
