/* Compact, sticky, single-bar application shell. */
/* Récap Émilie: éditeur riche limité au texte, retours, barré et trois accents sûrs. */
.recap-row>.recap-details{min-width:0;margin:0;border-left:1px solid var(--dark-border-soft)}
.recap-details-editor{position:relative;width:100%;height:100%;min-height:38px;box-sizing:border-box}
.recap-details-content{width:100%;height:100%;min-height:38px;overflow:auto;box-sizing:border-box;padding:4px 91px 4px 6px;background:transparent;color:var(--dark-text);font-size:12.5px;line-height:1.35;white-space:pre-wrap;overflow-wrap:anywhere;outline:0}
.recap-details-content:focus-visible{position:relative;z-index:2;outline:1px solid #78b99c;outline-offset:-1px;background:var(--dark-input)}
.recap-details-content:empty::before{content:attr(data-placeholder);color:var(--dark-text-muted);pointer-events:none}
.recap-details-tools{position:absolute;z-index:4;top:3px;right:3px;display:flex;gap:2px}.recap-details-tools button{display:grid;place-items:center;width:20px!important;min-width:20px!important;height:19px!important;padding:0!important;border:1px solid var(--dark-border)!important;border-radius:3px!important;background:var(--dark-surface-soft)!important;color:var(--dark-text-soft)!important;font-size:10px!important;line-height:1!important;cursor:pointer}.recap-details-tools button:hover,.recap-details-tools button:focus-visible{border-color:#91ad9e!important;background:var(--dark-input)!important;color:var(--dark-text)!important}
.recap-highlight-strong{color:#f1a6f2!important}.recap-highlight-warning{color:#e0b15b!important}.recap-highlight-info{color:#78b99c!important}
.recap-create .recap-details-editor{height:42px;border:1px solid var(--dark-border);border-radius:4px;background:var(--dark-input)}
.recap-create .recap-details-content{min-height:40px;padding-top:5px}
#application-bootstrap-controls{display:none!important}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.view{padding:0 10px 10px;overflow-x:clip}.app-toolbar{position:sticky;top:0;z-index:35;height:52px;min-height:52px;margin:0 -10px 8px;padding:5px 10px;display:flex;gap:6px;align-items:center;background:#fff;border-bottom:1px solid var(--line);box-shadow:0 2px 7px #26342e12}.toolbar-controls{display:flex;align-items:center;gap:5px;min-width:0}.toolbar-spacer{flex:1 1 auto}.app-toolbar button,.app-toolbar input,.app-toolbar select,.app-toolbar label{height:34px;min-height:34px;padding:4px 7px;border:1px solid var(--line);border-radius:5px;background:#fff;font-size:11px}.app-toolbar label{display:flex;align-items:center;gap:4px;color:#536159;white-space:nowrap}.app-toolbar label select{height:25px;min-height:25px;padding:1px 3px;border:0;font-weight:650}.screen-switcher select{font-size:15px!important;color:#224838;min-width:83px;font-weight:800!important}.period-arrow{font-size:16px!important;padding:2px 8px!important}.view-mode{height:34px}.view-mode button{height:34px;border-radius:0}.view-mode button:first-child{border-radius:5px 0 0 5px}.view-mode button:last-child{border-radius:0 5px 5px 0}.density-control{max-width:112px}.planning-worker-filter{max-width:152px}.inters-window-button{font-weight:700;color:var(--green);white-space:nowrap}.actions-menu{position:relative;height:34px}.actions-menu summary{height:34px;display:flex;align-items:center;gap:4px;padding:0 9px;border:1px solid var(--line);border-radius:5px;background:#fff;font-size:11px;cursor:pointer;list-style:none;white-space:nowrap}.actions-menu summary::-webkit-details-marker{display:none}.actions-menu>div{position:absolute;right:0;top:38px;z-index:60;width:205px;padding:5px;background:#fff;border:1px solid var(--line);border-radius:6px;box-shadow:0 7px 24px #26342e29}.actions-menu>div button{display:block;width:100%;height:31px;min-height:31px;border:0;text-align:left}.actions-menu>div button:hover:not(:disabled){background:#edf4f0}.actions-menu>div button:disabled{color:#a0a8a3;cursor:not-allowed}.shell-logout{width:35px;padding:0!important;font-size:18px!important}.listing-sync{font-size:10px;padding:5px 7px;border-radius:12px;white-space:nowrap}.listing-sync.synchronized{background:#e4f2ea;color:#246047}.listing-sync.diverged{background:#fff1d7;color:#785b1f}.resync-button{white-space:nowrap;color:#785b1f}.bdd-grid{max-height:calc(100vh - 62px)}

/* Full-width monthly cycle matrix and two independent intervention windows. */
.cycle-month-panel>summary{min-height:34px;padding:4px 9px;gap:10px}.cycle-month-panel>summary>span{font-size:13px;font-weight:800;color:#315f4d}.cycle-responsible-control{display:flex;align-items:center;gap:4px;color:#536159;font-size:10px;font-weight:700;cursor:default}.cycle-responsible-control select{height:25px;min-width:112px;padding:2px 5px;border:1px solid #cbd6cf;border-radius:4px;background:#fff;color:#26342e;font-size:11px;font-weight:650}.cycle-empty-responsible{color:#76827b;font-size:10px}.cycle-month-period{font-size:11px!important;color:#5e6c65!important}.cycle-month-panel>summary>b{font-size:11px!important;color:#315f4d}.cycle-month-matrix{width:100%;min-width:0;overflow:visible;border-top:1px solid var(--line);font-size:11px}.cycle-month-grid{display:grid;grid-template-columns:minmax(230px,1.45fr) repeat(var(--cycle-week-count),minmax(90px,1fr));align-items:stretch}.cycle-month-head{min-height:40px;background:#eef3f0;border-bottom:1px solid #bfcac3}.cycle-month-head>b{display:flex;align-items:center;padding:5px 9px;color:#405249}.cycle-week-heading{min-width:0;padding:3px 5px;border:0;border-left:2px solid #c6d1ca;background:transparent;color:#405249;text-align:center}.cycle-week-heading strong,.cycle-week-heading small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cycle-week-heading strong{font-size:12px}.cycle-week-heading small{margin-top:1px;color:#728078;font-size:9px;font-weight:500}.cycle-week-heading:hover,.cycle-week-heading:focus{background:#dfece5;color:#24583f}.cycle-month-row{min-height:27px;border-bottom:1px solid #e1e7e3}.cycle-month-row.stripe{background:#f7f9f7}.cycle-client{min-width:0;display:flex;align-items:center;gap:7px;padding:3px 9px}.cycle-client b{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:11px}.cycle-client small{margin-left:auto;flex:0 0 auto;color:#718078;font-size:9px}.cycle-month-cell{min-width:0;display:flex;align-items:center;justify-content:center;gap:5px;padding:3px;border-left:2px solid #d1dad4}.cycle-week-heading.is-current,.cycle-month-cell.is-current{background:#e7f1eb;border-left-color:#91ac9e;border-right:1px solid #91ac9e}.cycle-month-cell.drop-target{background:#dcece4;box-shadow:inset 0 0 0 1px #5f8d78}.cycle-month-marker{position:relative;width:12px;height:12px;flex:0 0 12px;border:1px solid #674a86;border-radius:50%;background:#8064a2;box-shadow:0 0 0 2px #ece5f3;cursor:grab}.cycle-month-marker.is-dispatched{background:#4b8b6e;border-color:#39725a;box-shadow:0 0 0 2px #deeee5}.cycle-month-marker.is-manual{border:2px solid #9a712e;background:#f8e6b7;box-shadow:0 0 0 2px #f5eddc}.cycle-month-marker.dragging{opacity:.35}.cycle-month-summary{min-height:27px;background:#eaf0ec;border-top:1px solid #bcc8c0;font-weight:750}.cycle-month-summary>b{display:flex;align-items:center;padding:4px 9px}.cycle-month-summary>span{display:grid;place-items:center;border-left:2px solid #c7d2cb;color:#315f4d}.cycle-month-empty{margin:0;border-bottom:1px solid #e1e7e3}.cycles:not([open]) .cycle-month-period{display:inline}.inters-window{z-index:70}.inters-window.is-pinned{box-shadow:0 0 0 2px #4f8d72,0 12px 34px #24372e33}.inters-window [data-float-pin][aria-pressed="true"]{background:#dcece4;color:#245a43}.inters-window-filters{display:grid;grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr);gap:5px;margin-bottom:7px}.inters-window-filters label{display:flex;flex-direction:column;gap:2px;color:#59675f;font-size:10px;font-weight:700}.inters-window-filters select{width:100%;min-width:0;height:27px;padding:2px 4px;border:1px solid #bdcbc2;border-radius:4px;background:#fff;font-size:11px}.inters-window-list{min-height:40px}.planning-requests h4{display:flex;align-items:center;justify-content:space-between;gap:5px;margin:0 0 5px}.planning-requests h4 span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.planning-requests h4 button{border:0;background:transparent;color:var(--green);font-size:11px;font-weight:750;white-space:nowrap}.planning-request-list{padding:2px}.planning-request-row{display:grid;grid-template-columns:minmax(48px,.8fr) minmax(68px,1.5fr) 54px 40px 22px;gap:3px;align-items:center;min-height:24px;padding:2px 3px;border-top:1px dotted #d7ddd8;background:#fff;cursor:grab;font-size:11px}.planning-request-row>*{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.planning-request-row span{color:#59665f}.planning-request-row small{font-size:10px;color:#476b59}.planning-request-row em{text-align:right;font-style:normal}.planning-request-row [data-request-delete]{width:21px;height:21px;padding:0;border:0;border-radius:3px;background:transparent;color:#89958e;font-size:11px;cursor:pointer}.planning-request-row [data-request-delete]:hover,.planning-request-row [data-request-delete]:focus-visible{background:#4b3033;color:#ee999e}.planning-requests .zero{padding:10px}.planning-request-form{display:grid;grid-template-columns:minmax(45px,.8fr) minmax(64px,1.4fr) 56px 39px 22px 22px;gap:2px;padding:3px 1px;background:#edf5f1}.planning-request-form input,.planning-request-form select,.planning-request-form button{width:100%;min-width:0;height:26px;padding:2px 3px;border:1px solid #bdcbc2;border-radius:3px;font-size:10px}.planning-request-form button{padding:0;background:#fff;color:var(--green)}

/* Exactly two useful text lines per intervention card. */
.planning-matrix .matrix-intervention{display:flex;flex-direction:column;justify-content:center;gap:0;padding-right:3px!important;padding-left:3px!important}.planning-matrix .intervention-main{width:100%;min-height:0;align-items:center}.planning-matrix .intervention-main b,.planning-matrix .intervention-main>span{line-height:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.planning-matrix .intervention-main>span{position:relative;z-index:2}.planning-matrix .planning-remark{position:static!important;width:100%;padding-left:3px!important;padding-right:44px!important;overflow:hidden!important;text-overflow:ellipsis!important;white-space:nowrap!important}.planning-matrix .intervention-actions{right:2px!important;bottom:1px!important;display:flex;align-items:center;gap:2px;background:linear-gradient(90deg,transparent,#f8fbfd 22%)}.planning-matrix .matrix-intervention .intervention-actions button,.planning-matrix .slot-add{display:grid;place-items:center;line-height:1;font-weight:650;padding:0}.planning-matrix .slot-add{top:auto;right:2px;bottom:1px;opacity:.55;background:#fff}.planning-matrix .slot:hover>.slot-add,.planning-matrix .slot-add:focus{opacity:1}.density-compact .planning-matrix{--row-height:116px}.density-compact .matrix-intervention{height:31px;min-height:31px;max-height:31px;padding-top:1px!important;padding-bottom:1px!important}.density-compact .matrix-worker b{font-size:13px;line-height:15px}.density-compact .matrix-worker small{font-size:10px}.density-compact .matrix-worker em{font-size:9px}.density-compact .intervention-main{height:13px;line-height:13px;grid-template-columns:13px minmax(0,1fr) 38px}.density-compact .intervention-main b,.density-compact .intervention-main>span,.density-compact .planning-remark{font-size:12px!important}.density-compact .planning-remark{height:13px!important;line-height:13px!important}.density-compact .intervention-main .contact{width:11px;height:11px}.density-compact .intervention-actions{height:15px!important}.density-compact .matrix-intervention .intervention-actions button{width:19px;height:15px;font-size:11px}.density-compact .slot-add{width:18px;height:18px;font-size:17px}.density-compact .period-hint{font-size:8px}.density-normal .planning-matrix{--row-height:126px}.density-normal .matrix-intervention{height:38px;min-height:38px;max-height:38px;padding-top:2px!important;padding-bottom:2px!important}.density-normal .matrix-worker b{font-size:15px;line-height:17px}.density-normal .matrix-worker small{font-size:11px}.density-normal .matrix-worker em{font-size:10px}.density-normal .intervention-main{height:16px;line-height:16px;grid-template-columns:14px minmax(0,1fr) 43px}.density-normal .intervention-main b,.density-normal .intervention-main>span,.density-normal .planning-remark{font-size:14px!important}.density-normal .planning-remark{height:16px!important;line-height:16px!important}.density-normal .intervention-main .contact{width:12px;height:12px}.density-normal .intervention-actions{height:16px!important}.density-normal .matrix-intervention .intervention-actions button{width:20px;height:16px;font-size:12px}.density-normal .slot-add{width:19px;height:19px;font-size:17px}.density-normal .period-hint{font-size:9px}.density-large .planning-matrix{--row-height:186px}.density-large .matrix-intervention{height:49px;min-height:49px;max-height:49px;padding-top:4px!important;padding-bottom:4px!important}.density-large .matrix-worker b{font-size:18px;line-height:21px}.density-large .intervention-main{height:20px;line-height:20px;grid-template-columns:16px minmax(0,1fr) 50px}.density-large .intervention-main b,.density-large .intervention-main>span,.density-large .planning-remark{font-size:17px!important}.density-large .planning-remark{height:20px!important;line-height:20px!important}.density-large .intervention-main .contact{width:14px;height:14px}.density-large .intervention-actions{height:20px!important}.density-large .matrix-intervention .intervention-actions button{width:23px;height:20px;font-size:14px}.density-large .slot-add{width:20px;height:20px;font-size:18px}.cycle-chip{height:13px;line-height:12px}.cycle-add{height:17px}.density-large .cycle-chip{height:18px;line-height:17px}

.density-compact .planning-matrix .intervention-actions{height:14px!important}.density-compact .planning-matrix .matrix-intervention .intervention-actions button{height:14px}

/* Fixed intervention area followed by a fixed action line in every half-day slot. */
.planning-matrix .matrix-slot{display:grid;grid-template-rows:minmax(0,1fr) var(--slot-actions-height);padding:2px 3px 1px 12px}.planning-matrix .slot-intervention-zone{position:relative;display:grid;grid-auto-flow:column;grid-auto-columns:minmax(0,1fr);gap:2px;min-width:0;min-height:0;overflow:hidden}.planning-matrix .slot-intervention-zone>.matrix-intervention{position:relative;display:block;width:100%;height:100%!important;min-height:100%!important;max-height:100%!important;margin:0;padding:0 3px!important}.planning-matrix .slot-intervention-zone>.matrix-intervention .intervention-main{position:absolute;left:3px;right:3px;top:var(--client-top);width:auto;height:var(--text-line-height);line-height:var(--text-line-height)}.planning-matrix .slot-intervention-zone>.matrix-intervention .intervention-client{height:calc(var(--text-line-height) + 1px);line-height:var(--text-line-height);align-self:start}.planning-matrix .slot-intervention-zone>.matrix-intervention .planning-remark{position:absolute!important;left:3px;right:3px;top:calc(var(--client-top) + var(--text-line-height) + var(--client-comment-gap));width:auto;height:calc(var(--text-line-height) + 1px)!important;line-height:var(--text-line-height)!important;padding:0 3px!important}.planning-matrix .slot-actions{height:var(--slot-actions-height);display:flex;align-items:center;justify-content:flex-end;gap:2px;border-top:1px solid #dce5df;background:#f8fbf9;position:relative;z-index:5}.planning-matrix .slot-actions button{position:static;display:grid;place-items:center;width:var(--slot-action-width);height:var(--slot-actions-height);min-height:0;border:0;background:transparent;color:#3d6c58;font-size:var(--slot-action-font);line-height:1;font-weight:650;padding:0;opacity:.76}.planning-matrix .slot-actions button:hover:not(:disabled),.planning-matrix .slot-actions button:focus:not(:disabled){opacity:1;background:#e3eee8}.planning-matrix .slot-actions button:disabled{display:grid;color:#9ca8a1;opacity:.38;cursor:default}.density-compact .planning-matrix{--slot-actions-height:16px;--slot-action-width:21px;--slot-action-font:14px;--client-top:6px;--text-line-height:13px;--client-comment-gap:4px}.density-normal .planning-matrix{--slot-actions-height:16px;--slot-action-width:22px;--slot-action-font:15px;--client-top:8px;--text-line-height:16px;--client-comment-gap:5px}.density-large .planning-matrix{--slot-actions-height:21px;--slot-action-width:24px;--slot-action-font:17px;--client-top:12px;--text-line-height:20px;--client-comment-gap:6px}

.planning-matrix .matrix-slot{grid-template-rows:var(--slot-intervention-height) minmax(0,1fr) var(--slot-actions-height)}.planning-matrix .slot-intervention-zone{grid-row:1}.planning-matrix .slot-actions{grid-row:3}.density-compact .planning-matrix{--slot-intervention-height:38px}.density-normal .planning-matrix{--slot-intervention-height:46px}.density-large .planning-matrix{--slot-intervention-height:68px}
.density-normal .planning-matrix .matrix-slot{padding-top:1px;padding-bottom:0}.view.density-normal{padding-bottom:2px}

.planning-matrix .slot-intervention-zone>.matrix-intervention:not(.paired-interventions) .planning-remark{display:flex;align-items:center}

/* Final Planning details and occurrence-scoped text/fill colors. */
.planning-matrix .intervention-main>.intervention-duration{font-weight:700!important;color:#52675d!important}.planning-matrix .intervention-main>.intervention-client{display:block;justify-self:start;width:max-content;max-width:calc(100% + 2px);min-width:0;margin-left:-2px;padding:0 2px;box-sizing:border-box;border-radius:2px;color:#2d567f;background-color:transparent}.planning-matrix .planning-remark{border-radius:2px;color:#59675f;background-color:transparent}.planning-matrix .matrix-slot.selected{box-shadow:none!important}.planning-matrix .matrix-slot.selected::before{content:"";position:absolute;inset:0;z-index:12;pointer-events:none;box-shadow:inset 0 0 0 1px #327a5c,inset 0 0 6px #327a5c26}.planning-matrix .matrix-intervention.selected{box-shadow:inset 0 0 0 1px #327a5c,inset 0 0 5px #327a5c2e}
.planning-editor{width:min(820px,96vw);max-height:92vh;overflow:auto}.planning-time-fields{display:grid;grid-template-columns:minmax(190px,1.4fr) minmax(105px,.8fr) minmax(95px,.7fr);gap:7px;margin:9px 0}.planning-time-fields label,.planning-people-fields>label{display:grid;gap:3px;font-size:11px}.planning-time-fields input,.planning-time-fields select,.planning-people-fields select{min-width:0;width:100%}.planning-people-fields{margin:8px 0;padding:8px;border:1px solid #d8e0da;border-radius:6px}.planning-people-fields>h3{margin:0 0 5px;color:#526159;font-size:11px}.planning-person-row{display:grid;grid-template-columns:minmax(135px,.8fr) minmax(380px,2.2fr);gap:7px;align-items:end;padding:5px 0;border-top:1px dotted #d8e0da}.planning-person-row>label,.planning-participation-controls>label{display:grid;gap:3px;margin:0;color:#59675f;font-size:10px}.planning-participation-controls{display:grid;grid-template-columns:minmax(155px,1.35fr) minmax(92px,.75fr) minmax(82px,.65fr);gap:6px}.planning-participation-controls input,.planning-participation-controls select{width:100%;min-width:0}.planning-person-row.is-disabled .planning-participation-controls{opacity:.38}.planning-recurrent-identity{margin:8px 0}.occurrence-formatting{margin:10px 0 2px;padding:7px;border:1px solid #d8e0da;border-radius:6px;background:#f8faf8}.occurrence-formatting h3{margin:0 0 5px;font-size:11px;color:#526159}.occurrence-format-row{display:grid;grid-template-columns:minmax(0,1fr) 34px 34px;align-items:center;gap:4px;min-height:30px;border-top:1px dotted #dce3de}.occurrence-format-row>span{font-size:11px;font-weight:650}.occurrence-color-command{position:relative;width:32px;height:25px;padding:1px;border:1px solid #cbd6cf;border-radius:4px;background:#fff;color:#344c40;font-size:14px;font-weight:750;line-height:17px}.occurrence-color-command>span{display:block}.occurrence-color-command>i{position:absolute;left:5px;right:5px;bottom:2px;height:3px;border:1px solid #aeb8b2;background:var(--color-indicator);border-radius:1px}.occurrence-color-command.fill-command>i{top:5px;bottom:5px;height:auto;border-radius:2px;opacity:.9}.occurrence-color-command.fill-command>span{position:relative;z-index:1;font-size:12px;color:#26342e}.occurrence-color-command.is-default.fill-command>i{background:repeating-linear-gradient(135deg,#fff 0 4px,#e7ece8 4px 8px)}.occurrence-color-command:hover,.occurrence-color-command:focus{border-color:#6e9180;background:#eef5f1}

/* One participation card spans the two existing half-day rows without duplicating the occurrence DOM. */
#planning .day-planning{position:relative}
#planning .day-full-interventions{position:absolute;z-index:4;top:1px;right:3px;bottom:1px;left:calc(var(--slot-action-column) + 2px);display:grid;grid-auto-flow:column;grid-auto-columns:minmax(0,1fr);gap:2px;pointer-events:none}
#planning .day-full-interventions>.matrix-intervention{position:relative;display:flex;width:100%;height:100%!important;min-height:100%!important;max-height:100%!important;margin:0;padding:0 3px!important;flex-direction:column;justify-content:center;gap:calc(var(--client-comment-gap) + 4px);pointer-events:auto}
#planning .day-full-interventions>.matrix-intervention .intervention-main{position:static;width:100%;height:var(--text-line-height);line-height:var(--text-line-height);flex:0 0 var(--text-line-height)}
#planning .day-full-interventions>.matrix-intervention .planning-remark{position:static!important;display:-webkit-box;width:100%;height:auto!important;min-height:var(--text-line-height);max-height:calc((var(--text-line-height) * 2) + 2px);line-height:var(--text-line-height)!important;padding:0 3px!important;flex:0 1 auto;overflow:hidden!important;white-space:normal!important;-webkit-box-orient:vertical;-webkit-line-clamp:2;text-overflow:ellipsis}
.planning-add-second{margin:2px 0 8px}.planning-second-service{margin:10px 0;padding:9px;border:1px solid #b8c9bf;border-radius:7px;background:#f6faf7}.planning-second-service>header{display:flex;align-items:center;justify-content:space-between;margin-bottom:6px}.planning-second-service>header b{color:#315f4d;font-size:12px}.planning-second-service>header button{width:24px;height:24px;padding:0;border:0;background:transparent;color:#6b7770;font-size:18px}.planning-second-service>label,.planning-second-service>[data-second-free-creation]>label{display:grid;gap:3px;margin:6px 0;font-size:11px}
@media(max-width:760px){.planning-person-row{grid-template-columns:1fr}.planning-participation-controls{grid-template-columns:1.3fr .8fr .7fr}}
.occurrence-color-popover{position:fixed;z-index:95;width:260px;padding:8px;background:#fff}.occurrence-color-popover header{display:flex;align-items:center;justify-content:space-between;margin-bottom:5px}.occurrence-color-popover header b{font-size:11px}.occurrence-color-popover header button{border:0;background:transparent;font-size:18px;line-height:18px}.occurrence-color-popover small{display:block;margin:7px 0 3px;color:#68766f;font-size:9px;font-weight:700;text-transform:uppercase}.occurrence-color-popover .color-reset{width:100%;height:25px;border:1px solid #d4ddd7;border-radius:4px;background:#f8faf9;color:#405249;font-size:10px;text-align:left}.color-grid{display:grid;grid-template-columns:repeat(8,24px);gap:4px}.color-swatch{width:24px;height:24px;padding:0;border:1px solid #aeb9b2;border-radius:3px;background:var(--swatch)}.color-swatch:hover,.color-swatch:focus{outline:2px solid #3b8d6d;outline-offset:1px}.recent-colors{grid-template-columns:repeat(8,24px)}.custom-color{display:flex!important;align-items:center;justify-content:space-between;margin-top:8px!important;padding:5px 7px;border:1px solid #d4ddd7;border-radius:4px;background:#f8faf9;font-size:10px}.custom-color input{width:34px!important;height:24px;padding:1px!important;border:1px solid #aeb9b2!important}

/* Editable monthly business information for recurrent services. */
.business-details{width:min(1160px,96vw);max-height:90vh;overflow:auto}.business-detail-intro{margin:8px 0 10px;color:var(--muted);font-size:11px}.business-detail-months{display:flex;flex-direction:column;gap:9px}.business-detail-month{padding:8px;border:1px solid #d5ded8;border-radius:7px;background:#fbfcfb}.business-detail-month>header{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:6px}.business-detail-month>header>div:first-child{display:flex;align-items:baseline;gap:8px}.business-detail-month>header b{font-size:14px;color:#315f4d}.business-detail-month>header span{color:var(--muted);font-size:11px}.business-hours-status{font-size:11px}.business-hours-status.complete{color:#2f7658}.business-hours-status.incomplete{color:#8a681f}.business-hours-status.excess{color:#a34747}.business-detail-row{display:grid;grid-template-columns:minmax(150px,1.35fr) 112px 14px 112px 104px 70px 76px auto;gap:5px;align-items:end;padding:6px 0;border-top:1px dotted #d6ddd8}.business-detail-row>label{display:flex;flex-direction:column;gap:2px;margin:0;color:#637068;font-size:9px}.business-detail-row input{height:29px!important;padding:4px 6px!important}.business-detail-row>output{align-self:center;text-align:right;font-size:11px;font-weight:750}.business-detail-row>button{height:29px;align-self:end;border:1px solid #bdcbc2;border-radius:4px;background:#fff;color:#286247;font-size:10px}.business-detail-times{align-self:center;text-align:center;font-weight:800}.business-detail-metadata{grid-column:1/-1;color:#6b7770;font-size:9px;white-space:normal}.business-detail-empty{margin:5px 0;color:var(--muted);font-size:10px;font-style:italic}.business-detail-add{margin-top:6px;padding:4px 7px;border:0;background:transparent;color:var(--green);font-size:10px;font-weight:750}.business-other-details{margin-top:10px}.business-other-details summary{cursor:pointer;font-size:11px;font-weight:750}.business-other-details table{margin-top:6px}

/* Eight fixed contract slots: four morning, four afternoon. */
.planning-matrix .cycle-zone{box-sizing:border-box;padding:0!important;border:1px solid #aebdb4;background:#f4f8f5!important;overflow:hidden}
.cycle-add-reserve{position:absolute;z-index:7;top:auto;right:2px;bottom:1px;width:14px;height:13px;border:0;background:transparent}
.planning-matrix .cycle-add{position:absolute;z-index:8;top:auto;right:0;bottom:0;left:auto;width:13px;min-width:0;height:13px;padding:0;border:0;border-radius:3px;background:transparent;color:#286247;font-size:13px;line-height:11px;font-weight:700;opacity:.42}
.planning-matrix .cycle-add:hover,.planning-matrix .cycle-add:focus{background:var(--ui-progress-surface);color:var(--ui-progress-text);box-shadow:inset 0 0 0 1px var(--ui-progress-border);opacity:1}.cycle-contract-grid{position:absolute;inset:1px 2px;display:grid;grid-template-rows:repeat(8,minmax(0,1fr));min-height:0;overflow:hidden}
.cycle-contract-grid::after{content:"";position:absolute;z-index:4;top:50%;left:0;right:0;border-top:1px solid #89a398;pointer-events:none}
.cycle-contract-slot{box-sizing:border-box;position:relative;min-height:0;padding-right:0;border-top:1px dotted #d4ded8;overflow:hidden}.cycle-contract-slot:first-of-type{border-top:0}.cycle-contract-slot:nth-of-type(5){border-top:0}.cycle-contract-slot.pm-slot[data-cycle-slot="4"]{padding-right:14px}.cycle-contract-slot.drop-target{background:#dcece4;box-shadow:inset 1px 0 #5f8d78}.cycle-contract-slot.pm-slot[data-cycle-slot="4"].drop-target{background:linear-gradient(to right,#dcece4 0 calc(100% - 14px),transparent calc(100% - 14px))}
.cycle-contract-slot .cycle-chip,.cycle-day-member{box-sizing:border-box;width:100%;margin:0;padding:0 2px;display:flex;align-items:center;gap:1px;border:0;border-left:2px solid #5d8b76;border-radius:2px;background:#e3f0e9;color:#315f4d;font-size:10px;line-height:1;cursor:grab;overflow:hidden}
.cycle-contract-slot .cycle-chip{height:100%;min-height:0;line-height:1.1}
.cycle-contract-slot .cycle-chip>span,.cycle-day-member>span{min-width:0;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cycle-contract-slot .cycle-chip>button,.cycle-day-member>button{flex:0 0 auto;margin:0;padding:0;border:0;background:transparent;color:#68766e;font-size:10px;line-height:1}.cycle-contract-slot .cycle-handle,.cycle-day-member .cycle-handle{flex:0 0 auto;font-size:7px;letter-spacing:-2px;opacity:.34}
.cycle-day-slot{position:absolute;z-index:3;inset:1px 2px;display:flex;flex-direction:column;justify-content:center;gap:1px;min-height:0;padding:2px 0;overflow:hidden}.cycle-day-member{position:relative;flex:0 0 13px;width:100%;height:13px;min-height:13px;line-height:1.1;pointer-events:auto;border-left-color:#416f5a;background:#d6e9df}.cycle-day-member.dragging,.cycle-chip.dragging{opacity:.35;outline:1px dashed #557967}
.cycle-period-choice{display:flex;align-items:center;justify-content:space-between;gap:8px;margin:0 0 5px;color:#526159;font-size:10px;font-weight:700}.cycle-period-choice select{min-width:128px;height:27px;border:1px solid #cfd8d2;border-radius:5px;background:#fff;padding:3px 5px}
.density-large .cycle-contract-slot .cycle-chip,.density-large .cycle-day-member{font-size:12px}.density-large .cycle-day-member{flex-basis:18px;height:18px;min-height:18px}

@media(max-width:1500px){.app-toolbar{height:auto;min-height:52px;flex-wrap:wrap}.toolbar-controls{flex:1 1 1100px;overflow-x:auto;padding-bottom:2px}.toolbar-spacer{display:none}.planning-worker-filter{max-width:135px}.app-toolbar label,.app-toolbar button,.app-toolbar select{font-size:10px}.cycle-month-grid{grid-template-columns:minmax(190px,1.35fr) repeat(var(--cycle-week-count),minmax(72px,1fr))}}
@media(max-width:1100px){.cycle-month-grid{grid-template-columns:minmax(155px,1.25fr) repeat(var(--cycle-week-count),minmax(62px,1fr))}.cycle-client small{display:none}.cycle-week-heading small{font-size:8px}}

/* Dedicated Cycles mode and final visual hierarchy adjustments. */
.cycle-responsible-name{padding:3px 7px;border-radius:4px;background:#e7f1eb;color:#315f4d;font-size:11px!important;font-weight:750}
.planning-matrix .cycle-contract-grid::after{border-top:1px dashed #b8c5bd}
.planning-matrix .slot-actions{border-top:0}
.planning-matrix>.matrix-day-block:last-child{border-right:2px solid #9eaca3}

/* Stable Planning toolbar geometry across Month, Week and Cycles. */
.app-toolbar .toolbar-controls>label{padding-right:5px}/* Native selects already reserve their arrow gutter. Extra 18px padding clips values in Chromium. */
.app-toolbar .toolbar-controls>label>select{box-sizing:border-box;min-width:0;margin-left:auto;padding-right:3px!important}.app-toolbar .period-control{box-sizing:border-box;flex:none;gap:2px;padding-left:5px;padding-right:5px}.app-toolbar .week-period-control{width:107px}.app-toolbar .month-period-control{width:108px}.app-toolbar .year-period-control{width:104px}.app-toolbar .period-control select{min-width:0;flex:1}.app-toolbar .week-period-control select{width:48px;min-width:48px;flex:0 0 48px}.app-toolbar .month-period-control select{width:60px}.app-toolbar .year-period-control select{width:50px}
.app-toolbar .week-period-control.is-disabled{opacity:.58;cursor:not-allowed}.app-toolbar .week-period-control select:disabled{cursor:not-allowed;color:#66746d;opacity:1}
.app-toolbar .planning-worker-filter,.app-toolbar .planning-worker-space{box-sizing:border-box;width:164px;max-width:164px;flex:0 0 164px}.app-toolbar .planning-worker-space{display:block;height:34px;visibility:hidden;pointer-events:none}
.app-toolbar .density-control{box-sizing:border-box;width:136px;max-width:136px;flex:0 0 136px}.app-toolbar .density-control select{box-sizing:border-box;width:76px;min-width:76px;overflow:visible}
.toolbar-offline-status{box-sizing:border-box;width:160px;max-width:160px;flex:0 0 160px;height:26px;display:inline-flex;align-items:center;justify-content:center;padding:3px 7px;border:1px solid transparent;border-radius:13px;visibility:hidden;white-space:nowrap;font-size:11px;font-weight:750}.toolbar-offline-status.is-offline{visibility:visible;color:#684b20;background:#f4ead8;border-color:#d8bc84}

/* Listing typography retained before the shared visual layer below. */
#listing .listing-sheet h3{font-size:12px}#listing .list-head{font-size:11px}#listing .sheet-line{font-size:12px;line-height:1.05}#listing .sheet-line small,#listing .sheet-line em{font-size:10px;line-height:1.1}#listing .cycle-charge,#listing .drop-hint,#listing .week-col footer{font-size:10px}#listing .month-summary dl{font-size:11px}
#listing .sheet-line:not(.placed){background:var(--ui-surface);color:var(--ui-text)}#listing .sheet-line:not(.placed) small{color:var(--ui-text-soft)}

/* Global neutral dark presentation layer. */
:root[data-theme="dark"]{color-scheme:dark;--green:#78b99c;--blue:#78a8d0;--line:#46514b;--muted:#a9b3ae;--dark-page:#202522;--dark-toolbar:#252b28;--dark-surface:#2a302d;--dark-surface-alt:#303733;--dark-surface-soft:#343c38;--dark-input:#242a27;--dark-text:#e5ebe7;--dark-text-soft:#aeb9b3;--dark-border:#46514b;--dark-border-soft:#39423e;--dark-hover:#38443e;--dark-selected:#354a40;--dark-blue-surface:#2b3943;--dark-warn:#4a402d;background:var(--dark-page);color:var(--dark-text)}
:root[data-theme="dark"] body{background:var(--dark-page);color:var(--dark-text)}
:root[data-theme="dark"] button,:root[data-theme="dark"] input,:root[data-theme="dark"] select,:root[data-theme="dark"] textarea{color:var(--dark-text);border-color:var(--dark-border);background-color:var(--dark-input)}
:root[data-theme="dark"] input::placeholder,:root[data-theme="dark"] textarea::placeholder{color:#8f9a94}
:root[data-theme="dark"] button:disabled,:root[data-theme="dark"] input:disabled,:root[data-theme="dark"] select:disabled,:root[data-theme="dark"] textarea:disabled{color:#7e8983;opacity:.62}
:root[data-theme="dark"] :focus-visible{outline-color:#83bfa3}
:root[data-theme="dark"] ::selection{background:#416653;color:#f4f7f5}

/* Global bars, controls and menus. */
:root[data-theme="dark"] body>header,:root[data-theme="dark"] .app-toolbar{background:var(--dark-toolbar);border-color:var(--dark-border);box-shadow:0 2px 8px #0005}
:root[data-theme="dark"] .app-toolbar button,:root[data-theme="dark"] .app-toolbar input,:root[data-theme="dark"] .app-toolbar select,:root[data-theme="dark"] .app-toolbar label,:root[data-theme="dark"] .actions-menu summary{background:var(--dark-input);border-color:var(--dark-border);color:var(--dark-text)}
:root[data-theme="dark"] .app-toolbar label,:root[data-theme="dark"] .cycle-responsible-control,:root[data-theme="dark"] .inters-window-filters label{color:var(--dark-text-soft)}
:root[data-theme="dark"] .screen-switcher select,:root[data-theme="dark"] .inters-window-button{color:#91cbb0}
:root[data-theme="dark"] .seg .on{background:#39775c;color:#f5f8f6}
:root[data-theme="dark"] .actions-menu>div{background:var(--dark-surface);border-color:var(--dark-border);box-shadow:0 9px 28px #0008}
:root[data-theme="dark"] .actions-menu>div button{background:transparent}
:root[data-theme="dark"] .actions-menu>div button:hover:not(:disabled){background:var(--dark-hover)}
:root[data-theme="dark"] .actions-menu>div button:disabled{color:#77827c}
:root[data-theme="dark"] .listing-sync.synchronized{background:#2f493d;color:#9ad1b6}
:root[data-theme="dark"] .listing-sync.diverged{background:#4a402d;color:#e0c17f}
:root[data-theme="dark"] .resync-button{color:#e0c17f}
:root[data-theme="dark"] .toolbar-offline-status.is-offline{color:#f0cf8d;background:#4a3f2d;border-color:#7d6740}

/* Shared surfaces, tables and Listing/BDD. */
:root[data-theme="dark"] .panel,:root[data-theme="dark"] .listing-kpis>div,:root[data-theme="dark"] .day,:root[data-theme="dark"] .list-card{background:var(--dark-surface);border-color:var(--dark-border);box-shadow:0 2px 9px #0004}
:root[data-theme="dark"] .pill{background:#30483d;color:#9bd1b7}
:root[data-theme="dark"] th,:root[data-theme="dark"] .cycle-head{background:var(--dark-surface-soft);color:var(--dark-text);border-color:var(--dark-border)}
:root[data-theme="dark"] td,:root[data-theme="dark"] .cycle-group,:root[data-theme="dark"] .listing-sheet>div,:root[data-theme="dark"] .list-head,:root[data-theme="dark"] .sheet-line,:root[data-theme="dark"] .week-col footer{border-color:var(--dark-border-soft)}
:root[data-theme="dark"] .bdd-grid td.number{background:#2e312a}
:root[data-theme="dark"] .bdd-grid td[contenteditable="true"]{background:var(--dark-input);outline-color:#78b99c}
:root[data-theme="dark"] .listing-worker h2{background:var(--dark-surface-soft);color:#9bcbb4}
:root[data-theme="dark"] .listing-sheet h3,:root[data-theme="dark"] .list-head{background:var(--dark-surface-soft);border-color:var(--dark-border)}
:root[data-theme="dark"] .sheet-line.placed{background:#373b39;opacity:.68}
:root[data-theme="dark"] .cycle-charge{background:var(--dark-surface-alt);color:var(--dark-text-soft)}
:root[data-theme="dark"] .drop-hint,:root[data-theme="dark"] .zero,:root[data-theme="dark"] .sheet-line small,:root[data-theme="dark"] .list-card small,:root[data-theme="dark"] .list-card em{color:var(--dark-text-soft)}
:root[data-theme="dark"] .list-card{border-left-color:var(--blue)}
:root[data-theme="dark"] #listing .listing-client-zone{min-height:28px;padding:2px;background:var(--dark-surface-alt);color:var(--dark-text)}
:root[data-theme="dark"] #listing .sheet-line:not(.placed){background:var(--dark-surface);color:var(--dark-text);box-shadow:inset 3px 0 #608a76,inset 0 0 0 1px var(--dark-border-soft)}
:root[data-theme="dark"] #listing .sheet-line:not(.placed) small{color:var(--dark-text-soft)}

/* Planning grid, cards and contract slots. */
:root[data-theme="dark"] .planning-matrix{background:var(--dark-surface);border-color:#56635c}
:root[data-theme="dark"] .matrix-worker-head,:root[data-theme="dark"] .matrix-day-head,:root[data-theme="dark"] .matrix-period{background:var(--dark-surface-soft);border-color:#56635c;color:#dbe4df}
:root[data-theme="dark"] .matrix-worker{background:var(--dark-surface);border-color:var(--dark-border)}
:root[data-theme="dark"] .matrix-worker.stripe{background:var(--dark-surface-alt)}
:root[data-theme="dark"] .matrix-day-block{background:var(--dark-surface);border-color:var(--dark-border)}
:root[data-theme="dark"] .matrix-day-block.stripe{background:var(--dark-surface-alt)}
:root[data-theme="dark"] .day-planning,:root[data-theme="dark"] .matrix-slot,:root[data-theme="dark"] .matrix-slot.stripe,:root[data-theme="dark"] .stripe .day-planning{background:transparent!important}
:root[data-theme="dark"] .matrix-slot{border-color:var(--dark-border-soft)}
:root[data-theme="dark"] .period-hint,:root[data-theme="dark"] .matrix-worker small,:root[data-theme="dark"] .capacity,:root[data-theme="dark"] .slot-note{color:#9ca8a2}
:root[data-theme="dark"] .matrix-worker em{color:#d0a871}
:root[data-theme="dark"] .matrix-worker em.complete{color:#8dc7aa}
:root[data-theme="dark"] .matrix-intervention{background:var(--dark-surface);border-left-color:#608a76;color:var(--dark-text)}
:root[data-theme="dark"] .planning-matrix .intervention-main>.intervention-client{background:#315343;color:#9bcbb4}
:root[data-theme="dark"] .planning-matrix .planning-remark{background:var(--dark-surface-alt);color:var(--dark-text-soft)}
:root[data-theme="dark"] .planning-matrix .intervention-main>.intervention-duration{background:var(--dark-surface-soft);color:var(--dark-text)!important}
:root[data-theme="dark"] .planning-matrix .intervention-actions{background:linear-gradient(90deg,transparent,var(--dark-blue-surface) 22%)}
:root[data-theme="dark"] .planning-matrix .slot-actions{background:var(--dark-surface-alt);border-color:var(--dark-border-soft)}
:root[data-theme="dark"] .planning-matrix .slot-actions button,:root[data-theme="dark"] .planning-matrix .slot-add{background:transparent;color:#9bcbb4}
:root[data-theme="dark"] .planning-matrix .slot-actions button:hover:not(:disabled),:root[data-theme="dark"] .planning-matrix .slot-actions button:focus:not(:disabled){background:#3a4b42}
:root[data-theme="dark"] .planning-matrix .matrix-slot.selected{background:transparent!important}
:root[data-theme="dark"] .planning-matrix .matrix-slot.selected::before{box-shadow:inset 0 0 0 1px #8dccad,inset 0 0 6px #78b99c38}
:root[data-theme="dark"] .planning-matrix .matrix-intervention.selected{box-shadow:inset 0 0 0 1px #2d7357,inset 0 0 5px #f4fff878}
:root[data-theme="dark"] .planning-matrix .matrix-slot.over-slot{background:var(--ui-drop-surface)!important;box-shadow:inset 0 0 0 1px var(--ui-drop-border)}
:root[data-theme="dark"] .planning-matrix .slot.warn-drop{background:var(--ui-warn-surface)!important;box-shadow:inset 0 0 0 2px #c49a45}
:root[data-theme="dark"] .planning-matrix .slot.warn-drop::after{right:auto;bottom:calc(var(--slot-actions-height) + 3px);left:2px;z-index:14;font-size:9px;line-height:1;pointer-events:none}
:root[data-theme="dark"] .more-items{background:#354650;color:#b8d2e0}
:root[data-theme="dark"] .contact{background:#29302d;border-color:#76837c}
:root[data-theme="dark"] .intervention-main .contact.yes{box-shadow:0 0 0 2px #31483d}
:root[data-theme="dark"] .planning-matrix .cycle-zone{background:transparent!important;border-color:#526158}
:root[data-theme="dark"] .cycle-contract-grid::after,:root[data-theme="dark"] .planning-matrix .cycle-contract-grid::after{border-color:#65786e}
:root[data-theme="dark"] .cycle-contract-slot{border-color:#404b45}
:root[data-theme="dark"] .cycle-contract-slot.drop-target{background:#344a3f;box-shadow:inset 1px 0 #76ad91}
:root[data-theme="dark"] .cycle-contract-slot.pm-slot[data-cycle-slot="4"].drop-target{background:linear-gradient(to right,#344a3f 0 calc(100% - 14px),transparent calc(100% - 14px))}
:root[data-theme="dark"] .cycle-contract-slot .cycle-chip,:root[data-theme="dark"] .cycle-day-member{background:transparent;color:#38574a;border-left-color:#587668;box-shadow:inset 0 0 0 1px #9a917c;font-style:italic}
:root[data-theme="dark"] .cycle-contract-slot .cycle-chip>span,:root[data-theme="dark"] .cycle-day-member>span{font-weight:700;font-style:italic}
:root[data-theme="dark"] .cycle-contract-slot .cycle-chip>button,:root[data-theme="dark"] .cycle-day-member>button{color:#5f675e;background:transparent}
:root[data-theme="dark"] .planning-matrix>.matrix-day-block:last-child{border-right-color:#66746c}

/* Dedicated Cycles mode. */
:root[data-theme="dark"] .cycle-month-panel>summary>span,:root[data-theme="dark"] .cycle-month-panel>summary>b,:root[data-theme="dark"] .cycle-month-summary>span{color:#a6d1bc!important}
:root[data-theme="dark"] .cycle-month-period,:root[data-theme="dark"] .cycle-empty-responsible,:root[data-theme="dark"] .cycle-week-heading small{color:var(--dark-text-soft)!important}
:root[data-theme="dark"] .cycle-month-head{background:var(--dark-surface-soft);border-color:var(--dark-border)}
:root[data-theme="dark"] .cycle-month-head>b,:root[data-theme="dark"] .cycle-client small{color:var(--dark-text-soft)}
:root[data-theme="dark"] .cycle-month-row.stripe{background:#2d3430}
:root[data-theme="dark"] .cycle-month-row,:root[data-theme="dark"] .cycle-month-empty,:root[data-theme="dark"] .cycle-month-cell,:root[data-theme="dark"] .cycle-week-heading,:root[data-theme="dark"] .cycle-month-summary>span{border-color:var(--dark-border-soft)}
:root[data-theme="dark"] .cycle-week-heading{color:#cbd5cf}
:root[data-theme="dark"] .cycle-week-heading:hover,:root[data-theme="dark"] .cycle-week-heading:focus{background:var(--dark-hover);color:#dce9e2}
:root[data-theme="dark"] .cycle-week-heading.is-current,:root[data-theme="dark"] .cycle-month-cell.is-current{background:#35473e;border-color:#6f9582}
:root[data-theme="dark"] .cycle-month-cell.drop-target{background:#3a5145;box-shadow:inset 0 0 0 1px #82b69a}
:root[data-theme="dark"] .cycle-month-marker{background:#a78bc2;border-color:#ceb8df;box-shadow:0 0 0 2px #41354d}
:root[data-theme="dark"] .cycle-month-marker.is-dispatched{background:#639f82;border-color:#8ac2a6;box-shadow:0 0 0 2px #2c4438}
:root[data-theme="dark"] .cycle-month-marker.is-manual{background:#b49150;border-color:#d4b570;box-shadow:0 0 0 2px #4b402c}
:root[data-theme="dark"] .cycle-month-summary{background:#303b35;border-color:#536059}

/* Occurrences Cycle créées manuellement dans la matrice mensuelle. */
.manual-cycle-add{max-width:100%;min-height:23px;padding:2px 7px;border:1px solid #95aa9e;border-radius:4px;background:#f8fbf9;color:#315f4d;font-size:10px;font-weight:750;white-space:nowrap}.manual-cycle-add:hover,.manual-cycle-add:focus-visible{border-color:#4f846b;background:#e1eee7;color:#234f3b}.cycle-month-marker.is-created-manually{border:2px solid #2e7192;background:#d7eff9;box-shadow:0 0 0 2px #e8f4f8;cursor:pointer}.cycle-month-marker.is-created-manually.is-dispatched{border-color:#39725a;background:#639f82;box-shadow:0 0 0 2px #deeee5}.manual-cycle-editor{width:min(440px,calc(100vw - 24px))}.manual-cycle-editor label{display:grid;gap:4px}.manual-cycle-editor input,.manual-cycle-editor select{width:100%;min-width:0}.manual-cycle-identity{display:flex;justify-content:space-between;gap:10px;padding:8px 9px;border:1px solid #d6dfda;border-radius:5px;background:#f7f9f8}.manual-cycle-identity span,.manual-cycle-responsible{color:#65736b;font-size:11px}.manual-cycle-warning{margin:0;padding:7px 9px;border-left:3px solid #b58736;background:#faf3df;color:#6f5421;font-size:11px}
:root[data-theme="dark"] .manual-cycle-add{border-color:#638273;background:#303b35;color:#b7d9c8}:root[data-theme="dark"] .manual-cycle-add:hover,:root[data-theme="dark"] .manual-cycle-add:focus-visible{border-color:#8bb7a1;background:#3d5147;color:#e1f2e9}:root[data-theme="dark"] .cycle-month-marker.is-created-manually{border-color:#78bee2;background:#3f83a4;box-shadow:0 0 0 2px #2e4652}:root[data-theme="dark"] .cycle-month-marker.is-created-manually.is-dispatched{border-color:#8ac2a6;background:#639f82;box-shadow:0 0 0 2px #2c4438}:root[data-theme="dark"] .manual-cycle-identity{border-color:#526159;background:#303b35}:root[data-theme="dark"] .manual-cycle-identity span,:root[data-theme="dark"] .manual-cycle-responsible{color:#aebbb4}:root[data-theme="dark"] .manual-cycle-warning{border-color:#d2ad68;background:#4a402e;color:#ead6aa}
:root[data-theme="dark"] .cycle-responsible-name{background:#35483f;color:#a7d2bd}
:root[data-theme="dark"] .cycle-block{border-color:var(--dark-border)}
:root[data-theme="dark"] .cycle-block h4{background:#33423a;color:#b9d8c9}
:root[data-theme="dark"] .cycle-block-head,:root[data-theme="dark"] .cycle-four{background:var(--dark-surface-alt)}
:root[data-theme="dark"] .cycle-compact-line,:root[data-theme="dark"] .cycle-cell{border-color:var(--dark-border-soft)}

/* Floating windows, editors, pickers and color tools. */
:root[data-theme="dark"] .floating .float-handle{background:var(--dark-surface-soft);border-color:var(--dark-border)}
:root[data-theme="dark"] .inters-window.is-pinned{box-shadow:0 0 0 2px #72a98e,0 12px 34px #0008}
:root[data-theme="dark"] .inters-window [data-float-pin][aria-pressed="true"]{background:#3a5045;color:#b3dbc7}
:root[data-theme="dark"] .inters-window-filters select,:root[data-theme="dark"] .planning-request-form input,:root[data-theme="dark"] .planning-request-form select,:root[data-theme="dark"] .planning-request-form button{background:var(--dark-input);border-color:var(--dark-border)}
:root[data-theme="dark"] .planning-request-row,:root[data-theme="dark"] .planning-request-form{background:#2e3732;border-color:var(--dark-border-soft)}
:root[data-theme="dark"] .planning-request-row span,:root[data-theme="dark"] .planning-request-row small{color:var(--dark-text-soft)}
:root[data-theme="dark"] .cycle-picker-list>button,:root[data-theme="dark"] .slot-content-row{background:var(--dark-surface);border-color:var(--dark-border-soft);color:var(--dark-text)}
:root[data-theme="dark"] .cycle-picker-list>button:hover{background:var(--dark-hover)}
:root[data-theme="dark"] .cycle-picker-list>button[data-exceptional="true"]{background:#3f392d}
:root[data-theme="dark"] .cycle-picker-list h5,:root[data-theme="dark"] .cycle-picker-list small,:root[data-theme="dark"] .cycle-period-choice{color:var(--dark-text-soft)}
:root[data-theme="dark"] .occurrence-formatting,:root[data-theme="dark"] .occurrence-color-popover{background:var(--dark-surface-alt);border-color:var(--dark-border)}
:root[data-theme="dark"] .planning-people-fields{border-color:var(--dark-border)}
:root[data-theme="dark"] .occurrence-formatting h3,:root[data-theme="dark"] .occurrence-color-popover small{color:var(--dark-text-soft)}
:root[data-theme="dark"] .occurrence-format-row{border-color:var(--dark-border-soft)}
:root[data-theme="dark"] .occurrence-color-command,:root[data-theme="dark"] .occurrence-color-popover .color-reset,:root[data-theme="dark"] .custom-color{background:var(--dark-input);border-color:var(--dark-border);color:var(--dark-text)}
:root[data-theme="dark"] .occurrence-color-command.is-default.fill-command>i{background:repeating-linear-gradient(135deg,#303633 0 4px,#444d48 4px 8px)}
:root[data-theme="dark"] .color-swatch{background:var(--swatch);border-color:#8b9690}
:root[data-theme="dark"] .modal{background:#0d1210b8}
:root[data-theme="dark"] .editor input,:root[data-theme="dark"] .editor select,:root[data-theme="dark"] .editor textarea,:root[data-theme="dark"] .editor fieldset,:root[data-theme="dark"] .cycle-picker input,:root[data-theme="dark"] .cycle-period-choice select{background:var(--dark-input);border-color:var(--dark-border);color:var(--dark-text)}
:root[data-theme="dark"] .editor footer button{background:#39775c;color:#f5f8f6}
:root[data-theme="dark"] .editor footer .danger{background:#7f4246}
:root[data-theme="dark"] .planning-second-service{background:var(--dark-surface-alt);border-color:var(--dark-border)}
:root[data-theme="dark"] .planning-second-service>header b{color:#a6d1bc}
:root[data-theme="dark"] .business-detail-month{background:var(--dark-surface-alt);border-color:var(--dark-border)}
:root[data-theme="dark"] .business-detail-month>header b{color:#a6d1bc}
:root[data-theme="dark"] .business-detail-month>header span,:root[data-theme="dark"] .business-detail-intro,:root[data-theme="dark"] .business-detail-row>label,:root[data-theme="dark"] .business-detail-metadata,:root[data-theme="dark"] .business-detail-empty{color:var(--dark-text-soft)}
:root[data-theme="dark"] .business-detail-row{border-color:var(--dark-border-soft)}
:root[data-theme="dark"] .business-detail-row>button{background:var(--dark-input);border-color:var(--dark-border);color:#91cbb0}
:root[data-theme="dark"] .business-hours-status.complete{color:#91cbb0}
:root[data-theme="dark"] .business-hours-status.incomplete{color:#e0c17f}
:root[data-theme="dark"] .business-hours-status.excess{color:#e3979b}
:root[data-theme="dark"] .capacity.over{color:#e08b8f}
:root[data-theme="dark"] #toast{background:#151b18;color:#eef3f0;border:1px solid #4a5750;box-shadow:0 6px 22px #0008}

/* Authentication and offline states. */
:root[data-theme="dark"] #auth-screen{background:var(--dark-page)}
:root[data-theme="dark"] .login-card{background:var(--dark-surface);border-color:var(--dark-border);box-shadow:0 16px 45px #0009}
:root[data-theme="dark"] .login-card h1,:root[data-theme="dark"] .login-card label,:root[data-theme="dark"] .auth-identity span{color:var(--dark-text)}
:root[data-theme="dark"] .login-card>p{color:var(--dark-text-soft)}
:root[data-theme="dark"] .login-card input,:root[data-theme="dark"] .auth-identity button{background:var(--dark-input);border-color:var(--dark-border);color:var(--dark-text)}
:root[data-theme="dark"] .login-card button{background:#39775c;color:#f5f8f6}
:root[data-theme="dark"] #auth-message{color:#e3979b}
:root[data-theme="dark"] #offline-capability{background:#4a3f2d;color:#f0cf8d;border-color:#7d6740}
:root[data-theme="dark"] #offline-stale{color:#f0a48d}

/* Transactional Planning reorganization draft. */
.reorganization-command{height:26px;padding:3px 10px;border:1px solid #78937f;border-radius:5px;background:#edf4ee;color:#31563b;font-weight:750;white-space:nowrap}.reorganization-command:hover:not(:disabled){background:#dfece1;border-color:#52745b}.reorganization-command[aria-pressed="true"]{background:#315f44;color:#fff;border-color:#315f44}.reorganization-panel{position:fixed;z-index:48;right:14px;top:72px;width:330px;max-height:calc(100vh - 86px);display:flex;flex-direction:column;padding:0;overflow:hidden;border:1px solid #78937f;box-shadow:0 12px 34px rgba(23,38,29,.24)}.reorganization-panel>header{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:9px 10px;background:#edf4ee;border-bottom:1px solid #b6c9ba;cursor:move;user-select:none}.reorganization-panel>header div{display:grid;gap:1px}.reorganization-panel>header small{font-size:10px;color:#67766b}.reorganization-panel>header button{width:24px;height:24px;padding:0;cursor:pointer}.reorganization-panel>p{margin:0;padding:8px 10px;color:#526259;font-size:11px;line-height:1.35}.reorganization-tray{min-height:118px;max-height:calc(100vh - 285px);margin:0 9px;padding:7px;display:grid;align-content:start;gap:6px;overflow:auto;border:1px dashed #8ca593;border-radius:6px;background:rgba(230,239,232,.72);transition:background .12s,border-color .12s}.reorganization-tray.drop-target{background:#d7e8da;border-color:#315f44}.reorganization-tray-card{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:2px 8px;padding:7px 8px;border:1px solid #9bb09f;border-radius:5px;background:#fff;color:#26352b;cursor:grab}.reorganization-tray-card:active{cursor:grabbing}.reorganization-tray-card b,.reorganization-tray-card small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.reorganization-tray-card span,.reorganization-tray-card em{font-size:10px}.reorganization-tray-card em{font-style:normal;font-weight:700;color:#6f5620}.reorganization-panel>output{min-height:18px;padding:5px 10px 0;color:#9c3f35;font-size:11px;font-weight:700}.reorganization-panel>footer{display:flex;justify-content:flex-end;gap:7px;padding:9px 10px}.reorganization-panel>footer button{min-height:28px}.reorganization-panel>footer .primary{background:#315f44;color:#fff;border-color:#315f44}.reorganization-active #planning .intervention._reorganization-draft,.reorganization-active #planning .reorganization-draft{outline:1px dashed #4f8a61;outline-offset:-2px}.reorganization-active #planning .cycle-zone{pointer-events:none;filter:saturate(.72)}.reorganization-active #planning [data-contact],.reorganization-active #planning [data-slot-delete]{cursor:not-allowed}.reorganization-editor-note{margin:0 0 8px;padding:7px 9px;border:1px solid #b7c8ba;border-radius:5px;background:#edf4ee;color:#3d5944;font-size:11px;font-weight:700}
:root[data-theme="dark"] .reorganization-command{background:#28362d;color:#bdd8c3;border-color:#526b58}:root[data-theme="dark"] .reorganization-command:hover:not(:disabled){background:#314438;border-color:#78937f}:root[data-theme="dark"] .reorganization-command[aria-pressed="true"]{background:#5e936d;color:#102217;border-color:#75a782}:root[data-theme="dark"] .reorganization-panel{border-color:#526b58;box-shadow:0 14px 36px rgba(0,0,0,.48)}:root[data-theme="dark"] .reorganization-panel>header,:root[data-theme="dark"] .reorganization-editor-note{background:#28362d;color:#c9decd;border-color:#526b58}:root[data-theme="dark"] .reorganization-panel>header small,:root[data-theme="dark"] .reorganization-panel>p{color:#aebbb1}:root[data-theme="dark"] .reorganization-tray{background:rgba(29,39,32,.82);border-color:#5f7765}:root[data-theme="dark"] .reorganization-tray.drop-target{background:#304538;border-color:#82aa8c}:root[data-theme="dark"] .reorganization-tray-card{background:#2a302d;color:#e1e8e2;border-color:#526b58}:root[data-theme="dark"] .reorganization-tray-card em{color:#d9bd73}:root[data-theme="dark"] .reorganization-panel>output{color:#f0a48d}
@media(max-width:900px){.reorganization-panel{right:8px;top:62px;width:min(330px,calc(100vw - 16px));max-height:calc(100vh - 70px)}}

@media(max-width:1050px){.business-detail-row{grid-template-columns:minmax(140px,1.4fr) 105px 12px 105px 95px 65px 72px}.business-detail-row.is-new{grid-template-columns:minmax(140px,1.4fr) 105px 12px 105px 95px 65px 72px 62px}}

/* Compact BDD record access and its sticky client context. */
.bdd-access-cell{min-width:118px!important}.bdd-access-cell button{width:100%;padding:4px 7px;border:1px solid #cbd7d0;border-radius:5px;background:#fff;color:var(--green);font-size:10px;font-weight:750;white-space:nowrap}.bdd-access-cell button:disabled{color:#9ba49f;background:#f5f6f5;cursor:not-allowed}.bdd-access-cell button span{display:inline-block;min-width:17px;margin-left:3px;padding:1px 4px;border-radius:9px;background:#e7f0eb;font-size:9px}.bdd-client-cell{font-weight:800;color:#284e3e}.bdd-responsible-cell{font-weight:650}.bdd-sheet{width:min(1100px,96vw);max-height:88vh;padding:0;overflow:auto}.bdd-sheet>.bdd-sheet-header{position:sticky;top:0;z-index:5;display:grid;grid-template-columns:minmax(0,1fr) auto;grid-template-rows:auto auto;gap:5px 12px;padding:9px 14px 8px;background:#fff;border-bottom:1px solid var(--line);box-shadow:0 2px 7px #26342e12}.bdd-sheet-identity{display:flex;align-items:baseline;min-width:0;gap:6px}.bdd-sheet-identity strong{overflow:hidden;color:#214f3d;font-size:17px;text-overflow:ellipsis;white-space:nowrap}.bdd-sheet-identity span{color:#65736b;font-size:12px;font-weight:700;white-space:nowrap}.bdd-sheet-actions{grid-column:1;display:flex;gap:5px}.editor>header .bdd-sheet-actions button{height:28px;padding:3px 9px;border:1px solid #cbd7d0;border-radius:5px;background:#f7f9f7;color:#4d5d54;font-size:10px;font-weight:750}.editor>header .bdd-sheet-actions button[aria-selected="true"]{background:#e4f1ea;border-color:#9fbeae;color:#245b43}.editor>header .bdd-sheet-actions button:disabled{color:#a0a8a3;background:#f4f5f4;cursor:not-allowed}.bdd-sheet-close{grid-column:2;grid-row:1/3;align-self:start}.bdd-sheet-body{padding:12px 14px 15px}.bdd-client-information{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.bdd-client-information>section{padding:11px;border:1px solid #dbe3de;border-radius:7px;background:#fafcfb}.bdd-client-information h3{margin:0 0 8px;color:#315f4d;font-size:13px}.bdd-client-information dl{display:grid;grid-template-columns:145px minmax(0,1fr);gap:6px 10px;margin:0;font-size:11px}.bdd-client-information dt{color:#69766f}.bdd-client-information dd{margin:0;white-space:normal}.bdd-client-months{grid-column:1/-1}.bdd-client-months>div{display:grid;grid-template-columns:repeat(12,minmax(50px,1fr));gap:4px}.bdd-client-months span{display:flex;flex-direction:column;align-items:center;gap:3px;padding:6px 3px;border:1px solid #e0e6e2;border-radius:5px;font-size:10px}.bdd-client-months b{font-size:9px;color:#65736b}
:root[data-theme="dark"] .bdd-access-cell button{background:var(--dark-input);border-color:var(--dark-border);color:#9bcbb4}:root[data-theme="dark"] .bdd-access-cell button:disabled{background:#292f2c;color:#727d77}:root[data-theme="dark"] .bdd-access-cell button span{background:#365044}:root[data-theme="dark"] .bdd-client-cell{color:#b8d8c8}:root[data-theme="dark"] .bdd-sheet>.bdd-sheet-header{background:var(--dark-surface);border-color:var(--dark-border);box-shadow:0 3px 10px #0005}:root[data-theme="dark"] .bdd-sheet-identity strong{color:#b8d8c8}:root[data-theme="dark"] .bdd-sheet-identity span{color:var(--dark-text-soft)}:root[data-theme="dark"] .editor>header .bdd-sheet-actions button{background:var(--dark-input);border-color:var(--dark-border);color:var(--dark-text-soft)}:root[data-theme="dark"] .editor>header .bdd-sheet-actions button[aria-selected="true"]{background:#315343;border-color:#608a76;color:#d5eee2}:root[data-theme="dark"] .bdd-client-information>section{background:var(--dark-surface-alt);border-color:var(--dark-border)}:root[data-theme="dark"] .bdd-client-information h3{color:#a6d1bc}:root[data-theme="dark"] .bdd-client-information dt,:root[data-theme="dark"] .bdd-client-months b{color:var(--dark-text-soft)}:root[data-theme="dark"] .bdd-client-months span{border-color:var(--dark-border-soft)}
@media(max-width:850px){.bdd-client-information{grid-template-columns:1fr}.bdd-client-months{grid-column:auto}.bdd-client-months>div{grid-template-columns:repeat(4,1fr)}}

/* BDD compact index and centralized edit forms. */
.bdd-compact-grid{overflow-x:auto}.bdd-compact-grid table{width:100%;min-width:1120px;table-layout:fixed}.bdd-compact-grid th:nth-child(1){width:13.5%}.bdd-compact-grid th:nth-child(2){width:7.5%}.bdd-compact-grid th:nth-child(3){width:8.5%}.bdd-compact-grid th:nth-child(n+4):nth-child(-n+15){width:3.75%;text-align:center}.bdd-compact-grid th:nth-child(16),.bdd-compact-grid th:nth-child(17){width:12.75%}.bdd-compact-grid td{min-width:0;max-width:none;overflow:hidden;text-overflow:ellipsis}.bdd-compact-grid tbody tr[data-bdd-service]>td{transition:background-color 140ms ease}.bdd-compact-grid tbody tr[data-bdd-service]:hover>td{background:var(--ui-hover)}.bdd-type-cell{text-align:center}.bdd-service-type{display:inline-block;max-width:100%;padding:3px 7px;overflow:hidden;border-radius:11px;font-size:10px;font-weight:750;text-overflow:ellipsis;white-space:nowrap}.bdd-service-type.recurrent{background:#e5f0ea;color:#275d45}.bdd-service-type.cycle{background:#e7edf5;color:#31577f}.bdd-month-unit{display:block;margin-top:2px;color:#68766e;font-size:8px;font-weight:750}.bdd-incomplete{display:block;margin-top:2px;color:#795b1d;font-size:8px;font-style:normal;font-weight:750}.bdd-month-cell{text-align:center;font-variant-numeric:tabular-nums}.bdd-month-cell.is-empty{color:transparent}.bdd-add-client{font-weight:800;color:var(--green)}.bdd-client-form label,.bdd-business-general label{display:flex;flex-direction:column;gap:3px;margin:0;color:#65736b;font-size:10px}.bdd-client-form input,.bdd-client-form textarea,.bdd-business-form input,.bdd-business-form select,.bdd-business-form textarea{width:100%;padding:6px 7px;border:1px solid #cfd9d3;border-radius:5px;background:#fff;color:#26342e}.bdd-client-form textarea,.bdd-business-form textarea{min-height:56px;resize:vertical}.bdd-client-form>footer{grid-column:1/-1;display:flex;justify-content:flex-end}.bdd-client-form>footer button,.bdd-business-form>footer button{padding:7px 11px;border:0;border-radius:5px;background:var(--green);color:#fff;font-size:11px;font-weight:750}.bdd-business-form{display:flex;flex-direction:column;gap:10px}.bdd-business-general{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;padding:11px;border:1px solid #dbe3de;border-radius:7px;background:#fafcfb}.bdd-business-general h3{grid-column:1/-1;margin:0;color:#315f4d;font-size:13px}.bdd-business-general .wide{grid-column:span 2}.bdd-business-active{align-self:end;flex-direction:row!important;align-items:center;padding-bottom:7px}.bdd-business-active input{width:auto}.bdd-business-targets{padding:11px;border:1px solid #dbe3de;border-radius:7px;background:#fafcfb}.bdd-business-targets>header{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}.bdd-business-targets h3{margin:0;color:#315f4d;font-size:13px}.bdd-business-targets header small{color:#68766e;font-size:9px}.bdd-business-targets output{font-size:14px;font-weight:800;color:#285d45}.bdd-business-targets>div{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:6px}.bdd-business-targets label{display:grid;grid-template-columns:30px minmax(0,1fr) 24px;align-items:center;gap:3px;color:#65736b;font-size:9px}.bdd-business-targets input{min-width:0;height:28px!important;padding:3px 5px!important;text-align:right}.bdd-business-targets label small{text-align:left}.bdd-business-form>footer{display:flex;justify-content:flex-end}.bdd-business-decomposition{margin-top:13px;padding-top:11px;border-top:1px solid #dbe3de}.bdd-business-decomposition>h3{margin:0 0 8px;color:#315f4d;font-size:13px}.bdd-create-form{width:min(560px,94vw)}.bdd-create-form>p{margin:7px 0;color:var(--muted);font-size:10px}.bdd-create-form textarea{min-height:60px}
:root[data-theme="dark"] .bdd-service-type.recurrent{background:#315343;color:#c3e2d3}:root[data-theme="dark"] .bdd-service-type.cycle{background:#34465b;color:#c4d8ed}:root[data-theme="dark"] .bdd-month-unit{color:var(--dark-text-soft)}:root[data-theme="dark"] .bdd-incomplete{color:#efd28c}:root[data-theme="dark"] .bdd-client-form input,:root[data-theme="dark"] .bdd-client-form textarea,:root[data-theme="dark"] .bdd-business-form input,:root[data-theme="dark"] .bdd-business-form select,:root[data-theme="dark"] .bdd-business-form textarea{background:var(--dark-input);border-color:var(--dark-border);color:var(--dark-text)}:root[data-theme="dark"] .bdd-business-general,:root[data-theme="dark"] .bdd-business-targets{background:var(--dark-surface-alt);border-color:var(--dark-border)}:root[data-theme="dark"] .bdd-business-general h3,:root[data-theme="dark"] .bdd-business-targets h3,:root[data-theme="dark"] .bdd-business-decomposition>h3{color:#a6d1bc}:root[data-theme="dark"] .bdd-business-general label,:root[data-theme="dark"] .bdd-business-targets label,:root[data-theme="dark"] .bdd-business-targets header small{color:var(--dark-text-soft)}:root[data-theme="dark"] .bdd-business-targets output{color:#a6d1bc}:root[data-theme="dark"] .bdd-business-decomposition{border-color:var(--dark-border)}
@media(max-width:1000px){.bdd-business-general{grid-template-columns:repeat(2,minmax(0,1fr))}.bdd-business-targets>div{grid-template-columns:repeat(4,minmax(0,1fr))}}

/* Final manual-entry stabilization: roomy comments, legible duos and explicit day composition. */
#planning .planning-matrix .slot-intervention-zone>.matrix-intervention .planning-remark,
#planning .planning-matrix .paired-remark{
 box-sizing:border-box;
 height:calc(var(--text-line-height) + 3px)!important;
 padding:1px 5px 2px!important;
}
#planning .day-full-interventions>.matrix-intervention .planning-remark{
 box-sizing:border-box;
 min-height:calc(var(--text-line-height) + 2px);
 max-height:calc((var(--text-line-height) * 2) + 4px);
 padding:1px 5px 2px!important;
}
#planning.density-compact .planning-matrix{--paired-client-min:64px}
#planning.density-normal .planning-matrix{--paired-client-min:72px}
#planning.density-large .planning-matrix{--paired-client-min:82px}
#planning .planning-matrix .paired-client-zone{min-width:0!important}
#planning .day-full-interventions>.matrix-intervention:not(.selected){border-left-color:var(--ui-border);box-shadow:none}
#planning .cycle-day-member.drop-target{background:var(--ui-drop-surface);box-shadow:inset 0 0 0 1px var(--ui-drop-border)}
#planning .cycle-day-slot.drop-target{box-shadow:inset 0 0 0 1px var(--ui-drop-border)}

/* Prestation 1 and Prestation 2 deliberately share the same editor component metrics. */
/* UX 2.1: only the editor body scrolls; header/footer reserve their own space. */
.editor.planning-editor{display:flex;flex-direction:column;overflow:hidden}
.planning-editor>.planning-editor-header{flex:0 0 auto;gap:8px;min-width:0}
.planning-editor-identity{flex:1;min-width:0}
.planning-editor-identity>b,.planning-editor-identity>small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.planning-editor-identity>small{font-size:11px;line-height:16px;font-weight:400;color:var(--ui-text-soft)}
.planning-editor>.planning-editor-header>button{flex:0 0 auto}
.planning-editor>.planning-editor-body{flex:1 1 auto;min-height:0;overflow:auto;padding:3px;margin:0 -3px;scroll-padding-block:4px}
.planning-editor-body>label{display:block;margin:10px 0}
.planning-editor>footer{flex:0 0 auto;flex-wrap:wrap;margin-top:0;padding-top:8px;border-top:1px solid var(--ui-border)}
.editor.planning-editor>footer button.secondary{background:transparent;color:var(--ui-text-soft)}
.editor.planning-editor>footer button.primary{font-weight:700}
.editor.planning-editor>footer button.danger{background:transparent;color:#ae4d53}
.editor.planning-editor>footer button.secondary:hover,.editor.planning-editor>footer button.danger:hover{background:var(--ui-surface-alt)}
.planning-editor>footer button:focus-visible{outline:2px solid #628ba2;outline-offset:1px}
:root[data-theme="dark"] .editor.planning-editor>footer button.danger{background:transparent;color:#e5a5a8}
:root[data-theme="dark"] .editor.planning-editor>footer button.danger:hover{background:var(--ui-surface-alt)}
:root[data-theme="dark"] .planning-editor .planning-person-row>label,
:root[data-theme="dark"] .planning-editor .planning-participation-controls>label,
:root[data-theme="dark"] .planning-editor .planning-people-fields>h3{color:var(--dark-text-soft)}
/* UX 2.2: keep technical slots, display only the real team and the explicitly opened addition. */
.planning-editor .planning-person-row{grid-template-columns:minmax(135px,.8fr) minmax(320px,2.2fr) 24px}
.planning-editor .planning-person-row[hidden]{display:none}
.planning-editor .planning-person-row[data-role="responsible"] [data-planning-person-role]{font-weight:700;color:var(--ui-accent)}
.planning-editor .planning-people-fields>h3 small{font-size:inherit;font-weight:400;margin-left:8px}
.planning-editor .planning-person-remove{width:24px;height:30px;padding:0;border:0;background:transparent;color:var(--ui-text-soft);font-size:18px}
.planning-editor .planning-person-add{padding:4px 0;margin-top:4px;border:0;background:transparent;color:var(--ui-text-soft);font-size:11px}
.planning-editor .planning-person-add:hover,.planning-editor .planning-person-remove:hover{color:var(--ui-text)}
.planning-editor .planning-person-add:disabled{opacity:.5;cursor:default}
.planning-editor .planning-person-add:focus-visible,.planning-editor .planning-person-remove:focus-visible{outline:2px solid #628ba2;outline-offset:1px}
.planning-editor .planning-editor-duration{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 12px;margin:8px 0 0;font-size:11px;color:var(--ui-text-soft)}
.planning-editor .planning-editor-duration strong{color:var(--ui-text);font-size:13px}
@media(max-width:760px){.planning-editor .planning-person-row{grid-template-columns:minmax(0,1fr) 24px}.planning-editor .planning-participation-controls{grid-column:1/-1;grid-row:2}.planning-editor .planning-person-remove,.planning-editor .planning-person-remove-space{grid-column:2;grid-row:1}}
.planning-editor .planning-service-block{margin:10px 0;padding:9px;border:1px solid var(--ui-border);border-radius:7px;background:var(--ui-surface-alt)}
.planning-editor .planning-service-block>header{display:flex;align-items:center;justify-content:space-between;min-height:24px;margin-bottom:6px}
.planning-editor .planning-service-block>header b{color:var(--ui-accent);font-size:12px}
.planning-editor .planning-service-block>header button{width:24px;height:24px;padding:0;border:0;background:transparent;color:var(--ui-text-soft);font-size:18px}
.planning-editor .planning-service-block>label,
.planning-editor .planning-service-block>[data-free-creation]>label,
.planning-editor .planning-service-block>[data-second-free-creation]>label{display:grid;gap:3px;margin:6px 0;font-size:11px}
.planning-editor .planning-service-block input,
.planning-editor .planning-service-block select{box-sizing:border-box;width:100%;min-width:0}

/* Shared visual language: the BDD is the reference for Planning and Listing. */
:root{
 --ui-page:#f3f5f2;
 --ui-surface:#fff;
 --ui-surface-alt:#f7f9f7;
 --ui-surface-soft:#e9eeea;
 --ui-input:#fff;
 --ui-text:#26342e;
 --ui-text-soft:#68766e;
 --ui-border:#cbd7d0;
 --ui-border-soft:#dfe5e1;
 --ui-border-strong:#9eaca3;
 --ui-accent:#245b43;
 --ui-accent-soft:#e4f1ea;
 --ui-accent-border:#9fbeae;
 --ui-hover:#edf4f0;
 --ui-selected:#e4f1ea;
 --ui-drop-surface:#e8f0eb;
 --ui-drop-border:#6f957f;
 --ui-warn-surface:#faf3e4;
 --ui-progress-surface:#f3ead5;
 --ui-progress-border:#c2a45f;
 --ui-progress-text:#6f541f;
 --ui-comment-accent:#f1a6f2;
 --ui-comment-surface:#fcf5fc;
 --ui-comment-text:#834f84;
 --ui-contact-surface:#e5f3fc;
 --ui-contact-border:#4d91bd;
 --ui-contact-idle-border:#cbd3ce;
 --ui-contact-idle-hover:#aeb9b2;
 --ui-contact-hover:#d9eefb;
 --ui-contact-hover-border:#226da9;
 --ui-contact-active:#e07a5f;
 --ui-contact-active-hover:#c96850;
 --ui-contact-ring:#d6eaff;
 --ui-responsible:#91a9ad;
}
:root[data-theme="dark"]{
 --ui-page:var(--dark-page);
 --ui-surface:var(--dark-surface);
 --ui-surface-alt:var(--dark-surface-alt);
 --ui-surface-soft:var(--dark-surface-soft);
 --ui-input:var(--dark-input);
 --ui-text:var(--dark-text);
 --ui-text-soft:var(--dark-text-soft);
 --ui-border:var(--dark-border);
 --ui-border-soft:var(--dark-border-soft);
 --ui-border-strong:#66746c;
 --ui-accent:#9bcbb4;
 --ui-accent-soft:#315343;
 --ui-accent-border:#608a76;
 --ui-hover:var(--dark-hover);
 --ui-selected:var(--dark-selected);
 --ui-drop-surface:#34423b;
 --ui-drop-border:#78a990;
 --ui-warn-surface:#443b2c;
 --ui-progress-surface:#4b412d;
 --ui-progress-border:#aa884a;
 --ui-progress-text:#efd08a;
 --ui-comment-accent:#c77cc8;
 --ui-comment-surface:#3b303b;
 --ui-comment-text:#e5a9e6;
 --ui-contact-surface:#29465a;
 --ui-contact-border:#75b6df;
 --ui-contact-idle-border:#56615b;
 --ui-contact-idle-hover:#748179;
 --ui-contact-hover:#31566e;
 --ui-contact-hover-border:#8ed0f4;
 --ui-contact-active:#e07a5f;
 --ui-contact-active-hover:#ed927a;
 --ui-contact-ring:#284b61;
}

/* The secondary button shared by BDD records and small application actions. */
.bdd-access-cell button,
#planning .slot-actions button,
#listing .sheet-line button{
 border-color:var(--ui-border);
 border-radius:5px;
 background:var(--ui-surface);
 color:var(--ui-accent);
}
.bdd-access-cell button:hover:not(:disabled),
#planning .slot-actions button:hover:not(:disabled),
#planning .slot-actions button:focus:not(:disabled),
#listing .sheet-line button:hover,
#listing .sheet-line button:focus{
 background:var(--ui-hover);
 border-color:var(--ui-accent-border);
 color:var(--ui-accent);
}
:root[data-theme="dark"] .bdd-access-cell button{background:var(--ui-input);border-color:var(--ui-border);color:var(--ui-accent)}

/* Planning: crisp neutral surfaces without changing any established dimension. */
#planning .planning-matrix{background:var(--ui-surface);border-color:var(--ui-border-strong)}
#planning .matrix-worker-head,
#planning .matrix-day-head,
#planning .matrix-period{
 background:var(--ui-surface-soft);
 border-color:var(--ui-border-strong);
 color:var(--ui-text);
}
#planning .matrix-worker{background:var(--ui-surface);border-color:var(--ui-border)}
#planning .matrix-worker.stripe{background:var(--ui-surface-alt)}
#planning .matrix-day-block{background:var(--ui-surface);border-color:var(--ui-border-strong)}
#planning .matrix-day-block.stripe{background:var(--ui-surface-alt)}
:root[data-theme="dark"] #planning .matrix-worker:not(.stripe),
:root[data-theme="dark"] #planning .matrix-day-block:not(.stripe){background:#222824}
#planning .day-planning{background:transparent;border-color:var(--ui-border)}
#planning .matrix-slot,
#planning .matrix-slot.stripe,
#planning .stripe .day-planning{background:transparent!important;border-color:var(--ui-border-soft)}
#planning .slot-intervention-zone,
#planning .slot-actions,
#planning .cycle-contract-grid,
#planning .cycle-contract-slot:not(.drop-target),
#planning .cycle-add-reserve{background-color:transparent!important}
#planning .day-planning>.matrix-slot:first-child{border-bottom:1px dashed var(--ui-border-strong)}
#planning .matrix-slot:hover{background:var(--ui-hover)!important}
#planning .cycle-zone{background:transparent!important;border-color:var(--ui-border)}
#planning .cycle-contract-grid::after{border-color:var(--ui-border-strong)}
#planning .cycle-contract-slot{border-color:var(--ui-border-soft)}

/* Three default signatures: client label, secondary comment and duration capsule. */
#planning .matrix-intervention{
 background:var(--ui-surface);
 border-left-color:var(--ui-accent-border);
 color:var(--ui-text);
 box-shadow:inset 0 0 0 1px var(--ui-border-soft);
}
#planning .matrix-slot .matrix-intervention{border-left-color:transparent}
#planning .matrix-intervention:hover{background:var(--ui-hover)}
#planning .planning-matrix .intervention-main>.intervention-client{
 display:inline-flex;
 align-items:center;
 align-self:center;
 height:calc(var(--text-line-height) + 4px);
 margin-left:0;
 padding:1px 5px;
 max-width:100%;
 border-radius:4px;
 background-color:#1b383d;
 color:var(--ui-accent);
 box-shadow:inset 0 0 0 1px var(--ui-accent-border);
 font-weight:800;
}
#planning .planning-matrix .intervention-main>.contact{
 align-self:center;
 justify-self:center;
 background:transparent;
 border-color:var(--ui-contact-idle-border);
 border-radius:50%;
 color:transparent;
 box-shadow:none;
 opacity:1;
}
#planning .planning-matrix .intervention-main>.contact:not(.yes):hover{
 background:transparent;
 border-color:var(--ui-contact-idle-hover);
 box-shadow:none;
 opacity:1;
}
#planning .planning-matrix .intervention-main>.contact:not(.yes):focus-visible{
 background:var(--ui-contact-hover);
 border-color:var(--ui-contact-hover-border);
 box-shadow:0 0 0 2px var(--ui-contact-ring);
 opacity:.45;
}
#planning .planning-matrix .intervention-main>.contact.yes{
 background:var(--ui-contact-active)!important;
 border-color:var(--ui-contact-hover-border);
 box-shadow:0 0 0 2px var(--ui-contact-ring);
 opacity:1;
}
#planning .planning-matrix .intervention-main>.contact.yes:hover,
#planning .planning-matrix .intervention-main>.contact.yes:focus{background:var(--ui-contact-active-hover)!important}
#planning .planning-matrix .planning-remark{
 --comment-accent:var(--ui-comment-accent);
 background-color:var(--ui-comment-surface);
 color:var(--ui-comment-text);
 border-radius:4px;
 box-shadow:inset 2px 0 var(--comment-accent),inset 0 0 0 1px color-mix(in srgb,var(--comment-accent) 58%,var(--ui-border));
 font-style:italic;
 top:calc(var(--client-top) + var(--text-line-height) + var(--client-comment-gap) + 4px);
}
#planning .planning-matrix .planning-remark[style^="color:"]{--comment-accent:currentColor}
#planning .planning-matrix .intervention-main>.intervention-duration{
 display:inline-flex;
 align-items:center;
 justify-content:center;
 height:calc(var(--text-line-height) + 4px);
 margin-right:0;
 padding:1px 5px;
 border-radius:4px;
 background:var(--ui-input);
 color:var(--ui-accent)!important;
 box-shadow:inset 0 0 0 1px var(--ui-accent-border);
 font-weight:700!important;
}
#planning .planning-matrix .slot-actions{
 background:transparent;
 border-color:transparent;
 box-shadow:none;
}
#planning .planning-matrix .slot-actions button,
#planning .planning-matrix .slot-add{background:transparent;color:var(--ui-accent)}
#planning .planning-matrix .slot-actions button{opacity:.58}
#planning .planning-matrix .slot-actions button:hover:not(:disabled),
#planning .planning-matrix .slot-actions button:focus:not(:disabled){background:var(--ui-hover);border-color:transparent;opacity:1}
#planning .planning-matrix .slot-actions .slot-delete:hover:not(:disabled),
#planning .planning-matrix .slot-actions .slot-delete:focus:not(:disabled){background:#f8ecec;color:#a34747}
#planning .planning-matrix .slot-actions .slot-add-second{font-size:var(--slot-action-font);font-weight:650;color:var(--ui-accent)}
:root[data-theme="dark"] #planning .planning-matrix .slot-actions .slot-delete:hover:not(:disabled),
:root[data-theme="dark"] #planning .planning-matrix .slot-actions .slot-delete:focus:not(:disabled){background:#4a3234;color:#e3979b}

/* The half-day marker owns a narrow vertical action rail; the card uses the remaining height. */
#planning.density-compact .planning-matrix{--slot-action-column:10px;--slot-action-height:13px;--slot-action-font:10px;--slot-action-top:13px;--client-top:11px;--client-comment-gap:5px;--ui-period-mark:#657f73}
#planning.density-normal .planning-matrix{--slot-action-column:10px;--slot-action-height:15px;--slot-action-font:11px;--slot-action-top:14px;--client-top:11px;--client-comment-gap:6px;--ui-period-mark:#657f73}
#planning.density-large .planning-matrix{--slot-action-column:11px;--slot-action-height:19px;--slot-action-font:13px;--slot-action-top:18px;--client-top:20px;--client-comment-gap:8px;--ui-period-mark:#657f73}
#planning.density-compact .planning-matrix .intervention-main{grid-template-columns:11px minmax(0,1fr) 42px}
#planning.density-normal .planning-matrix .intervention-main{grid-template-columns:12px minmax(0,1fr) 47px}
#planning.density-large .planning-matrix .intervention-main{grid-template-columns:14px minmax(0,1fr) 54px}
#planning .planning-matrix .matrix-slot{
 grid-template-columns:var(--slot-action-column) minmax(0,1fr);
 grid-template-rows:minmax(0,1fr);
 column-gap:1px;
 padding:1px 3px 1px 1px;
}
#planning.density-normal .planning-matrix .matrix-slot{padding-top:1px;padding-bottom:0}
#planning .planning-matrix .slot-intervention-zone{grid-column:2;grid-row:1;width:100%;height:100%}
#planning .planning-matrix .paired-interventions{position:relative;display:block;width:100%;height:100%;min-width:0;overflow:hidden}
#planning .planning-matrix .paired-main{position:absolute;left:3px;right:3px;top:var(--client-top);display:flex!important;width:auto;height:var(--text-line-height);align-items:center;gap:6px;line-height:var(--text-line-height)}
#planning .planning-matrix .paired-client-zone{display:grid;grid-template-columns:var(--paired-contact-width) minmax(0,1fr);flex:0 0 auto;width:max-content;max-width:100%;min-width:calc(var(--paired-contact-width) + 20px);align-items:center;gap:3px;height:calc(var(--text-line-height) + 4px);margin-top:-2px;overflow:hidden;cursor:grab}
#planning .planning-matrix .paired-client-zone>.contact{position:static;align-self:center;justify-self:center;width:var(--paired-contact-width);height:var(--paired-contact-width);padding:0;border:1px solid var(--ui-contact-idle-border);border-radius:50%;background:transparent;color:transparent;box-shadow:none;font-size:0;opacity:1}
#planning .planning-matrix .paired-client-zone>.contact:not(.yes):hover{background:transparent;border-color:var(--ui-contact-idle-hover);box-shadow:none}
#planning .planning-matrix .paired-client-zone>.contact.yes{background:var(--ui-contact-active)!important;border-color:var(--ui-contact-hover-border);box-shadow:0 0 0 2px var(--ui-contact-ring)}
#planning .planning-matrix .paired-client-zone>.contact.yes:hover,
#planning .planning-matrix .paired-client-zone>.contact.yes:focus{background:var(--ui-contact-active-hover)!important}
#planning .planning-matrix .paired-client-zone>.intervention-client{display:block;width:max-content;max-width:100%;min-width:0;height:calc(var(--text-line-height) + 4px);padding:1px 3px;overflow:hidden;border-radius:4px;background-color:#1b383d;color:var(--ui-accent);box-shadow:inset 0 0 0 1px var(--ui-accent-border);font-weight:800;line-height:var(--text-line-height);text-overflow:ellipsis;white-space:nowrap}
#planning .planning-matrix .paired-duration{box-sizing:border-box;flex:0 0 var(--paired-duration-column);width:var(--paired-duration-column);min-width:var(--paired-duration-column);margin-top:-2px;margin-left:auto;padding:1px 5px;align-self:center}
#planning .planning-matrix .paired-remark{position:absolute!important;left:3px;right:3px;top:calc(var(--client-top) + var(--text-line-height) + var(--client-comment-gap) + 4px);width:auto;height:calc(var(--text-line-height) + 1px)!important;line-height:var(--text-line-height)!important;padding:0 3px!important;white-space:nowrap!important}
#planning .planning-matrix .paired-remark.distinct-comments{font-size:.86em}
#planning.density-compact .planning-matrix{--paired-contact-width:11px;--paired-duration-column:42px}
#planning.density-normal .planning-matrix{--paired-contact-width:12px;--paired-duration-column:47px}
#planning.density-large .planning-matrix{--paired-contact-width:14px;--paired-duration-column:54px}
.planning-contract-fields{margin:8px 0;padding:8px;border:1px solid #cfb978;border-radius:6px;background:#fbf8ed}.planning-contract-fields>p{margin:0 0 6px;color:#6c5723;font-size:11px}.contract-planned-list,.contract-manual-list{display:grid;gap:4px}.contract-target-choice{display:grid;grid-template-columns:18px minmax(0,1fr) auto;align-items:center;gap:5px;padding:5px 6px;border:1px solid #e1d5ad;border-radius:4px;background:#fff}.contract-target-choice small{color:#79683d}.contract-add-unplanned{margin:7px 0 4px}.planning-contract-fields>[data-contract-picker]{display:grid;gap:3px;margin:5px 0;font-size:11px}.contract-manual-choice{margin-top:5px;padding:6px;border:1px dashed #c9ae5e;border-radius:5px;background:#fff}.contract-manual-choice>header{display:flex;align-items:center;justify-content:space-between}.contract-manual-choice>header button{width:22px;height:22px;padding:0;border:0;background:transparent}.contract-manual-choice p{margin:3px 0;font-size:10px}.contract-manual-choice>label{display:block;margin:4px 0;font-size:10px}
:root[data-theme="dark"] .planning-contract-fields{border-color:#8e7840;background:#28271f}:root[data-theme="dark"] .planning-contract-fields>p{color:#e2cb83}:root[data-theme="dark"] .contract-target-choice,:root[data-theme="dark"] .contract-manual-choice{border-color:#776a43;background:#343229;color:#ede9dd}:root[data-theme="dark"] .contract-target-choice small{color:#c9bc92}
.contract-continue-cycle{margin:7px 0 4px}.contract-continuation-list{display:grid;gap:4px;margin-top:3px}.contract-continuation-choice{display:grid;grid-template-columns:18px minmax(0,1fr);gap:1px 5px;padding:5px 6px;border:1px dashed #c9ae5e;border-radius:4px;background:#fff}.contract-continuation-choice input{grid-row:1/3;align-self:center}.contract-continuation-choice span{font-weight:700}.contract-continuation-choice small{color:#79683d;font-size:10px}
:root[data-theme="dark"] .contract-continuation-choice{border-color:#8e7840;background:#343229;color:#ede9dd}:root[data-theme="dark"] .contract-continuation-choice small{color:#c9bc92}
#planning .planning-matrix .slot-actions{
 grid-column:1;
 grid-row:1;
 align-self:stretch;
 box-sizing:border-box;
 width:var(--slot-action-column);
 height:100%;
 padding-top:var(--slot-action-top);
 display:flex;
 flex-direction:column;
 align-items:stretch;
 justify-content:flex-start;
 gap:0;
}
#planning .planning-matrix .slot-actions button{
 flex:0 0 var(--slot-action-height);
 width:100%;
 height:var(--slot-action-height);
 min-width:0;
 min-height:0;
 padding:0;
 border-radius:3px;
 font-size:var(--slot-action-font);
}
#planning .planning-matrix .period-hint{left:1px;top:2px;width:var(--slot-action-column);text-align:center;color:var(--ui-period-mark)}
#planning .planning-matrix .matrix-slot[data-period="pm"] .period-hint{color:#737b90}
:root[data-theme="dark"] #planning .planning-matrix{--ui-period-mark:#96b7a8}
:root[data-theme="dark"] #planning .planning-matrix .matrix-slot[data-period="pm"] .period-hint{color:#a7aec2}
:root[data-theme="dark"] #planning .planning-matrix .slot.warn-drop::after{right:3px;bottom:2px;left:auto}
#planning .planning-matrix .cycle-add{display:grid;place-items:center;line-height:1;text-align:center}
#planning .planning-matrix .matrix-slot.selected{background:var(--ui-selected)!important}
#planning .planning-matrix .matrix-slot.selected::before{inset:0 0 1px;box-shadow:inset 0 0 0 1px var(--ui-accent-border),inset 0 0 6px color-mix(in srgb,var(--ui-accent-border) 24%,transparent)}
#planning .planning-matrix .matrix-intervention.selected{box-shadow:inset 0 0 0 1px var(--ui-accent),inset 0 0 5px color-mix(in srgb,var(--ui-accent) 18%,transparent)}
#planning .planning-matrix .matrix-intervention.selected::after{
 content:"";
 position:absolute;
 inset:0 0 1px;
 z-index:4;
 pointer-events:none;
 border-radius:inherit;
 box-shadow:inset 0 0 0 1px var(--ui-accent),inset 0 0 5px color-mix(in srgb,var(--ui-accent) 18%,transparent);
}
#planning .planning-matrix .matrix-slot.over-slot{background:var(--ui-drop-surface)!important;box-shadow:inset 0 0 0 1px var(--ui-drop-border)!important}
#planning .planning-matrix .matrix-slot.warn-drop{background:var(--ui-warn-surface)!important;box-shadow:inset 0 0 0 2px #c49a45}
#planning .matrix-worker .cycle-completion,
#planning .matrix-worker .cycle-completion.complete{
 display:inline-flex;
 align-items:center;
 align-self:flex-start;
 max-width:100%;
 padding:1px 4px;
 border-radius:4px;
 background:var(--ui-progress-surface);
 color:var(--ui-progress-text);
 box-shadow:inset 0 0 0 1px var(--ui-progress-border);
 overflow:hidden;
 text-overflow:ellipsis;
}
#planning .matrix-worker .cycle-completion.capacity-alert{--ui-progress-surface:#f6e7e5;--ui-progress-border:#a95f56;color:#aa3333}
:root[data-theme="dark"] #planning .matrix-worker .cycle-completion.capacity-alert{--ui-progress-surface:#482d2a;color:#e08b8f}
#planning .cycle-contract-slot .cycle-chip,
#planning .cycle-day-member{
 background:var(--ui-progress-surface);
 border-left-color:var(--ui-progress-border);
 color:var(--ui-progress-text);
 box-shadow:inset 0 0 0 1px var(--ui-progress-border);
 font-size:11px;
}
#planning .cycle-contract-slot .cycle-chip>button,
#planning .cycle-day-member>button{background:transparent;color:var(--ui-progress-text)}
#planning.density-large .cycle-contract-slot .cycle-chip,
#planning.density-large .cycle-day-member{font-size:13px}

/* Listing: the same surfaces, borders and secondary-action language as the BDD. */
#listing .listing-worker{background:var(--ui-surface);border-color:var(--ui-border)}
#listing .listing-worker h2,
#listing .listing-sheet h3,
#listing .list-head{
 background:var(--ui-surface-soft);
 border-color:var(--ui-border);
 color:var(--ui-accent);
}
#listing .listing-sheet>div{background:var(--ui-surface);border-color:var(--ui-border)}
#listing .listing-client-zone{min-height:28px;padding:2px;background:var(--ui-surface-alt);color:var(--ui-text)}
#listing .sheet-line:not(.placed){
 background:var(--ui-surface);
 color:var(--ui-text);
 box-shadow:inset 3px 0 var(--ui-accent-border),inset 0 0 0 1px var(--ui-border-soft);
}
#listing .sheet-line:not(.placed):hover{background:var(--ui-hover)}
#listing .sheet-line small{color:var(--ui-text-soft)}
#listing .sheet-line.placed{background:var(--ui-surface-soft);color:var(--ui-text-soft);opacity:.72}
#listing .cycle-charge{background:var(--ui-surface-alt);color:var(--ui-text-soft)}
#listing .week-col footer,
#listing .month-summary{background:var(--ui-surface);border-color:var(--ui-border)}
#listing .drop-hint{color:var(--ui-text-soft)}
#listing .listing-allocation-title button{color:var(--ui-accent)}
#listing .listing-allocation-title button:hover,
#listing .listing-allocation-title button:focus{background:var(--ui-accent-soft);border-color:var(--ui-accent-border)}
#listing .listing-remaining.positive{color:#2f7658}
#listing .listing-remaining.zero{color:var(--ui-text-soft)}
#listing .listing-remaining.negative,
#listing .month-summary .negative{color:#a34747}
#listing .list-card{
 background:var(--ui-surface);
 border-color:var(--ui-border);
 border-left-color:var(--ui-accent-border);
 color:var(--ui-text);
 box-shadow:inset 0 0 0 1px var(--ui-border-soft);
}
#listing .list-card:hover{background:var(--ui-hover)}
#listing .list-card small,
#listing .list-card em{color:var(--ui-text-soft)}
:root[data-theme="dark"] #listing .listing-worker h2,
:root[data-theme="dark"] #listing .listing-sheet h3,
:root[data-theme="dark"] #listing .list-head{background:var(--ui-surface-soft);border-color:var(--ui-border);color:var(--ui-accent)}
:root[data-theme="dark"] #listing .listing-client-zone{background:var(--ui-surface-alt);color:var(--ui-text)}
:root[data-theme="dark"] #listing .sheet-line:not(.placed){background:var(--ui-surface);color:var(--ui-text);box-shadow:inset 3px 0 var(--ui-accent-border),inset 0 0 0 1px var(--ui-border-soft)}
:root[data-theme="dark"] #listing .sheet-line:not(.placed) small{color:var(--ui-text-soft)}
:root[data-theme="dark"] #listing .sheet-line.placed{background:var(--ui-surface-soft);color:var(--ui-text-soft);opacity:.72}
:root[data-theme="dark"] #listing .cycle-charge{background:var(--ui-surface-alt);color:var(--ui-text-soft)}
:root[data-theme="dark"] #listing .listing-remaining.positive{color:#8fcaae}
:root[data-theme="dark"] #listing .listing-remaining.negative,
:root[data-theme="dark"] #listing .month-summary .negative{color:#ee999e}

/* Finitions Listing et lisibilité des mois longs, sans modifier les lignes du Planning. */
.app-toolbar .month-period-control{width:126px}
.app-toolbar .month-period-control select{width:78px}
#listing .listing-card-duration{background:transparent;border-color:transparent;color:var(--ui-progress-text)}
#listing .listing-card-placed-status{color:#79b99d;font-weight:850;letter-spacing:.01em}
#listing .listing-card-action-placeholder{width:17px;height:17px}
#listing .sheet-line.placed{cursor:default}
#listing .listing-card-comment{border-left-color:var(--ui-comment-accent);color:var(--ui-comment-text)}
:root[data-theme="dark"] #listing .listing-card-comment{color:var(--ui-comment-text)}

/* Shared responsible identity: the Planning and Listing use one restrained accent. */
.responsible-name{color:var(--ui-responsible)!important}
#listing .listing-card-remove{color:var(--ui-text-muted)}
#listing .listing-card-remove:hover,
#listing .listing-card-remove:focus{background:color-mix(in srgb,#a34747 12%,transparent);color:#a34747}
.listing-item-form{width:min(620px,94vw);max-height:92vh;overflow:auto}
.listing-recurrent-fields{display:grid;gap:7px;margin:3px 0 7px;padding:9px;border:1px solid var(--ui-border);border-radius:7px;background:var(--ui-surface-alt)}
.listing-recurrent-fields[hidden],.listing-recurrent-fields [hidden]{display:none!important}
.listing-recurrent-fields>p{margin:0 0 2px;color:var(--ui-text-soft);font-size:10px}
.listing-recurrent-hint{min-height:19px;padding:6px 8px;border-left:3px solid var(--ui-accent-border);background:var(--ui-surface);color:var(--ui-text-soft);font-size:10px;line-height:1.35}
.listing-recurrent-confirm{display:flex!important;align-items:center;gap:7px;padding:5px 7px;border:1px solid #c69a4b;border-radius:5px;background:var(--ui-warn-surface);color:var(--ui-text);font-size:10px;font-weight:700}
.listing-recurrent-confirm input{width:auto!important;margin:0}
.listing-recurrent-identity{display:flex;align-items:baseline;gap:8px;margin:7px 0;padding:7px 9px;border-left:3px solid var(--ui-accent-border);background:var(--ui-surface-alt);color:var(--ui-text)}
.listing-recurrent-identity b{color:var(--ui-accent);font-size:10px;white-space:nowrap}
.listing-recurrent-identity span{min-width:0;overflow:hidden;color:var(--ui-text-soft);font-size:10px;text-overflow:ellipsis;white-space:nowrap}
:root[data-theme="dark"] .listing-recurrent-fields,:root[data-theme="dark"] .listing-recurrent-identity{background:var(--ui-surface-alt);border-color:var(--ui-border)}
:root[data-theme="dark"] .listing-recurrent-hint{background:var(--ui-surface)}
.inters-listing-card{min-width:0}
.inters-listing-card-head{display:grid!important;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:8px;min-width:0}
.inters-listing-card-head b{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.inters-listing-card-head span{padding-left:7px;border-left:1px solid var(--ui-border);color:var(--ui-progress-text);font-variant-numeric:tabular-nums;white-space:nowrap}
.listing-card-progress{display:block;margin-top:2px;color:var(--ui-progress-text);font-size:8px;font-weight:700;line-height:1.2}
.listing-card-workload{display:block;margin-top:2px;color:var(--ui-text-soft);font-size:8px;font-weight:700;line-height:1.2}
.listing-card-workload.listing-card-unassigned{color:var(--ui-warn-text)}
.inters-listing-card.partially-placed{box-shadow:inset 3px 0 var(--ui-progress-text),inset 0 0 0 1px var(--ui-border-soft)}
.inters-listing-group{display:grid;gap:3px}.inters-listing-group+.inters-listing-group{margin-top:8px;padding-top:7px;border-top:1px solid var(--ui-border-soft)}.inters-listing-group>h3{margin:0;padding:3px 5px;color:var(--ui-text-soft);font-size:9px;font-weight:800;letter-spacing:.015em}.inters-listing-group.is-current>h3{border-left:2px solid var(--ui-accent-border);color:var(--ui-accent)}.inters-listing-group>.zero{padding:8px 5px}.inters-listing-group>div>.list-card:first-child{margin-top:0}.inters-listing-group>div>.list-card:last-child{margin-bottom:0}
.listing-duration-plan{display:grid;grid-template-columns:minmax(0,1fr);gap:5px;margin:7px 0;padding:8px;border:1px solid var(--ui-border);border-radius:6px;background:var(--ui-surface-alt)}
.listing-duration-plan[hidden],.listing-duration-plan [hidden]{display:none!important}
.listing-duration-plan>b{color:var(--ui-text);font-size:11px}
.listing-duration-plan>label{display:grid;grid-template-columns:minmax(0,1fr) 98px;align-items:center;gap:7px;margin:0;color:var(--ui-text-soft);font-size:10px;font-weight:700}
.listing-duration-plan input,.listing-person-duration input{width:100%;min-width:0;box-sizing:border-box;font-variant-numeric:tabular-nums}
.listing-duration-legacy{margin:0;padding:5px 7px;border-left:3px solid #c69a4b;background:var(--ui-warn-surface);color:var(--ui-text-soft);font-size:9px}
.listing-companion-row{display:grid;grid-template-columns:minmax(0,1fr) 98px;gap:6px;align-items:end;min-width:0}
.listing-companion-row>label{min-width:0}
.listing-person-duration[hidden]{display:none!important}
.listing-duration-sum{display:block;margin:6px 0;padding:5px 7px;border-left:3px solid var(--ui-progress-text);background:var(--ui-surface-alt);color:var(--ui-progress-text);font-size:10px;font-weight:700}
.listing-duration-sum[hidden]{display:none!important}
.listing-duration-sum.invalid{border-left-color:#a34747;color:#a34747}
.listing-segment-editor{width:min(410px,94vw)}
.listing-segment-editor dl{display:grid;grid-template-columns:1fr auto;gap:5px 14px;margin:4px 0 10px;padding:9px;border:1px solid var(--ui-border);border-radius:6px;background:var(--ui-surface-alt)}
.listing-segment-editor dt,.listing-segment-editor dd{margin:0}
.listing-segment-editor dd{color:var(--ui-progress-text);font-variant-numeric:tabular-nums;font-weight:700}
.listing-segment-after{min-height:17px;margin:2px 0;color:var(--ui-text-soft);font-size:10px}
.listing-segment-single{display:grid;grid-template-columns:120px minmax(0,1fr);gap:7px;align-items:end;margin-bottom:8px}
.listing-segment-single label{margin:0;min-width:0}.listing-segment-single select,.listing-segment-single input{width:100%;box-sizing:border-box}
.listing-segment-participants{display:grid;gap:5px;margin:0 0 8px;padding:8px;border:1px solid var(--ui-border);border-radius:6px;background:var(--ui-surface)}
.listing-segment-participants legend{padding:0 4px;color:var(--ui-text-soft);font-size:10px;font-weight:700}
.listing-segment-person{display:grid;grid-template-columns:18px minmax(0,1fr) 92px 78px;align-items:center;gap:6px;margin:0;padding:4px 5px;border:1px solid var(--ui-border-soft);border-radius:5px;background:var(--ui-surface-alt)}
.listing-segment-person>input[type="checkbox"]{width:15px;height:15px;margin:0}
.listing-segment-person>span{display:grid;min-width:0}.listing-segment-person small{color:var(--ui-text-soft);font-size:9px}
.listing-segment-person>[data-segment-person-period],.listing-segment-person>[data-segment-person-duration]{width:100%;min-width:0;box-sizing:border-box}
.listing-segment-person>[data-segment-person-duration]{font-variant-numeric:tabular-nums}
.listing-segment-person.complete{opacity:.56}.listing-segment-person.complete>span b{text-decoration:line-through;text-decoration-thickness:1px}
.listing-segment-error{margin:3px 0;padding:7px;border-left:3px solid #a34747;background:color-mix(in srgb,#a34747 10%,transparent);color:#a34747;font-size:10px;line-height:1.35}
:root[data-theme="dark"] .listing-segment-error{color:#ee999e}
.planning-listing-segment-context{margin:5px 0;padding:6px 8px;border-left:3px solid var(--ui-accent-border);background:var(--ui-surface-alt);color:var(--ui-text-soft);font-size:9px;line-height:1.35}
.planning-listing-segment-context b{color:var(--ui-progress-text);font-variant-numeric:tabular-nums}

/* Permanent Cycle matrix: one checkbox is one persisted cycle_target. */
.cycle-target-toggle.cycle-month-marker{position:relative;display:grid;place-items:center;width:17px;height:17px;min-width:17px;flex:0 0 17px;padding:0;border:1px solid #8b9891;border-radius:3px;background:#fff;color:transparent;box-shadow:none;font-size:12px;font-weight:900;line-height:1;cursor:pointer}
.cycle-target-toggle:hover,.cycle-target-toggle:focus-visible{border-color:#5f7e6e;background:#edf5f1;box-shadow:0 0 0 2px #dfeae4}
.cycle-target-toggle.cycle-month-marker.is-checked{border-color:#674a86;background:#8064a2;color:#fff;box-shadow:0 0 0 2px #ece5f3}
.cycle-target-toggle.cycle-month-marker.is-dispatched{border-color:#39725a;background:#4b8b6e;color:#fff;box-shadow:0 0 0 2px #deeee5}
.cycle-target-toggle.is-dispatched::after{content:"";position:absolute;top:-3px;right:-3px;width:6px;height:6px;border:1px solid #fff;border-radius:50%;background:#315f4d}
.cycle-target-toggle:disabled{cursor:progress;opacity:.55}
:root[data-theme="dark"] .cycle-target-toggle.cycle-month-marker{border-color:#69776f;background:#2d3732;color:transparent;box-shadow:none}
:root[data-theme="dark"] .cycle-target-toggle:hover,:root[data-theme="dark"] .cycle-target-toggle:focus-visible{border-color:#91ad9e;background:#3a4941;box-shadow:0 0 0 2px #27332d}
:root[data-theme="dark"] .cycle-target-toggle.cycle-month-marker.is-checked{border-color:#ceb8df;background:#a78bc2;color:#19211d;box-shadow:0 0 0 2px #41354d}
:root[data-theme="dark"] .cycle-target-toggle.cycle-month-marker.is-dispatched{border-color:#8ac2a6;background:#639f82;color:#15231c;box-shadow:0 0 0 2px #2c4438}
:root[data-theme="dark"] .cycle-target-toggle.is-dispatched::after{border-color:#26332c;background:#8ac2a6}

/* A green placed target keeps its week; amber perimeter marks a different placement week. */
.cycle-target-toggle.cycle-month-marker.is-dispatched.placed-outside-target{border-color:#b58736}
.cycle-target-toggle.is-dispatched.placed-outside-target::after{background:#b58736}
:root[data-theme="dark"] .cycle-target-toggle.cycle-month-marker.is-dispatched.placed-outside-target{border-color:#d2ad68}
:root[data-theme="dark"] .cycle-target-toggle.is-dispatched.placed-outside-target::after{background:#d2ad68}

/* Read-only monthly Cycle preview. */
.cycle-preview-open{margin-left:auto;min-height:24px;padding:3px 8px;border:1px solid var(--ui-border);border-radius:4px;background:var(--ui-surface-alt);color:var(--ui-progress-text);font-size:10px;font-weight:750;white-space:nowrap;cursor:pointer}.cycle-preview-open:hover,.cycle-preview-open:focus-visible{border-color:var(--ui-accent-border);background:var(--ui-hover);color:var(--ui-text)}
.cycle-preview-modal{z-index:90;padding:18px}.cycle-preview-panel{width:min(1180px,calc(100vw - 36px));height:min(850px,calc(100vh - 36px));max-height:calc(100vh - 36px);display:grid;grid-template-rows:auto auto minmax(0,1fr) auto;overflow:hidden;background:var(--ui-surface);color:var(--ui-text)}.cycle-preview-panel>header{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:9px 12px;border-bottom:1px solid var(--ui-border);background:var(--ui-surface-alt)}.cycle-preview-panel>header>div{display:grid;gap:2px}.cycle-preview-panel>header b{font-size:14px}.cycle-preview-panel>header small{color:var(--ui-text-soft);font-size:10px}.cycle-preview-panel>header button{width:30px;height:28px;padding:0;border:1px solid var(--ui-border);border-radius:4px;background:var(--ui-input);color:var(--ui-text);font-size:18px}
.cycle-preview-filters{display:grid;grid-template-columns:120px 180px minmax(190px,260px) auto 1fr;gap:8px;align-items:end;padding:8px 12px;border-bottom:1px solid var(--ui-border)}.cycle-preview-filters label{display:grid;gap:3px;color:var(--ui-text-soft);font-size:10px;font-weight:700}.cycle-preview-filters input,.cycle-preview-filters select,.cycle-preview-filters button{width:100%;height:30px;min-width:0;padding:3px 7px;box-sizing:border-box;border:1px solid var(--ui-border);border-radius:4px;background:var(--ui-input);color:var(--ui-text);font-size:11px}.cycle-preview-filters button{width:auto;color:var(--ui-progress-text);font-weight:750}.cycle-preview-filters button:hover:not(:disabled),.cycle-preview-filters button:focus-visible{border-color:var(--ui-accent-border);background:var(--ui-hover)}
.cycle-preview-content{min-height:0;overflow:auto;padding:10px 12px 14px}.cycle-preview-state{min-height:180px;display:grid;place-items:center;color:var(--ui-text-soft);font-size:12px}.cycle-preview-state.error{align-content:center;gap:5px;color:#ee999e}.cycle-preview-state.error span{color:var(--ui-text-soft)}.cycle-preview-state.offline{color:#e0c17f}.cycle-preview-summary{display:flex;align-items:center;gap:7px;margin-bottom:10px;padding:7px 9px;border:1px solid var(--ui-border);border-radius:6px;background:var(--ui-surface-alt)}.cycle-preview-summary>strong{margin-right:auto;font-size:14px}.cycle-preview-summary>span{padding:4px 7px;border:1px solid var(--ui-border-soft);border-radius:11px;color:var(--ui-text-soft);font-size:10px;white-space:nowrap}.cycle-preview-summary>span b{color:var(--ui-text);font-variant-numeric:tabular-nums}
.cycle-preview-sections{display:grid;gap:9px}.cycle-preview-section{border:1px solid var(--ui-border);border-radius:6px;background:var(--ui-surface);overflow:hidden}.cycle-preview-section>summary{display:flex;align-items:center;gap:8px;min-height:34px;padding:5px 9px;background:var(--ui-surface-alt);cursor:pointer}.cycle-preview-section>summary span{font-weight:800}.cycle-preview-section>summary b{display:grid;place-items:center;min-width:22px;height:20px;margin-left:auto;border-radius:10px;background:var(--ui-input);font-size:10px}.cycle-preview-section.proposed>summary{box-shadow:inset 3px 0 #78b99c}.cycle-preview-section.covered>summary{box-shadow:inset 3px 0 #639f82}.cycle-preview-section.verify>summary{box-shadow:inset 3px 0 #d2ad68}.cycle-preview-section>div{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px;padding:7px}.cycle-preview-empty{grid-column:1/-1;margin:0;padding:12px;color:var(--ui-text-soft);text-align:center;font-size:11px}
.cycle-preview-card{min-width:0;padding:8px;border:1px solid var(--ui-border-soft);border-radius:5px;background:var(--ui-surface-alt)}.cycle-preview-card>header{display:flex;align-items:start;justify-content:space-between;gap:10px}.cycle-preview-card>header>div{display:grid;min-width:0}.cycle-preview-card>header b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:12px}.cycle-preview-card>header small{color:var(--ui-text-soft);font-size:9px}.cycle-preview-mode{flex:0 0 auto;padding:3px 6px;border:1px solid var(--ui-border);border-radius:10px;color:var(--ui-progress-text);font-size:9px;font-weight:750}.cycle-preview-card dl{display:grid;grid-template-columns:78px minmax(0,1fr);gap:4px 7px;margin:7px 0}.cycle-preview-card dt{color:var(--ui-text-soft);font-size:9px;font-weight:700}.cycle-preview-card dd{display:flex;flex-wrap:wrap;gap:4px;margin:0}.cycle-preview-week{padding:2px 5px;border-radius:3px;background:var(--ui-input);color:var(--ui-text);font-size:9px}.cycle-preview-week.is-placed{color:#9fd0b8}.cycle-preview-card>p{margin:6px 0;color:var(--ui-text-soft);font-size:10px;line-height:1.4}.cycle-preview-card>details{margin-top:6px;border-top:1px solid var(--ui-border-soft);padding-top:5px}.cycle-preview-card>details>summary{width:max-content;color:var(--ui-progress-text);font-size:9px;font-weight:750;cursor:pointer}.cycle-preview-card>details>div{display:grid;gap:4px;margin-top:5px}.cycle-preview-card>details span{display:grid;grid-template-columns:110px minmax(0,1fr);gap:5px;color:var(--ui-text-soft);font-size:9px}.cycle-preview-card>details b{color:var(--ui-text)}
.cycle-preview-business-context{padding:6px;border:1px solid var(--ui-border-soft);border-radius:4px;background:var(--ui-surface)}.cycle-preview-business-context dt{align-self:center}.cycle-preview-business-context dd{align-items:center}.cycle-preview-proposal-list{display:grid;gap:6px;margin-top:7px}.cycle-preview-proposal{display:grid;grid-template-columns:auto minmax(125px,.8fr) minmax(185px,1fr) auto auto;align-items:center;gap:5px 7px;padding:6px;border:1px solid var(--ui-border-soft);border-radius:4px;background:var(--ui-surface)}.cycle-preview-choice{display:flex;align-items:center;gap:4px;color:var(--ui-text);font-size:9px;font-weight:750}.cycle-preview-choice input{margin:0}.cycle-preview-engine{color:var(--ui-text-soft);font-size:9px}.cycle-preview-engine b{display:block;color:var(--ui-text);font-weight:700}.cycle-preview-retained{display:flex;align-items:center;gap:5px;color:var(--ui-text-soft);font-size:9px}.cycle-preview-retained select{min-width:0;width:100%;height:26px;padding:2px 5px;border:1px solid var(--ui-border);border-radius:3px;background:var(--ui-input);color:var(--ui-text);font-size:9px}.cycle-preview-modified{padding:2px 5px;border:1px solid #b99052;border-radius:8px;color:#e0c17f;font-size:8px;font-weight:800}.cycle-preview-proposal [data-preview-restore]{height:24px;padding:2px 5px;border:1px solid var(--ui-border);border-radius:3px;background:var(--ui-input);color:var(--ui-progress-text);font-size:8px}.cycle-preview-proposal>small{grid-column:2/-1;color:var(--ui-text-soft);font-size:8px}.cycle-preview-proposal>small[data-level="warning"]{color:#e0c17f}.cycle-preview-proposal>small[data-level="blocked"],.cycle-preview-proposal.is-invalid>small{color:#ee999e}.cycle-preview-proposal.is-modified{border-color:#967642}.cycle-preview-proposal.is-excluded{opacity:.52}.cycle-preview-proposal.is-excluded .cycle-preview-retained select{pointer-events:none}.cycle-preview-stale,.cycle-preview-transport{position:sticky;top:-10px;z-index:2;margin:-10px -12px 10px;padding:8px 12px;font-size:10px;font-weight:750}.cycle-preview-stale{border-bottom:1px solid #9c7541;background:#4a3926;color:#f0cd8d}.cycle-preview-transport{border-bottom:1px solid #5e7990;background:#293c49;color:#b9d9ec}
.cycle-preview-actions{display:flex;align-items:center;justify-content:flex-end;gap:10px;min-height:45px;padding:7px 12px;border-top:1px solid var(--ui-border);background:var(--ui-surface-alt)}.cycle-preview-actions>span{margin-right:auto;color:var(--ui-text-soft);font-size:10px}.cycle-preview-actions button,.cycle-preview-confirm button{min-height:30px;padding:4px 11px;border:1px solid var(--ui-border);border-radius:4px;background:var(--ui-input);color:var(--ui-text);font-size:10px;font-weight:750}.cycle-preview-actions button.primary,.cycle-preview-confirm button.primary{border-color:#699b81;background:#315844;color:#dff1e7}.cycle-preview-actions button:disabled{opacity:.45;cursor:not-allowed}
.cycle-preview-confirm-modal{z-index:110;padding:18px}.cycle-preview-confirm{width:min(540px,calc(100vw - 36px));max-height:calc(100vh - 36px);overflow:auto;background:var(--ui-surface);color:var(--ui-text)}.cycle-preview-confirm>header{padding:10px 12px;border-bottom:1px solid var(--ui-border);background:var(--ui-surface-alt)}.cycle-preview-confirm>div{padding:10px 12px}.cycle-preview-confirm p{margin:0 0 8px}.cycle-preview-confirm h4{margin:10px 0 5px;font-size:10px}.cycle-preview-confirm ul{margin:0;padding-left:20px;color:var(--ui-text-soft);font-size:10px;line-height:1.55}.cycle-preview-confirm-overrides{max-height:180px;overflow:auto}.cycle-preview-confirm>footer{display:flex;justify-content:flex-end;gap:7px;padding:8px 12px;border-top:1px solid var(--ui-border)}
@media(max-width:900px){.cycle-preview-modal{padding:8px}.cycle-preview-panel{width:calc(100vw - 16px);height:calc(100vh - 16px);max-height:calc(100vh - 16px)}.cycle-preview-filters{grid-template-columns:1fr 1fr}.cycle-preview-filters label:nth-child(3){grid-column:1/-1}.cycle-preview-section>div{grid-template-columns:1fr}.cycle-preview-summary{align-items:stretch;flex-wrap:wrap}.cycle-preview-summary>strong{width:100%}}

/* Read-only monthly Recurrent preview. */
.recurrent-preview-open{min-height:28px!important;padding:3px 8px!important;border-color:var(--ui-border)!important;background:var(--ui-surface-alt)!important;color:var(--ui-progress-text);font-size:10px!important;font-weight:750;white-space:nowrap}.recurrent-preview-open:hover,.recurrent-preview-open:focus-visible{border-color:var(--ui-accent-border)!important;background:var(--ui-hover)!important;color:var(--ui-text)}
.recurrent-preview-modal{z-index:90;padding:18px}.recurrent-preview-panel{width:min(1240px,calc(100vw - 36px));height:min(900px,calc(100vh - 36px));max-height:calc(100vh - 36px);display:grid;grid-template-rows:auto auto minmax(0,1fr) auto;overflow:hidden;background:var(--ui-surface);color:var(--ui-text)}.recurrent-preview-panel>header{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:9px 12px;border-bottom:1px solid var(--ui-border);background:var(--ui-surface-alt)}.recurrent-preview-panel>header>div{display:grid;gap:2px}.recurrent-preview-panel>header b{font-size:14px}.recurrent-preview-panel>header small{color:var(--ui-text-soft);font-size:10px}.recurrent-preview-panel>header button{width:30px;height:28px;padding:0;border:1px solid var(--ui-border);border-radius:4px;background:var(--ui-input);color:var(--ui-text);font-size:18px}
.recurrent-preview-filters{display:grid;grid-template-columns:120px 180px minmax(190px,260px) auto 1fr;gap:8px;align-items:end;padding:8px 12px;border-bottom:1px solid var(--ui-border)}.recurrent-preview-filters label{display:grid;gap:3px;color:var(--ui-text-soft);font-size:10px;font-weight:700}.recurrent-preview-filters input,.recurrent-preview-filters select,.recurrent-preview-filters button{width:100%;height:30px;min-width:0;padding:3px 7px;box-sizing:border-box;border:1px solid var(--ui-border);border-radius:4px;background:var(--ui-input);color:var(--ui-text);font-size:11px}.recurrent-preview-filters button{width:auto;color:var(--ui-progress-text);font-weight:750}.recurrent-preview-filters button:hover:not(:disabled),.recurrent-preview-filters button:focus-visible{border-color:var(--ui-accent-border);background:var(--ui-hover)}
.recurrent-preview-content{min-width:0;min-height:0;overflow:auto;padding:10px 12px 14px}.recurrent-preview-state{min-height:180px;display:grid;place-items:center;color:var(--ui-text-soft);font-size:12px}.recurrent-preview-state.error{align-content:center;gap:5px;color:#ee999e}.recurrent-preview-state.error span{color:var(--ui-text-soft)}.recurrent-preview-state.offline{color:#e0c17f}.recurrent-preview-transport,.recurrent-preview-stale{position:sticky;top:-10px;z-index:2;margin:-10px -12px 10px;padding:8px 12px;border-bottom:1px solid #5e7990;background:#293c49;color:#b9d9ec;font-size:10px;font-weight:750}.recurrent-preview-stale{display:flex;align-items:center;justify-content:space-between;gap:12px;border-color:#8b6936;background:#48391f;color:#f0cf8a}.recurrent-preview-stale button{height:26px;padding:3px 8px;border:1px solid #a98449;border-radius:4px;background:#332a1d;color:#f0cf8a;font-size:10px;font-weight:750}
.recurrent-preview-summary{display:flex;align-items:center;gap:7px;margin-bottom:10px;padding:7px 9px;border:1px solid var(--ui-border);border-radius:6px;background:var(--ui-surface-alt)}.recurrent-preview-summary>strong{margin-right:auto;font-size:14px}.recurrent-preview-summary>span{padding:4px 7px;border:1px solid var(--ui-border-soft);border-radius:11px;color:var(--ui-text-soft);font-size:10px;white-space:nowrap}.recurrent-preview-summary>span b{color:var(--ui-text);font-variant-numeric:tabular-nums}
.recurrent-preview-sections{display:grid;gap:9px}.recurrent-preview-section{border:1px solid var(--ui-border);border-radius:6px;background:var(--ui-surface);overflow:hidden}.recurrent-preview-section>summary{display:flex;align-items:center;gap:8px;min-height:34px;padding:5px 9px;background:var(--ui-surface-alt);cursor:pointer}.recurrent-preview-section>summary span{font-weight:800}.recurrent-preview-section>summary b{display:grid;place-items:center;min-width:22px;height:20px;margin-left:auto;border-radius:10px;background:var(--ui-input);font-size:10px}.recurrent-preview-section.generated>summary{box-shadow:inset 3px 0 #78b99c}.recurrent-preview-section.present>summary{box-shadow:inset 3px 0 #639f82}.recurrent-preview-section.review>summary{box-shadow:inset 3px 0 #d2ad68}.recurrent-preview-section>div{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px;padding:7px}.recurrent-preview-empty{grid-column:1/-1;margin:0;padding:12px;color:var(--ui-text-soft);text-align:center;font-size:11px}
.recurrent-preview-card{min-width:0;padding:8px;border:1px solid var(--ui-border-soft);border-radius:5px;background:var(--ui-surface-alt);transition:opacity 130ms ease,border-color 130ms ease}.recurrent-preview-card.is-excluded{opacity:.54;border-color:var(--ui-border)}.recurrent-preview-card>header{display:flex;align-items:start;justify-content:space-between;gap:10px}.recurrent-preview-card>header>div{display:grid;min-width:0;flex:1}.recurrent-preview-card>header b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:12px}.recurrent-preview-card>header small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--ui-text-soft);font-size:9px}.recurrent-preview-card>header>span{flex:0 0 auto;padding:3px 6px;border:1px solid var(--ui-border);border-radius:10px;color:var(--ui-progress-text);font-size:9px;font-weight:750}.recurrent-preview-choice{display:flex!important;align-items:center;gap:4px;flex:0 0 auto;color:var(--ui-progress-text)!important;font-size:9px!important;cursor:pointer}.recurrent-preview-choice input{width:14px;height:14px;margin:1px 0 0;accent-color:var(--ui-accent)}.recurrent-preview-card dl{display:grid;grid-template-columns:82px minmax(0,1fr);gap:4px 7px;margin:7px 0}.recurrent-preview-card dt{color:var(--ui-text-soft);font-size:9px;font-weight:700}.recurrent-preview-card dd{min-width:0;margin:0;color:var(--ui-text);font-size:10px;overflow-wrap:anywhere}.recurrent-preview-card>p{margin:6px 0;color:var(--ui-text-soft);font-size:9px;line-height:1.4}.recurrent-preview-destination{display:inline-block;padding:2px 6px;border:1px solid #5f967b;border-radius:4px;background:#294238;color:#b8dfcb;font-size:10px}.recurrent-preview-destination.general{border-color:#82745a;background:#3d382d;color:#e1c98f}.recurrent-preview-review{margin-top:6px;padding:6px;border:1px solid #81683e;border-radius:4px;background:#3d3426;color:#e7c986;font-size:9px}.recurrent-preview-review ul{margin:4px 0 0;padding-left:17px}.recurrent-preview-technical{margin-top:6px;border-top:1px solid var(--ui-border-soft);padding-top:5px}.recurrent-preview-technical>summary{width:max-content;color:var(--ui-progress-text);font-size:9px;font-weight:750;cursor:pointer}.recurrent-preview-technical>div{display:grid;gap:4px;margin-top:5px}.recurrent-preview-technical span{display:grid;grid-template-columns:110px minmax(0,1fr);gap:5px;color:var(--ui-text-soft);font-size:9px}.recurrent-preview-technical code{min-width:0;overflow-wrap:anywhere;color:var(--ui-text);font-size:8px}.recurrent-preview-actions{display:flex;align-items:center;gap:10px;padding:8px 12px;border-top:1px solid var(--ui-border);background:var(--ui-surface-alt)}.recurrent-preview-actions>div{display:flex;gap:6px}.recurrent-preview-actions>span{margin-left:auto;color:var(--ui-text-soft);font-size:10px;font-weight:750;font-variant-numeric:tabular-nums}.recurrent-preview-actions button{height:30px;padding:4px 9px;border:1px solid var(--ui-border);border-radius:4px;background:var(--ui-input);color:var(--ui-text);font-size:10px;font-weight:750}.recurrent-preview-actions button.primary{border-color:#56856f;background:#294238;color:#c8e6d7}.recurrent-preview-actions button:disabled{opacity:.45;cursor:not-allowed}.recurrent-preview-confirm-modal{z-index:96}.recurrent-preview-confirm{width:min(520px,calc(100vw - 32px));overflow:hidden}.recurrent-preview-confirm>header{padding:11px 13px;border-bottom:1px solid var(--ui-border);background:var(--ui-surface-alt)}.recurrent-preview-confirm>div{padding:12px 14px;color:var(--ui-text);font-size:11px}.recurrent-preview-confirm p{margin:0 0 9px}.recurrent-preview-confirm ul{margin:7px 0 11px;padding-left:20px;line-height:1.55}.recurrent-preview-confirm>footer{display:flex;justify-content:flex-end;gap:8px;padding:9px 13px;border-top:1px solid var(--ui-border);background:var(--ui-surface-alt)}.recurrent-preview-confirm button{height:30px;padding:4px 10px;border:1px solid var(--ui-border);border-radius:4px;background:var(--ui-input);color:var(--ui-text);font-size:10px;font-weight:750}.recurrent-preview-confirm button.primary{border-color:#56856f;background:#294238;color:#c8e6d7}
@media(max-width:900px){.recurrent-preview-modal{padding:8px}.recurrent-preview-panel{width:calc(100vw - 16px);height:calc(100vh - 16px);max-height:calc(100vh - 16px)}.recurrent-preview-filters{grid-template-columns:1fr 1fr}.recurrent-preview-filters label:nth-child(3){grid-column:1/-1}.recurrent-preview-section>div{grid-template-columns:1fr}.recurrent-preview-summary{align-items:stretch;flex-wrap:wrap}.recurrent-preview-summary>strong{width:100%}}

/* Récap Émilie: compact annual work table. */
#recap .toolbar-controls{overflow:visible}.recap-add{color:var(--green);font-weight:750;white-space:nowrap}.recap-selection-count{min-width:78px;color:var(--dark-text-soft);font-size:10px;font-weight:700;white-space:nowrap}.recap-create{display:grid;grid-template-columns:128px minmax(180px,1fr) minmax(310px,2.8fr) auto auto;gap:6px;align-items:end;margin:0 0 8px;padding:7px;border:1px solid var(--dark-border);border-radius:6px;background:var(--dark-surface)}.recap-create[hidden]{display:none}.recap-create label,.recap-create-details{display:grid;gap:3px;min-width:0;color:var(--dark-text-soft);font-size:9px;font-weight:700}.recap-create input,.recap-create select,.recap-create button{width:100%;min-width:0;box-sizing:border-box;border:1px solid var(--dark-border);border-radius:4px;background:var(--dark-input);color:var(--dark-text);font-size:10px}.recap-create input,.recap-create select,.recap-create button{height:30px;padding:3px 6px}.recap-create button{width:auto;min-width:64px}.recap-table{min-width:0;overflow:auto;border:1px solid var(--dark-border);border-radius:6px;background:var(--dark-surface)}.recap-head,.recap-row{display:grid;grid-template-columns:24px 34px minmax(145px,1.15fr) minmax(340px,3fr) repeat(12,minmax(28px,34px)) 30px;min-width:1075px}.recap-head{position:sticky;top:0;z-index:3;min-height:29px;background:var(--dark-surface-soft);border-bottom:1px solid var(--dark-border)}.recap-head>b{display:flex;align-items:center;justify-content:center;min-width:0;padding:3px;border-left:1px solid var(--dark-border-soft);color:var(--dark-text-soft);font-size:8px;letter-spacing:.02em}.recap-head>b:nth-child(3),.recap-head>b:nth-child(4){justify-content:flex-start;padding-left:7px}.recap-row{min-height:38px;border-bottom:1px solid var(--dark-border-soft);background:var(--dark-surface);transition:background 130ms ease,opacity 130ms ease}.recap-row:nth-child(even){background:var(--dark-surface-alt)}.recap-row:focus{outline:0}.recap-row.is-editing{min-height:44px;box-shadow:inset 2px 0 #78b99c}.recap-row.is-saving{opacity:.7}.recap-row>label,.recap-row>.recap-client,.recap-row>.recap-responsible,.recap-row>.recap-row-actions{min-width:0;margin:0;border-left:1px solid var(--dark-border-soft)}.recap-select{display:grid;place-items:center}.recap-select input{width:13px;height:13px;margin:0;accent-color:#a78bc2}.recap-responsible-view{display:grid;place-items:center;color:#9fc5b4;font-size:11px;font-weight:850}.recap-row select,.recap-row input[type="text"]{width:100%;height:100%;min-width:0;box-sizing:border-box;border:0;border-radius:0;background:transparent;color:var(--dark-text)}.recap-row select:focus-visible,.recap-row input[type="text"]:focus-visible{position:relative;z-index:2;outline:1px solid #78b99c;outline-offset:-1px;background:var(--dark-input)}.recap-responsible select{padding:0 3px;text-align:center;text-align-last:center;font-size:12px;font-weight:850;appearance:none}.recap-client{display:flex;align-items:center;overflow:hidden;padding:3px 7px;background:#29312e;color:#c8ded7;border-left:2px solid #477366!important;font-size:10.5px;font-weight:750;text-overflow:ellipsis;white-space:nowrap}.recap-client-edit{padding:0}.recap-client-edit input.recap-client-content{padding:4px 6px;font-size:12.5px;font-weight:400;font-family:inherit;line-height:1.35}.recap-details{min-width:0}.recap-details-view{height:100%;box-sizing:border-box;padding:3px 6px;color:var(--dark-text);font-size:11.5px;line-height:1.35;white-space:pre-wrap;overflow-wrap:anywhere}.recap-month{position:relative;display:grid;place-items:center;cursor:pointer;border-left:1px solid var(--dark-border-soft)}.recap-month input{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}.recap-month span{display:grid;place-items:center;width:14px;height:14px;box-sizing:border-box;border:1px solid #69776f;border-radius:50%;background:#2d3732;color:transparent;font-size:9px;font-weight:850}.recap-month:hover span,.recap-month input:focus-visible+span{border-color:#91ad9e;background:#3a4941;box-shadow:0 0 0 2px #27332d}.recap-month input:checked+span,.recap-month-readonly span.is-checked{border-color:#ceb8df;background:#a78bc2;color:#19211d;box-shadow:0 0 0 2px #41354d}.recap-month-readonly{cursor:default}.recap-row-actions{display:flex;align-items:center;justify-content:center}.recap-row-actions button{width:22px;height:24px;padding:0;border:0;background:transparent;color:var(--dark-text-muted);font-size:12px}.recap-row-actions button:hover,.recap-row-actions button:focus-visible{background:var(--dark-input);color:#ee999e}.recap-row.is-editing .recap-row-actions{flex-direction:column}.recap-row.is-editing .recap-row-actions button{height:20px}.recap-empty{grid-column:1/-1;min-height:90px;display:grid;place-items:center}.recap-body{min-width:1075px}@media(max-width:1200px){.recap-create{grid-template-columns:120px minmax(165px,1fr) minmax(260px,2.5fr) auto auto}.recap-head,.recap-row{grid-template-columns:22px 32px minmax(130px,1fr) minmax(280px,2.5fr) repeat(12,28px) 28px}}
.recap-client{font-size:12px}.recap-details-view{font-size:12.5px}
.recap-create{grid-template-columns:128px minmax(165px,.9fr) minmax(270px,1.8fr) minmax(220px,1.35fr) auto auto}
.recap-head,.recap-row{grid-template-columns:24px 34px minmax(140px,1.05fr) minmax(270px,2.1fr) minmax(210px,1.55fr) repeat(12,minmax(27px,32px)) 30px;min-width:1160px}
.recap-head>b:nth-child(5){justify-content:flex-start;padding-left:7px}.recap-body{min-width:1160px}
@media(max-width:1200px){.recap-create{grid-template-columns:120px minmax(150px,.8fr) minmax(240px,1.65fr) minmax(195px,1.25fr) auto auto}.recap-head,.recap-row{grid-template-columns:22px 32px minmax(125px,1fr) minmax(240px,1.9fr) minmax(190px,1.45fr) repeat(12,28px) 28px;min-width:1037px}.recap-body{min-width:1037px}}

/* Récap -> Listing bridge: explicit send state and a real sticky table header. */
.recap-table{max-height:calc(100vh - 70px)}
.recap-send{white-space:nowrap;border-color:#4f8f79!important;background:#29483d!important;color:#bfe6d5!important;font-weight:800}.recap-send:hover:not(:disabled),.recap-send:focus-visible{background:#315b4b!important;border-color:#72b395!important}.recap-send:disabled{opacity:.42;cursor:not-allowed}.recap-send-hint{color:var(--dark-text-soft);font-size:9px;font-weight:700;white-space:nowrap}
.recap-month.is-sent span,.recap-month.is-sent input:checked+span{border-color:#64bca1;background:#3f9b80;color:#10251f;box-shadow:0 0 0 2px #294f43}
.sheet-line.duration-pending,.inters-listing-card.duration-pending{border-style:dashed;cursor:default}.sheet-line.duration-pending .listing-card-duration,.inters-listing-card.duration-pending span{color:#e0c17f;font-size:9px;white-space:nowrap}
.listing-card-constraints{display:block;min-width:0;overflow:hidden;margin-top:2px;padding-left:3px;border-left:2px solid #d2ad68;color:var(--ui-warn-text);font-size:8px;text-overflow:ellipsis;white-space:nowrap}.listing-card-constraints b{font-weight:800}

/* Personal unavailabilities: compact, distinct from Planning interventions. */
#planning .matrix-worker{position:relative}#planning .matrix-worker-name{display:block;min-width:0;padding-right:0}#planning .matrix-worker-name .responsible-name{display:block;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;cursor:pointer;border-radius:3px;transition:color 130ms ease,background-color 130ms ease}#planning .matrix-worker-name .responsible-name:hover,#planning .matrix-worker-name .responsible-name:focus-visible{background:var(--ui-hover);color:#ceb8df;outline:0}
#planning .planning-unavailability{position:relative;z-index:8;width:100%;height:100%;min-width:0;box-sizing:border-box;isolation:isolate;border:1px solid transparent;border-radius:4px;overflow:hidden;cursor:pointer;background-color:transparent;background-image:var(--unavailability-image);background-repeat:no-repeat;background-size:var(--unavailability-width) auto;background-position:var(--unavailability-position) center;box-shadow:none;transition:filter 130ms ease}#planning .planning-unavailability:hover{filter:brightness(1.08)}#planning .planning-unavailability:focus-visible{outline:2px solid #bdbdbd;outline-offset:-3px}#planning .planning-unavailability.interval-continuation{border-left-style:dashed;border-radius:1px 4px 4px 1px}#planning .planning-unavailability.visual-plurijours,#planning .planning-unavailability.visual-semaine{background-image:none}#planning .unavailability-panorama{position:absolute;z-index:0;top:0;bottom:0;left:calc(var(--unavailability-segment-index) * -100%);display:grid;place-items:center;width:calc(var(--unavailability-segments) * 100%);pointer-events:none}#planning .unavailability-panorama img{display:block;width:100%;height:100%;object-fit:contain;object-position:center}#planning .unavailability-note{position:absolute;z-index:2;right:3px;bottom:2px;left:3px;min-width:0;overflow:hidden;padding:1px 4px;border:1px solid rgba(255,255,255,.22);border-radius:3px;background:rgba(19,25,23,.76);color:#fff;font-size:8px;font-weight:700;line-height:1.25;text-align:center;text-overflow:ellipsis;white-space:nowrap;text-shadow:0 1px 1px #000}
#planning .matrix-day-block{position:relative}#planning .day-unavailability-layer{position:absolute;z-index:11;right:2px;left:2px;grid-column:1/-1;pointer-events:none}#planning .day-unavailability-layer.full{top:1px;bottom:1px}#planning .day-unavailability-layer.am{top:1px;height:calc(50% - 1px)}#planning .day-unavailability-layer.pm{top:50%;bottom:1px}#planning .day-unavailability-layer .planning-unavailability{pointer-events:auto}#planning .matrix-slot.is-unavailable .slot-actions{opacity:.36}#planning .matrix-slot.is-unavailable .slot-intervention-zone{z-index:6}
.holiday-head{position:relative;overflow:hidden;cursor:pointer}.holiday-head>span{display:block;color:inherit;font-size:inherit}.holiday-head:focus-visible{outline:1px solid #c7aa6e;outline-offset:-2px}.holiday-head.is-inactive{opacity:.78}.holiday-head.has-conflict{box-shadow:inset 0 0 0 2px #d36f62}.matrix-day-block.is-holiday .cycle-add{display:none}.matrix-day-block.has-holiday-conflict{box-shadow:inset 0 0 0 1px #d36f62}.matrix-day-block.has-holiday-visual{overflow:visible}.holiday-custom-visual{position:absolute;z-index:12;top:2px;right:2px;left:2px;height:calc(var(--row-height) * var(--holiday-row-span) - 4px);display:grid;place-items:center;overflow:hidden;pointer-events:none}.holiday-custom-visual img{display:block;width:100%;height:100%;object-fit:cover;object-position:center}.holiday-editor{width:min(520px,94vw)}.holiday-toggle{display:flex!important;align-items:center;gap:8px}.holiday-toggle input{width:17px!important;height:17px}.holiday-conflict{margin:8px 0;padding:8px;border:1px solid #a95f56;border-radius:5px;background:#482d2a;color:#f3b0a6;font-size:11px;font-weight:750}.holiday-image-field{display:grid;gap:6px}.holiday-image-field>b{color:var(--ui-text);font-size:11px}.holiday-image-field>small{color:var(--ui-text-muted);font-size:9px}.holiday-image-preview{height:150px;display:grid;place-items:center;overflow:hidden;border:1px dashed var(--ui-border);border-radius:5px;background:var(--ui-surface-alt);color:var(--ui-text-muted);font-size:10px}.holiday-image-preview.has-image{border-style:solid}.holiday-image-preview img{display:block;width:100%;height:100%;object-fit:contain}.holiday-image-actions{display:flex;gap:6px;align-items:center}.holiday-image-import,.holiday-image-actions button{height:28px;box-sizing:border-box;padding:5px 8px;border:1px solid var(--ui-border);border-radius:4px;background:var(--ui-input);color:var(--ui-text);font-size:10px;cursor:pointer}.holiday-image-import input{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}.holiday-image-actions button:disabled{opacity:.42;cursor:default}
.unavailability-editor{width:min(610px,94vw)}.unavailability-range{display:grid;grid-template-columns:1fr 1fr;gap:8px}.unavailability-range label{display:grid;gap:4px;color:var(--ui-text-soft);font-size:11px}.unavailability-editor label{color:var(--ui-text-soft)}
#planning.density-compact .planning-unavailability{border-radius:3px;background-size:var(--unavailability-width) auto}#planning.density-compact .planning-unavailability.visual-plurijours,#planning.density-compact .planning-unavailability.visual-semaine{background-size:auto}#planning.density-compact .unavailability-note{right:2px;bottom:1px;left:2px;padding:0 3px;font-size:7px}#planning.density-large .unavailability-note{right:4px;bottom:3px;left:4px;padding:2px 5px;font-size:10px}

/* Le visuel utilise toutes les lignes intervenants, hors bandeau de date. */
.holiday-custom-visual img{min-width:0;min-height:0;max-width:100%;max-height:100%}
.pdf-week-dialog [hidden]{display:none!important}

/* Récap: the hint is an overlay; the entire cell is the keyboard/touch target. */
[data-recap-open]{position:relative;cursor:pointer}
.recap-edit-hint{position:absolute;right:4px;top:3px;z-index:1;padding:1px 5px;border:1px solid var(--dark-border);border-radius:3px;background:var(--dark-surface-soft);color:var(--dark-text-soft);font-size:10px;font-weight:400;line-height:16px;opacity:0;pointer-events:none}
@media(hover:hover){[data-recap-open]:hover .recap-edit-hint{opacity:1}}
[data-recap-open]:focus-visible{outline:1px solid #78b99c;outline-offset:-1px}
[data-recap-open]:focus-visible .recap-edit-hint{opacity:1}

/* Client: the edit target fills its grid cell, independently of name length. */
.recap-row > .recap-client[data-recap-open="client"]{align-self:stretch;justify-self:stretch;box-sizing:border-box}
:root[data-theme="dark"] .recap-client-content:focus-visible{outline-color:#83bfa3}

/* Keep palette dots true to their text colors, including hover/focus. */
.recap-details-tools button.recap-highlight-strong{color:#f1a6f2!important}
.recap-details-tools button.recap-highlight-warning{color:#e0b15b!important}
.recap-details-tools button.recap-highlight-info{color:#78b99c!important}

/* Keep the real selection visible without replacing its text colors. */
#recap .recap-details-content::selection,#recap .recap-details-content *::selection{color:var(--dark-text);background:rgba(145,173,158,.28)}

#recap .recap-details-content .recap-highlight-strong::selection,#recap .recap-details-content .recap-highlight-strong *::selection{color:#f1a6f2}
#recap .recap-details-content .recap-highlight-warning::selection,#recap .recap-details-content .recap-highlight-warning *::selection{color:#e0b15b}
#recap .recap-details-content .recap-highlight-info::selection,#recap .recap-details-content .recap-highlight-info *::selection{color:#78b99c}

/* Compact month transfer: same row height and unchanged removal target. */
#listing .listing-card-head{grid-template-columns:minmax(0,1fr) auto 24px 17px}
#listing .listing-card-carry{position:relative;display:grid;place-items:center;width:24px;height:17px;margin:0;padding:0;border:0;border-radius:3px;background:transparent;color:var(--ui-text-muted);cursor:pointer}
#listing .listing-card-carry::before{content:"";position:absolute;inset:-3px 0}
#listing .listing-card-carry:hover:not(:disabled){background:var(--ui-hover);color:var(--ui-text)}
#listing .listing-card-carry:focus-visible{outline:1px solid currentColor;outline-offset:1px}
#listing .listing-card-carry:disabled{opacity:.35;cursor:default}

/* Companion capacity uses the same compact weekly Listing layout. */
#listing .listing-resource-absence{padding:3px 6px;font-size:10px;color:var(--ui-text-muted)}
#listing .resource-week-locked{background:var(--ui-hover)}
#listing .resource-week-locked .listing-resource-absence{font-weight:700;text-transform:uppercase}

/* Editable durations retain the shared label geometry and typography. */
#listing .listing-card-carry-placeholder{width:24px;height:17px}
#listing .sheet-line[draggable="false"]{cursor:default}
#listing .sheet-line button.listing-duration-edit{all:unset;cursor:pointer}
#listing .sheet-line button.listing-duration-edit:disabled{cursor:default}
#listing .sheet-line button.listing-duration-edit:focus-visible{outline:1px solid currentColor;outline-offset:1px}

/* Whole free slots complement hours in the existing compact weekly footer. */
#listing .listing-week-availability{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:center;column-gap:3px;max-width:100%;line-height:1.2}
#listing .listing-week-availability>b,#listing .listing-free-slots{white-space:nowrap}
#listing .listing-free-slots{font-size:9px;font-weight:400;color:var(--ui-text-soft)}

/* Keep each desktop week's existing context within its own Planning section.
   Clip painting without creating a scroll container; keep margin containment. */
body:not(.mobile) #planning .week-section{overflow:clip;display:flow-root}
body:not(.mobile) #planning .week-section > .week-title{position:sticky;top:var(--planning-toolbar-height,52px);z-index:30;background:var(--ui-page)}

/* The duration keeps the existing column; status occupies the action tracks. */
#listing .listing-card-state{grid-column:3 / 5;min-width:0;white-space:nowrap;text-align:left;color:var(--ui-progress-text)}

/* Actual team names stay on the existing supplementary line. */
#listing .listing-card-workload.listing-card-actual-team{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* Placement cards share Listing information; text remains directly readable. */
.inters-listing-card .listing-card-comment{border-left-color:var(--ui-comment-accent);color:var(--ui-comment-text)}
.inters-listing-card .listing-card-comment,.inters-listing-card .listing-card-constraints,.inters-listing-card .listing-card-workload,.inters-listing-card .listing-card-progress{white-space:pre-wrap;overflow-wrap:anywhere;overflow:visible;text-overflow:clip;line-height:1.2}

/* The shared editor must cover its floating Listing entry point. */
.inters-window ~ .listing-item-modal{z-index:80}

/* Weekly Listing workflow: no dimming of operational Production content. */
#listing .week-col > .listing-column-heading{height:auto;min-height:38px;flex-shrink:0}
.listing-week-state{display:inline;font-size:10px;font-weight:500;color:var(--muted);margin-left:5px}
.listing-week-state.is-production{color:var(--ui-text);font-weight:600}
.listing-release{display:block;font-size:10px;padding:3px 7px;white-space:normal;margin-top:4px;max-width:100%}
.sheet-line>[data-listing-reschedule],.inters-listing-card>[data-listing-reschedule]{justify-self:start;width:auto;max-width:100%;margin-top:3px;padding:2px 6px;border:1px solid var(--ui-border);border-radius:5px;background:var(--ui-surface-alt);color:var(--ui-accent);font:600 10px/16px "Inter",ui-sans-serif,system-ui,sans-serif;cursor:pointer}
.listing-release-reason{display:block;font-size:10px;font-weight:400;white-space:normal}
.inters-week-workflow{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:0 10px 8px}
.inters-week-workflow .listing-week-state{margin:0}
/* The filter changes visibility only; weeks and rows keep their existing geometry. */
.app-toolbar .planning-custom-filter{box-sizing:border-box;width:164px;max-width:164px;flex:0 0 164px;display:flex;align-items:center;gap:5px}
.planning-custom-filter span:first-child{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1;text-align:left}
.planning-custom-filter[aria-pressed="true"]{border-color:var(--green)}
.planning-filter-panel{width:min(640px,calc(100vw - 32px));max-height:90vh;overflow:auto}
.planning-filter-groups{display:grid;grid-template-columns:minmax(130px,1fr) minmax(220px,1.8fr);gap:16px}
.planning-filter-groups fieldset{display:block;min-width:0;border:1px solid var(--line);border-radius:6px;padding:10px}
.planning-filter-groups legend{font-weight:700;padding:0 5px}
.planning-filter-groups label{display:flex;align-items:center;gap:8px;padding:6px 0;margin:0}
.planning-filter-groups input[type="checkbox"]{width:16px;height:16px;flex:0 0 16px;margin:0}
.planning-filter-groups .filter-month{display:flex;flex-direction:column;align-items:stretch;font-size:12px}
.planning-filter-panel [data-filter-error]{color:var(--danger,#ce7777);min-height:1.2em}
.planning-filter-panel footer{display:flex;justify-content:flex-end;gap:8px}
@media(max-width:560px){.planning-filter-groups{grid-template-columns:1fr}}

.planning-filter-panel .filter-period{display:flex;gap:6px;min-width:0}.planning-filter-panel .filter-period select{min-width:0;flex:1}.planning-filter-panel .filter-period input{width:90px;min-width:0}
/* UX 2.4 — shared Planning editor finish; no grid, workflow or business changes. */
.editor.planning-editor{
 --editor-radius:6px;
 border-color:var(--ui-border-strong);
 background:var(--ui-surface);
 color:var(--ui-text);
}
.editor.planning-editor>.planning-editor-header{
 padding-bottom:8px;border-bottom:1px solid var(--ui-border-soft);
}
.editor.planning-editor .planning-editor-identity>b{font-size:17px;line-height:22px;font-weight:700}
.editor.planning-editor .planning-editor-identity>small{color:var(--ui-text-soft);line-height:16px}
.editor.planning-editor>.planning-editor-body{scrollbar-width:thin;scrollbar-color:var(--ui-border-strong) transparent}
.editor.planning-editor .planning-service-block{
 margin:8px 0;padding:8px;border-color:var(--ui-border-soft);
 border-radius:var(--editor-radius);background:var(--ui-surface-alt);
}
.editor.planning-editor .planning-service-block>header b{font-size:12px;font-weight:650;color:var(--ui-text)}
.editor.planning-editor .planning-people-fields{
 padding:7px 0 0;margin:8px 0 0;border:0;border-top:1px solid var(--ui-border-soft);border-radius:0;background:transparent;
}
.editor.planning-editor .planning-people-fields>h3{color:var(--ui-text);font-weight:650}
.editor.planning-editor .planning-people-fields>h3 small{color:var(--ui-text-soft)}
.editor.planning-editor .planning-person-row{border-top:0;padding:4px 0}
.editor.planning-editor .planning-person-row>label,
.editor.planning-editor .planning-participation-controls>label{color:var(--ui-text-soft);font-size:11px}
.editor.planning-editor .planning-editor-duration{gap:4px 10px}
.editor.planning-editor .planning-editor-duration strong{font-variant-numeric:tabular-nums;font-weight:700}
.editor.planning-editor input:not([type=checkbox]):not([type=radio]):not([type=hidden]),
.editor.planning-editor select{
 height:32px;padding:4px 8px;font-size:12px;line-height:20px;
 border:1px solid var(--ui-border);border-radius:var(--editor-radius);
 background:var(--ui-input);color:var(--ui-text);min-width:0;
}
.editor.planning-editor textarea{
 padding:7px 8px;font-size:13px;line-height:1.4;
 border-color:var(--ui-border);border-radius:var(--editor-radius);background:var(--ui-input);color:var(--ui-text);
}
.editor.planning-editor .planning-editor-body>label{font-size:12px;color:var(--ui-text-soft)}
.editor.planning-editor button{
 border-radius:var(--editor-radius);transition:background-color .12s,border-color .12s,color .12s;
}
.editor.planning-editor>footer{padding-top:8px;border-color:var(--ui-border-soft);gap:6px}
.editor.planning-editor>footer>button{min-height:34px;padding:6px 12px;font-size:13px;line-height:20px;font-weight:600}
.editor.planning-editor>footer>button.primary{background:var(--green);color:white;font-weight:700}
:root[data-theme=dark] .editor.planning-editor>footer>button.primary{background:#39775c;color:#f5f8f6}
.editor.planning-editor>footer>button.secondary{background:var(--ui-surface-alt);color:var(--ui-text)}
.editor.planning-editor>footer>button.danger{background:transparent;color:#ae4d53}
:root[data-theme=dark] .editor.planning-editor>footer>button.danger{color:#e5a5a8}
.editor.planning-editor>footer>button.primary:hover:not(:disabled){background:var(--green);filter:brightness(1.12)}
:root[data-theme=dark] .editor.planning-editor>footer>button.primary:hover:not(:disabled){background:#39775c}
.editor.planning-editor>footer>button.secondary:hover:not(:disabled),
.editor.planning-editor>footer>button.danger:hover:not(:disabled){background:var(--ui-hover)}
.editor.planning-editor>.planning-editor-header>[data-editor-close]{
 width:28px;height:28px;padding:0;font-size:20px;line-height:26px;background:transparent;color:var(--ui-text-soft);
}
.editor.planning-editor .planning-person-remove,
.editor.planning-editor .planning-service-block>header button{
 min-height:24px;line-height:24px;background:transparent;color:var(--ui-text-soft);
}
.editor.planning-editor .planning-person-add,
.editor.planning-editor [data-replan-add]{
 min-height:24px;padding:3px 7px;border:1px solid var(--ui-border);border-radius:var(--editor-radius);
 font-size:11px;line-height:16px;background:var(--ui-input);color:var(--ui-accent);
}
.editor.planning-editor .planning-service-block>header [data-replan-remove]{padding:0 6px;font-size:11px}
.editor.planning-editor>.planning-editor-header>[data-editor-close]:hover,
.editor.planning-editor .planning-person-remove:hover:not(:disabled),
.editor.planning-editor .planning-service-block>header button:hover:not(:disabled),
.editor.planning-editor .planning-person-add:hover:not(:disabled),
.editor.planning-editor [data-replan-add]:hover:not(:disabled){background:var(--ui-hover);color:var(--ui-accent)}
.editor.planning-editor .occurrence-formatting{
 padding:8px 0 0;border:0;border-top:1px solid var(--ui-border-soft);border-radius:0;background:transparent;
}
.editor.planning-editor .occurrence-formatting h3{color:var(--ui-text-soft);font-weight:600}
.editor.planning-editor .occurrence-format-row{border-top:0}
.editor.planning-editor .occurrence-color-command{border-color:var(--ui-border);background:var(--ui-input);color:var(--ui-text)}
.editor.planning-editor .replanning-current,
.editor.planning-editor .replanning-comparison{border-color:var(--ui-border-soft);border-radius:var(--editor-radius);background:var(--ui-surface-alt)}
.editor.planning-editor .replanning-current summary{color:var(--ui-text-soft)}
.editor.planning-editor .replanning-current summary b{color:var(--ui-text)}
.editor.planning-editor .replanning-draft-heading>b{font-size:13px;color:var(--ui-accent)}
.editor.planning-editor .replanning-target{border-left:2px solid var(--ui-accent-border);font-size:12px}
.editor.planning-editor [data-replan-segment]{
 padding:5px 7px;border:1px solid var(--ui-border-soft);border-radius:var(--editor-radius);
 background:var(--ui-surface-alt);color:var(--ui-text);outline:none;
}
.editor.planning-editor [data-replan-segment][aria-current=true]{border-color:var(--ui-accent-border);background:var(--ui-accent-soft)}
.editor.planning-editor [data-replan-segment]:hover:not(:disabled){background:var(--ui-hover);border-color:var(--ui-accent-border)}
.editor.planning-editor .planning-replanning-context{border-bottom-color:var(--ui-border-soft)}
.editor.planning-editor .replanning-feedback{padding-left:8px;border-left:2px solid var(--ui-border);color:var(--ui-text-soft)}
.editor.planning-editor .replanning-feedback:has([data-valid=false]){border-left-color:#ae4d53}
.editor.planning-editor .replanning-feedback:has([data-valid=true]){border-left-color:var(--ui-accent-border)}
.editor.planning-editor .replanning-feedback [data-replan-check]{border:1px solid var(--ui-border);background:var(--ui-input);color:var(--ui-text);line-height:16px}
.editor.planning-editor .replanning-feedback [data-replan-check]:hover:not(:disabled){background:var(--ui-hover)}
.editor.planning-editor input:focus,.editor.planning-editor select:focus,.editor.planning-editor textarea:focus,
.editor.planning-editor button:focus-visible,.editor.planning-editor summary:focus-visible{
 outline:2px solid var(--ui-accent-border);outline-offset:1px;
}
.editor.planning-editor :is(input,select,textarea,button):disabled{opacity:1;color:var(--ui-text-soft);background:var(--ui-surface-soft);cursor:not-allowed}
.editor.planning-editor .planning-person-row.is-disabled .planning-participation-controls{opacity:1}
:root .editor.planning-editor>footer>button.primary:disabled,
:root[data-theme=dark] .editor.planning-editor>footer>button.primary:disabled{background:var(--ui-surface-soft);color:var(--ui-text-soft);filter:none}
@media(max-width:600px){
 .editor.planning-editor .planning-participation-controls{grid-template-columns:minmax(0,1.3fr) minmax(0,.8fr) minmax(0,.7fr)}
 .editor.planning-editor .planning-service-block{padding:7px}
 .editor.planning-editor .planning-editor-identity>b{font-size:15px}
}
@media(prefers-reduced-motion:reduce){.editor.planning-editor button{transition:none}}

/* Retained Planning panels must not occupy or intercept any space when toggled off. */
.inters-window[hidden]{display:none!important}

/* Listing UX 1: weekly consultation and distinct withdrawal/deletion actions. */
.listing-release-scope,.listing-week-consultation{display:block;font-size:10px;font-weight:400;line-height:1.3;color:var(--ui-text-soft)}
#listing .listing-card-remove svg{display:block;margin:auto}
#listing .listing-card-remove[data-listing-withdraw]:hover,#listing .listing-card-remove[data-listing-withdraw]:focus{background:var(--ui-hover);color:var(--ui-text)}

/* Shared Listing editor: fixed context/actions, independently scrolling fields. */
.listing-item-modal .listing-item-form{display:flex;flex-direction:column;width:min(620px,94vw);max-height:92vh;max-height:92dvh;overflow:hidden;padding:0;min-height:0}
.listing-item-form>header{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;flex:none;padding:12px 16px;border-bottom:1px solid var(--ui-border)}
.listing-editor-context{margin:4px 0 0;color:var(--ui-text-soft);font-size:12px;line-height:1.4;overflow-wrap:anywhere}
.listing-editor-body{min-height:0;overflow:auto;padding:4px 16px 12px;overscroll-behavior:contain}
.listing-editor-body>label{display:block;margin:10px 0}
.listing-editor-body>label>small{display:block;color:var(--ui-text-soft);font-size:12px;margin-top:4px}
.listing-item-form input:disabled,.listing-item-form select:disabled{opacity:.6;cursor:not-allowed}
.listing-item-form>.listing-editor-body .listing-field-error{display:block;color:var(--ui-danger,#ba4747);font-size:12px;margin-top:4px}
.listing-item-form [aria-invalid=true]{border-color:var(--ui-danger,#ba4747)}
.listing-item-form>footer{display:flex;flex-direction:column;flex:none;margin:0;padding:10px 16px;border-top:1px solid var(--ui-border);background:var(--ui-surface)}
.listing-editor-actions{display:flex;justify-content:flex-end;gap:8px}
:root .editor.listing-item-form>footer [data-listing-cancel]{background:var(--ui-surface-soft);color:var(--ui-text);border:1px solid var(--ui-border)}
.listing-editor-feedback{margin:0 0 6px;color:var(--ui-danger,#ba4747);font-size:12px;max-height:18vh;overflow:auto;overflow-wrap:anywhere}
@media(max-width:500px){.listing-item-form .listing-companions{grid-template-columns:minmax(0,1fr)}.listing-item-form>header,.listing-item-form>footer{padding:8px 12px}.listing-editor-body{padding-inline:12px}}

/* Listing UX 3: one contextual edit action in the existing client grid area. */
.listing-editable>.listing-card-head,.listing-editable>.inters-listing-card-head{position:relative}
:root #listing .sheet-line .listing-edit-affordance,
:root .inters-listing-card .listing-edit-affordance{position:absolute;grid-area:1/1/2/2;justify-self:end;align-self:center;z-index:2;box-sizing:border-box;height:20px;min-height:20px;width:auto;max-width:100%;padding:1px 5px;margin:0;border:1px solid var(--ui-border);border-radius:4px;background:var(--ui-surface);color:var(--ui-accent);font:600 10px/16px "Inter",ui-sans-serif,system-ui,sans-serif;cursor:pointer;opacity:0;pointer-events:none}
:root #listing .listing-editable:is(:hover,:focus-within) .listing-edit-affordance,
:root .inters-listing-card.listing-editable:is(:hover,:focus-within) .listing-edit-affordance{opacity:1;pointer-events:auto}
:root .listing-edit-affordance:focus-visible{outline:2px solid var(--ui-accent);outline-offset:1px}
:root #listing .sheet-line.listing-editable:focus-within,.inters-listing-card.listing-editable:is(:hover,:focus-within){background:var(--ui-hover)}
:root #listing .sheet-line.listing-consultative:not(.placed):hover{background:var(--ui-surface)}
:root #listing .sheet-line.listing-consultative,.inters-listing-card.listing-consultative{cursor:default}
@media(hover:none){:root #listing .sheet-line .listing-edit-affordance,:root .inters-listing-card .listing-edit-affordance{opacity:1;pointer-events:auto}}

/* UX 4: reclaim only the existing gap / transparent duration inset.
   Tracks, numeric text, action targets and all vertical metrics stay intact. */
.listing-card-head>.listing-card-client{--listing-client-extra:7px}
.inters-listing-card-head>b{--listing-client-extra:13px}
[data-listing-name].listing-client-expanded{margin-inline-end:calc(-1 * var(--listing-client-extra))}
.inters-listing-card-head:has(>.listing-client-expanded)>span{border-left-color:transparent;background:linear-gradient(var(--ui-border),var(--ui-border)) 6px center/1px 75% no-repeat}
[data-listing-name]:focus-visible{outline:1px solid var(--ui-accent);outline-offset:0}
.listing-client-name-tooltip{position:fixed;z-index:95;max-width:min(420px,calc(100vw - 16px));padding:6px 9px;border:1px solid var(--ui-border);border-radius:5px;background:var(--ui-surface);color:var(--ui-text);font:600 12px/1.4 "Inter",ui-sans-serif,system-ui,sans-serif;overflow-wrap:anywhere;pointer-events:none;box-sizing:border-box}

/* Listing UX 5: shared Planning finishes, without changing any layout metric. */
#listing .app-toolbar :is(button,select),
.inters-window[data-inters-window="listing"] :is(button,select),
.listing-item-modal .listing-item-form :is(input,select,textarea,button){border-radius:5px}
#listing .app-toolbar button:hover:not(:disabled),
.inters-window[data-inters-window="listing"] button:hover:not(:disabled){background:var(--ui-hover);border-color:var(--ui-accent-border);color:var(--ui-accent)}
#listing :is(button,select,input):focus-visible,
.inters-window[data-inters-window="listing"] :is(button,select,input):focus-visible,
.listing-item-modal :is(input,select,textarea):focus,
.listing-item-modal button:focus-visible{outline:2px solid var(--ui-accent-border);outline-offset:1px}
#listing .listing-worker,#listing .listing-sheet>div{border-color:var(--ui-border-soft)}
#listing .listing-column-heading,
.inters-window[data-inters-window="listing"] .inters-listing-group>h3{color:var(--ui-accent);border-color:var(--ui-border-soft)}
#listing .sheet-line,.inters-window[data-inters-window="listing"] .inters-listing-card{border-radius:4px}
:root[data-theme] #listing .sheet-line.placed,
.inters-window[data-inters-window="listing"] .inters-listing-card.listing-consultative{opacity:1;background:var(--ui-surface-alt);color:var(--ui-text)}
#listing .listing-card-placed-status,
.inters-window[data-inters-window="listing"] .listing-card-placed-status{color:var(--ui-accent)}
#listing .listing-card-actual-team,
.inters-window[data-inters-window="listing"] .listing-card-actual-team{color:var(--ui-text-soft)}
#listing .duration-pending .listing-card-duration,
.inters-window[data-inters-window="listing"] .duration-pending .inters-listing-card-head>span{color:var(--ui-progress-text)}
#listing .week-col footer{border-color:var(--ui-border-soft);background:var(--ui-surface-alt)}
#listing .listing-free-slots{color:var(--ui-text-soft)}
#listing .listing-week-state,
.inters-window[data-inters-window="listing"] .listing-week-state{color:var(--ui-text-soft)}
#listing .listing-week-state.is-production,
.inters-window[data-inters-window="listing"] .listing-week-state.is-production{color:var(--ui-accent)}
#listing .listing-release,
.inters-window[data-inters-window="listing"] .listing-release{border-color:var(--ui-border);border-radius:5px;background:var(--ui-surface-alt);color:var(--ui-accent)}
:root #listing .sheet-line .listing-edit-affordance,
:root .inters-window[data-inters-window="listing"] .listing-edit-affordance{border-radius:5px;border-color:var(--ui-accent-border)}
:root #listing .sheet-line .listing-edit-affordance:hover,
:root .inters-window[data-inters-window="listing"] .listing-edit-affordance:hover{background:var(--ui-hover);color:var(--ui-accent)}
#listing :is(.listing-card-carry,.listing-card-remove){color:var(--ui-text-soft);border-radius:4px}
#listing .listing-card-remove{opacity:.8}
#listing :is(.listing-card-carry,.listing-card-remove) svg{stroke-width:1.6}
#listing .listing-card-remove:hover{opacity:1;background:var(--ui-hover);color:#ae4d53}
:root[data-theme=dark] #listing .listing-card-remove:hover{color:#e5a5a8}
:root[data-theme] #listing .listing-card-remove[data-listing-withdraw]:hover{color:var(--ui-accent)}
#listing button:disabled,
.inters-window[data-inters-window="listing"] button:disabled{opacity:1;color:var(--ui-text-soft);background:var(--ui-surface-soft);cursor:not-allowed}
#listing .listing-card-carry:disabled{background:transparent;color:var(--ui-text-soft);opacity:.65}
.listing-item-modal .listing-item-form{border-color:var(--ui-border);border-radius:7px;background:var(--ui-surface);color:var(--ui-text)}
.listing-item-modal .listing-item-form>header,
.listing-item-modal .listing-item-form>footer{border-color:var(--ui-border-soft);background:var(--ui-surface-alt)}
.listing-item-modal .listing-item-form>header b{color:var(--ui-text)}
.listing-item-modal .listing-editor-body>label{color:var(--ui-text-soft)}
.listing-item-modal .listing-item-form :is(input,select,textarea){border-color:var(--ui-border);background:var(--ui-input);color:var(--ui-text)}
.listing-item-modal .listing-item-form :is(input,select,textarea,button):disabled{opacity:1;color:var(--ui-text-soft);background:var(--ui-surface-soft);cursor:not-allowed}
.listing-item-modal .listing-item-form [aria-invalid=true]{border-color:var(--ui-danger,#ba4747)}
:root[data-theme=dark] .listing-item-modal{--ui-danger:#e5a5a8}
.listing-item-modal .listing-item-form>footer button:hover:not(:disabled){filter:brightness(1.1)}
:root .listing-item-modal .listing-item-form>footer [data-listing-cancel]:hover{background:var(--ui-hover);filter:none}

/* Recap UX 1: feedback belongs to the draft, with no extra idle row space. */
.recap-edit-feedback{grid-column:1/-1;margin:0;padding:4px 7px;font-size:11px;line-height:1.35;color:var(--ui-text-soft);border-top:1px solid var(--ui-border-soft)}
.recap-edit-feedback[role=alert],[data-recap-client-error]{color:#ee999e}
[data-recap-client-error]{display:block;padding:3px 6px;font-size:11px;line-height:1.3}
.recap-edit-feedback[hidden],[data-recap-client-error][hidden]{display:none}
#recap [data-recap-field=client][aria-invalid=true]{outline:1px solid #ee999e;outline-offset:-1px}
.recap-client-edit:has([aria-invalid="true"]){display:flex;flex-direction:column}
.recap-client-edit:has([aria-invalid="true"])>.recap-details-editor{height:auto;flex:1}

/* Month selection keeps its own fill; keyboard focus adds a separate, layout-neutral ring. */
.recap-month input:focus+span{outline:2px solid var(--dark-text);outline-offset:3px}
.recap-month:has(input:disabled){cursor:wait}
.recap-month input:disabled+span{opacity:.55}
.recap-send-feedback{margin:0 0 6px;padding:4px 7px;color:var(--dark-text-soft);font-size:11px}
.recap-send-feedback[hidden]{display:none}
.recap-send-feedback.is-error{color:#ee999e;border-left:2px solid currentColor}

/* Récap UX 3: active formatting and keyboard focus without changing toolbar dimensions. */
#recap .recap-details-tools button{position:relative}
#recap .recap-details-tools button[aria-pressed="true"]{border-color:currentColor!important;background:#405348!important}
#recap .recap-details-tools button[aria-pressed="true"]::after{content:"";position:absolute;right:1px;bottom:1px;width:4px;height:2px;border-left:1px solid currentColor;border-bottom:1px solid currentColor;transform:rotate(-45deg)}
#recap .recap-details-tools button[aria-pressed="mixed"]{border-style:dashed!important}
#recap .recap-details-tools button:focus-visible{outline:2px solid var(--dark-text);outline-offset:2px;z-index:1}
#recap .recap-details-tools button:disabled{opacity:.6;cursor:not-allowed}

/* Récap UX 4: preserve reading geometry while the editor scrolls within that footprint. */
#recap .recap-row.is-editing{min-height:38px;background:var(--ui-surface-alt)}
#recap .recap-row.is-editing .recap-row-actions button{height:18px}
#recap .recap-editor-frame{position:relative;height:100%;min-width:0}
#recap .recap-edit-measure{visibility:hidden;pointer-events:none;user-select:none}
#recap .recap-editor-frame>.recap-details-editor{position:absolute;inset:0;min-height:0}
#recap .recap-row .recap-details-content{min-height:0;padding-top:3px;padding-bottom:3px}
#recap .recap-client-edit>.recap-details-editor{min-height:0}
#recap .recap-client-edit{border-left:2px solid #477366;background:#29312e}
#recap .recap-client-edit input.recap-client-content{padding:3px 7px;font-size:12px;font-weight:750;line-height:normal;color:#c8ded7}
#recap .recap-client-name{min-width:0;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
#recap-client-tooltip{position:fixed;z-index:120;max-width:min(480px,calc(100vw - 16px));box-sizing:border-box;padding:6px 9px;border:1px solid var(--ui-accent-border);border-radius:5px;background:var(--ui-surface);color:var(--ui-text);font:600 12px/1.4 "Inter",ui-sans-serif,system-ui;overflow-wrap:anywhere;pointer-events:none}
#recap .recap-row:not(.is-editing):hover{background:var(--ui-hover)}
#recap .recap-head [aria-sort="ascending"],#recap .recap-head [aria-sort="descending"]{background:var(--ui-hover);color:var(--ui-accent)}
#recap [data-recap-sort]{border-radius:3px;min-height:20px}
#recap [data-recap-sort]:hover{color:var(--ui-text)}
#recap [data-sort-indicator]{display:inline-block;min-width:8px;text-align:center}
#recap .recap-head>b:nth-child(2) [data-recap-sort],#recap .recap-head>b:nth-child(4) [data-recap-sort]{justify-content:center}
#recap :is([data-recap-sort],.recap-row-actions button):focus-visible{outline:2px solid var(--ui-accent-border);outline-offset:-1px}
#recap .app-toolbar :is(button,select){border-radius:5px}
#recap .app-toolbar :is(button,select):focus-visible{outline:2px solid var(--ui-accent-border);outline-offset:1px}
#recap .recap-send:disabled{opacity:.7}

/* BDD reliability feedback only; existing form/grid geometry is retained. */
.bdd-save-status{grid-column:1/-1;display:block;flex-basis:100%;white-space:normal;color:var(--muted);font-size:11px}
.bdd-save-status[hidden],[data-bdd-reload][hidden]{display:none}
.bdd-save-status[role="alert"]{color:var(--danger,#b25e53)}
.bdd-client-form>footer,.bdd-business-form>footer{flex-wrap:wrap;gap:5px}
.business-detail-row>[data-bdd-discard],.business-detail-row>[data-bdd-reload]{grid-column:1/-1;justify-self:end}

/* BDD UX 2: local validation and accessible, compact parameter help. */
.bdd-field-help,.bdd-generation-help{display:block;font-size:11px;line-height:1.35;color:var(--muted);font-weight:normal;margin-top:4px}
.bdd-field-error{display:block;color:var(--danger,#c76358);font-size:12px;line-height:1.35;font-weight:normal;margin-top:4px}
.bdd-field-error[hidden]{display:none}
.bdd-business-form [aria-invalid="true"],.bdd-client-form [aria-invalid="true"],.bdd-create-form [aria-invalid="true"],.business-detail-row [aria-invalid="true"]{outline:1px solid var(--danger,#c76358);outline-offset:1px}
.bdd-generation-help{grid-column:1/-1;margin:6px 0 0}

/* BDD UX4: bounded reading areas and progressive form layout, no business changes. */
.bdd-sheet textarea,.bdd-create-form textarea{min-height:72px;max-height:168px;overflow:auto;resize:vertical;white-space:pre-wrap;overflow-wrap:anywhere}
.bdd-sheet input,.bdd-sheet select,.bdd-sheet textarea,.bdd-create-form input,.bdd-create-form select,.bdd-create-form textarea{min-width:0;max-width:100%;box-sizing:border-box;scroll-margin-block:100px 30px}
.bdd-sheet label,.bdd-sheet dd{min-width:0;overflow-wrap:anywhere}
.bdd-client-information dd,.business-detail-metadata{white-space:pre-wrap;overflow-wrap:anywhere}
.bdd-no-results{padding:18px!important;text-align:center;white-space:normal!important;color:var(--muted)}
.bdd-sheet .bdd-sheet-actions{grid-row:2}
.bdd-sheet-header button{scroll-margin-top:0}
.bdd-name-tooltip{position:fixed;z-index:1000;max-width:min(480px,90vw);padding:7px 10px;border:1px solid var(--line);border-radius:5px;background:var(--ui-input,#fff);color:var(--ui-text,#26342e);font-size:12px;white-space:normal;overflow-wrap:anywhere;pointer-events:none}
@media(max-width:850px){
 #bdd .app-toolbar{height:auto;min-height:52px;flex-wrap:wrap}
 #bdd .toolbar-controls{flex-wrap:wrap}
 #bdd-search{width:160px;min-width:100px}
 .bdd-sheet .business-detail-row,.bdd-sheet .business-detail-row.is-new{grid-template-columns:minmax(0,2fr) minmax(0,1fr) 12px minmax(0,1fr) minmax(0,1fr)}
 .bdd-sheet .business-detail-row>button{grid-row:auto}
 .bdd-sheet .business-detail-month>header{flex-wrap:wrap;gap:5px}
}
@media(max-width:600px){
 .bdd-sheet .bdd-business-general{grid-template-columns:minmax(0,1fr)}
 .bdd-sheet .bdd-business-general .wide{grid-column:auto}
 .bdd-sheet .bdd-business-targets>div{grid-template-columns:repeat(2,minmax(0,1fr))}
 .bdd-sheet .business-detail-row,.bdd-sheet .business-detail-row.is-new{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}
 .bdd-sheet .business-detail-row>label:first-child{grid-column:1/-1}
 .bdd-sheet .business-detail-times{display:none}
 .bdd-sheet .bdd-client-information dl{grid-template-columns:110px minmax(0,1fr)}
 .bdd-sheet .bdd-sheet-identity{flex-wrap:wrap;gap:2px}
 .bdd-sheet-actions{flex-wrap:wrap}
 .bdd-sheet footer button{max-width:100%;white-space:normal}
}

/* BDD UX5: same visual tokens as Planning/Listing; no layout or workflow changes. */
#bdd,.editor.bdd-sheet,.editor.bdd-create-form{--bdd-primary:var(--green);--bdd-danger:#ae4d53}
:root[data-theme=dark] :is(#bdd,.editor.bdd-sheet,.editor.bdd-create-form){--bdd-primary:#39775c;--bdd-danger:#e5a5a8}
#bdd .bdd-grid{border-color:var(--ui-border);background:var(--ui-surface)}
#bdd .bdd-grid :is(th,td){border-color:var(--ui-border-soft)}
#bdd .bdd-grid tbody tr:focus-within>td{background:var(--ui-selected)}
#bdd .bdd-grid .bdd-client-cell{color:var(--ui-accent);font-weight:750}
#bdd .bdd-grid .bdd-client-cell:focus-visible{outline:2px solid var(--ui-accent-border);outline-offset:-2px}
#bdd .bdd-service-type{border-radius:5px;vertical-align:middle}
#bdd .app-toolbar :is(input,select,button){border-radius:5px}
#bdd :is(input,select){background:var(--ui-input);border-color:var(--ui-border);color:var(--ui-text)}
#bdd input::placeholder{color:var(--ui-text-soft);opacity:1}
#bdd .bdd-no-results{background:var(--ui-surface-alt);color:var(--ui-text-soft)}
#bdd :is(button,input,select):focus-visible{outline:2px solid var(--ui-accent-border);outline-offset:1px}
#bdd button:hover:not(:disabled){border-color:var(--ui-accent-border);background:var(--ui-hover);color:var(--ui-accent)}
:root .editor.bdd-sheet,:root .editor.bdd-create-form{border-color:var(--ui-border-strong);border-radius:7px;background:var(--ui-surface);color:var(--ui-text)}
:root .editor.bdd-sheet>.bdd-sheet-header{background:var(--ui-surface);border-color:var(--ui-border-soft)}
:root .editor.bdd-sheet .bdd-sheet-identity strong{color:var(--ui-text);font-weight:700}
:root .editor.bdd-sheet .bdd-sheet-identity span{color:var(--ui-text-soft);font-weight:600}
:root .editor.bdd-sheet :is(.bdd-client-information>section,.bdd-business-general,.bdd-business-targets,.business-detail-month){border-color:var(--ui-border-soft);border-radius:6px;background:var(--ui-surface-alt)}
:root .editor.bdd-sheet :is(h3,.business-detail-month>header b){color:var(--ui-text);font-weight:650}
:root .editor.bdd-sheet :is(label,dt),:root .editor.bdd-create-form>label{color:var(--ui-text-soft);font-weight:600}
:root .editor.bdd-sheet :is(input,select,textarea),:root .editor.bdd-create-form :is(input,select,textarea){border-color:var(--ui-border);border-radius:5px;background:var(--ui-input);color:var(--ui-text);font-family:inherit;font-weight:400}
:root .editor.bdd-sheet input[type=checkbox],:root .editor.bdd-create-form input[type=checkbox]{accent-color:var(--bdd-primary)}
:root .editor.bdd-sheet :is(input,textarea)::placeholder,:root .editor.bdd-create-form :is(input,textarea)::placeholder{color:var(--ui-text-soft);opacity:1}
:root .editor.bdd-sheet :is(input,select,textarea):focus,:root .editor.bdd-create-form :is(input,select,textarea):focus,
:root .editor.bdd-sheet :is(button,summary):focus-visible,:root .editor.bdd-create-form button:focus-visible{outline:2px solid var(--ui-accent-border);outline-offset:1px}
:root .editor.bdd-sheet :is(.bdd-field-help,.bdd-generation-help,.business-detail-intro,.business-detail-metadata),:root .editor.bdd-create-form .bdd-field-help{color:var(--ui-text-soft);font-weight:400}
:root .editor.bdd-sheet :is(.bdd-business-decomposition,.business-detail-row){border-color:var(--ui-border-soft)}
:root .editor.bdd-sheet .business-detail-row{border-top-style:solid}
:root .editor.bdd-sheet :is(button,.bdd-generation-help){border-radius:5px}
:root .editor.bdd-sheet button,:root .editor.bdd-create-form button{transition:background-color .12s,border-color .12s,color .12s}
:root .editor.bdd-sheet button[type=submit],:root .editor.bdd-create-form button[type=submit]{background:var(--bdd-primary);color:#f5f8f6;border-color:var(--bdd-primary);font-weight:700}
:root .editor.bdd-sheet button[type=submit]:hover:not(:disabled),:root .editor.bdd-create-form button[type=submit]:hover:not(:disabled){filter:brightness(1.1)}
:root .editor.bdd-sheet :is([data-bdd-discard],[data-bdd-reload]),:root .editor.bdd-create-form :is([data-bdd-discard],[data-bdd-reload]){background:var(--ui-surface-soft);color:var(--ui-text-soft);border-color:var(--ui-border);font-weight:600}
:root .editor.bdd-sheet :is([data-bdd-sheet-close],[data-business-detail-add]),:root .editor.bdd-create-form [data-create-close]{background:transparent;color:var(--ui-accent);border-radius:5px}
:root .editor.bdd-sheet button:not([type=submit]):hover:not(:disabled),:root .editor.bdd-create-form button:not([type=submit]):hover:not(:disabled){background:var(--ui-hover);color:var(--ui-accent);border-color:var(--ui-accent-border)}
:root .editor.bdd-sheet .bdd-sheet-actions button{background:var(--ui-input);border-color:var(--ui-border);color:var(--ui-text-soft)}
:root .editor.bdd-sheet .bdd-sheet-actions button[aria-selected=true]{background:var(--ui-accent-soft);border-color:var(--ui-accent-border);color:var(--ui-accent)}
:root .editor.bdd-sheet :is([data-business-target],input[inputmode=decimal]),:root .editor.bdd-sheet input[type=number]{font-variant-numeric:tabular-nums}
:root .editor.bdd-sheet .bdd-field-error,:root .editor.bdd-create-form .bdd-field-error{color:var(--bdd-danger)}
:root .editor.bdd-sheet [aria-invalid=true],:root .editor.bdd-create-form [aria-invalid=true]{border-color:var(--bdd-danger);outline-color:var(--bdd-danger)}
:root .editor.bdd-sheet .bdd-save-status,:root .editor.bdd-create-form .bdd-save-status{color:var(--ui-text-soft);border-left:2px solid var(--ui-border);padding-left:7px;line-height:1.35}
:root .editor.bdd-sheet .bdd-save-status[role=alert],:root .editor.bdd-create-form .bdd-save-status[role=alert]{color:var(--bdd-danger);border-color:currentColor}
:root .editor.bdd-sheet form:has([data-bdd-reload]:not([hidden])) .bdd-save-status{color:var(--ui-progress-text);border-color:currentColor}
#bdd :is(button,input,select):disabled,:root .editor.bdd-sheet :is(button,input,select,textarea):disabled,:root .editor.bdd-create-form :is(button,input,select,textarea):disabled{opacity:1;background:var(--ui-surface-soft);color:var(--ui-text-soft);border-color:var(--ui-border-soft);cursor:not-allowed;filter:none}
/* Main forms share a 30 px control; compact monthly/detail controls keep 28/29 px. */
:root .editor.bdd-sheet :is(.bdd-client-form,.bdd-business-general) input:not([type=checkbox]),
:root .editor.bdd-sheet .bdd-business-general select,
:root .editor.bdd-create-form :is(input:not([type=checkbox]),select){height:30px;padding:5px 7px;font-size:12px;line-height:18px}
:root .editor.bdd-create-form button{border-radius:5px}
/* Align detailed controls above their variable-length help, retaining DOM/tab order. */
:root .editor.bdd-sheet .business-detail-row>label{display:grid;grid-template-rows:26px 29px;grid-auto-rows:auto;align-self:start;align-content:start}
@media(min-width:851px){
 :root .editor.bdd-sheet .business-detail-row{grid-template-columns:minmax(180px,2fr) minmax(125px,1fr) 12px minmax(145px,1.1fr) minmax(140px,1.1fr) 60px auto}
 :root .editor.bdd-sheet .business-detail-row>button[type=submit]{align-self:start;margin-top:28px}
 :root .editor.bdd-sheet .business-detail-row>:is(output,.business-detail-times){align-self:start;padding-top:28px;line-height:29px}
}
@media(min-width:601px) and (max-width:850px){
 :root .editor.bdd-sheet .business-detail-row>label{grid-template-rows:36px 29px}
}
/* Fixed BDD month columns: keep the full hourly value without changing the grid. */
#bdd .bdd-compact-grid td.bdd-month-cell{padding-inline:0}

/* The inner text owns truncation; retain the existing positioned comment box. */
#planning .planning-comment-text{font:inherit;letter-spacing:inherit;margin:0;display:block;min-width:0;width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
#planning .day-full-interventions .planning-comment-text{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;white-space:normal;overflow-wrap:anywhere}

/* Shared in-document decisions; native dialog supplies the modal top layer. */
.planning-confirm-dialog{max-height:90vh;max-height:90dvh;overflow:auto;color:var(--ui-text);background:var(--ui-surface);border:1px solid var(--ui-border)}
.planning-confirm-dialog::backdrop{background:#1e2b2566}
:root[data-theme="dark"] .planning-confirm-dialog::backdrop{background:#0d1210b8}
.planning-confirm-dialog p{white-space:pre-wrap;overflow-wrap:anywhere}
.planning-confirm-dialog button:focus-visible,.planning-confirm-dialog input:focus-visible{outline:2px solid var(--ui-accent-border);outline-offset:2px}

/* Two- and four-day absences crop the existing shared panorama; other spans stay unchanged. */
#planning .planning-unavailability.visual-plurijours.visual-two-day-crop .unavailability-panorama img,#planning .planning-unavailability.visual-semaine.visual-four-day-crop .unavailability-panorama img{object-fit:cover}
/* Keep the lettering in view when the horizontal crop grows on narrow windows. */
#planning .planning-unavailability:is(.visual-two-day-crop,.visual-four-day-crop).training .unavailability-panorama img,#planning .planning-unavailability:is(.visual-two-day-crop,.visual-four-day-crop).rtt .unavailability-panorama img{object-position:35% center}
#planning .planning-unavailability:is(.visual-two-day-crop,.visual-four-day-crop).leave .unavailability-panorama img{object-position:15% center}

/* Compact absence backgrounds fill their existing frame in both axes. */
#planning .planning-unavailability.visual-compact:is(.training,.leave,.rtt){background-size:cover}
/* Preserve the left-hand Congé lettering when a compact frame needs cropping. */
#planning .planning-unavailability.visual-compact.leave{background-position:25% center}

/* Shared intervention titles (desktop and readonly companion): inline-flex clips text without ellipsis.
   Keep fixed title/row heights and all right-hand cycle typography unchanged. */
#planning .planning-matrix .intervention-main .intervention-client{
 display:block;
 min-width:0;
 max-width:100%;
 overflow:hidden;
 text-overflow:ellipsis;
 white-space:nowrap;
}
#planning.density-compact .intervention-client{font-size:11px!important}
#planning.density-normal .intervention-client{font-size:13px!important}
#planning.density-large .intervention-client{font-size:16px!important}
/* Optical alignment of uppercase ink after the one-pixel font reduction.
   Redistribute the existing 2px vertical padding; keep every box and line intact. */
#planning.density-large .planning-matrix .intervention-client{padding-top:2px;padding-bottom:0}
/* Fill the fixed cartouche's content height: 17-2=15 and 20-2=18.
   The previous 13/16px lines left 2px unused below the line box.
   Confort retains its independently validated 20px line and padding. */
#planning.density-compact .planning-matrix .intervention-client{line-height:15px}
#planning.density-normal .planning-matrix .intervention-client{line-height:18px}


/* Half-days: single interventions share the same position with or without
   a comment. Move any comment equally to preserve the original internal gap. */
#planning .slot-intervention-zone>.matrix-intervention:not(.paired-interventions)>.intervention-main{
 top:calc(var(--client-top) - 3px);
}
#planning .slot-intervention-zone>.matrix-intervention:not(.paired-interventions)>.planning-remark{
 top:calc(var(--client-top) + var(--text-line-height) + var(--client-comment-gap) + 1px);
}
/* The paired capsules are the reference: only their comment moves up 3px. */
#planning .slot-intervention-zone>.paired-interventions>.planning-remark{
 top:calc(var(--client-top) + var(--text-line-height) + var(--client-comment-gap) + 1px);
}
