/* URG360 Alpha 1.15 — Planning des équipes */
.v115planning-view{padding:18px 22px 40px;min-height:calc(100vh - 84px);background:#f6f9fc}
#v115StaffPlanningHost{max-width:1700px;margin:0 auto;color:#14233b}
.v115pl-header{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;margin-bottom:14px}
.v115pl-header h1{margin:2px 0 4px;font-size:1.7rem;letter-spacing:-.025em}
.v115pl-header p{margin:0;color:#607087}
.v115pl-header-actions{display:flex;gap:8px;align-items:center}
.v115pl-header select,.v115pl-toolbar button,.v115pl-header button,.v115pl-header select{min-height:38px;border:1px solid #d6e0ea;border-radius:10px;background:#fff;padding:0 12px;font:inherit;color:#19324f}
.v115pl-header select{min-width:240px}
.v115pl-toolbar{display:flex;align-items:center;gap:12px;flex-wrap:wrap;background:#fff;border:1px solid #e0e7ef;border-radius:14px;padding:10px 12px;box-shadow:0 5px 20px rgba(20,45,75,.04);position:sticky;top:74px;z-index:7}
.v115pl-date-nav{display:flex;align-items:center;gap:6px}
.v115pl-date-nav button:first-child,.v115pl-date-nav button:nth-last-child(2){font-size:1.25rem;width:38px;padding:0}
#v115plDateButton{font-weight:700;min-width:190px}
#v115plDateInput{position:absolute;opacity:0;pointer-events:none;width:1px;height:1px}
.v115pl-tabs{display:flex;gap:4px;background:#eef3f8;padding:4px;border-radius:10px;flex:1;justify-content:center}
.v115pl-tabs button{border:0;background:transparent;min-height:34px;padding:0 11px}
.v115pl-tabs button.active{background:#0a67d0;color:#fff;box-shadow:0 3px 10px rgba(10,103,208,.24)}
.v115pl-view-actions{display:flex;gap:6px}
.v115pl-body{margin-top:14px}
.v115pl-state{min-height:420px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;background:#fff;border:1px solid #e1e8f0;border-radius:16px}
.v115pl-state.error{color:#8b2430}.v115pl-state.error span{color:#6c7788;max-width:700px;text-align:center}
.v115pl-spinner{width:28px;height:28px;border:3px solid #dbe8f5;border-top-color:#0a67d0;border-radius:50%;animation:v115pl-spin .8s linear infinite}
@keyframes v115pl-spin{to{transform:rotate(360deg)}}
.v115pl-day{background:#fff;border:1px solid #dfe7ef;border-radius:16px;overflow:hidden;box-shadow:0 8px 28px rgba(28,52,82,.05)}
.v115pl-day-title{display:flex;justify-content:space-between;align-items:center;padding:16px 18px;border-bottom:1px solid #e7edf3}
.v115pl-day-title>div:first-child{display:flex;flex-direction:column}.v115pl-day-title strong{font-size:1.12rem}.v115pl-day-title span{color:#6d7a8d}
.v115pl-time-key{display:flex;gap:8px;flex-wrap:wrap}.v115pl-time-key span{background:#f4f7fa;border:1px solid #e3eaf1;border-radius:20px;padding:6px 10px;font-size:.82rem}
.v115pl-category-grid{display:grid;grid-template-columns:1.45fr 1.35fr 1.8fr .72fr 1.08fr .9fr;gap:8px;padding:10px;overflow-x:auto}
.v115pl-category{min-width:170px;border:1px solid #e3e9ef;border-radius:13px;overflow:hidden;background:#fafcfe}
.v115pl-category>header{display:flex;align-items:center;justify-content:center;gap:7px;min-height:52px;padding:8px;font-size:1.02rem;border-bottom:1px solid rgba(0,0,0,.05)}
.v115pl-category.cat-regulation>header{background:#bfe2ff}.v115pl-category.cat-smur>header{background:#f3c5d5}.v115pl-category.cat-emergency>header{background:#c9f5b3}.v115pl-category.cat-uhcd>header{background:#fff0a8}.v115pl-category.cat-on_call>header{background:#b5f2cd}.v115pl-category.cat-double>header{background:#e7d1ff}
.v115pl-category-body{display:flex;flex-direction:column;gap:8px;padding:8px}
.v115pl-shift-block{border-left:4px solid var(--shift);background:linear-gradient(90deg,color-mix(in srgb,var(--shift) 34%,#fff),#fff 75%);border-radius:9px;padding:8px}
.v115pl-shift-label{display:flex;gap:6px;align-items:baseline;flex-wrap:wrap;margin-bottom:6px}.v115pl-shift-label strong{font-size:.83rem}.v115pl-shift-label span{font-size:.72rem;color:#617088}.v115pl-shift-label em{font-size:.65rem;color:#7654a5;font-style:normal;background:#f1e8ff;padding:2px 5px;border-radius:10px}
.v115pl-slot-list{display:flex;flex-direction:column;gap:5px}.v115pl-slot{border:1px solid #d7e1eb;background:#fff;border-radius:8px;padding:9px 8px;text-align:left;min-height:39px;color:#20354e}.v115pl-slot:not(:disabled){cursor:pointer}.v115pl-slot:not(:disabled):hover{border-color:#8ab7de;box-shadow:0 4px 12px rgba(35,78,120,.08)}
.v115pl-slot.vacant{border:1.5px dashed #f0ad2e;background:#fffaf0;color:#b45f00;text-align:center}.v115pl-person-dot{color:#61758a;margin-right:6px;font-size:.65rem}
.v115pl-cycle{background:#fff;border:1px solid #dfe7ef;border-radius:16px;overflow:hidden}
.v115pl-cycle-title{display:flex;justify-content:space-between;padding:14px 16px;border-bottom:1px solid #e5ebf1}.v115pl-cycle-title span{color:#6c7a8d}
.v115pl-cycle-scroll{overflow:auto;max-height:calc(100vh - 260px)}
.v115pl-cycle table{border-collapse:separate;border-spacing:0;width:max-content;min-width:100%;font-size:.78rem}
.v115pl-cycle th,.v115pl-cycle td{border-right:1px solid #e7edf3;border-bottom:1px solid #e7edf3;min-width:64px;height:48px;text-align:center;background:#fff}
.v115pl-cycle thead th{position:sticky;top:0;z-index:3;background:#f8fafc;padding:5px}.v115pl-cycle .sticky-col{position:sticky;left:0;z-index:4;min-width:160px;text-align:left;padding:7px 10px;background:#fff}
.v115pl-cycle thead .sticky-col{z-index:5;background:#f8fafc}.v115pl-cycle tbody .sticky-col{border-left:4px solid var(--shift)}
.v115pl-cycle .sticky-col strong,.v115pl-cycle .sticky-col small{display:block}.v115pl-cycle .sticky-col small{font-weight:400;color:#718095;margin-top:2px}
.v115pl-cycle th.weekend,.v115pl-cycle td.weekend{background:#fff7f7}
.v115pl-cycle-cell{display:flex;align-items:center;justify-content:center;gap:2px;min-height:48px;cursor:default}.v115pl-cycle-cell[data-v115pl-assign]{cursor:pointer}.v115pl-cycle-cell span{display:inline-flex;align-items:center;justify-content:center;min-width:28px;height:28px;background:#eaf3fb;border:1px solid #d4e4f3;border-radius:7px;font-weight:800}.v115pl-cycle-cell em{display:inline-flex;align-items:center;justify-content:center;width:25px;height:25px;border:1px dashed #eba934;color:#b76d00;border-radius:7px;font-style:normal}
.v115pl-personal{display:grid;grid-template-columns:minmax(0,1.7fr) minmax(320px,.8fr);gap:14px}
.v115pl-personal-main,.v115pl-calendar-card,.v115pl-requests,.v115pl-assistant,.v115pl-settings-card,.v115pl-publish{background:#fff;border:1px solid #dfe7ef;border-radius:16px;padding:18px}
.v115pl-personal-main header h2,.v115pl-requests h2,.v115pl-assistant h2,.v115pl-settings-card h2{margin:0 0 4px}.v115pl-personal-main header p,.v115pl-requests header p,.v115pl-assistant header p,.v115pl-settings-card header p{margin:0;color:#6d7b8e}
.v115pl-personal-list{margin-top:14px;display:flex;flex-direction:column;gap:7px}.v115pl-personal-list article{display:grid;grid-template-columns:230px 1fr;gap:10px;align-items:center;border:1px solid #e7edf3;border-radius:10px;padding:9px}.v115pl-personal-list time{font-weight:650;color:#334b67}
.v115pl-personal-shift{border-left:4px solid var(--shift);padding:7px 10px;background:color-mix(in srgb,var(--shift) 22%,#fff);border-radius:7px}.v115pl-personal-shift strong,.v115pl-personal-shift small{display:block}.v115pl-personal-shift small{color:#66778c;margin-top:2px}
.v115pl-calendar-card{text-align:left;display:flex;flex-direction:column;gap:10px}.v115pl-calendar-card h3{margin:0;font-size:1.15rem}.v115pl-calendar-card p{margin:0;color:#66768a;line-height:1.45}.v115pl-calendar-icon{font-size:2.1rem;color:#0a67d0}.v115pl-calendar-link{display:flex;gap:6px}.v115pl-calendar-link input{min-width:0;flex:1;border:1px solid #d6e0ea;border-radius:8px;padding:9px}.v115pl-calendar-link button{border:0;border-radius:8px;padding:0 10px}.v115pl-webcal{text-align:center;text-decoration:none}
.v115pl-requests header,.v115pl-assistant>header,.v115pl-settings-card header{display:flex;justify-content:space-between;gap:14px;align-items:flex-start}
.v115pl-request-list,.v115pl-manager-requests{margin-top:15px;display:flex;flex-direction:column;gap:8px}.v115pl-request-row{display:grid;grid-template-columns:minmax(190px,.8fr) minmax(180px,1.3fr) auto auto;gap:12px;align-items:center;border:1px solid #e5ebf1;border-radius:10px;padding:11px}.v115pl-request-row>div strong,.v115pl-request-row>div span{display:block}.v115pl-request-row>div span{font-size:.8rem;color:#6a798c;margin-top:2px}.v115pl-request-row p{margin:0;color:#53657b}.v115pl-request-row .status{font-size:.75rem;font-weight:700;border-radius:20px;padding:5px 9px;background:#eef3f8}.v115pl-request-row .status.approved{background:#e2f7e8;color:#267246}.v115pl-request-row .status.rejected{background:#fde8ea;color:#a13945}.v115pl-request-row .status.submitted{background:#fff0cb;color:#966300}
.v115pl-assistant-kpis{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin:15px 0}.v115pl-assistant-kpis article{background:#f4f8fc;border:1px solid #e1e9f1;border-radius:12px;padding:14px}.v115pl-assistant-kpis strong{display:block;font-size:1.45rem}.v115pl-assistant-kpis span{color:#68788b;font-size:.82rem}
.v115pl-assistant-empty{min-height:190px;border:1.5px dashed #cbd9e7;border-radius:13px;display:flex;flex-direction:column;align-items:center;justify-content:center;color:#60758a}.v115pl-assistant-empty span{font-size:2rem;color:#0a67d0}.v115pl-assistant-empty strong{color:#263f5b;margin:5px}.v115pl-assistant-empty p{margin:0}
.v115pl-suggestion-list{display:flex;flex-direction:column;gap:7px}.v115pl-suggestion-list article{display:flex;justify-content:space-between;gap:14px;align-items:center;border:1px solid #e4ebf2;border-radius:10px;padding:10px 12px}.v115pl-suggestion-list article>div:first-child{display:grid;grid-template-columns:120px minmax(160px,1fr);gap:3px 10px;align-items:center}.v115pl-suggestion-list small{grid-column:2;color:#6a798d}.v115pl-suggestion-date{font-size:.8rem;color:#536980}.v115pl-suggestion-person{display:flex;align-items:center;gap:8px}
.v115pl-manager-requests{border-top:1px solid #e5ebf1;padding-top:16px}.v115pl-manager-requests h3{margin:0 0 9px}.v115pl-manager-request{display:flex;justify-content:space-between;gap:12px;align-items:center;border:1px solid #e5ebf1;border-radius:10px;padding:10px}.v115pl-manager-request div:first-child strong,.v115pl-manager-request div:first-child span,.v115pl-manager-request div:first-child small{display:block}.v115pl-manager-request span{color:#5e7188;font-size:.82rem;margin-top:2px}.v115pl-manager-request small{color:#718095;margin-top:3px}.v115pl-manager-request div:last-child{display:flex;gap:6px}
.v115pl-settings-grid{display:grid;grid-template-columns:1fr 1.25fr;gap:14px}.v115pl-time-form{display:grid;grid-template-columns:repeat(2,1fr);gap:10px;margin:14px 0}.v115pl-time-form label,.v115pl-modal-card label{font-size:.8rem;font-weight:650;color:#4c6178}.v115pl-time-form input,.v115pl-modal-card input,.v115pl-modal-card select,.v115pl-modal-card textarea{display:block;width:100%;box-sizing:border-box;margin-top:5px;border:1px solid #ced9e4;border-radius:9px;padding:9px;background:#fff;color:#1b334f;font:inherit}
.v115pl-shift-list{display:flex;flex-direction:column;gap:6px;margin-top:14px}.v115pl-shift-list>button{display:flex;align-items:center;gap:10px;text-align:left;border:1px solid #e2e9f0;background:#fff;border-radius:9px;padding:9px;cursor:pointer;color:#233a55}.v115pl-shift-list>button:hover{border-color:#9dbbd7}.v115pl-shift-list .dot{width:12px;height:34px;border-radius:5px;flex:0 0 12px}.v115pl-shift-list>button div{flex:1}.v115pl-shift-list strong,.v115pl-shift-list small{display:block}.v115pl-shift-list small{color:#69798d;margin-top:2px}
.v115pl-publish{margin-top:14px;display:flex;justify-content:space-between;align-items:center;gap:14px}.v115pl-publish strong,.v115pl-publish span{display:block}.v115pl-publish span{font-size:.82rem;color:#6d7d90;margin-top:2px}
.v115pl-empty{padding:22px;text-align:center;color:#758497;background:#f8fafc;border-radius:10px}
.v115pl-modal{position:fixed;inset:0;background:rgba(8,24,43,.46);display:flex;align-items:center;justify-content:center;padding:20px;z-index:3000}.v115pl-modal-card{width:min(680px,96vw);max-height:90vh;overflow:auto;background:#fff;border-radius:17px;padding:18px;box-shadow:0 25px 80px rgba(0,0,0,.25)}.v115pl-modal-card>header{display:flex;justify-content:space-between;gap:12px;align-items:flex-start;margin-bottom:14px}.v115pl-modal-card header h2{margin:1px 0 3px}.v115pl-modal-card header p{margin:0;color:#6d7b8c}.v115pl-modal-card header>button{border:0;background:#eef3f7;width:34px;height:34px;border-radius:50%;font-size:1.25rem}.v115pl-modal-card>label{display:block;margin:10px 0}.v115pl-modal-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.v115pl-modal-card footer{display:flex;justify-content:flex-end;gap:8px;margin-top:16px}.v115pl-check{display:flex!important;align-items:center;gap:8px;margin-top:23px!important}.v115pl-check input{width:auto!important;margin:0!important}
.v115pl-body button.primary,.v115pl-modal button.primary,.v115pl-calendar-card .primary{background:#0a67d0;color:#fff;border:1px solid #0a67d0;border-radius:9px;padding:9px 12px;font-weight:700;cursor:pointer}.v115pl-body button.secondary,.v115pl-modal button.secondary,.v115pl-header button.secondary,.v115pl-calendar-card button.secondary{background:#fff;color:#304963;border:1px solid #cedae5;border-radius:9px;padding:9px 12px;font-weight:650;cursor:pointer}.v115pl-body button.small,.v115pl-modal button.small{padding:6px 9px;font-size:.78rem}
body.v115pl-screen-mode #appSidebar,body.v115pl-screen-mode .topbar,body.v115pl-screen-mode .v115pl-header,body.v115pl-screen-mode .v115pl-tabs,body.v115pl-screen-mode .v115pl-view-actions{display:none!important}
body.v115pl-screen-mode .layout{margin-left:0!important;padding:0!important}body.v115pl-screen-mode .v115planning-view{padding:10px;background:#f2f6fa;min-height:100vh}body.v115pl-screen-mode .v115pl-toolbar{position:static;justify-content:center;box-shadow:none}body.v115pl-screen-mode .v115pl-category-grid{min-height:calc(100vh - 130px)}body.v115pl-screen-mode .v115pl-category>header{font-size:1.2rem;min-height:64px}body.v115pl-screen-mode .v115pl-slot{font-size:1.05rem;min-height:52px}
@media(max-width:1100px){.v115pl-category-grid{grid-template-columns:repeat(3,minmax(190px,1fr))}.v115pl-personal,.v115pl-settings-grid{grid-template-columns:1fr}.v115pl-toolbar{position:static}.v115pl-tabs{order:3;flex-basis:100%;overflow:auto;justify-content:flex-start}}
@media(max-width:720px){.v115planning-view{padding:12px}.v115pl-header{flex-direction:column}.v115pl-header-actions,.v115pl-header select{width:100%}.v115pl-category-grid{grid-template-columns:repeat(2,minmax(180px,1fr))}.v115pl-view-actions{display:none}.v115pl-request-row{grid-template-columns:1fr}.v115pl-assistant-kpis{grid-template-columns:1fr}.v115pl-suggestion-list article,.v115pl-manager-request,.v115pl-publish{align-items:flex-start;flex-direction:column}.v115pl-modal-grid{grid-template-columns:1fr}.v115pl-personal-list article{grid-template-columns:1fr}}
@media print{
  body *{visibility:hidden!important}
  #staffPlanningView,#staffPlanningView *{visibility:visible!important}
  #staffPlanningView{position:absolute!important;inset:0!important;padding:0!important;background:#fff!important}
  .v115pl-header,.v115pl-toolbar{display:none!important}
  .v115pl-day,.v115pl-cycle{box-shadow:none!important;border:0!important}
  .v115pl-category-grid{grid-template-columns:1.45fr 1.35fr 1.8fr .72fr 1.08fr .9fr!important;gap:4px!important;padding:0!important;overflow:visible!important}
  .v115pl-category>header{min-height:36px!important;font-size:.8rem!important}
  .v115pl-category-body{gap:3px!important;padding:4px!important}
  .v115pl-shift-block{padding:4px!important}.v115pl-slot{padding:4px!important;min-height:25px!important;font-size:.68rem!important}
  .v115pl-day-title{padding:7px 0!important}.v115pl-cycle-scroll{max-height:none!important;overflow:visible!important}
}

/* Règles de planning */
.v115pl-rules-card,.v115pl-work-targets-card{grid-column:1/-1}
.v115pl-rules-legend{display:flex;gap:8px;flex-wrap:wrap;margin-top:12px}
.v115pl-rules-legend span,.v115pl-rule-severity{display:inline-flex;align-items:center;border-radius:999px;padding:5px 9px;font-size:.72rem;font-weight:800}
.v115pl-rules-legend .block,.v115pl-rule-severity.block{background:#fde8eb;color:#9a2f3d}
.v115pl-rules-legend .override,.v115pl-rule-severity.override{background:#fff0cf;color:#8f6300}
.v115pl-rules-legend .warn,.v115pl-rule-severity.warn{background:#e8f1fb;color:#2a5d8f}
.v115pl-rule-list{display:flex;flex-direction:column;gap:7px;margin-top:12px}
.v115pl-rule-row{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:10px;align-items:center;border:1px solid #e1e9f1;background:#fff;border-radius:10px;padding:10px;text-align:left;color:#233a55;cursor:pointer}
.v115pl-rule-row:hover{border-color:#9fbcd7;box-shadow:0 4px 12px rgba(28,63,98,.06)}
.v115pl-rule-row.inactive{opacity:.58}
.v115pl-rule-row strong,.v115pl-rule-row small{display:block}
.v115pl-rule-row small{color:#6c7b8e;margin-top:3px}
.v115pl-rule-alert{display:flex;flex-direction:column;gap:3px;border-radius:9px;padding:9px 10px;margin:8px 0;font-size:.82rem}
.v115pl-rule-alert.block{background:#fdecef;border:1px solid #f4c6cd;color:#8d2f3a}
.v115pl-rule-alert.override{background:#fff4d8;border:1px solid #f0d18a;color:#805d0a}
.v115pl-rule-alert.warn{background:#edf5fc;border:1px solid #cfe2f4;color:#315f87}
#v115plOverrideWrap small{display:block;margin-top:5px;color:#7a6a45;font-weight:400}

/* Temps de travail cible personnalisé */
.v115pl-work-target-list{display:flex;flex-direction:column;gap:7px;margin-top:14px}
.v115pl-work-target-row{display:grid;grid-template-columns:minmax(180px,1.15fr) minmax(240px,1.35fr) minmax(100px,.45fr) minmax(100px,.45fr) auto;gap:10px;align-items:center;border:1px solid #e2e9f0;border-radius:10px;padding:9px 10px;background:#fff}
.v115pl-work-person strong,.v115pl-work-person small,.v115pl-work-current span,.v115pl-work-current strong{display:block}
.v115pl-work-person small,.v115pl-work-current span{font-size:.72rem;color:#748398;margin-top:2px}
.v115pl-work-target-row label{margin:0!important}
.v115pl-work-target-row input{margin-top:3px!important}
.v115pl-work-current strong{margin-top:2px}
.v115pl-work-current strong.positive,.v115pl-work-summary .positive strong{color:#a04416}
.v115pl-work-current strong.negative,.v115pl-work-summary .negative strong{color:#2e6c8f}
.v115pl-work-disclaimer{display:block;margin-top:10px;color:#78879a;line-height:1.4}
.v115pl-work-summary{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin:14px 0}
.v115pl-work-summary article{border:1px solid #e2e9f0;border-radius:10px;padding:10px;background:#f8fafc}
.v115pl-work-summary span,.v115pl-work-summary strong,.v115pl-work-summary small{display:block}
.v115pl-work-summary span{font-size:.72rem;color:#748398}
.v115pl-work-summary strong{font-size:1.05rem;margin-top:3px}
.v115pl-work-summary small{font-size:.67rem;color:#a04416;margin-top:3px}
@media(max-width:900px){
  .v115pl-work-target-row{grid-template-columns:1fr 1fr}
  .v115pl-work-summary{grid-template-columns:repeat(2,1fr)}
}
@media(max-width:560px){
  .v115pl-work-target-row,.v115pl-work-summary{grid-template-columns:1fr}
}

/* Périodes, désidérata et publication */
.v115pl-periods-card{grid-column:1/-1}
.v115pl-period-list{display:flex;flex-direction:column;gap:7px;margin-top:14px}
.v115pl-period-row{display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:10px;align-items:center;border:1px solid #e2e9f0;background:#fff;border-radius:10px;padding:10px;text-align:left;color:#233a55;cursor:pointer}
.v115pl-period-row:hover{border-color:#9fbcd7;box-shadow:0 4px 12px rgba(28,63,98,.06)}
.v115pl-period-row strong,.v115pl-period-row small{display:block}
.v115pl-period-row small{margin-top:3px;color:#6d7c90}
.v115pl-period-row .status{border-radius:999px;padding:5px 9px;font-size:.72rem;font-weight:800;background:#eef3f8;color:#4c6178}
.v115pl-period-row .status.published{background:#e4f7ea;color:#287149}
.v115pl-period-row .status.draft{background:#fff1cf;color:#8b6200}
.v115pl-period-row .status.archived{background:#eef0f2;color:#6d7580}
.v115pl-open-wishes{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:14px 0;padding:10px 12px;border:1px solid #dbe6f0;background:#f8fbfe;border-radius:10px;color:#4d6177}
.v115pl-open-wishes strong{color:#263f5b}
.v115pl-open-wishes span{background:#fff;border:1px solid #dce6ef;border-radius:999px;padding:5px 9px;font-size:.78rem}
.v115pl-request-row small{display:block;margin-top:3px;color:#738196}
.v115pl-modal-help{display:block;margin-top:6px;color:#738196;line-height:1.4}

/* Vue personnelle des désidérata */
.v115pl-request-actions{display:flex;gap:8px;flex-wrap:wrap}
.v115pl-personal-wish-wrap{display:grid;grid-template-columns:minmax(0,1fr) 260px;gap:14px;margin-top:14px}
.v115pl-personal-wish-main,.v115pl-wish-side,.v115pl-absence-history{border:1px solid #e1e8ef;border-radius:14px;background:#fbfdff;padding:14px}
.v115pl-wish-period-head{display:flex;align-items:end;justify-content:space-between;gap:12px;margin-bottom:10px}
.v115pl-wish-period-head label{min-width:240px}
.v115pl-wish-window{border-radius:9px;padding:9px 11px;margin-bottom:10px;font-size:.82rem}
.v115pl-wish-window.open{background:#e9f7ef;color:#2b6e48;border:1px solid #cbe8d7}
.v115pl-wish-window.closed{background:#f1f3f5;color:#6c7784;border:1px solid #e0e4e8}
.v115pl-personal-calendar{border:1px solid #e1e8ef;border-radius:12px;overflow:hidden;background:#fff}
.v115pl-calendar-weekdays{display:grid;grid-template-columns:repeat(7,1fr);background:#f3f7fb;border-bottom:1px solid #e1e8ef}
.v115pl-calendar-weekdays span{text-align:center;padding:8px 4px;font-size:.72rem;font-weight:800;color:#66778a}
.v115pl-personal-calendar-days,.v115pl-calendar-days{display:grid;grid-template-columns:repeat(7,1fr)}
.v115pl-personal-day,.v115pl-request-day{min-height:86px;border:0;border-right:1px solid #edf1f5;border-bottom:1px solid #edf1f5;background:#fff;padding:6px;text-align:left;vertical-align:top;cursor:pointer}
.v115pl-personal-day:nth-child(7n),.v115pl-request-day:nth-child(7n){border-right:0}
.v115pl-personal-day.outside,.v115pl-request-day.outside{background:#fafbfc;color:#a8b1bc}
.v115pl-personal-day.out-period{background:#f7f8fa}
.v115pl-personal-day:disabled{cursor:default;opacity:.78}
.v115pl-personal-day:not(:disabled):hover,.v115pl-request-day:not(:disabled):hover{background:#f0f7ff}
.v115pl-personal-day .day-number{display:block;font-weight:800;color:#31475f;margin-bottom:5px}
.v115pl-personal-day.outside .day-number{color:#a2adb8}
.v115pl-personal-day .day-markers{display:flex;flex-direction:column;gap:3px}
.v115pl-personal-marker{display:inline-flex;align-items:center;max-width:100%;width:max-content;border-radius:999px;padding:3px 6px;font-size:.64rem;font-weight:800;line-height:1.1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.v115pl-personal-marker.off{background:#efe8ff;color:#6944a5}
.v115pl-personal-marker.day{background:#fff1c8;color:#8a6200}
.v115pl-personal-marker.night{background:#e7edff;color:#4059a7}
.v115pl-personal-marker.shift{background:#e3f3ff;color:#17658f}
.v115pl-personal-marker.leave{background:#e5f7ea;color:#277247}
.v115pl-personal-marker.leave.approved,.v115pl-personal-marker.absence.approved{box-shadow:inset 0 0 0 1px #65a77a}
.v115pl-personal-marker.training{background:#ffe9df;color:#9a4e22}
.v115pl-personal-marker.absence{background:#fde8eb;color:#973947}
.v115pl-personal-marker.more{background:#edf1f5;color:#647486}
.v115pl-wish-side{display:flex;flex-direction:column;gap:16px}
.v115pl-wish-side h3{margin:0 0 8px;font-size:.95rem}
.v115pl-wish-legend{display:flex;gap:6px;flex-wrap:wrap}
.v115pl-wish-legend span{border-radius:999px;padding:5px 8px;font-size:.7rem;font-weight:800}
.v115pl-wish-legend .off{background:#efe8ff;color:#6944a5}.v115pl-wish-legend .day{background:#fff1c8;color:#8a6200}.v115pl-wish-legend .night{background:#e7edff;color:#4059a7}.v115pl-wish-legend .shift{background:#e3f3ff;color:#17658f}.v115pl-wish-legend .leave{background:#e5f7ea;color:#277247}.v115pl-wish-legend .training{background:#ffe9df;color:#9a4e22}
.v115pl-wish-month-list{display:flex;flex-direction:column;gap:6px}
.v115pl-wish-month-list>div{display:grid;grid-template-columns:auto 1fr auto;gap:7px;align-items:center;border-bottom:1px solid #edf1f5;padding:5px 0}
.v115pl-wish-month-list strong{font-size:.76rem;color:#42566e}
.v115pl-wish-month-list button{border:0;background:transparent;color:#9b4653;font-size:1rem}
.v115pl-wish-month-list .muted{color:#7f8b99;font-size:.8rem}
.v115pl-absence-history{margin-top:14px}
.v115pl-absence-history header h3{margin:0 0 3px}.v115pl-absence-history header p{margin:0;color:#718095}
.v115pl-request-kind{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin:10px 0 14px}.v115pl-request-kind button{border:1px solid #d7e1eb;background:#f7f9fb;border-radius:9px;padding:9px;font-weight:750;color:#50647b}.v115pl-request-kind button.active{background:#e9f3ff;border-color:#84b7e8;color:#0d63ae}
.v115pl-request-calendar{border:1px solid #e1e8ef;border-radius:10px;overflow:hidden;margin-top:8px}
.v115pl-request-day{min-height:52px;display:flex;align-items:center;justify-content:center;text-align:center}
.v115pl-request-day.selected{background:#dceeff;color:#075ca8;box-shadow:inset 0 0 0 2px #77afe0}
.v115pl-selected-days{display:flex;justify-content:space-between;align-items:center;margin:8px 0}
.v115pl-wish-toolbar{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.v115pl-calendar-nav{display:flex;align-items:center;justify-content:center;gap:8px}
.v115pl-calendar-nav strong{text-transform:capitalize}
.v115pl-request-horizon{background:#f4f8fc;border:1px solid #e0e8f0;border-radius:9px;padding:9px 10px;margin-bottom:10px;color:#52677e}
@media(max-width:900px){.v115pl-personal-wish-wrap{grid-template-columns:1fr}.v115pl-wish-side{display:grid;grid-template-columns:1fr 1fr}}
@media(max-width:620px){.v115pl-wish-period-head{align-items:stretch;flex-direction:column}.v115pl-wish-period-head label{min-width:0}.v115pl-personal-day{min-height:72px;padding:4px}.v115pl-personal-marker{font-size:.58rem;padding:2px 4px}.v115pl-wish-side{grid-template-columns:1fr}.v115pl-wish-toolbar{grid-template-columns:1fr}.v115pl-calendar-weekdays span{font-size:.62rem;padding:6px 2px}}

/* Planning 1.1 — workflows avancés */
.v115pl-notif-btn{display:inline-flex!important;align-items:center;gap:6px}
.v115pl-notif-btn span{display:inline-grid;place-items:center;min-width:20px;height:20px;padding:0 5px;border-radius:999px;background:#e9f3ff;color:#075ba8;font-size:.7rem;font-weight:850}
.v115pl-pub-badge{display:inline-flex;align-items:center;border-radius:999px;padding:7px 10px;font-size:.76rem;font-weight:800;white-space:nowrap}
.v115pl-pub-badge.published{background:#e5f7eb;color:#2a7149;border:1px solid #c9e8d4}
.v115pl-pub-badge.draft{background:#fff2d1;color:#8a6300;border:1px solid #f1dda8}

.v115pl-manager{display:grid;gap:14px}
.v115pl-manager-head{display:flex;justify-content:space-between;gap:16px;align-items:flex-start;background:#fff;border:1px solid #e0e8f0;border-radius:16px;padding:18px}
.v115pl-manager-head h2{margin:.1rem 0 .25rem}.v115pl-manager-head p{margin:0;color:#708096}
.v115pl-manager-kpis{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:10px}
.v115pl-manager-kpis article{background:#fff;border:1px solid #e1e8ef;border-radius:14px;padding:14px;display:grid;gap:3px}
.v115pl-manager-kpis article.warn{border-color:#efcf8c;background:#fffaf0}
.v115pl-manager-kpis span{font-size:.72rem;color:#718096;font-weight:750;text-transform:uppercase;letter-spacing:.03em}
.v115pl-manager-kpis strong{font-size:1.55rem;color:#17324f}.v115pl-manager-kpis small{color:#7b8998}
.v115pl-latest-publication{display:flex;justify-content:space-between;align-items:center;gap:12px;background:#f8fbfe;border:1px solid #dce7f1;border-radius:14px;padding:13px 15px}
.v115pl-latest-publication>div:first-child{display:grid;gap:3px}.v115pl-latest-publication span{color:#6e7d8f;font-size:.78rem}
.v115pl-latest-publication>div:last-child{display:flex;gap:7px}.v115pl-latest-publication>div:last-child span{background:#fff;border:1px solid #dfe7ef;border-radius:999px;padding:5px 8px;font-weight:800}
.v115pl-manager-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.v115pl-manager-card{background:#fff;border:1px solid #e1e8ef;border-radius:14px;padding:14px;min-width:0}
.v115pl-manager-card>header{display:flex;justify-content:space-between;align-items:center;margin-bottom:9px}
.v115pl-manager-card>header h3{margin:0;font-size:.98rem}.v115pl-manager-card>header>span{display:grid;place-items:center;min-width:24px;height:24px;border-radius:999px;background:#eef4fa;color:#52677c;font-size:.72rem;font-weight:850}
.v115pl-manager-card>article{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:9px 0;border-top:1px solid #edf1f5}
.v115pl-manager-card>article>div:first-child{display:grid;gap:2px;min-width:0}.v115pl-manager-card>article strong{color:#253f5b}.v115pl-manager-card>article span,.v115pl-manager-card>article small{color:#718095;font-size:.76rem}
.v115pl-inline-actions{display:flex;gap:6px;align-items:center;flex-wrap:wrap}

.v115pl-notification-list{display:grid;gap:7px;max-height:55vh;overflow:auto}
.v115pl-notification-list article{border:1px solid #e3e9ef;border-radius:11px;padding:10px 11px;background:#fff}
.v115pl-notification-list article.unread{border-color:#9fc7ed;background:#f3f9ff}
.v115pl-notification-list article>div{display:flex;justify-content:space-between;gap:12px}.v115pl-notification-list article span{font-size:.72rem;color:#7a8796}.v115pl-notification-list article p{margin:5px 0 0;color:#53677e}

.v115pl-recurring-toggle{display:flex!important;align-items:center;gap:7px;margin:10px 0;font-weight:750}
.v115pl-recurring-toggle input{width:auto!important}
.v115pl-recurring-wrap{border:1px solid #e0e8ef;background:#f9fbfd;border-radius:11px;padding:10px;margin-bottom:9px}
.v115pl-weekdays{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:9px}
.v115pl-weekdays label{display:flex!important;align-items:center;gap:4px;border:1px solid #dce5ee;background:#fff;border-radius:999px;padding:5px 8px;font-size:.75rem}
.v115pl-weekdays input{width:auto!important}

.v115pl-personal-main{min-width:0}
.v115pl-combined-calendar{border:1px solid #e1e8ef;border-radius:14px;background:#fff;overflow:hidden;margin-top:14px}
.v115pl-combined-calendar>header{display:flex;justify-content:space-between;align-items:center;padding:13px 14px;border-bottom:1px solid #e8edf2}
.v115pl-combined-calendar h3{margin:0}.v115pl-combined-calendar p{margin:3px 0 0;color:#738196;font-size:.78rem}
.v115pl-combined-calendar>header>strong{text-transform:capitalize;color:#2a415b}
.v115pl-combined-days{display:grid;grid-template-columns:repeat(7,1fr)}
.v115pl-combined-day{min-height:90px;padding:6px;border-right:1px solid #edf1f5;border-bottom:1px solid #edf1f5;background:#fff}
.v115pl-combined-day:nth-child(7n){border-right:0}.v115pl-combined-day.outside{background:#fafbfc;color:#a9b1bb}
.v115pl-combined-day .day-number{font-weight:800;font-size:.78rem}.v115pl-combined-day>div{display:flex;flex-direction:column;gap:3px;margin-top:5px}
.v115pl-combined-marker{display:block;border-radius:6px;padding:3px 5px;font-size:.61rem;font-weight:800;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.v115pl-combined-marker.assignment{background:#e2f1ff;color:#0c63a8}.v115pl-combined-marker.leave{background:#e5f7ea;color:#277247}.v115pl-combined-marker.training{background:#ffe9df;color:#934b24}.v115pl-combined-marker.absence{background:#fde7eb;color:#973947}
.v115pl-personal-exchanges{margin-top:14px;border:1px solid #e1e8ef;border-radius:14px;background:#fff;padding:14px}
.v115pl-personal-exchanges header h3{margin:0 0 8px}.v115pl-personal-exchanges article{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:9px 0;border-top:1px solid #edf1f5}
.v115pl-personal-exchanges article>div:first-child{display:grid;gap:2px}.v115pl-personal-exchanges span,.v115pl-personal-exchanges small{color:#718095;font-size:.75rem}

.v115pl-calendar-options{display:grid;gap:7px;margin-top:12px;text-align:left}
.v115pl-calendar-options label{display:flex!important;align-items:center;gap:7px;font-size:.78rem;font-weight:650;color:#4f6278}
.v115pl-calendar-options input{width:auto!important}
.v115pl-calendar-options .danger-link{border:0;background:transparent;color:#a23948;padding:4px 0;text-align:left;font-weight:750;cursor:pointer}
.v115pl-calendar-qr{display:grid;place-items:center;padding:14px}.v115pl-calendar-qr svg{max-width:100%;height:auto;border:1px solid #e4e8ed;border-radius:12px}
.v115pl-repair-candidate{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:9px;border:1px solid #e2e8ee;border-radius:10px;margin-bottom:7px}
.v115pl-repair-candidate>div{display:grid;gap:2px}.v115pl-repair-candidate span{font-size:.76rem;color:#6e7d90}
.v115pl-repair-candidate.ok{border-color:#c8e5d3;background:#f7fcf9}.v115pl-repair-candidate.blocked{background:#fafafa;opacity:.72}
.v115pl-wish-window .link-btn{border:0;background:transparent;color:inherit;text-decoration:underline;font-weight:800;cursor:pointer;padding:0 2px}
.v115pl-personal-list article{gap:10px}.v115pl-personal-list article>[data-v115pl-exchange-assignment]{margin-left:auto}

.v115pl-day-title{gap:12px}.v115pl-day-title>div:first-child{display:flex;flex-direction:column}
.v115pl-day-publication{display:flex;align-items:center;gap:8px}

@media(max-width:1100px){
  .v115pl-manager-kpis{grid-template-columns:repeat(3,minmax(0,1fr))}
  .v115pl-manager-grid{grid-template-columns:1fr}
}
@media(max-width:760px){
  .v115pl-manager-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}
  .v115pl-manager-head,.v115pl-latest-publication{align-items:stretch;flex-direction:column}
  .v115pl-combined-day{min-height:72px;padding:4px}
  .v115pl-combined-marker{font-size:.55rem;padding:2px 3px}
  .v115pl-personal-exchanges article,.v115pl-manager-card>article{align-items:flex-start;flex-direction:column}
}
@media(max-width:520px){
  .v115pl-manager-kpis{grid-template-columns:1fr 1fr}
  .v115pl-combined-calendar .v115pl-calendar-weekdays span{font-size:.55rem}
  .v115pl-combined-day{min-height:62px}
}
@media print{
  body.v115pl-screen-mode{overflow:visible!important}
  #staffPlanningView .v115pl-header,
  #staffPlanningView .v115pl-toolbar,
  #staffPlanningView .v115pl-slot button,
  #staffPlanningView [data-v115pl-assign],
  #staffPlanningView .v115pl-view-actions{display:none!important}
  #staffPlanningView{display:block!important;position:static!important;background:#fff!important}
  #staffPlanningView .v115pl-body{padding:0!important}
  #staffPlanningView .v115pl-day{box-shadow:none!important;border:0!important}
  #staffPlanningView .v115pl-category-grid{grid-template-columns:repeat(3,1fr)!important;gap:8px!important}
  #staffPlanningView .v115pl-category{break-inside:avoid;border:1px solid #bbb!important}
  #staffPlanningView .v115pl-day-title{border-bottom:2px solid #222!important;padding-bottom:10px!important}
  @page{size:A4 landscape;margin:10mm}
}

.v115pl-no-period-title{display:flex;flex-direction:column;gap:3px}
.v115pl-no-period-title strong{color:#263f5b}
.v115pl-no-period-title small{color:#748297}

/* Sous-colonnes Jour / Nuit */
.v115pl-category.has-subcolumns{min-width:280px}
.v115pl-category.cat-emergency.has-subcolumns{min-width:520px}
.v115pl-category.cat-smur.has-subcolumns{min-width:390px}
.v115pl-category.cat-regulation.has-subcolumns{min-width:300px}
.v115pl-category.cat-on_call.has-subcolumns{min-width:260px}
.v115pl-category.has-subcolumns .v115pl-category-body{padding:0}
.v115pl-shift-matrix{display:flex;flex-direction:column}
.v115pl-shift-matrix-row{display:grid;grid-template-columns:78px minmax(0,1fr);gap:8px;padding:8px}
.v115pl-shift-matrix-row+.v115pl-shift-matrix-row{border-top:1px solid #dfe8df}
.v115pl-shift-matrix-row.day{background:linear-gradient(90deg,#fbfff8,#fff)}
.v115pl-shift-matrix-row.night{background:linear-gradient(90deg,#f7f9ff,#fff)}
.v115pl-shift-matrix-row.evening{background:linear-gradient(90deg,#fff8ec,#fff)}
.v115pl-shift-period-label{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;border-radius:9px;background:rgba(255,255,255,.72);border:1px solid #e0e8e1;text-align:center;padding:6px 4px}
.v115pl-shift-period-label>span{font-size:1rem}
.v115pl-shift-period-label strong{font-size:.74rem;color:#2d455f}
.v115pl-shift-period-label small{font-size:.61rem;color:#728095;white-space:nowrap}
.v115pl-shift-subcolumns{display:grid;grid-template-columns:repeat(var(--subcols),minmax(0,1fr));gap:7px;min-width:0}
.v115pl-shift-block.compact{min-width:0;padding:7px;border-left-width:3px}
.v115pl-shift-block.compact .v115pl-shift-label{display:grid;grid-template-columns:1fr;gap:1px;margin-bottom:5px}
.v115pl-shift-block.compact .v115pl-shift-label strong{font-size:.78rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.v115pl-shift-block.compact .v115pl-shift-label span{font-size:.63rem}
.v115pl-shift-block.compact .v115pl-slot{padding:7px 6px;min-height:36px;font-size:.75rem}
.v115pl-shift-block.compact .v115pl-slot strong{display:block;white-space:normal;line-height:1.15}
.v115pl-category-other{display:flex;flex-direction:column;gap:8px;padding:8px;border-top:1px solid #e6ece7}
@media(max-width:760px){
  .v115pl-category.cat-emergency.has-subcolumns{min-width:480px}
  .v115pl-category.cat-smur.has-subcolumns{min-width:360px}
  .v115pl-category.cat-regulation.has-subcolumns{min-width:280px}
  .v115pl-category.cat-on_call.has-subcolumns{min-width:240px}
  .v115pl-shift-matrix-row{grid-template-columns:64px minmax(0,1fr);gap:6px;padding:6px}
  .v115pl-shift-subcolumns{gap:5px}
}
@media print{
  #staffPlanningView .v115pl-category.has-subcolumns{min-width:0!important}
  #staffPlanningView .v115pl-shift-matrix-row{grid-template-columns:58px minmax(0,1fr)!important;padding:5px!important}
  #staffPlanningView .v115pl-shift-subcolumns{gap:4px!important}
}

/* Vue journée — tableau compact inspiré du planning opérationnel */
.v115pl-day .v115pl-category-grid{
  display:grid;
  grid-template-columns:
    minmax(250px,.9fr)
    minmax(360px,1.3fr)
    minmax(520px,1.8fr)
    minmax(180px,.65fr)
    minmax(240px,.8fr)
    minmax(220px,.75fr);
  gap:8px;
  align-items:start;
  overflow-x:auto;
  padding-bottom:4px;
}
.v115pl-day .v115pl-category{
  border-radius:8px;
  overflow:hidden;
  box-shadow:none;
  border:1px solid #dfe6ed;
  background:#fff;
}
.v115pl-day .v115pl-category>header{
  min-height:34px;
  padding:7px 9px;
  border-bottom:0;
  display:flex;
  align-items:center;
  justify-content:flex-start;
  gap:6px;
}
.v115pl-day .v115pl-category>header strong{
  font-size:.79rem;
  letter-spacing:.015em;
  text-transform:none;
}
.v115pl-day .cat-regulation>header{background:#dcecff;color:#195f9c}
.v115pl-day .cat-smur>header{background:#f9dfea;color:#9a4167}
.v115pl-day .cat-emergency>header{background:#dff2df;color:#3e7447}
.v115pl-day .cat-uhcd>header{background:#fff0b8;color:#806200}
.v115pl-day .cat-on_call>header{background:#dff3e8;color:#2b7350}
.v115pl-day .cat-double>header{background:#eee5fb;color:#684f91}

.v115pl-day .v115pl-shift-matrix-row{
  display:grid;
  grid-template-columns:52px minmax(0,1fr);
  gap:4px;
  padding:4px;
  background:#fff;
}
.v115pl-day .v115pl-shift-matrix-row+.v115pl-shift-matrix-row{
  border-top:1px solid #e5ebf0;
}
.v115pl-day .v115pl-shift-matrix-row.day{background:#fbfdf9}
.v115pl-day .v115pl-shift-matrix-row.evening{background:#fffaf1}
.v115pl-day .v115pl-shift-matrix-row.night{background:#fafbff}
.v115pl-day .v115pl-shift-period-label{
  min-height:48px;
  border-radius:6px;
  padding:4px 2px;
  border:0;
  background:#f4f6f8;
}
.v115pl-day .v115pl-shift-period-label>span{font-size:.78rem}
.v115pl-day .v115pl-shift-period-label strong{
  font-size:.63rem;
  text-transform:uppercase;
  letter-spacing:.035em;
}
.v115pl-day .v115pl-shift-period-label small{
  font-size:.52rem;
  line-height:1.05;
  white-space:normal;
}
.v115pl-day .v115pl-shift-subcolumns{gap:4px}
.v115pl-day .v115pl-shift-block.compact{
  padding:0;
  border:1px solid #e3e9ef;
  border-left:3px solid var(--shift);
  border-radius:6px;
  overflow:hidden;
  background:#fff;
}
.v115pl-day .v115pl-shift-block.compact .v115pl-shift-label{
  margin:0;
  padding:5px 6px 4px;
  background:#f7f9fb;
  border-bottom:1px solid #edf1f4;
}
.v115pl-day .v115pl-shift-block.compact .v115pl-shift-label strong{
  font-size:.68rem;
  letter-spacing:.01em;
}
.v115pl-day .v115pl-shift-block.compact .v115pl-shift-label span{
  display:none;
}
.v115pl-day .v115pl-shift-block.compact .v115pl-slot-list{gap:0}
.v115pl-day .v115pl-shift-block.compact .v115pl-slot{
  min-height:38px;
  padding:6px 5px;
  border:0;
  border-radius:0;
  text-align:center;
  justify-content:center;
}
.v115pl-day .v115pl-shift-block.compact .v115pl-slot.filled{
  background:#fff;
}
.v115pl-day .v115pl-shift-block.compact .v115pl-slot.vacant{
  background:#fff8f1;
}
.v115pl-day .v115pl-shift-block.compact .v115pl-slot strong{
  font-size:.69rem;
  font-weight:760;
  line-height:1.15;
  text-align:center;
}
.v115pl-day .v115pl-person-dot{display:none}
.v115pl-day .v115pl-category-body>.v115pl-shift-block{
  margin:4px;
}
.v115pl-day .v115pl-category-other{padding:4px;gap:4px}
.v115pl-day .v115pl-category-other .v115pl-shift-label span{display:none}

/* UHCD / doublures restent simples mais avec la même densité */
.v115pl-day .cat-uhcd .v115pl-shift-block,
.v115pl-day .cat-double .v115pl-shift-block{
  padding:0;
  margin:4px;
  border-radius:6px;
  overflow:hidden;
}
.v115pl-day .cat-uhcd .v115pl-shift-label,
.v115pl-day .cat-double .v115pl-shift-label{
  padding:5px 6px;
  background:#f7f9fb;
  margin:0;
  border-bottom:1px solid #edf1f4;
}
.v115pl-day .cat-uhcd .v115pl-shift-label span,
.v115pl-day .cat-double .v115pl-shift-label span{display:none}
.v115pl-day .cat-uhcd .v115pl-slot,
.v115pl-day .cat-double .v115pl-slot{
  border:0;
  border-radius:0;
  min-height:38px;
  padding:6px;
}

@media(max-width:1200px){
  .v115pl-day .v115pl-category-grid{
    grid-template-columns:
      minmax(240px,.9fr)
      minmax(340px,1.25fr)
      minmax(500px,1.75fr)
      minmax(170px,.62fr)
      minmax(230px,.78fr)
      minmax(210px,.72fr);
  }
}
@media print{
  #staffPlanningView .v115pl-day .v115pl-category-grid{
    display:grid!important;
    grid-template-columns:repeat(3,1fr)!important;
    gap:5px!important;
    overflow:visible!important;
  }
  #staffPlanningView .v115pl-day .v115pl-category{break-inside:avoid}
}

/* Vue journée — sous-colonnes fixes comme planning opérationnel */
.v115pl-day .v115pl-category.has-subcolumns .v115pl-category-body{padding:0}
.v115pl-service-table{display:flex;flex-direction:column;background:#fff}
.v115pl-service-row{
  display:grid;
  grid-template-columns:repeat(var(--lanes),minmax(0,1fr));
  gap:0;
  min-width:0;
}
.v115pl-service-row+.v115pl-service-row{border-top:1px solid #dfe6ed}
.v115pl-service-row.day{background:#fff}
.v115pl-service-row.night{background:#fbfcfe}
.v115pl-service-row>.v115pl-shift-block.compact,
.v115pl-service-row>.v115pl-service-cell{
  min-width:0;
  border-radius:0;
  border-top:0;
  border-bottom:0;
  border-right:0;
  margin:0;
}
.v115pl-service-row>.v115pl-shift-block.compact{
  border-left:1px solid #dfe6ed;
  background:#fff;
}
.v115pl-service-row>.v115pl-shift-block.compact:first-child,
.v115pl-service-row>.v115pl-service-cell:first-child{
  border-left:0;
}
.v115pl-service-cell.empty{
  min-height:69px;
  border-left:1px solid #e5ebf0;
  background:
    linear-gradient(135deg,rgba(111,128,146,.025) 25%,transparent 25%) 0 0/8px 8px,
    #fbfcfd;
}
.v115pl-service-row .v115pl-shift-block.compact .v115pl-shift-label{
  min-height:29px;
  display:flex;
  align-items:center;
  justify-content:center;
  padding:4px 5px;
  margin:0;
  background:#f5f7f9;
  border-bottom:1px solid #e7edf2;
  text-align:center;
}
.v115pl-service-row .v115pl-shift-block.compact .v115pl-shift-label strong{
  font-size:.67rem;
  line-height:1.05;
  text-align:center;
  white-space:normal;
}
.v115pl-service-row .v115pl-shift-block.compact .v115pl-shift-label span,
.v115pl-service-row .v115pl-shift-block.compact .v115pl-shift-label em{
  display:none;
}
.v115pl-service-row .v115pl-shift-block.compact .v115pl-slot{
  min-height:40px;
  padding:5px 4px;
  border:0;
  border-radius:0;
  justify-content:center;
  text-align:center;
}
.v115pl-service-row .v115pl-shift-block.compact .v115pl-slot strong{
  font-size:.7rem;
  line-height:1.1;
}
.v115pl-service-row .v115pl-shift-block.compact .v115pl-slot.vacant{
  background:#fff8ef;
}
.v115pl-service-row .v115pl-shift-block.compact .v115pl-slot.filled{
  background:#fff;
}
.v115pl-day .cat-regulation.has-subcolumns{min-width:260px}
.v115pl-day .cat-smur.has-subcolumns{min-width:330px}
.v115pl-day .cat-emergency.has-subcolumns{min-width:500px}
.v115pl-day .cat-on_call.has-subcolumns{min-width:200px}
.v115pl-day .cat-regulation .v115pl-service-row>.v115pl-shift-block.compact{border-left-color:#cbdff4}
.v115pl-day .cat-smur .v115pl-service-row>.v115pl-shift-block.compact{border-left-color:#edd1dd}
.v115pl-day .cat-emergency .v115pl-service-row>.v115pl-shift-block.compact{border-left-color:#cee5d1}
.v115pl-day .cat-on_call .v115pl-service-row>.v115pl-shift-block.compact{border-left-color:#cfe7d9}
@media(max-width:760px){
  .v115pl-day .cat-regulation.has-subcolumns{min-width:250px}
  .v115pl-day .cat-smur.has-subcolumns{min-width:320px}
  .v115pl-day .cat-emergency.has-subcolumns{min-width:460px}
  .v115pl-day .cat-on_call.has-subcolumns{min-width:190px}
}
@media print{
  #staffPlanningView .v115pl-service-row{gap:0!important}
  #staffPlanningView .v115pl-service-cell.empty{min-height:58px!important}
  #staffPlanningView .v115pl-service-row .v115pl-shift-block.compact .v115pl-slot{min-height:34px!important}
}

/* =========================================================
   Planning équipes — Daily roster premium URG360
   ========================================================= */
.v115pl-day{
  border:1px solid #dce6ef!important;
  border-radius:18px!important;
  background:#fff!important;
  box-shadow:0 12px 34px rgba(34,67,101,.07)!important;
  overflow:hidden!important;
}
.v115pl-day-title{
  padding:16px 18px!important;
  border-bottom:1px solid #e8eef4!important;
  background:linear-gradient(180deg,#fff 0%,#fbfdff 100%)!important;
}
.v115pl-day-title>div:first-child strong{
  color:#173653!important;
  font-size:1rem!important;
  letter-spacing:-.01em;
}
.v115pl-day-title>div:first-child span,
.v115pl-day-title>div:first-child small{color:#718399!important}

.v115pl-day .v115pl-category-grid{
  display:grid!important;
  grid-template-columns:
    minmax(265px,1.05fr)
    minmax(330px,1.25fr)
    minmax(490px,1.8fr)
    minmax(175px,.68fr)
    minmax(210px,.8fr)
    minmax(205px,.78fr)!important;
  gap:12px!important;
  align-items:start!important;
  padding:14px!important;
  min-width:1510px;
  overflow:visible!important;
  background:#f7fafc!important;
}
.v115pl-day{
  overflow-x:auto!important;
}
.v115pl-roster-group{
  --group-bg:#edf4fb;
  --group-fg:#315f86;
  --group-line:#dce8f2;
  min-width:0!important;
  border:1px solid var(--group-line)!important;
  border-radius:14px!important;
  background:#fff!important;
  overflow:hidden!important;
  box-shadow:0 4px 14px rgba(31,65,99,.045)!important;
}
.v115pl-roster-group.cat-regulation{
  --group-bg:#eaf4ff;--group-fg:#276a9e;--group-line:#d6e7f6;
}
.v115pl-roster-group.cat-smur{
  --group-bg:#fff0f5;--group-fg:#985270;--group-line:#f1dce5;
}
.v115pl-roster-group.cat-emergency{
  --group-bg:#edf9ef;--group-fg:#39774a;--group-line:#d8eadc;
}
.v115pl-roster-group.cat-uhcd{
  --group-bg:#fff9df;--group-fg:#877018;--group-line:#eee4b8;
}
.v115pl-roster-group.cat-on_call{
  --group-bg:#eaf8f0;--group-fg:#277252;--group-line:#d3e9dc;
}
.v115pl-roster-group.cat-double{
  --group-bg:#f4effd;--group-fg:#6e5797;--group-line:#e4daf6;
}
.v115pl-roster-group>header{
  min-height:42px!important;
  padding:9px 12px!important;
  display:flex!important;
  align-items:center!important;
  gap:8px!important;
  background:var(--group-bg)!important;
  color:var(--group-fg)!important;
  border:0!important;
  border-bottom:1px solid var(--group-line)!important;
}
.v115pl-roster-group>header strong{
  font-size:.79rem!important;
  font-weight:850!important;
  color:var(--group-fg)!important;
  letter-spacing:.01em!important;
}
.v115pl-roster-group-icon{
  display:grid!important;
  place-items:center!important;
  width:24px!important;
  height:24px!important;
  border-radius:8px!important;
  background:rgba(255,255,255,.78)!important;
  box-shadow:inset 0 0 0 1px rgba(255,255,255,.7)!important;
  font-size:.76rem!important;
}
.v115pl-roster-group .v115pl-category-body{
  padding:8px!important;
  display:block!important;
  background:#fff!important;
}
.v115pl-roster-table{
  display:flex!important;
  flex-direction:column!important;
  gap:8px!important;
  background:transparent!important;
}
.v115pl-roster-row{
  display:grid!important;
  grid-template-columns:repeat(var(--lanes),minmax(0,1fr))!important;
  gap:8px!important;
  min-width:0!important;
  background:transparent!important;
  border:0!important;
}
.v115pl-roster-row+.v115pl-roster-row{
  padding-top:8px!important;
  border-top:1px solid #edf2f6!important;
}
.v115pl-roster-cell{
  position:relative!important;
  min-width:0!important;
  width:auto!important;
  grid-column:auto!important;
  display:flex!important;
  flex-direction:column!important;
  min-height:82px!important;
  border:1px solid #e2e9f0!important;
  border-radius:11px!important;
  overflow:hidden!important;
  background:#fff!important;
  box-shadow:0 2px 8px rgba(32,67,101,.035)!important;
}
.v115pl-roster-cell::before{
  content:""!important;
  position:absolute!important;
  left:0!important;
  top:0!important;
  bottom:0!important;
  width:3px!important;
  background:var(--shift,#bfd2e4)!important;
}
.v115pl-roster-cell.placeholder{
  min-height:82px!important;
  border:1px dashed #e7edf2!important;
  background:
    linear-gradient(135deg,rgba(93,116,140,.018) 25%,transparent 25%) 0 0/10px 10px,
    #fbfcfd!important;
  box-shadow:none!important;
}
.v115pl-roster-cell.placeholder::before{display:none!important}
.v115pl-roster-cell-head{
  min-height:34px!important;
  display:flex!important;
  align-items:center!important;
  justify-content:space-between!important;
  gap:6px!important;
  padding:7px 8px 6px 10px!important;
  background:#f8fafc!important;
  border-bottom:1px solid #edf1f5!important;
}
.v115pl-roster-cell-head strong{
  min-width:0!important;
  overflow:hidden!important;
  text-overflow:ellipsis!important;
  white-space:nowrap!important;
  font-size:.69rem!important;
  font-weight:900!important;
  color:#2a4058!important;
  letter-spacing:.025em!important;
}
.v115pl-roster-cell-head small{
  flex:0 0 auto!important;
  color:#8290a0!important;
  font-size:.56rem!important;
  font-weight:700!important;
  white-space:nowrap!important;
}
.v115pl-roster-cell-people{
  display:flex!important;
  flex-direction:column!important;
  flex:1!important;
  padding:5px!important;
  gap:4px!important;
}
.v115pl-roster-person{
  appearance:none!important;
  width:100%!important;
  min-width:0!important;
  min-height:38px!important;
  flex:1!important;
  display:flex!important;
  align-items:center!important;
  justify-content:flex-start!important;
  gap:7px!important;
  padding:6px 7px!important;
  border-radius:8px!important;
  border:1px solid transparent!important;
  background:#fff!important;
  color:#1f3852!important;
  font:inherit!important;
  text-align:left!important;
  transition:border-color .15s ease,background .15s ease,transform .15s ease,box-shadow .15s ease!important;
}
.v115pl-roster-person:not(:disabled){cursor:pointer!important}
.v115pl-roster-person.filled{
  background:linear-gradient(180deg,#fff,#fbfdff)!important;
}
.v115pl-roster-person.filled:not(:disabled):hover{
  border-color:#cbdce9!important;
  background:#f8fbfe!important;
  box-shadow:0 3px 9px rgba(34,77,116,.07)!important;
  transform:translateY(-1px)!important;
}
.v115pl-roster-person strong{
  min-width:0!important;
  overflow:hidden!important;
  text-overflow:ellipsis!important;
  white-space:nowrap!important;
  font-size:.72rem!important;
  line-height:1.15!important;
  font-weight:820!important;
  color:#203a54!important;
}
.v115pl-roster-avatar{
  flex:0 0 25px!important;
  width:25px!important;
  height:25px!important;
  display:grid!important;
  place-items:center!important;
  border-radius:50%!important;
  background:color-mix(in srgb,var(--shift,#cfe0ee) 30%,#f4f8fb)!important;
  color:#375a77!important;
  font-size:.57rem!important;
  font-weight:900!important;
  letter-spacing:.02em!important;
}
.v115pl-roster-person.vacant{
  justify-content:center!important;
  gap:5px!important;
  border:1px dashed #e8c477!important;
  background:#fffdf8!important;
  color:#9b6b14!important;
}
.v115pl-roster-person.vacant strong{
  color:#9a6a15!important;
  font-size:.67rem!important;
  font-weight:800!important;
}
.v115pl-vacant-dot{
  display:grid!important;
  place-items:center!important;
  width:18px!important;
  height:18px!important;
  border-radius:50%!important;
  background:#fff3d8!important;
  color:#b37a14!important;
  font-size:.75rem!important;
  font-weight:900!important;
}
.v115pl-roster-extras{
  display:grid!important;
  gap:8px!important;
  padding-top:8px!important;
  border-top:1px solid #edf2f6!important;
}

/* Les filières simples utilisent exactement les mêmes cellules premium. */
.v115pl-roster-group:not(.has-subcolumns) .v115pl-category-body{
  display:grid!important;
  gap:8px!important;
}
.v115pl-roster-group:not(.has-subcolumns) .v115pl-roster-cell{min-height:82px!important}

/* Lecture plus compacte sur écrans étroits, sans dégrader la grille. */
@media(max-width:1200px){
  .v115pl-day .v115pl-category-grid{min-width:1450px!important}
}
@media(max-width:760px){
  .v115pl-day-title{padding:13px 14px!important}
  .v115pl-day .v115pl-category-grid{min-width:1380px!important;padding:10px!important;gap:9px!important}
  .v115pl-roster-group .v115pl-category-body{padding:6px!important}
  .v115pl-roster-table,.v115pl-roster-row{gap:6px!important}
  .v115pl-roster-row+.v115pl-roster-row{padding-top:6px!important}
  .v115pl-roster-cell{min-height:76px!important}
  .v115pl-roster-cell.placeholder{min-height:76px!important}
}

/* Impression : garder l'esthétique URG360, sans ombre ni défilement. */
@media print{
  #staffPlanningView .v115pl-day{box-shadow:none!important;overflow:visible!important}
  #staffPlanningView .v115pl-day .v115pl-category-grid{
    min-width:0!important;
    grid-template-columns:1.05fr 1.25fr 1.8fr .68fr .8fr .78fr!important;
    gap:5px!important;
    padding:5px!important;
  }
  #staffPlanningView .v115pl-roster-group{box-shadow:none!important;border-radius:7px!important}
  #staffPlanningView .v115pl-roster-group>header{min-height:28px!important;padding:5px 6px!important}
  #staffPlanningView .v115pl-roster-group-icon{display:none!important}
  #staffPlanningView .v115pl-roster-group .v115pl-category-body{padding:4px!important}
  #staffPlanningView .v115pl-roster-table,#staffPlanningView .v115pl-roster-row{gap:3px!important}
  #staffPlanningView .v115pl-roster-row+.v115pl-roster-row{padding-top:3px!important}
  #staffPlanningView .v115pl-roster-cell,#staffPlanningView .v115pl-roster-cell.placeholder{min-height:54px!important;border-radius:5px!important}
  #staffPlanningView .v115pl-roster-cell-head{min-height:21px!important;padding:3px 4px 3px 6px!important}
  #staffPlanningView .v115pl-roster-cell-head strong{font-size:6.7pt!important}
  #staffPlanningView .v115pl-roster-cell-head small{font-size:5.5pt!important}
  #staffPlanningView .v115pl-roster-cell-people{padding:2px!important}
  #staffPlanningView .v115pl-roster-person{min-height:26px!important;padding:3px 4px!important}
  #staffPlanningView .v115pl-roster-avatar{display:none!important}
  #staffPlanningView .v115pl-roster-person strong{font-size:6.5pt!important}
}

/* =========================================================
   Vue journée v2 — deux grandes lignes JOUR / NUIT
   ========================================================= */
.v115pl-day{
  overflow-x:auto!important;
}
.v115pl-duty-board{
  display:grid!important;
  gap:0!important;
  min-width:max-content!important;
  margin:14px!important;
  border:1px solid #dfe7ef!important;
  border-radius:16px!important;
  overflow:hidden!important;
  background:#fff!important;
  box-shadow:0 8px 24px rgba(31,67,103,.055)!important;
}
.v115pl-board-corner,
.v115pl-board-category{
  min-height:46px!important;
  display:flex!important;
  align-items:center!important;
  justify-content:center!important;
  gap:7px!important;
  padding:8px 10px!important;
  border-right:1px solid #e5ebf1!important;
  border-bottom:1px solid #dfe7ef!important;
  background:#f8fafc!important;
}
.v115pl-board-corner{
  justify-content:flex-start!important;
  color:#8391a0!important;
}
.v115pl-board-corner span{
  font-size:.66rem!important;
  font-weight:850!important;
  text-transform:uppercase!important;
  letter-spacing:.075em!important;
}
.v115pl-board-category:last-child{border-right:0!important}
.v115pl-board-category span{
  display:grid!important;
  place-items:center!important;
  width:25px!important;
  height:25px!important;
  flex:0 0 25px!important;
  border-radius:8px!important;
  background:#fff!important;
  box-shadow:0 1px 4px rgba(32,68,104,.07)!important;
  font-size:.72rem!important;
}
.v115pl-board-category strong{
  color:#26435f!important;
  font-size:.76rem!important;
  font-weight:850!important;
  white-space:nowrap!important;
}
.v115pl-board-category.cat-regulation{background:#eaf4ff!important}
.v115pl-board-category.cat-smur{background:#fff0f5!important}
.v115pl-board-category.cat-emergency{background:#edf9ef!important}
.v115pl-board-category.cat-uhcd{background:#fff9df!important}
.v115pl-board-category.cat-on_call{background:#eaf8f0!important}
.v115pl-board-category.cat-double{background:#f4effd!important}

.v115pl-board-band-label{
  min-height:112px!important;
  display:flex!important;
  flex-direction:column!important;
  align-items:center!important;
  justify-content:center!important;
  gap:3px!important;
  padding:10px 7px!important;
  border-right:1px solid #dfe7ef!important;
  border-bottom:1px solid #e4ebf1!important;
  text-align:center!important;
}
.v115pl-board-band-label.day{
  background:linear-gradient(180deg,#fffdf7,#fff9e9)!important;
  color:#9a6d17!important;
}
.v115pl-board-band-label.night{
  background:linear-gradient(180deg,#f8faff,#eef3ff)!important;
  color:#4e64a0!important;
  border-bottom:0!important;
}
.v115pl-board-band-label>span{
  font-size:1.05rem!important;
  line-height:1!important;
}
.v115pl-board-band-label strong{
  font-size:.76rem!important;
  font-weight:900!important;
  letter-spacing:.08em!important;
}
.v115pl-board-band-label small{
  font-size:.58rem!important;
  font-weight:750!important;
  white-space:nowrap!important;
  opacity:.9!important;
}
.v115pl-board-band-label em{
  margin-top:3px!important;
  font-size:.48rem!important;
  line-height:1.15!important;
  font-style:normal!important;
  color:#6879a8!important;
}

.v115pl-board-category-band{
  min-height:112px!important;
  display:grid!important;
  grid-template-columns:repeat(var(--lanes),minmax(0,1fr))!important;
  gap:8px!important;
  align-items:stretch!important;
  padding:8px!important;
  border-right:1px solid #e5ebf1!important;
  border-bottom:1px solid #e4ebf1!important;
  background:#fff!important;
}
.v115pl-board-category-band.night{
  border-bottom:0!important;
  background:#fbfcff!important;
}
.v115pl-board-category-band.cat-regulation.day{background:#fbfdff!important}
.v115pl-board-category-band.cat-smur.day{background:#fffcfd!important}
.v115pl-board-category-band.cat-emergency.day{background:#fbfefb!important}
.v115pl-board-category-band.cat-uhcd.day{background:#fffef9!important}
.v115pl-board-category-band.cat-on_call.day{background:#fbfefc!important}
.v115pl-board-category-band.cat-double.day{background:#fdfcff!important}

.v115pl-board-category-band .v115pl-roster-cell{
  min-height:94px!important;
  height:100%!important;
  border-radius:12px!important;
  box-shadow:0 2px 8px rgba(31,66,100,.04)!important;
}
.v115pl-board-category-band .v115pl-roster-cell.placeholder{
  min-height:94px!important;
  background:#fbfcfd!important;
  border-color:#edf1f5!important;
  box-shadow:none!important;
}
.v115pl-board-category-band .v115pl-roster-cell-head{
  min-height:34px!important;
  padding:7px 8px 6px 10px!important;
}
.v115pl-board-category-band .v115pl-roster-cell-head strong{
  font-size:.69rem!important;
}
.v115pl-board-category-band .v115pl-roster-cell-head small{
  font-size:.54rem!important;
}
.v115pl-board-category-band .v115pl-roster-cell-people{
  padding:6px!important;
}
.v115pl-board-category-band .v115pl-roster-person{
  min-height:42px!important;
}
.v115pl-board-category-band .v115pl-roster-person strong{
  font-size:.72rem!important;
}

/* Séparation franche entre les deux équipes */
.v115pl-board-band-label.day,
.v115pl-board-category-band.day{
  box-shadow:inset 0 -2px 0 #dce5ee!important;
}
.v115pl-board-band-label.night,
.v115pl-board-category-band.night{
  box-shadow:inset 0 2px 0 rgba(87,109,165,.035)!important;
}

@media(max-width:760px){
  .v115pl-duty-board{margin:10px!important}
  .v115pl-board-band-label{min-height:102px!important}
  .v115pl-board-category-band{min-height:102px!important;padding:6px!important;gap:6px!important}
  .v115pl-board-category-band .v115pl-roster-cell{min-height:88px!important}
}
@media print{
  #staffPlanningView .v115pl-duty-board{
    margin:4px!important;
    min-width:0!important;
    grid-template-columns:58px 1.05fr 1.25fr 1.8fr .68fr .8fr .78fr!important;
    border-radius:6px!important;
    box-shadow:none!important;
  }
  #staffPlanningView .v115pl-board-corner,
  #staffPlanningView .v115pl-board-category{min-height:25px!important;padding:3px!important}
  #staffPlanningView .v115pl-board-category span{display:none!important}
  #staffPlanningView .v115pl-board-category strong{font-size:6.4pt!important}
  #staffPlanningView .v115pl-board-band-label{min-height:60px!important;padding:3px!important}
  #staffPlanningView .v115pl-board-band-label>span{font-size:8pt!important}
  #staffPlanningView .v115pl-board-band-label strong{font-size:6.5pt!important}
  #staffPlanningView .v115pl-board-band-label small{font-size:5pt!important}
  #staffPlanningView .v115pl-board-band-label em{font-size:4.5pt!important}
  #staffPlanningView .v115pl-board-category-band{min-height:60px!important;padding:3px!important;gap:3px!important}
  #staffPlanningView .v115pl-board-category-band .v115pl-roster-cell{min-height:54px!important;border-radius:5px!important}
}

/* =========================================================
   Daily roster v3 — table robuste JOUR / NUIT
   ========================================================= */
.v115pl-duty-table-scroll{
  width:100%!important;
  overflow-x:auto!important;
  padding:14px!important;
  background:#f7fafc!important;
}
.v115pl-duty-table{
  width:100%!important;
  min-width:1450px!important;
  table-layout:fixed!important;
  border-collapse:separate!important;
  border-spacing:0!important;
  background:#fff!important;
  border:1px solid #dfe7ef!important;
  border-radius:16px!important;
  overflow:hidden!important;
  box-shadow:0 8px 24px rgba(31,67,103,.055)!important;
}
.v115pl-duty-table th,
.v115pl-duty-table td{
  box-sizing:border-box!important;
  vertical-align:middle!important;
}
.v115pl-duty-table thead th{
  height:46px!important;
  padding:8px 10px!important;
  border-right:1px solid #e5ebf1!important;
  border-bottom:1px solid #dfe7ef!important;
  background:#f8fafc!important;
}
.v115pl-duty-table thead th:last-child{border-right:0!important}
.v115pl-duty-corner{
  text-align:left!important;
  color:#8391a0!important;
  font-size:.66rem!important;
  font-weight:850!important;
  letter-spacing:.075em!important;
  text-transform:uppercase!important;
}
.v115pl-duty-category{
  text-align:center!important;
  color:#26435f!important;
}
.v115pl-duty-category>span{
  display:inline-grid!important;
  place-items:center!important;
  width:24px!important;
  height:24px!important;
  margin-right:6px!important;
  border-radius:8px!important;
  background:#fff!important;
  box-shadow:0 1px 4px rgba(32,68,104,.07)!important;
  font-size:.7rem!important;
  vertical-align:middle!important;
}
.v115pl-duty-category>strong{
  font-size:.76rem!important;
  font-weight:850!important;
  white-space:nowrap!important;
  vertical-align:middle!important;
}
.v115pl-duty-category.cat-regulation{background:#eaf4ff!important}
.v115pl-duty-category.cat-smur{background:#fff0f5!important}
.v115pl-duty-category.cat-emergency{background:#edf9ef!important}
.v115pl-duty-category.cat-uhcd{background:#fff9df!important}
.v115pl-duty-category.cat-on_call{background:#eaf8f0!important}
.v115pl-duty-category.cat-double{background:#f4effd!important}

.v115pl-duty-row>th,
.v115pl-duty-row>td{
  border-right:1px solid #e5ebf1!important;
  border-bottom:1px solid #e4ebf1!important;
}
.v115pl-duty-row>td:last-child{border-right:0!important}
.v115pl-duty-row:last-child>th,
.v115pl-duty-row:last-child>td{border-bottom:0!important}
.v115pl-duty-band-label{
  width:92px!important;
  min-width:92px!important;
  height:112px!important;
  padding:10px 7px!important;
  text-align:center!important;
}
.v115pl-duty-band-label>span,
.v115pl-duty-band-label>strong,
.v115pl-duty-band-label>small,
.v115pl-duty-band-label>em{
  display:block!important;
}
.v115pl-duty-band-label>span{font-size:1.05rem!important;line-height:1!important}
.v115pl-duty-band-label>strong{
  margin-top:3px!important;
  font-size:.76rem!important;
  font-weight:900!important;
  letter-spacing:.08em!important;
}
.v115pl-duty-band-label>small{
  margin-top:2px!important;
  font-size:.57rem!important;
  font-weight:750!important;
  white-space:nowrap!important;
}
.v115pl-duty-band-label>em{
  margin-top:5px!important;
  font-size:.48rem!important;
  font-style:normal!important;
  line-height:1.15!important;
}
.v115pl-duty-band-label.day{
  background:linear-gradient(180deg,#fffdf7,#fff9e9)!important;
  color:#976b17!important;
}
.v115pl-duty-band-label.night{
  background:linear-gradient(180deg,#f8faff,#eef3ff)!important;
  color:#5066a2!important;
}

.v115pl-duty-category-cell{
  height:112px!important;
  padding:8px!important;
  background:#fff!important;
}
.v115pl-duty-category-cell.night{background:#fbfcff!important}
.v115pl-duty-category-cell.cat-regulation.day{background:#fbfdff!important}
.v115pl-duty-category-cell.cat-smur.day{background:#fffcfd!important}
.v115pl-duty-category-cell.cat-emergency.day{background:#fbfefb!important}
.v115pl-duty-category-cell.cat-uhcd.day{background:#fffef9!important}
.v115pl-duty-category-cell.cat-on_call.day{background:#fbfefc!important}
.v115pl-duty-category-cell.cat-double.day{background:#fdfcff!important}
.v115pl-duty-subcells{
  display:flex!important;
  align-items:stretch!important;
  gap:8px!important;
  width:100%!important;
  height:100%!important;
}
.v115pl-duty-subcells>.v115pl-roster-cell{
  flex:1 1 0!important;
  width:0!important;
  min-width:0!important;
  height:100%!important;
  min-height:94px!important;
  border-radius:12px!important;
}
.v115pl-duty-subcells>.v115pl-roster-cell.placeholder{
  min-height:94px!important;
  background:#fbfcfd!important;
  border:1px dashed #edf1f5!important;
  box-shadow:none!important;
}
.v115pl-duty-subcells .v115pl-roster-cell-head{
  min-height:34px!important;
  padding:7px 8px 6px 10px!important;
}
.v115pl-duty-subcells .v115pl-roster-cell-head strong{
  font-size:.68rem!important;
  line-height:1.05!important;
}
.v115pl-duty-subcells .v115pl-roster-cell-head small{
  font-size:.52rem!important;
}
.v115pl-duty-subcells .v115pl-roster-cell-people{
  padding:6px!important;
}
.v115pl-duty-subcells .v115pl-roster-person{
  min-height:42px!important;
}
.v115pl-duty-subcells .v115pl-roster-person strong{
  font-size:.7rem!important;
}

/* Neutraliser les anciennes structures : elles ne doivent plus influer sur la vue JOUR/NUIT. */
.v115pl-duty-table-scroll .v115pl-duty-board,
.v115pl-duty-table-scroll .v115pl-category-grid{display:none!important}

@media(max-width:760px){
  .v115pl-duty-table-scroll{padding:10px!important}
}

/* Impression Planning : paysage par défaut */
@page{size:A4 landscape;margin:8mm}
@media print{
  body.v115pl-printing{background:#fff!important}
  body.v115pl-printing #staffPlanningView{display:block!important;position:static!important;background:#fff!important}
  body.v115pl-printing #staffPlanningView .v115pl-header,
  body.v115pl-printing #staffPlanningView .v115pl-toolbar,
  body.v115pl-printing #staffPlanningView .v115pl-view-actions{display:none!important}
  body.v115pl-printing #staffPlanningView .v115pl-body{padding:0!important}
  body.v115pl-printing #staffPlanningView .v115pl-day{box-shadow:none!important;border:0!important;overflow:visible!important}
  body.v115pl-printing #staffPlanningView .v115pl-duty-table-scroll{overflow:visible!important;padding:0!important;background:#fff!important}
  body.v115pl-printing #staffPlanningView .v115pl-duty-table{
    width:100%!important;
    min-width:0!important;
    table-layout:fixed!important;
    box-shadow:none!important;
    border-radius:6px!important;
  }
  body.v115pl-printing #staffPlanningView .v115pl-duty-table col:first-child{width:16mm!important}
  body.v115pl-printing #staffPlanningView .v115pl-duty-table thead th{height:9mm!important;padding:1.5mm 1mm!important}
  body.v115pl-printing #staffPlanningView .v115pl-duty-category>span{display:none!important}
  body.v115pl-printing #staffPlanningView .v115pl-duty-category>strong{font-size:7pt!important}
  body.v115pl-printing #staffPlanningView .v115pl-duty-band-label{height:30mm!important;padding:2mm 1mm!important}
  body.v115pl-printing #staffPlanningView .v115pl-duty-category-cell{height:30mm!important;padding:1.3mm!important}
  body.v115pl-printing #staffPlanningView .v115pl-duty-subcells{gap:1mm!important}
  body.v115pl-printing #staffPlanningView .v115pl-duty-subcells>.v115pl-roster-cell{
    min-height:27mm!important;
    border-radius:2mm!important;
  }
  body.v115pl-printing #staffPlanningView .v115pl-roster-cell-head{min-height:7mm!important;padding:1mm 1.5mm!important}
  body.v115pl-printing #staffPlanningView .v115pl-roster-cell-head strong{font-size:6.4pt!important}
  body.v115pl-printing #staffPlanningView .v115pl-roster-cell-head small{font-size:5.2pt!important}
  body.v115pl-printing #staffPlanningView .v115pl-roster-cell-people{padding:1mm!important}
  body.v115pl-printing #staffPlanningView .v115pl-roster-person{min-height:13mm!important;padding:1mm!important}
  body.v115pl-printing #staffPlanningView .v115pl-roster-avatar{display:none!important}
  body.v115pl-printing #staffPlanningView .v115pl-roster-person strong{font-size:6.3pt!important}
}

/* Daily roster v4 — pleine largeur */
.v115pl-duty-table-scroll{
  width:100%!important;
  overflow-x:auto!important;
  padding:14px!important;
}
.v115pl-duty-table{
  width:100%!important;
  min-width:1180px!important;
  table-layout:fixed!important;
}
.v115pl-duty-category-cell{
  padding:10px!important;
}
.v115pl-duty-subcells{
  gap:10px!important;
}
.v115pl-duty-subcells>.v115pl-roster-cell{
  min-height:100px!important;
}
.v115pl-duty-subcells>.v115pl-roster-cell.placeholder{
  min-height:100px!important;
}
.v115pl-duty-subcells .v115pl-roster-cell-head{
  min-height:36px!important;
  padding:8px 9px 7px 11px!important;
}
.v115pl-duty-subcells .v115pl-roster-cell-head strong{
  font-size:.72rem!important;
}
.v115pl-duty-subcells .v115pl-roster-cell-head small{
  font-size:.56rem!important;
}
.v115pl-duty-subcells .v115pl-roster-person{
  min-height:46px!important;
  padding:7px 8px!important;
}
.v115pl-duty-subcells .v115pl-roster-person strong{
  font-size:.74rem!important;
}
.v115pl-duty-table thead th{
  height:50px!important;
}
.v115pl-duty-category>strong{
  font-size:.8rem!important;
}
.v115pl-duty-band-label{
  height:120px!important;
}
.v115pl-duty-category-cell{
  height:120px!important;
}
@media(min-width:1500px){
  .v115pl-duty-table{min-width:0!important}
}
@media(max-width:1200px){
  .v115pl-duty-table{min-width:1180px!important}
}
@media print{
  body.v115pl-printing #staffPlanningView .v115pl-duty-table{
    width:100%!important;
    min-width:0!important;
    table-layout:fixed!important;
  }
}

/* Daily roster v5 — poste + occupant, sans répétition des horaires */
.v115pl-duty-subcells .v115pl-roster-cell-head{
  justify-content:center!important;
  text-align:center!important;
  min-height:34px!important;
  padding:7px 8px!important;
}
.v115pl-duty-subcells .v115pl-roster-cell-head strong{
  width:100%!important;
  overflow:visible!important;
  text-overflow:clip!important;
  white-space:normal!important;
  font-size:.72rem!important;
  font-weight:900!important;
  letter-spacing:.025em!important;
  color:#203a54!important;
  line-height:1.05!important;
}
.v115pl-duty-subcells .v115pl-roster-cell-head small{display:none!important}
.v115pl-duty-subcells>.v115pl-roster-cell.occupied{
  border-color:#d7e8df!important;
  box-shadow:0 3px 10px rgba(37,104,69,.055)!important;
}
.v115pl-duty-subcells>.v115pl-roster-cell.occupied::after{
  content:""!important;
  position:absolute!important;
  top:9px!important;
  right:9px!important;
  width:7px!important;
  height:7px!important;
  border-radius:50%!important;
  background:#45a36d!important;
  box-shadow:0 0 0 3px rgba(69,163,109,.10)!important;
}
.v115pl-duty-subcells>.v115pl-roster-cell.unfilled{
  border-color:#eadfca!important;
}
.v115pl-duty-subcells .v115pl-roster-person.filled{
  justify-content:flex-start!important;
  background:linear-gradient(180deg,#ffffff,#fbfefd)!important;
  border-color:#e6efe9!important;
}
.v115pl-duty-subcells .v115pl-roster-person.filled strong{
  color:#173a2a!important;
  font-size:.76rem!important;
  font-weight:850!important;
}
.v115pl-duty-subcells .v115pl-roster-person.vacant{
  justify-content:center!important;
  background:#fffdfa!important;
  border-color:#ebc978!important;
}
.v115pl-duty-subcells .v115pl-roster-person.vacant strong{
  white-space:nowrap!important;
  overflow:visible!important;
  text-overflow:clip!important;
}
.v115pl-duty-subcells .v115pl-roster-avatar{
  width:27px!important;
  height:27px!important;
  flex:0 0 27px!important;
  font-size:.58rem!important;
}
@media print{
  body.v115pl-printing #staffPlanningView .v115pl-roster-cell-head small{display:none!important}
  body.v115pl-printing #staffPlanningView .v115pl-roster-cell.occupied::after{display:none!important}
}

/* =========================================================
   Daily roster v6 — grille opérationnelle compacte
   ========================================================= */
.v115pl-duty-table-scroll{
  padding:10px!important;
  background:#f7fafc!important;
}
.v115pl-duty-table{
  border-radius:11px!important;
  box-shadow:0 3px 12px rgba(31,67,103,.04)!important;
}
.v115pl-duty-table thead th{
  height:42px!important;
  padding:6px 8px!important;
}
.v115pl-duty-category>span{
  width:22px!important;
  height:22px!important;
  margin-right:5px!important;
  border-radius:7px!important;
  box-shadow:none!important;
}
.v115pl-duty-category>strong{
  font-size:.75rem!important;
}

.v115pl-duty-band-label,
.v115pl-duty-category-cell{
  height:94px!important;
}
.v115pl-duty-band-label{
  padding:7px 5px!important;
}
.v115pl-duty-band-label>span{font-size:.9rem!important}
.v115pl-duty-band-label>strong{
  margin-top:2px!important;
  font-size:.7rem!important;
}
.v115pl-duty-band-label>small{
  font-size:.53rem!important;
}
.v115pl-duty-band-label>em{
  margin-top:3px!important;
  font-size:.46rem!important;
}
.v115pl-duty-category-cell{
  padding:0!important;
}

/* Une coupure horizontale franche : le planning se lit en deux bandes. */
.v115pl-duty-row.night>th,
.v115pl-duty-row.night>td{
  border-top:2px solid #c8d4e3!important;
}
.v115pl-duty-row.day>td{
  background:#fffefb!important;
}
.v115pl-duty-row.night>td{
  background:#f8fbff!important;
}

/* Les postes deviennent des cellules de grille, pas des cartes imbriquées. */
.v115pl-duty-subcells{
  gap:0!important;
  padding:0!important;
}
.v115pl-duty-subcells>.v115pl-roster-cell{
  position:relative!important;
  min-height:94px!important;
  height:94px!important;
  border:0!important;
  border-right:1px solid #e3e9ef!important;
  border-radius:0!important;
  background:transparent!important;
  box-shadow:none!important;
  overflow:hidden!important;
}
.v115pl-duty-subcells>.v115pl-roster-cell:last-child{
  border-right:0!important;
}
.v115pl-duty-subcells>.v115pl-roster-cell::before,
.v115pl-duty-subcells>.v115pl-roster-cell.occupied::after{
  display:none!important;
}
.v115pl-duty-subcells>.v115pl-roster-cell.placeholder{
  min-height:94px!important;
  background:transparent!important;
  border:0!important;
  border-right:1px solid #edf1f5!important;
}
.v115pl-duty-subcells>.v115pl-roster-cell.placeholder:last-child{
  border-right:0!important;
}

.v115pl-duty-subcells .v115pl-roster-cell-head{
  min-height:29px!important;
  height:29px!important;
  padding:5px 5px 4px!important;
  justify-content:center!important;
  background:rgba(244,247,250,.78)!important;
  border-bottom:1px solid #e8edf2!important;
}
.v115pl-duty-subcells .v115pl-roster-cell-head strong{
  font-size:.64rem!important;
  line-height:1.05!important;
  letter-spacing:.025em!important;
  text-align:center!important;
  white-space:normal!important;
  overflow:visible!important;
  color:#263f58!important;
}
.v115pl-duty-subcells .v115pl-roster-cell-people{
  padding:0!important;
  gap:0!important;
  min-height:64px!important;
}
.v115pl-duty-subcells .v115pl-roster-person{
  min-height:64px!important;
  padding:5px 5px!important;
  border:0!important;
  border-radius:0!important;
  background:transparent!important;
  box-shadow:none!important;
  justify-content:center!important;
  text-align:center!important;
  transform:none!important;
}
.v115pl-duty-subcells .v115pl-roster-person+.v115pl-roster-person{
  border-top:1px solid #e8edf2!important;
}
.v115pl-duty-subcells .v115pl-roster-person:not(:disabled):hover{
  background:rgba(220,235,248,.42)!important;
  box-shadow:none!important;
  transform:none!important;
}
.v115pl-duty-subcells .v115pl-roster-person.filled{
  background:rgba(238,248,242,.45)!important;
}
.v115pl-duty-subcells .v115pl-roster-person.filled strong{
  display:block!important;
  color:#173a2a!important;
  font-size:.72rem!important;
  font-weight:850!important;
  line-height:1.08!important;
  white-space:normal!important;
  overflow:visible!important;
  text-overflow:clip!important;
  text-align:center!important;
}
.v115pl-duty-subcells .v115pl-roster-avatar{
  display:none!important;
}

/* Vacance intégrée directement dans la cellule. */
.v115pl-duty-subcells .v115pl-roster-person.vacant{
  background:rgba(255,249,235,.68)!important;
  color:#9b6b14!important;
}
.v115pl-duty-subcells .v115pl-roster-person.vacant strong{
  color:#9b6b14!important;
  font-size:.66rem!important;
  font-weight:820!important;
  line-height:1.05!important;
  white-space:normal!important;
  text-align:center!important;
}
.v115pl-duty-subcells .v115pl-vacant-dot{
  display:none!important;
}

/* Repères de famille très légers à l'intérieur de la grille. */
.v115pl-duty-category-cell.cat-regulation .v115pl-roster-cell-head{background:rgba(234,244,255,.72)!important}
.v115pl-duty-category-cell.cat-smur .v115pl-roster-cell-head{background:rgba(255,240,245,.72)!important}
.v115pl-duty-category-cell.cat-emergency .v115pl-roster-cell-head{background:rgba(237,249,239,.78)!important}
.v115pl-duty-category-cell.cat-uhcd .v115pl-roster-cell-head{background:rgba(255,249,223,.78)!important}
.v115pl-duty-category-cell.cat-on_call .v115pl-roster-cell-head{background:rgba(234,248,240,.78)!important}
.v115pl-duty-category-cell.cat-double .v115pl-roster-cell-head{background:rgba(244,239,253,.78)!important}

@media(min-width:1500px){
  .v115pl-duty-table{min-width:0!important}
}
@media(max-width:1499px){
  .v115pl-duty-table{min-width:1320px!important}
}

/* Daily roster v7 — chaque POSTE a exactement la même largeur */
.v115pl-duty-table col.v115pl-col-band{width:8%!important}
.v115pl-duty-table col.v115pl-col-regulation{width:16.727%!important} /* 2 postes */
.v115pl-duty-table col.v115pl-col-smur{width:16.727%!important}       /* 2 postes */
.v115pl-duty-table col.v115pl-col-emergency{width:25.091%!important}  /* 3 postes */
.v115pl-duty-table col.v115pl-col-uhcd{width:8.364%!important}        /* 1 poste */
.v115pl-duty-table col.v115pl-col-on_call{width:8.364%!important}     /* 1 poste */
.v115pl-duty-table col.v115pl-col-double{width:16.727%!important}     /* 2 postes */
.v115pl-duty-table{
  width:100%!important;
  min-width:1380px!important;
}
.v115pl-duty-corner,
.v115pl-duty-band-label{
  width:auto!important;
  min-width:0!important;
}
@media(min-width:1500px){
  .v115pl-duty-table{min-width:0!important}
}
@media(max-width:1499px){
  .v115pl-duty-table{min-width:1380px!important}
}

/* Daily roster v8 — centrage des professionnels */
.v115pl-duty-subcells .v115pl-roster-person.filled{
  justify-content:center!important;
  align-items:center!important;
  text-align:center!important;
}
.v115pl-duty-subcells .v115pl-roster-person.filled strong{
  display:block!important;
  width:100%!important;
  margin:0 auto!important;
  text-align:center!important;
}

/* =========================================================
   Desiderata — Matin / Apres-midi / Nuit
   ========================================================= */
.v115pl-segment-legend{
  display:flex;
  align-items:center;
  gap:14px;
  padding:8px 2px 10px;
  color:#6f8091;
  font-size:.7rem;
  font-weight:750;
}
.v115pl-segment-legend span{
  display:inline-flex;
  align-items:center;
  gap:5px;
}
.v115pl-segment-legend i{
  min-width:22px;
  height:18px;
  padding:0 5px;
  border-radius:999px;
  background:#eef2f5;
  color:#68788a;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  font-size:.58rem;
  font-style:normal;
  font-weight:850;
  line-height:1;
}
.v115pl-personal-day{
  position:relative;
  min-height:88px!important;
  display:flex!important;
  flex-direction:column!important;
  align-items:stretch!important;
  gap:5px!important;
  padding:7px!important;
}
.v115pl-personal-day .day-number{
  align-self:flex-start;
  font-size:.75rem;
  font-weight:850;
  color:#2b455f;
}
.v115pl-wish-dots{
  display:grid;
  grid-template-columns:repeat(3,1fr);
  gap:7px;
  padding:4px 3px 2px;
}
.v115pl-wish-dots i{
  display:flex;
  align-items:center;
  justify-content:center;
  min-width:24px;
  height:20px;
  padding:0 5px;
  margin:auto;
  border-radius:999px;
  background:#eef2f5;
  color:#68788a;
  border:1px solid #dce4eb;
  box-shadow:none;
  font-size:.58rem;
  font-style:normal;
  font-weight:850;
  line-height:1;
  letter-spacing:.01em;
}
.v115pl-wish-dots i.pref-want{
  background:#2f9f67;
  color:#fff;
  border-color:#2f9f67;
  box-shadow:0 0 0 3px rgba(47,159,103,.10);
}
.v115pl-wish-dots i.pref-prefer{
  background:#e0f4e8;
  color:#23794e;
  border-color:#b9dfc8;
  box-shadow:none;
}
.v115pl-wish-dots i.pref-available{
  background:#eef2f5;
  color:#68788a;
  border-color:#dce4eb;
  box-shadow:none;
}
.v115pl-wish-dots i.pref-avoid{
  background:#fff3d8;
  color:#996813;
  border-color:#efd7a4;
  box-shadow:none;
}
.v115pl-wish-dots i.pref-unavailable{
  background:#fde7e7;
  color:#a33d3d;
  border-color:#efbcbc;
  box-shadow:none;
}
.v115pl-personal-day.closed{
  background:#f7f8fa!important;
  opacity:.74;
}
.v115pl-personal-day.closed .day-number{color:#8a97a5}
.v115pl-pref-legend{
  display:flex;
  flex-direction:column;
  gap:8px;
  font-size:.72rem;
  font-weight:750;
}
.v115pl-pref-legend .want{color:#23794e}
.v115pl-pref-legend .prefer{color:#4b926c}
.v115pl-pref-legend .available{color:#8592a0}
.v115pl-pref-legend .avoid{color:#b27c1a}
.v115pl-pref-legend .unavailable{color:#b74646}
.v115pl-segment-prefs{
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:10px;
  padding:11px;
  border:1px solid #dfe7ef;
  border-radius:12px;
  background:#f8fbfd;
}
.v115pl-segment-prefs label{
  display:flex;
  flex-direction:column;
  gap:5px;
}
.v115pl-segment-prefs label span{
  color:#304a64;
  font-size:.72rem;
  font-weight:850;
}
.v115pl-request-day.closed{
  background:#f3f5f7!important;
  color:#a0a9b2!important;
  cursor:not-allowed!important;
}
@media(max-width:700px){
  .v115pl-segment-prefs{grid-template-columns:1fr}
}

/* =========================================================
   Planning general mensuel — vue operationnelle premium
   ========================================================= */
.v115pl-general-month{
  border:1px solid #dce6ef;
  border-radius:18px;
  background:#fff;
  box-shadow:0 12px 34px rgba(34,67,101,.06);
  overflow:hidden;
}
.v115pl-general-head{
  display:flex;
  align-items:flex-end;
  justify-content:space-between;
  gap:16px;
  padding:15px 17px;
  border-bottom:1px solid #e7edf3;
  background:linear-gradient(180deg,#fff,#fbfdff);
}
.v115pl-general-head h2{
  margin:1px 0 3px;
  color:#173653;
  font-size:1.05rem;
}
.v115pl-general-head p{
  margin:0;
  color:#758496;
  font-size:.72rem;
}
.v115pl-general-note{
  padding:6px 9px;
  border-radius:999px;
  background:#edf4fb;
  color:#506b83;
  font-size:.65rem;
  font-weight:800;
}
.v115pl-general-scroll{
  overflow:auto;
  background:#f7fafc;
  padding:12px;
}
.v115pl-general-table{
  width:100%;
  min-width:1250px;
  border-collapse:separate;
  border-spacing:0;
  table-layout:fixed;
  border:1px solid #dfe7ef;
  border-radius:12px;
  overflow:hidden;
  background:#fff;
}
.v115pl-general-table th,
.v115pl-general-table td{
  border-right:1px solid #e5ebf1;
  border-bottom:1px solid #e7edf3;
  vertical-align:middle;
}
.v115pl-general-table tr:last-child>*{border-bottom:0}
.v115pl-general-table tr>*:last-child{border-right:0}
.v115pl-general-table thead th{
  height:38px;
  padding:7px 8px;
  text-align:center;
  color:#28455f;
  font-size:.7rem;
  font-weight:900;
}
.v115pl-general-table thead .date-col{
  width:110px;
  background:#f7f9fb;
  text-align:left;
}
.v115pl-general-table thead .cat-regulation{background:#eaf4ff}
.v115pl-general-table thead .cat-smur{background:#fff0f5}
.v115pl-general-table thead .cat-emergency{background:#edf9ef}
.v115pl-general-table thead .cat-uhcd{background:#fff9df}
.v115pl-general-table thead .cat-on_call{background:#eaf8f0}
.v115pl-general-table thead .cat-double{background:#f4effd}
.v115pl-general-table tbody .date-col{
  width:110px;
  padding:6px 8px;
  background:#fff;
  text-align:left;
}
.v115pl-general-table tbody .date-col strong{
  display:block;
  color:#2c435a;
  font-size:.65rem;
  line-height:1.15;
}
.v115pl-general-table tbody .date-col small{
  display:block;
  margin-top:2px;
  color:#8b98a6;
  font-size:.55rem;
  font-weight:800;
}
.v115pl-general-table tbody tr.weekend .date-col{
  background:#f4f3ff;
}
.v115pl-month-category{
  padding:4px;
  background:#fff;
}
.v115pl-month-category.cat-regulation{background:#fbfdff}
.v115pl-month-category.cat-smur{background:#fffcfd}
.v115pl-month-category.cat-emergency{background:#fbfefb}
.v115pl-month-category.cat-uhcd{background:#fffef9}
.v115pl-month-category.cat-on_call{background:#fbfefc}
.v115pl-month-category.cat-double{background:#fdfcff}
.v115pl-month-lanes{
  display:grid;
  grid-template-columns:repeat(var(--lanes),minmax(0,1fr));
  gap:4px;
}
.v115pl-month-lane{
  display:grid;
  grid-template-rows:1fr 1fr;
  gap:3px;
}
.v115pl-month-mini{
  appearance:none;
  min-height:34px;
  width:100%;
  border:1px solid #e3e9ef;
  border-radius:7px;
  background:#fff;
  padding:4px 5px;
  text-align:center;
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  gap:2px;
  overflow:hidden;
}
.v115pl-month-mini small{
  color:#798798;
  font-size:.48rem;
  font-weight:850;
  line-height:1;
}
.v115pl-month-mini strong{
  max-width:100%;
  color:#203a54;
  font-size:.58rem;
  font-weight:850;
  line-height:1.05;
  white-space:normal;
  overflow-wrap:anywhere;
}
.v115pl-month-mini em{
  color:#aa7617;
  font-size:.52rem;
  font-style:normal;
  font-weight:800;
}
.v115pl-month-mini.filled{
  border-color:#d7e7df;
  background:#fff;
}
.v115pl-month-mini.vacant{
  border-style:dashed;
  border-color:#edcd8e;
  background:#fffdf8;
}
.v115pl-month-mini.empty{
  border-style:dashed;
  border-color:#edf1f4;
  background:#fbfcfd;
}
@media print{
  body.v115pl-printing #staffPlanningView .v115pl-general-scroll{
    overflow:visible!important;
    padding:0!important;
    background:#fff!important;
  }
  body.v115pl-printing #staffPlanningView .v115pl-general-table{
    min-width:0!important;
    width:100%!important;
    table-layout:fixed!important;
  }
  body.v115pl-printing #staffPlanningView .v115pl-general-head{
    padding:3mm!important;
  }
  body.v115pl-printing #staffPlanningView .v115pl-general-table thead th{
    font-size:6pt!important;
    height:7mm!important;
  }
  body.v115pl-printing #staffPlanningView .v115pl-general-table .date-col{
    width:18mm!important;
  }
  body.v115pl-printing #staffPlanningView .v115pl-month-category{
    padding:1mm!important;
  }
  body.v115pl-printing #staffPlanningView .v115pl-month-mini{
    min-height:8mm!important;
    padding:.7mm!important;
    border-radius:1mm!important;
  }
  body.v115pl-printing #staffPlanningView .v115pl-month-mini small{font-size:4.5pt!important}
  body.v115pl-printing #staffPlanningView .v115pl-month-mini strong{font-size:5pt!important}
  body.v115pl-printing #staffPlanningView .v115pl-month-mini em{font-size:4.5pt!important}
}


/* Daily roster v9 — centrage final verrouillé */
#staffPlanningView .v115pl-duty-subcells .v115pl-roster-person.filled{
  display:flex!important;
  justify-content:center!important;
  align-items:center!important;
  text-align:center!important;
}
#staffPlanningView .v115pl-duty-subcells .v115pl-roster-person.filled strong{
  display:block!important;
  width:100%!important;
  margin:0!important;
  text-align:center!important;
}


/* Daily roster v10 — palette harmonisée */
#staffPlanningView .v115pl-duty-category.cat-regulation{
  background:#e6f1ff!important;
  color:#245b8f!important;
}
#staffPlanningView .v115pl-duty-category.cat-smur{
  background:#fde8f0!important;
  color:#8f3f62!important;
}
#staffPlanningView .v115pl-duty-category.cat-emergency{
  background:#e8f6ea!important;
  color:#326b40!important;
}
#staffPlanningView .v115pl-duty-category.cat-uhcd{
  background:#fff4cc!important;
  color:#7a5b00!important;
}
#staffPlanningView .v115pl-duty-category.cat-on_call{
  background:#e3f5ec!important;
  color:#29694b!important;
}
#staffPlanningView .v115pl-duty-category.cat-double{
  background:#f1eafa!important;
  color:#624b87!important;
}

/* Bande JOUR / NUIT */
#staffPlanningView .v115pl-duty-band-label.day{
  background:linear-gradient(180deg,#fffaf0,#fff4dc)!important;
  color:#8b6217!important;
}
#staffPlanningView .v115pl-duty-band-label.night{
  background:linear-gradient(180deg,#f4f7ff,#eaf0ff)!important;
  color:#4e64a0!important;
}
#staffPlanningView .v115pl-duty-row.day>td{
  background:#fffdf8!important;
}
#staffPlanningView .v115pl-duty-row.night>td{
  background:#f7faff!important;
}
#staffPlanningView .v115pl-duty-row.night>th,
#staffPlanningView .v115pl-duty-row.night>td{
  border-top-color:#bdcbe0!important;
}

/* Entêtes de postes, dans la même famille chromatique */
#staffPlanningView .v115pl-duty-category-cell.cat-regulation .v115pl-roster-cell-head{
  background:#edf5ff!important;
}
#staffPlanningView .v115pl-duty-category-cell.cat-smur .v115pl-roster-cell-head{
  background:#fff0f5!important;
}
#staffPlanningView .v115pl-duty-category-cell.cat-emergency .v115pl-roster-cell-head{
  background:#eef8f0!important;
}
#staffPlanningView .v115pl-duty-category-cell.cat-uhcd .v115pl-roster-cell-head{
  background:#fff7d9!important;
}
#staffPlanningView .v115pl-duty-category-cell.cat-on_call .v115pl-roster-cell-head{
  background:#eaf7f0!important;
}
#staffPlanningView .v115pl-duty-category-cell.cat-double .v115pl-roster-cell-head{
  background:#f5effc!important;
}

/* États */
#staffPlanningView .v115pl-duty-subcells .v115pl-roster-person.vacant{
  background:#fff9ec!important;
}
#staffPlanningView .v115pl-duty-subcells .v115pl-roster-person.vacant strong{
  color:#946516!important;
}
#staffPlanningView .v115pl-duty-subcells .v115pl-roster-person.filled{
  background:#eef8f2!important;
}
#staffPlanningView .v115pl-duty-subcells .v115pl-roster-person.filled strong{
  color:#173d2b!important;
}


/* Impression — en-tête dédié + conservation fidèle des couleurs */
.v115pl-print-heading{display:none}

@media print{
  body.v115pl-printing,
  body.v115pl-printing #staffPlanningView,
  body.v115pl-printing #staffPlanningView *{
    -webkit-print-color-adjust:exact!important;
    print-color-adjust:exact!important;
  }

  body.v115pl-printing #staffPlanningView .v115pl-print-heading{
    display:flex!important;
    align-items:flex-end!important;
    justify-content:space-between!important;
    gap:10mm!important;
    margin:0 0 5mm!important;
    padding:0 0 3mm!important;
    border-bottom:1.2pt solid #cfd8e3!important;
    color:#173653!important;
  }
  body.v115pl-printing #staffPlanningView .v115pl-print-heading>div{
    display:flex!important;
    flex-direction:column!important;
    gap:1mm!important;
  }
  body.v115pl-printing #staffPlanningView .v115pl-print-heading strong{
    font-size:15pt!important;
    font-weight:900!important;
    line-height:1!important;
  }
  body.v115pl-printing #staffPlanningView .v115pl-print-heading span{
    font-size:8pt!important;
    color:#5f7286!important;
    font-weight:750!important;
  }
  body.v115pl-printing #staffPlanningView .v115pl-print-heading time{
    font-size:10pt!important;
    color:#2b455f!important;
    font-weight:850!important;
    white-space:nowrap!important;
  }

  /* L'en-tête écran contient des informations de travail (généré le, statut) :
     on le remplace par l'en-tête documentaire ci-dessus. */
  body.v115pl-printing #staffPlanningView .v115pl-day-title{
    display:none!important;
  }

  /* Préserver explicitement les aplats de familles et les bandes JOUR / NUIT. */
  body.v115pl-printing #staffPlanningView .v115pl-duty-category,
  body.v115pl-printing #staffPlanningView .v115pl-duty-band-label,
  body.v115pl-printing #staffPlanningView .v115pl-roster-cell-head,
  body.v115pl-printing #staffPlanningView .v115pl-roster-person{
    -webkit-print-color-adjust:exact!important;
    print-color-adjust:exact!important;
  }
}


/* =========================================================
   General roster v2 — même langage que la Journée
   ========================================================= */
#staffPlanningView .v115pl-general-month{
  border:1px solid #dce6ef;
  border-radius:16px;
  background:#fff;
  box-shadow:0 8px 26px rgba(34,67,101,.05);
  overflow:hidden;
}
#staffPlanningView .v115pl-general-scroll{
  overflow:auto;
  padding:10px;
  background:#f7fafc;
}
#staffPlanningView .v115pl-general-duty-table{
  width:100%!important;
  min-width:1328px!important;
  table-layout:fixed!important;
  border-radius:11px!important;
  box-shadow:0 3px 12px rgba(31,67,103,.04)!important;
}
#staffPlanningView .v115pl-general-duty-table col.v115pl-general-col-date{width:112px!important}
#staffPlanningView .v115pl-general-duty-table col.v115pl-general-col-band{width:72px!important}
#staffPlanningView .v115pl-general-duty-table col.v115pl-col-regulation{width:208px!important}
#staffPlanningView .v115pl-general-duty-table col.v115pl-col-smur{width:208px!important}
#staffPlanningView .v115pl-general-duty-table col.v115pl-col-emergency{width:312px!important}
#staffPlanningView .v115pl-general-duty-table col.v115pl-col-uhcd{width:104px!important}
#staffPlanningView .v115pl-general-duty-table col.v115pl-col-on_call{width:104px!important}
#staffPlanningView .v115pl-general-duty-table col.v115pl-col-double{width:208px!important}

#staffPlanningView .v115pl-general-duty-table thead th{
  height:38px!important;
  padding:6px!important;
}
#staffPlanningView .v115pl-general-date-head{
  background:#f7f9fb!important;
  color:#6c7d8e!important;
  text-align:left!important;
  font-size:.65rem!important;
  font-weight:850!important;
  text-transform:uppercase!important;
  letter-spacing:.05em!important;
}
#staffPlanningView .v115pl-general-date-cell{
  padding:6px 7px!important;
  background:#fff!important;
  text-align:left!important;
  vertical-align:middle!important;
  border-right:1px solid #e5ebf1!important;
}
#staffPlanningView .v115pl-general-date-cell.weekend{
  background:#f5f4fb!important;
}
#staffPlanningView .v115pl-general-date-cell strong{
  display:block!important;
  color:#2c435a!important;
  font-size:.62rem!important;
  line-height:1.15!important;
  font-weight:850!important;
}
#staffPlanningView .v115pl-general-date-cell small{
  display:block!important;
  margin-top:2px!important;
  color:#8b98a6!important;
  font-size:.52rem!important;
  font-weight:800!important;
}

/* Deux bandes explicites par date. */
#staffPlanningView .v115pl-general-band-label{
  padding:4px!important;
  text-align:center!important;
  vertical-align:middle!important;
  border-right:1px solid #e5ebf1!important;
}
#staffPlanningView .v115pl-general-band-label strong{
  display:block!important;
  font-size:.58rem!important;
  font-weight:900!important;
  letter-spacing:.07em!important;
}
#staffPlanningView .v115pl-general-band-label.day{
  background:linear-gradient(180deg,#fffaf0,#fff4dc)!important;
  color:#8b6217!important;
}
#staffPlanningView .v115pl-general-band-label.night{
  background:linear-gradient(180deg,#f4f7ff,#eaf0ff)!important;
  color:#4e64a0!important;
}

/* Version compacte des mêmes cellules que dans Journée. */
#staffPlanningView .v115pl-general-duty-table .v115pl-duty-category-cell{
  height:auto!important;
  min-height:48px!important;
  padding:0!important;
}
#staffPlanningView .v115pl-general-duty-table .v115pl-duty-subcells{
  gap:0!important;
  height:100%!important;
}
#staffPlanningView .v115pl-general-duty-table .v115pl-duty-subcells>.v115pl-roster-cell{
  height:auto!important;
  min-height:48px!important;
  border:0!important;
  border-right:1px solid #e3e9ef!important;
  border-radius:0!important;
  box-shadow:none!important;
}
#staffPlanningView .v115pl-general-duty-table .v115pl-duty-subcells>.v115pl-roster-cell:last-child{
  border-right:0!important;
}
#staffPlanningView .v115pl-general-duty-table .v115pl-duty-subcells>.v115pl-roster-cell.placeholder{
  min-height:48px!important;
  background:transparent!important;
  border-top:0!important;
  border-bottom:0!important;
  border-left:0!important;
}
#staffPlanningView .v115pl-general-duty-table .v115pl-roster-cell-head{
  min-height:19px!important;
  height:19px!important;
  padding:3px 3px 2px!important;
  border-bottom:1px solid #e8edf2!important;
}
#staffPlanningView .v115pl-general-duty-table .v115pl-roster-cell-head strong{
  font-size:.5rem!important;
  line-height:1!important;
  font-weight:900!important;
  text-align:center!important;
  white-space:normal!important;
}
#staffPlanningView .v115pl-general-duty-table .v115pl-roster-cell-people{
  min-height:29px!important;
  padding:0!important;
  gap:0!important;
}
#staffPlanningView .v115pl-general-duty-table .v115pl-roster-person{
  min-height:29px!important;
  padding:3px!important;
  border:0!important;
  border-radius:0!important;
  justify-content:center!important;
  align-items:center!important;
  text-align:center!important;
}
#staffPlanningView .v115pl-general-duty-table .v115pl-roster-person strong{
  width:100%!important;
  margin:0!important;
  font-size:.54rem!important;
  line-height:1.05!important;
  font-weight:850!important;
  text-align:center!important;
  white-space:normal!important;
  overflow:visible!important;
  text-overflow:clip!important;
}
#staffPlanningView .v115pl-general-duty-table .v115pl-roster-avatar,
#staffPlanningView .v115pl-general-duty-table .v115pl-vacant-dot{
  display:none!important;
}
#staffPlanningView .v115pl-general-duty-table .v115pl-roster-person.filled{
  background:#eef8f2!important;
}
#staffPlanningView .v115pl-general-duty-table .v115pl-roster-person.filled strong{
  color:#173d2b!important;
}
#staffPlanningView .v115pl-general-duty-table .v115pl-roster-person.vacant{
  background:#fff9ec!important;
}
#staffPlanningView .v115pl-general-duty-table .v115pl-roster-person.vacant strong{
  color:#946516!important;
}

/* JOUR / NUIT et séparation entre deux dates. */
#staffPlanningView .v115pl-general-row.day>td{
  background:#fffdf8!important;
}
#staffPlanningView .v115pl-general-row.night>td{
  background:#f7faff!important;
}
#staffPlanningView .v115pl-general-row.night>th,
#staffPlanningView .v115pl-general-row.night>td{
  border-top:1px solid #d9e1ea!important;
  border-bottom:2px solid #bcc9d8!important;
}
#staffPlanningView .v115pl-general-row.weekend .v115pl-duty-category-cell{
  filter:saturate(.92);
}

@media(min-width:1500px){
  #staffPlanningView .v115pl-general-duty-table{min-width:0!important}
}

/* Impression du Planning général : mêmes couleurs, en-tête documentaire et grille compacte. */
@media print{
  body.v115pl-printing #staffPlanningView .v115pl-general-head{
    display:none!important;
  }
  body.v115pl-printing #staffPlanningView .v115pl-general-scroll{
    overflow:visible!important;
    padding:0!important;
    background:#fff!important;
  }
  body.v115pl-printing #staffPlanningView .v115pl-general-duty-table{
    width:100%!important;
    min-width:0!important;
    table-layout:fixed!important;
    box-shadow:none!important;
  }
  body.v115pl-printing #staffPlanningView .v115pl-general-duty-table thead{
    display:table-header-group!important;
  }
  body.v115pl-printing #staffPlanningView .v115pl-general-duty-table thead th{
    height:6mm!important;
    padding:.7mm!important;
    font-size:5.2pt!important;
  }
  body.v115pl-printing #staffPlanningView .v115pl-general-date-cell{
    padding:.8mm!important;
  }
  body.v115pl-printing #staffPlanningView .v115pl-general-date-cell strong{
    font-size:5pt!important;
  }
  body.v115pl-printing #staffPlanningView .v115pl-general-date-cell small{
    font-size:4.4pt!important;
  }
  body.v115pl-printing #staffPlanningView .v115pl-general-band-label strong{
    font-size:4.8pt!important;
  }
  body.v115pl-printing #staffPlanningView .v115pl-general-duty-table .v115pl-duty-category-cell{
    min-height:7mm!important;
  }
  body.v115pl-printing #staffPlanningView .v115pl-general-duty-table .v115pl-duty-subcells>.v115pl-roster-cell{
    min-height:7mm!important;
  }
  body.v115pl-printing #staffPlanningView .v115pl-general-duty-table .v115pl-roster-cell-head{
    min-height:3mm!important;
    height:3mm!important;
    padding:.35mm!important;
  }
  body.v115pl-printing #staffPlanningView .v115pl-general-duty-table .v115pl-roster-cell-head strong{
    font-size:4.2pt!important;
  }
  body.v115pl-printing #staffPlanningView .v115pl-general-duty-table .v115pl-roster-cell-people{
    min-height:4mm!important;
  }
  body.v115pl-printing #staffPlanningView .v115pl-general-duty-table .v115pl-roster-person{
    min-height:4mm!important;
    padding:.35mm!important;
  }
  body.v115pl-printing #staffPlanningView .v115pl-general-duty-table .v115pl-roster-person strong{
    font-size:4.4pt!important;
  }
}


/* General roster v3 — densité mensuelle */
#staffPlanningView .v115pl-general-duty-table{
  min-width:1280px!important;
}
#staffPlanningView .v115pl-general-duty-table col.v115pl-general-col-date{width:124px!important}
#staffPlanningView .v115pl-general-duty-table col.v115pl-general-col-band{width:58px!important}
#staffPlanningView .v115pl-general-duty-table col.v115pl-col-regulation{width:200px!important}
#staffPlanningView .v115pl-general-duty-table col.v115pl-col-smur{width:200px!important}
#staffPlanningView .v115pl-general-duty-table col.v115pl-col-emergency{width:300px!important}
#staffPlanningView .v115pl-general-duty-table col.v115pl-col-uhcd{width:100px!important}
#staffPlanningView .v115pl-general-duty-table col.v115pl-col-on_call{width:100px!important}
#staffPlanningView .v115pl-general-duty-table col.v115pl-col-double{width:200px!important}

#staffPlanningView .v115pl-general-date-cell{
  padding:5px 8px!important;
  text-align:center!important;
}
#staffPlanningView .v115pl-general-date-cell strong{
  font-size:.66rem!important;
  line-height:1.08!important;
  white-space:normal!important;
}
#staffPlanningView .v115pl-general-date-cell small{
  margin-top:3px!important;
  font-size:.5rem!important;
}

#staffPlanningView .v115pl-general-band-label{
  padding:2px!important;
}
#staffPlanningView .v115pl-general-band-label strong{
  font-size:.54rem!important;
}

#staffPlanningView .v115pl-general-duty-table .v115pl-duty-category-cell{
  min-height:40px!important;
}
#staffPlanningView .v115pl-general-duty-table .v115pl-duty-subcells>.v115pl-roster-cell{
  min-height:40px!important;
}
#staffPlanningView .v115pl-general-duty-table .v115pl-roster-cell-head{
  min-height:16px!important;
  height:16px!important;
  padding:2px 2px!important;
}
#staffPlanningView .v115pl-general-duty-table .v115pl-roster-cell-head strong{
  font-size:.47rem!important;
}
#staffPlanningView .v115pl-general-duty-table .v115pl-roster-cell-people{
  min-height:24px!important;
}
#staffPlanningView .v115pl-general-duty-table .v115pl-roster-person{
  min-height:24px!important;
  padding:2px!important;
}
#staffPlanningView .v115pl-general-duty-table .v115pl-roster-person strong{
  font-size:.5rem!important;
  line-height:1!important;
}
#staffPlanningView .v115pl-general-duty-table thead th{
  height:34px!important;
  padding:5px!important;
}

@media print{
  body.v115pl-printing #staffPlanningView .v115pl-general-date-cell strong{
    font-size:4.8pt!important;
  }
  body.v115pl-printing #staffPlanningView .v115pl-general-duty-table .v115pl-duty-category-cell,
  body.v115pl-printing #staffPlanningView .v115pl-general-duty-table .v115pl-duty-subcells>.v115pl-roster-cell{
    min-height:6mm!important;
  }
  body.v115pl-printing #staffPlanningView .v115pl-general-duty-table .v115pl-roster-cell-head{
    min-height:2.5mm!important;
    height:2.5mm!important;
  }
  body.v115pl-printing #staffPlanningView .v115pl-general-duty-table .v115pl-roster-cell-people,
  body.v115pl-printing #staffPlanningView .v115pl-general-duty-table .v115pl-roster-person{
    min-height:3.5mm!important;
  }
}


/* General roster v4 — date lisible + aujourd'hui */
#staffPlanningView .v115pl-general-duty-table{
  min-width:1366px!important;
}
#staffPlanningView .v115pl-general-duty-table col.v115pl-general-col-date{width:150px!important}
#staffPlanningView .v115pl-general-duty-table col.v115pl-general-col-band{width:72px!important}
#staffPlanningView .v115pl-general-duty-table col.v115pl-col-regulation{width:208px!important}
#staffPlanningView .v115pl-general-duty-table col.v115pl-col-smur{width:208px!important}
#staffPlanningView .v115pl-general-duty-table col.v115pl-col-emergency{width:312px!important}
#staffPlanningView .v115pl-general-duty-table col.v115pl-col-uhcd{width:104px!important}
#staffPlanningView .v115pl-general-duty-table col.v115pl-col-on_call{width:104px!important}
#staffPlanningView .v115pl-general-duty-table col.v115pl-col-double{width:208px!important}

#staffPlanningView .v115pl-general-date-cell{
  padding:7px 10px!important;
  text-align:left!important;
}
#staffPlanningView .v115pl-general-date-cell strong{
  font-size:.72rem!important;
  line-height:1.12!important;
}
#staffPlanningView .v115pl-general-date-cell small{
  margin-top:3px!important;
  font-size:.54rem!important;
}

#staffPlanningView .v115pl-general-band-label{
  padding:4px!important;
}
#staffPlanningView .v115pl-general-band-label strong{
  font-size:.58rem!important;
}

#staffPlanningView .v115pl-general-duty-table .v115pl-duty-category-cell{
  min-height:48px!important;
}
#staffPlanningView .v115pl-general-duty-table .v115pl-duty-subcells>.v115pl-roster-cell{
  min-height:48px!important;
}
#staffPlanningView .v115pl-general-duty-table .v115pl-roster-cell-head{
  min-height:19px!important;
  height:19px!important;
  padding:3px 3px 2px!important;
}
#staffPlanningView .v115pl-general-duty-table .v115pl-roster-cell-head strong{
  font-size:.5rem!important;
}
#staffPlanningView .v115pl-general-duty-table .v115pl-roster-cell-people{
  min-height:29px!important;
}
#staffPlanningView .v115pl-general-duty-table .v115pl-roster-person{
  min-height:29px!important;
  padding:3px!important;
}
#staffPlanningView .v115pl-general-duty-table .v115pl-roster-person strong{
  font-size:.54rem!important;
  line-height:1.05!important;
}
#staffPlanningView .v115pl-general-duty-table thead th{
  height:38px!important;
  padding:6px!important;
}

/* Surbrillance de la date du jour sans masquer les couleurs métiers. */
#staffPlanningView .v115pl-general-date-cell.today{
  position:relative!important;
  background:#eaf3ff!important;
  color:#1f4f7a!important;
  border-left:4px solid #4f83b5!important;
}
#staffPlanningView .v115pl-general-date-cell.today strong{
  color:#1f4f7a!important;
}
#staffPlanningView .v115pl-general-row.day.today>th,
#staffPlanningView .v115pl-general-row.day.today>td{
  border-top:2px solid #7ea6cb!important;
}
#staffPlanningView .v115pl-general-row.night.today>th,
#staffPlanningView .v115pl-general-row.night.today>td{
  border-bottom:2px solid #7ea6cb!important;
}
#staffPlanningView .v115pl-general-row.today .v115pl-general-band-label.day{
  background:linear-gradient(180deg,#fff6df,#ffedc0)!important;
}
#staffPlanningView .v115pl-general-row.today .v115pl-general-band-label.night{
  background:linear-gradient(180deg,#edf3ff,#dde9ff)!important;
}

@media print{
  body.v115pl-printing #staffPlanningView .v115pl-general-date-cell.today{
    border-left:1.5pt solid #4f83b5!important;
    background:#eaf3ff!important;
  }
}


/* General roster v5 — format agrandi proche Journée */
#staffPlanningView .v115pl-general-duty-table{
  min-width:1420px!important;
}
#staffPlanningView .v115pl-general-duty-table col.v115pl-general-col-date{
  width:150px!important;
}
#staffPlanningView .v115pl-general-duty-table col.v115pl-general-col-band{
  width:78px!important;
}

#staffPlanningView .v115pl-general-date-cell{
  padding:10px 12px!important;
}
#staffPlanningView .v115pl-general-date-cell strong{
  font-size:.82rem!important;
  line-height:1.15!important;
}
#staffPlanningView .v115pl-general-date-cell small{
  margin-top:4px!important;
  font-size:.62rem!important;
}

#staffPlanningView .v115pl-general-band-label{
  padding:6px 4px!important;
}
#staffPlanningView .v115pl-general-band-label strong{
  font-size:.68rem!important;
}

#staffPlanningView .v115pl-general-duty-table thead th{
  height:44px!important;
  padding:7px 6px!important;
}

#staffPlanningView .v115pl-general-duty-table .v115pl-duty-category-cell{
  min-height:62px!important;
}
#staffPlanningView .v115pl-general-duty-table .v115pl-duty-subcells>.v115pl-roster-cell{
  min-height:62px!important;
}

#staffPlanningView .v115pl-general-duty-table .v115pl-roster-cell-head{
  min-height:24px!important;
  height:24px!important;
  padding:4px 4px 3px!important;
}
#staffPlanningView .v115pl-general-duty-table .v115pl-roster-cell-head strong{
  font-size:.58rem!important;
  line-height:1.05!important;
}

#staffPlanningView .v115pl-general-duty-table .v115pl-roster-cell-people{
  min-height:38px!important;
}
#staffPlanningView .v115pl-general-duty-table .v115pl-roster-person{
  min-height:38px!important;
  padding:4px!important;
}
#staffPlanningView .v115pl-general-duty-table .v115pl-roster-person strong{
  font-size:.64rem!important;
  line-height:1.08!important;
}

/* Conserver la mise en évidence du jour au même format agrandi. */
#staffPlanningView .v115pl-general-date-cell.today{
  border-left-width:4px!important;
}


/* General roster v6 — échelle + titres renforcés */
#staffPlanningView .v115pl-general-duty-table{
  min-width:1480px!important;
}
#staffPlanningView .v115pl-general-duty-table col.v115pl-general-col-date{
  width:156px!important;
}
#staffPlanningView .v115pl-general-duty-table col.v115pl-general-col-band{
  width:82px!important;
}

#staffPlanningView .v115pl-general-duty-table thead th{
  height:48px!important;
  padding:8px 7px!important;
}
#staffPlanningView .v115pl-general-duty-table .v115pl-duty-category>strong{
  font-size:.82rem!important;
  font-weight:900!important;
}

#staffPlanningView .v115pl-general-date-cell{
  padding:11px 13px!important;
}
#staffPlanningView .v115pl-general-date-cell strong{
  font-size:.86rem!important;
}
#staffPlanningView .v115pl-general-date-cell small{
  font-size:.64rem!important;
}

#staffPlanningView .v115pl-general-band-label{
  padding:7px 5px!important;
}
#staffPlanningView .v115pl-general-band-label strong{
  font-size:.72rem!important;
}

#staffPlanningView .v115pl-general-duty-table .v115pl-duty-category-cell{
  min-height:68px!important;
}
#staffPlanningView .v115pl-general-duty-table .v115pl-duty-subcells>.v115pl-roster-cell{
  min-height:68px!important;
}
#staffPlanningView .v115pl-general-duty-table .v115pl-roster-cell-head{
  min-height:26px!important;
  height:26px!important;
  padding:5px 4px 4px!important;
}
#staffPlanningView .v115pl-general-duty-table .v115pl-roster-cell-head strong{
  font-size:.61rem!important;
}
#staffPlanningView .v115pl-general-duty-table .v115pl-roster-cell-people{
  min-height:42px!important;
}
#staffPlanningView .v115pl-general-duty-table .v115pl-roster-person{
  min-height:42px!important;
  padding:5px!important;
}
#staffPlanningView .v115pl-general-duty-table .v115pl-roster-person strong{
  font-size:.68rem!important;
  line-height:1.1!important;
}

/* Titres de familles légèrement plus soutenus */
#staffPlanningView .v115pl-general-duty-table .v115pl-duty-category.cat-regulation{
  background:#d7e9fc!important;
  color:#1f5688!important;
}
#staffPlanningView .v115pl-general-duty-table .v115pl-duty-category.cat-smur{
  background:#f7d8e4!important;
  color:#843a5b!important;
}
#staffPlanningView .v115pl-general-duty-table .v115pl-duty-category.cat-emergency{
  background:#dbeedf!important;
  color:#2f673d!important;
}
#staffPlanningView .v115pl-general-duty-table .v115pl-duty-category.cat-uhcd{
  background:#ffedb8!important;
  color:#705300!important;
}
#staffPlanningView .v115pl-general-duty-table .v115pl-duty-category.cat-on_call{
  background:#d5ece0!important;
  color:#276247!important;
}
#staffPlanningView .v115pl-general-duty-table .v115pl-duty-category.cat-double{
  background:#e8dcf5!important;
  color:#5d447f!important;
}

/* Sous-titres des postes légèrement plus contrastés */
#staffPlanningView .v115pl-general-duty-table .v115pl-duty-category-cell.cat-regulation .v115pl-roster-cell-head{
  background:#e3effc!important;
}
#staffPlanningView .v115pl-general-duty-table .v115pl-duty-category-cell.cat-smur .v115pl-roster-cell-head{
  background:#fbe5ed!important;
}
#staffPlanningView .v115pl-general-duty-table .v115pl-duty-category-cell.cat-emergency .v115pl-roster-cell-head{
  background:#e4f2e7!important;
}
#staffPlanningView .v115pl-general-duty-table .v115pl-duty-category-cell.cat-uhcd .v115pl-roster-cell-head{
  background:#fff1c7!important;
}
#staffPlanningView .v115pl-general-duty-table .v115pl-duty-category-cell.cat-on_call .v115pl-roster-cell-head{
  background:#dff0e7!important;
}
#staffPlanningView .v115pl-general-duty-table .v115pl-duty-category-cell.cat-double .v115pl-roster-cell-head{
  background:#eee5f8!important;
}


/* My planning — calendar only */
#staffPlanningView .v115pl-personal.v115pl-personal-calendar-only{
  display:block!important;
  grid-template-columns:none!important;
}
#staffPlanningView .v115pl-personal-calendar-only .v115pl-combined-calendar{
  width:100%!important;
  margin-top:0!important;
}


/* =========================================================
   Absence forecast — monthly matrix
   ========================================================= */
#staffPlanningView .v115pl-absence-forecast{
  border:1px solid #dce6ef;
  border-radius:16px;
  background:#fff;
  box-shadow:0 8px 26px rgba(34,67,101,.05);
  overflow:hidden;
}
#staffPlanningView .v115pl-absence-head{
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:18px;
  padding:16px 18px;
  border-bottom:1px solid #e7edf3;
  background:linear-gradient(180deg,#fff,#fbfdff);
}
#staffPlanningView .v115pl-absence-head h2{
  margin:1px 0 3px;
  color:#173653;
  font-size:1.08rem;
  text-transform:capitalize;
}
#staffPlanningView .v115pl-absence-head p{
  margin:0;
  color:#758496;
  font-size:.73rem;
}
#staffPlanningView .v115pl-absence-legend{
  display:flex;
  flex-wrap:wrap;
  justify-content:flex-end;
  gap:7px 10px;
  max-width:760px;
}
#staffPlanningView .v115pl-absence-legend>span{
  display:inline-flex;
  align-items:center;
  gap:5px;
  color:#5d6f82;
  font-size:.63rem;
  font-weight:750;
  white-space:nowrap;
}
#staffPlanningView .v115pl-absence-legend i{
  display:inline-grid;
  place-items:center;
  width:19px;
  height:19px;
  border-radius:5px;
  font-size:.54rem;
  font-style:normal;
  font-weight:900;
  border:1px solid transparent;
}
#staffPlanningView .v115pl-absence-legend .leave i{background:#e2f4e8;color:#246b43;border-color:#bfe1ca}
#staffPlanningView .v115pl-absence-legend .unavailable i{background:#fde5e8;color:#9b3441;border-color:#efbec5}
#staffPlanningView .v115pl-absence-legend .absence i{background:#f8dfe3;color:#8d3040;border-color:#e9b8c0}
#staffPlanningView .v115pl-absence-legend .training i{background:#ffe9dc;color:#954c23;border-color:#f0cdb8}
#staffPlanningView .v115pl-absence-legend .recovery i{background:#eee7fb;color:#674a91;border-color:#d9ccef}
#staffPlanningView .v115pl-absence-legend .prefer-off i{background:#fff1cc;color:#896000;border-color:#ead79e}
#staffPlanningView .v115pl-absence-legend .pending i{
  background:repeating-linear-gradient(135deg,#fff 0 3px,#edf2f6 3px 6px);
  border-color:#bdc9d5;
}

#staffPlanningView .v115pl-absence-scroll{
  overflow:auto;
  max-width:100%;
  background:#f7fafc;
  padding:10px;
}
#staffPlanningView .v115pl-absence-table{
  width:100%;
  min-width:1260px;
  table-layout:fixed;
  border-collapse:separate;
  border-spacing:0;
  border:1px solid #dfe7ef;
  border-radius:11px;
  overflow:hidden;
  background:#fff;
}
#staffPlanningView .v115pl-absence-table th,
#staffPlanningView .v115pl-absence-table td{
  box-sizing:border-box;
  border-right:1px solid #e7edf3;
  border-bottom:1px solid #e7edf3;
}
#staffPlanningView .v115pl-absence-table tr>*:last-child{border-right:0}
#staffPlanningView .v115pl-absence-table tbody tr:last-child>*{border-bottom:0}

#staffPlanningView .v115pl-absence-person-head,
#staffPlanningView .v115pl-absence-person{
  position:sticky;
  left:0;
  z-index:3;
  width:220px;
  min-width:220px;
  max-width:220px;
  background:#fff;
}
#staffPlanningView .v115pl-absence-person-head{
  z-index:5;
  height:46px;
  padding:8px 10px;
  background:#f5f8fb;
  color:#647689;
  text-align:left;
  font-size:.65rem;
  font-weight:900;
  text-transform:uppercase;
  letter-spacing:.05em;
}
#staffPlanningView .v115pl-absence-person{
  height:38px;
  padding:6px 10px;
  text-align:left;
}
#staffPlanningView .v115pl-absence-person strong{
  display:block;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
  color:#29445e;
  font-size:.68rem;
  font-weight:800;
}
#staffPlanningView .v115pl-absence-table tbody tr:nth-child(even) .v115pl-absence-person{
  background:#fafcfe;
}
#staffPlanningView .v115pl-absence-day-head{
  position:sticky;
  top:0;
  z-index:2;
  width:31px;
  min-width:31px;
  max-width:31px;
  height:46px;
  padding:4px 1px;
  background:#f7f9fb;
  text-align:center;
}
#staffPlanningView .v115pl-absence-day-head span,
#staffPlanningView .v115pl-absence-day-head strong{
  display:block;
}
#staffPlanningView .v115pl-absence-day-head span{
  color:#8895a3;
  font-size:.48rem;
  font-weight:800;
}
#staffPlanningView .v115pl-absence-day-head strong{
  margin-top:2px;
  color:#324b63;
  font-size:.64rem;
  font-weight:900;
}
#staffPlanningView .v115pl-absence-day-head.weekend{
  background:#f1f0f8;
}
#staffPlanningView .v115pl-absence-day-head.today{
  background:#dfeeff;
  box-shadow:inset 0 3px 0 #4d84ba;
}
#staffPlanningView .v115pl-absence-cell{
  position:relative;
  width:31px;
  min-width:31px;
  max-width:31px;
  height:38px;
  padding:0;
  background:#fff;
  text-align:center;
  vertical-align:middle;
}
#staffPlanningView .v115pl-absence-table tbody tr:nth-child(even) .v115pl-absence-cell{
  background:#fcfdfe;
}
#staffPlanningView .v115pl-absence-cell.today{
  box-shadow:inset 1px 0 0 #a9c9e6,inset -1px 0 0 #a9c9e6;
}
#staffPlanningView .v115pl-absence-cell.has-value span{
  display:inline-grid;
  place-items:center;
  width:20px;
  height:20px;
  border-radius:5px;
  font-size:.55rem;
  font-weight:900;
}
#staffPlanningView .v115pl-absence-cell.leave span{background:#e2f4e8;color:#246b43}
#staffPlanningView .v115pl-absence-cell.unavailable span{background:#fde5e8;color:#9b3441}
#staffPlanningView .v115pl-absence-cell.absence span{background:#f8dfe3;color:#8d3040}
#staffPlanningView .v115pl-absence-cell.training span{background:#ffe9dc;color:#954c23}
#staffPlanningView .v115pl-absence-cell.recovery span{background:#eee7fb;color:#674a91}
#staffPlanningView .v115pl-absence-cell.prefer-off span{background:#fff1cc;color:#896000}
#staffPlanningView .v115pl-absence-cell.pending span{
  border:1px dashed currentColor;
  background-image:repeating-linear-gradient(135deg,rgba(255,255,255,.72) 0 3px,transparent 3px 6px);
}
#staffPlanningView .v115pl-absence-cell.has-value:hover span{
  transform:scale(1.08);
}

@media(max-width:900px){
  #staffPlanningView .v115pl-absence-head{
    flex-direction:column;
  }
  #staffPlanningView .v115pl-absence-legend{
    justify-content:flex-start;
  }
}

@media print{
  body.v115pl-printing #staffPlanningView .v115pl-absence-head{
    padding:3mm!important;
  }
  body.v115pl-printing #staffPlanningView .v115pl-absence-scroll{
    overflow:visible!important;
    padding:0!important;
    background:#fff!important;
  }
  body.v115pl-printing #staffPlanningView .v115pl-absence-table{
    width:100%!important;
    min-width:0!important;
    table-layout:fixed!important;
  }
  body.v115pl-printing #staffPlanningView .v115pl-absence-person-head,
  body.v115pl-printing #staffPlanningView .v115pl-absence-person{
    position:static!important;
    width:30mm!important;
    min-width:30mm!important;
    max-width:30mm!important;
  }
  body.v115pl-printing #staffPlanningView .v115pl-absence-day-head,
  body.v115pl-printing #staffPlanningView .v115pl-absence-cell{
    position:static!important;
    width:auto!important;
    min-width:0!important;
    max-width:none!important;
  }
  body.v115pl-printing #staffPlanningView .v115pl-absence-person{
    height:5.5mm!important;
    padding:.7mm 1mm!important;
  }
  body.v115pl-printing #staffPlanningView .v115pl-absence-person strong{
    font-size:5pt!important;
  }
  body.v115pl-printing #staffPlanningView .v115pl-absence-day-head{
    height:7mm!important;
  }
  body.v115pl-printing #staffPlanningView .v115pl-absence-cell{
    height:5.5mm!important;
  }
  body.v115pl-printing #staffPlanningView .v115pl-absence-cell.has-value span{
    width:3.8mm!important;
    height:3.8mm!important;
    font-size:4.5pt!important;
  }
}


/* Absence forecast — personnel groups */
#staffPlanningView .v115pl-absence-group-row>th{
  position:relative;
  z-index:1;
  padding:7px 10px!important;
  text-align:left!important;
  background:#eef3f7!important;
  color:#29445e!important;
  border-top:2px solid #cbd7e3!important;
  border-bottom:1px solid #d8e1ea!important;
}
#staffPlanningView .v115pl-absence-group-row:first-child>th{
  border-top:0!important;
}
#staffPlanningView .v115pl-absence-group-row strong{
  font-size:.68rem!important;
  font-weight:900!important;
}
#staffPlanningView .v115pl-absence-group-row span{
  margin-left:8px!important;
  color:#8290a0!important;
  font-size:.56rem!important;
  font-weight:750!important;
}
#staffPlanningView .v115pl-absence-group-row.role-doctor>th{background:#e7f1fb!important}
#staffPlanningView .v115pl-absence-group-row.role-intern>th{background:#eef5fb!important}
#staffPlanningView .v115pl-absence-group-row.role-ipa>th{background:#eee9fb!important}
#staffPlanningView .v115pl-absence-group-row.role-nurse>th{background:#e7f5ef!important}
#staffPlanningView .v115pl-absence-group-row.role-care_assistant>th{background:#f3f5e8!important}
#staffPlanningView .v115pl-absence-group-row.role-secretary>th{background:#f7edf5!important}
#staffPlanningView .v115pl-absence-group-row.role-bed_manager>th{background:#edf1f7!important}
#staffPlanningView .v115pl-absence-group-row.role-pmsi>th{background:#f2f2f2!important}
#staffPlanningView .v115pl-absence-group-row.role-other>th{background:#f5f7f9!important}

@media print{
  body.v115pl-printing #staffPlanningView .v115pl-absence-group-row>th{
    padding:.8mm 1mm!important;
    border-top-width:1pt!important;
  }
  body.v115pl-printing #staffPlanningView .v115pl-absence-group-row strong{
    font-size:5pt!important;
  }
  body.v115pl-printing #staffPlanningView .v115pl-absence-group-row span{
    font-size:4.4pt!important;
  }
}


/* One-off reinforcement + shift color */
#staffPlanningView .v115pl-duty-subcells>.v115pl-roster-cell:not(.placeholder){
  box-shadow:inset 0 4px 0 var(--shift,#8aa8c4)!important;
}
#staffPlanningView .v115pl-general-duty-table .v115pl-duty-subcells>.v115pl-roster-cell:not(.placeholder){
  box-shadow:inset 0 3px 0 var(--shift,#8aa8c4)!important;
}
#staffPlanningView .v115pl-roster-cell-people{
  display:grid!important;
  grid-template-rows:repeat(var(--slots,1),minmax(0,1fr))!important;
  min-height:0!important;
  height:calc(100% - 29px)!important;
}
#staffPlanningView .v115pl-duty-subcells .v115pl-roster-person{
  min-height:0!important;
  height:auto!important;
}
#staffPlanningView .v115pl-general-duty-table .v115pl-roster-cell-people{
  height:calc(100% - 26px)!important;
}
#staffPlanningView .v115pl-general-duty-table .v115pl-roster-person{
  min-height:0!important;
  height:auto!important;
}
#staffPlanningView .v115pl-oneoff-badge{
  display:inline-flex!important;
  align-items:center!important;
  justify-content:center!important;
  max-width:58%!important;
  margin-left:5px!important;
  padding:1px 5px!important;
  border-radius:999px!important;
  background:color-mix(in srgb,var(--shift,#8aa8c4) 22%,#fff)!important;
  border:1px solid color-mix(in srgb,var(--shift,#8aa8c4) 45%,#d5dde6)!important;
  color:#486179!important;
  font-size:.45rem!important;
  font-style:normal!important;
  font-weight:850!important;
  line-height:1.15!important;
  white-space:nowrap!important;
  overflow:hidden!important;
  text-overflow:ellipsis!important;
}
#staffPlanningView .v115pl-count-kpi strong{
  color:#244b6d!important;
}
#staffPlanningView .v115pl-count-kpi small{
  color:#728398!important;
}

#staffPlanningView .v115pl-work-summary small.neutral{
  color:#728398!important;
}


/* =========================================================
   Holiday + guard detail + one-off cell refinements
   ========================================================= */

/* Renfort ponctuel = vraie case supplémentaire, pas un 2e nom empilé. */
#staffPlanningView .v115pl-duty-subcells>.v115pl-roster-cell-oneoff{
  background:color-mix(in srgb,var(--shift,#8aa8c4) 8%,#fff)!important;
  border-left:1px solid color-mix(in srgb,var(--shift,#8aa8c4) 32%,#dce4ec)!important;
}
#staffPlanningView .v115pl-duty-subcells>.v115pl-roster-cell-oneoff .v115pl-roster-cell-head{
  display:flex!important;
  align-items:center!important;
  justify-content:center!important;
  gap:4px!important;
  background:color-mix(in srgb,var(--shift,#8aa8c4) 15%,#fff)!important;
}
#staffPlanningView .v115pl-duty-subcells>.v115pl-roster-cell-oneoff .v115pl-roster-cell-head strong{
  font-size:.58rem!important;
}
#staffPlanningView .v115pl-duty-subcells>.v115pl-roster-cell-oneoff .v115pl-oneoff-badge{
  max-width:none!important;
  padding:1px 4px!important;
  font-size:.42rem!important;
}
#staffPlanningView .v115pl-general-duty-table .v115pl-roster-cell-oneoff .v115pl-oneoff-badge{
  display:none!important;
}

/* Jours fériés */
#staffPlanningView .v115pl-holiday-badge{
  display:inline-flex!important;
  align-items:center!important;
  margin-left:7px!important;
  padding:3px 7px!important;
  border-radius:999px!important;
  background:#fde8ea!important;
  border:1px solid #efc5cb!important;
  color:#9b3746!important;
  font-size:.64rem!important;
  font-style:normal!important;
  font-weight:850!important;
  vertical-align:middle!important;
}
#staffPlanningView .v115pl-general-date-cell.holiday{
  background:#fff0f1!important;
  border-left:4px solid #c85a68!important;
}
#staffPlanningView .v115pl-general-date-cell.holiday strong{
  color:#8e3340!important;
}
#staffPlanningView .v115pl-general-date-cell .holiday-name{
  color:#a74a57!important;
  font-size:.5rem!important;
  font-weight:800!important;
  line-height:1.08!important;
  white-space:normal!important;
}
#staffPlanningView .v115pl-general-date-cell.holiday.today{
  background:#eaf3ff!important;
  border-left-color:#c85a68!important;
  box-shadow:inset 0 0 0 2px rgba(200,90,104,.12)!important;
}
#staffPlanningView .v115pl-combined-day.holiday,
#staffPlanningView .v115pl-personal-day.holiday{
  background:#fff4f5!important;
  box-shadow:inset 3px 0 0 #d26975!important;
}
#staffPlanningView .v115pl-combined-day.holiday .day-number,
#staffPlanningView .v115pl-personal-day.holiday .day-number{
  color:#9b3746!important;
}
#staffPlanningView .v115pl-holiday-label{
  display:block!important;
  margin-top:2px!important;
  color:#a34a56!important;
  font-size:.52rem!important;
  font-weight:800!important;
  line-height:1.05!important;
  white-space:nowrap!important;
  overflow:hidden!important;
  text-overflow:ellipsis!important;
}
#staffPlanningView .v115pl-request-day.holiday{
  background:#fff0f2!important;
  color:#9b3746!important;
  box-shadow:inset 0 -3px 0 #d26975!important;
}
#staffPlanningView .v115pl-request-day.holiday.selected{
  background:#e8f2ff!important;
  box-shadow:inset 0 0 0 2px #77afe0,inset 0 -4px 0 #d26975!important;
}
#staffPlanningView .v115pl-absence-day-head.holiday{
  background:#f9dfe3!important;
  box-shadow:inset 0 3px 0 #c85a68!important;
}
#staffPlanningView .v115pl-absence-day-head.holiday span,
#staffPlanningView .v115pl-absence-day-head.holiday strong{
  color:#913542!important;
}

/* Décompte des gardes */
#staffPlanningView .v115pl-kpi-detail{
  display:inline-flex!important;
  width:max-content!important;
  margin-top:6px!important;
  padding:0!important;
  border:0!important;
  background:transparent!important;
  color:#1670bd!important;
  font-size:.66rem!important;
  font-weight:800!important;
  cursor:pointer!important;
}
#staffPlanningView .v115pl-kpi-detail:hover{
  text-decoration:underline!important;
}
#staffPlanningView .v115pl-guard-summary{
  display:grid!important;
  grid-template-columns:repeat(5,minmax(0,1fr))!important;
  gap:8px!important;
  margin:8px 0 14px!important;
}
#staffPlanningView .v115pl-guard-summary article{
  display:grid!important;
  gap:3px!important;
  padding:10px!important;
  border:1px solid #e1e8ef!important;
  border-radius:10px!important;
  background:#f8fafc!important;
}
#staffPlanningView .v115pl-guard-summary article.total{
  background:#eaf3ff!important;
  border-color:#c7dbef!important;
}
#staffPlanningView .v115pl-guard-summary span{
  color:#748398!important;
  font-size:.67rem!important;
}
#staffPlanningView .v115pl-guard-summary strong{
  color:#244b6d!important;
  font-size:1.05rem!important;
}
#staffPlanningView .v115pl-guard-summary small{
  color:#728398!important;
  font-size:.61rem!important;
}
#staffPlanningView .v115pl-guard-detail-list{
  max-height:42vh!important;
  overflow:auto!important;
  border:1px solid #e1e8ef!important;
  border-radius:10px!important;
}
#staffPlanningView .v115pl-guard-detail-list>article{
  display:grid!important;
  grid-template-columns:180px minmax(0,1fr) 48px!important;
  gap:10px!important;
  align-items:center!important;
  padding:9px 10px!important;
  border-bottom:1px solid #edf1f5!important;
}
#staffPlanningView .v115pl-guard-detail-list>article:last-child{
  border-bottom:0!important;
}
#staffPlanningView .v115pl-guard-detail-list time{
  color:#53677d!important;
  font-size:.7rem!important;
  font-weight:750!important;
}
#staffPlanningView .v115pl-guard-detail-list>article>div{
  display:grid!important;
  gap:2px!important;
}
#staffPlanningView .v115pl-guard-detail-list strong{
  color:#263f58!important;
  font-size:.75rem!important;
}
#staffPlanningView .v115pl-guard-detail-list span{
  color:#738196!important;
  font-size:.68rem!important;
}
#staffPlanningView .v115pl-guard-detail-list em{
  justify-self:end!important;
  min-width:36px!important;
  padding:4px 6px!important;
  border-radius:7px!important;
  background:#eaf3ff!important;
  color:#245b8f!important;
  font-size:.68rem!important;
  font-style:normal!important;
  font-weight:900!important;
  text-align:center!important;
}

@media(max-width:900px){
  #staffPlanningView .v115pl-guard-summary{
    grid-template-columns:repeat(2,minmax(0,1fr))!important;
  }
  #staffPlanningView .v115pl-guard-detail-list>article{
    grid-template-columns:1fr auto!important;
  }
  #staffPlanningView .v115pl-guard-detail-list time{
    grid-column:1/-1!important;
  }
}

@media print{
  body.v115pl-printing #staffPlanningView .v115pl-general-date-cell.holiday{
    background:#fff0f1!important;
    border-left-color:#c85a68!important;
  }
  body.v115pl-printing #staffPlanningView .v115pl-absence-day-head.holiday{
    background:#f9dfe3!important;
  }
}


/* Guard modal + holiday request calendar outside planning host */
.v115pl-request-day.holiday{
  background:#fff0f2!important;
  color:#9b3746!important;
  box-shadow:inset 0 -3px 0 #d26975!important;
}
.v115pl-request-day.holiday.selected{
  background:#e8f2ff!important;
  box-shadow:inset 0 0 0 2px #77afe0,inset 0 -4px 0 #d26975!important;
}
.v115pl-guard-summary{
  display:grid!important;
  grid-template-columns:repeat(5,minmax(0,1fr))!important;
  gap:8px!important;
  margin:8px 0 14px!important;
}
.v115pl-guard-summary article{
  display:grid!important;
  gap:3px!important;
  padding:10px!important;
  border:1px solid #e1e8ef!important;
  border-radius:10px!important;
  background:#f8fafc!important;
}
.v115pl-guard-summary article.total{
  background:#eaf3ff!important;
  border-color:#c7dbef!important;
}
.v115pl-guard-summary span{color:#748398!important;font-size:.67rem!important}
.v115pl-guard-summary strong{color:#244b6d!important;font-size:1.05rem!important}
.v115pl-guard-summary small{color:#728398!important;font-size:.61rem!important}
.v115pl-guard-detail-list{
  max-height:42vh!important;
  overflow:auto!important;
  border:1px solid #e1e8ef!important;
  border-radius:10px!important;
}
.v115pl-guard-detail-list>article{
  display:grid!important;
  grid-template-columns:180px minmax(0,1fr) 48px!important;
  gap:10px!important;
  align-items:center!important;
  padding:9px 10px!important;
  border-bottom:1px solid #edf1f5!important;
}
.v115pl-guard-detail-list>article:last-child{border-bottom:0!important}
.v115pl-guard-detail-list time{color:#53677d!important;font-size:.7rem!important;font-weight:750!important}
.v115pl-guard-detail-list>article>div{display:grid!important;gap:2px!important}
.v115pl-guard-detail-list strong{color:#263f58!important;font-size:.75rem!important}
.v115pl-guard-detail-list span{color:#738196!important;font-size:.68rem!important}
.v115pl-guard-detail-list em{
  justify-self:end!important;
  min-width:36px!important;
  padding:4px 6px!important;
  border-radius:7px!important;
  background:#eaf3ff!important;
  color:#245b8f!important;
  font-size:.68rem!important;
  font-style:normal!important;
  font-weight:900!important;
  text-align:center!important;
}
@media(max-width:900px){
  .v115pl-guard-summary{grid-template-columns:repeat(2,minmax(0,1fr))!important}
  .v115pl-guard-detail-list>article{grid-template-columns:1fr auto!important}
  .v115pl-guard-detail-list time{grid-column:1/-1!important}
}


/* =========================================================
   Exchange UX + personnel highlight
   ========================================================= */
#staffPlanningView .v115pl-person-highlight-banner{
  display:flex!important;
  align-items:center!important;
  gap:8px!important;
  width:max-content!important;
  max-width:100%!important;
  margin:10px 14px 0!important;
  padding:6px 8px 6px 10px!important;
  border:1px solid #bcd3e8!important;
  border-radius:999px!important;
  background:#edf6ff!important;
  color:#315b7d!important;
  box-shadow:0 2px 8px rgba(41,81,115,.06)!important;
}
#staffPlanningView .v115pl-person-highlight-banner span{
  color:#6f8293!important;
  font-size:.62rem!important;
  font-weight:800!important;
  text-transform:uppercase!important;
  letter-spacing:.04em!important;
}
#staffPlanningView .v115pl-person-highlight-banner strong{
  font-size:.72rem!important;
  font-weight:900!important;
}
#staffPlanningView .v115pl-person-highlight-banner button{
  display:grid!important;
  place-items:center!important;
  width:22px!important;
  height:22px!important;
  padding:0!important;
  border:0!important;
  border-radius:50%!important;
  background:#d9eafb!important;
  color:#2a5b84!important;
  font-size:.9rem!important;
  font-weight:900!important;
  cursor:pointer!important;
}

#staffPlanningView .v115pl-highlight-name{
  cursor:pointer!important;
}
#staffPlanningView .v115pl-highlight-name:hover{
  text-decoration:underline!important;
  text-underline-offset:2px!important;
}
#staffPlanningView .v115pl-roster-person.person-highlighted,
#staffPlanningView .v115pl-slot.person-highlighted{
  position:relative!important;
  z-index:2!important;
  background:#fff4c8!important;
  box-shadow:inset 0 0 0 2px #e4b94f,0 2px 8px rgba(119,89,20,.12)!important;
}
#staffPlanningView .v115pl-roster-person.person-highlighted strong,
#staffPlanningView .v115pl-slot.person-highlighted strong{
  color:#6f4d00!important;
}
#staffPlanningView .v115pl-roster-person.person-dimmed,
#staffPlanningView .v115pl-slot.person-dimmed{
  opacity:.28!important;
  filter:saturate(.35)!important;
}
#staffPlanningView .v115pl-roster-person.person-highlighted:hover,
#staffPlanningView .v115pl-slot.person-highlighted:hover{
  opacity:1!important;
}

/* Mon planning : les affectations futures deviennent le point d’entrée des échanges. */
#staffPlanningView .v115pl-combined-marker.assignment.exchangeable{
  width:100%!important;
  border:0!important;
  text-align:left!important;
  cursor:pointer!important;
  transition:transform .12s ease,box-shadow .12s ease!important;
}
#staffPlanningView .v115pl-combined-marker.assignment.exchangeable:hover{
  transform:translateY(-1px)!important;
  box-shadow:0 2px 7px rgba(19,96,156,.16)!important;
}
#staffPlanningView .v115pl-combined-marker.assignment.exchange-pending{
  background:#fff0d8!important;
  color:#8b5b00!important;
  box-shadow:inset 0 0 0 1px #e7c789!important;
}
#staffPlanningView .v115pl-personal-exchanges header p{
  margin:3px 0 0!important;
  color:#718095!important;
  font-size:.72rem!important;
}

/* Fenêtre d’échange */
.v115pl-exchange-source{
  display:grid!important;
  grid-template-columns:auto 1fr auto!important;
  gap:8px!important;
  align-items:center!important;
  padding:10px 12px!important;
  margin:2px 0 10px!important;
  border:1px solid #dfe7ef!important;
  border-radius:10px!important;
  background:#f7fafc!important;
}
.v115pl-exchange-source span{
  color:#718095!important;
  font-size:.67rem!important;
  font-weight:750!important;
}
.v115pl-exchange-source strong{
  color:#263f58!important;
  font-size:.82rem!important;
  font-weight:900!important;
}
.v115pl-exchange-source small{
  color:#61758a!important;
  font-size:.68rem!important;
  font-weight:750!important;
}
.v115pl-exchange-note{
  padding:9px 10px!important;
  margin-top:4px!important;
  border-radius:9px!important;
  background:#eef6ff!important;
  color:#516b82!important;
  font-size:.69rem!important;
  line-height:1.4!important;
}


/* Exchange badge on My Planning tab */
#staffPlanningView .v115pl-tabs button{
  position:relative!important;
  display:inline-flex!important;
  align-items:center!important;
  justify-content:center!important;
  gap:6px!important;
}
#staffPlanningView .v115pl-tab-badge{
  display:inline-flex!important;
  align-items:center!important;
  justify-content:center!important;
  min-width:18px!important;
  height:18px!important;
  padding:0 5px!important;
  border-radius:999px!important;
  background:#d97706!important;
  color:#fff!important;
  box-shadow:0 0 0 2px rgba(255,255,255,.85)!important;
  font-size:.58rem!important;
  font-style:normal!important;
  font-weight:900!important;
  line-height:1!important;
}
#staffPlanningView .v115pl-tabs button.active .v115pl-tab-badge{
  background:#fff!important;
  color:#b45309!important;
  box-shadow:none!important;
}


/* =========================================================
   Grouped planning management tabs
   ========================================================= */
#staffPlanningView .v115pl-management-shell{
  display:grid!important;
  gap:12px!important;
}
#staffPlanningView .v115pl-management-shell-head{
  display:flex!important;
  align-items:flex-start!important;
  justify-content:space-between!important;
  gap:16px!important;
  padding:14px 16px!important;
  border:1px solid #dfe7ef!important;
  border-radius:14px!important;
  background:linear-gradient(180deg,#fff,#fbfdff)!important;
  box-shadow:0 5px 18px rgba(31,67,103,.04)!important;
}
#staffPlanningView .v115pl-management-shell-head h2{
  margin:2px 0 3px!important;
  color:#173653!important;
  font-size:1.02rem!important;
}
#staffPlanningView .v115pl-management-shell-head p{
  margin:0!important;
  color:#718095!important;
  font-size:.72rem!important;
}
#staffPlanningView .v115pl-management-subtabs{
  display:inline-flex!important;
  width:max-content!important;
  max-width:100%!important;
  gap:4px!important;
  padding:4px!important;
  border:1px solid #dce6ef!important;
  border-radius:10px!important;
  background:#f3f6f9!important;
}
#staffPlanningView .v115pl-management-subtabs button{
  min-height:32px!important;
  padding:0 13px!important;
  border:0!important;
  border-radius:8px!important;
  background:transparent!important;
  color:#5d7084!important;
  font-size:.7rem!important;
  font-weight:800!important;
  cursor:pointer!important;
}
#staffPlanningView .v115pl-management-subtabs button:hover{
  background:#e8eef4!important;
  color:#294b6a!important;
}
#staffPlanningView .v115pl-management-subtabs button.active{
  background:#fff!important;
  color:#0a67d0!important;
  box-shadow:0 2px 7px rgba(31,67,103,.10)!important;
}
#staffPlanningView .v115pl-management-content{
  min-width:0!important;
}
#staffPlanningView .v115pl-tabs .v115pl-management-root{
  padding-left:13px!important;
  padding-right:13px!important;
}


/* =========================================================
   Monthly planning statistics
   ========================================================= */
#staffPlanningView .v115pl-stats{
  border:1px solid #dce6ef;
  border-radius:16px;
  background:#fff;
  box-shadow:0 8px 26px rgba(34,67,101,.05);
  overflow:hidden;
}
#staffPlanningView .v115pl-stats-head{
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:18px;
  padding:16px 18px;
  border-bottom:1px solid #e5ebf1;
  background:linear-gradient(180deg,#fff,#fbfdff);
}
#staffPlanningView .v115pl-stats-head h2{
  margin:2px 0 3px;
  color:#173653;
  font-size:1.08rem;
  text-transform:capitalize;
}
#staffPlanningView .v115pl-stats-head p{
  margin:0;
  color:#758496;
  font-size:.72rem;
}
#staffPlanningView .v115pl-stats-kpis{
  display:grid;
  grid-template-columns:repeat(5,minmax(116px,1fr));
  gap:7px;
  min-width:min(780px,62vw);
}
#staffPlanningView .v115pl-stats-kpis article{
  display:grid;
  gap:2px;
  padding:8px 10px;
  border:1px solid #e2e9f0;
  border-radius:9px;
  background:#f8fafc;
}
#staffPlanningView .v115pl-stats-kpis span{
  color:#718095;
  font-size:.59rem;
  font-weight:800;
  text-transform:uppercase;
  letter-spacing:.035em;
}
#staffPlanningView .v115pl-stats-kpis strong{
  color:#244b6d;
  font-size:.86rem;
  font-weight:900;
}
#staffPlanningView .v115pl-stats-kpis small{
  color:#8491a0;
  font-size:.55rem;
}

#staffPlanningView .v115pl-stats-scroll{
  overflow:auto;
  max-width:100%;
  padding:10px;
  background:#f7fafc;
}
#staffPlanningView .v115pl-stats-table{
  width:100%;
  min-width:1540px;
  table-layout:fixed;
  border-collapse:separate;
  border-spacing:0;
  border:1px solid #dfe7ef;
  border-radius:11px;
  overflow:hidden;
  background:#fff;
}
#staffPlanningView .v115pl-stats-table th,
#staffPlanningView .v115pl-stats-table td{
  height:42px;
  padding:5px 6px;
  border-right:1px solid #e4eaf0;
  border-bottom:1px solid #e4eaf0;
  text-align:center;
  vertical-align:middle;
  color:#425970;
  font-size:.65rem;
}
#staffPlanningView .v115pl-stats-table tr>*:last-child{border-right:0}
#staffPlanningView .v115pl-stats-table tbody tr:last-child>*{border-bottom:0}
#staffPlanningView .v115pl-stats-table thead th{
  height:52px;
  background:#eef3f7;
  color:#425a71;
  font-size:.6rem;
  font-weight:900;
  text-transform:uppercase;
  letter-spacing:.025em;
  line-height:1.15;
}
#staffPlanningView .v115pl-stats-table thead th small{
  font-size:.48rem;
}
#staffPlanningView .v115pl-stats-person{
  position:sticky;
  left:0;
  z-index:3;
  width:210px;
  min-width:210px;
  max-width:210px;
  text-align:left!important;
  background:#fff!important;
}
#staffPlanningView .v115pl-stats-table thead .v115pl-stats-person{
  z-index:5;
  background:#e7eef5!important;
}
#staffPlanningView .v115pl-stats-table tbody tr:nth-child(even) td,
#staffPlanningView .v115pl-stats-table tbody tr:nth-child(even) th.v115pl-stats-person{
  background:#fafcfe!important;
}
#staffPlanningView .v115pl-stats-person strong{
  display:block;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
  color:#29445e;
  font-size:.68rem;
  font-weight:850;
}
#staffPlanningView .v115pl-stats-person small{
  display:block;
  margin-top:2px;
  color:#8694a2;
  font-size:.52rem;
  font-weight:700;
}
#staffPlanningView .v115pl-stats-table td>strong{
  color:#29445e;
  font-weight:850;
}
#staffPlanningView .v115pl-stats-day{
  width:34px;
  min-width:34px;
  max-width:34px;
  padding-left:2px!important;
  padding-right:2px!important;
}
#staffPlanningView .v115pl-stats-table .holiday{
  background:#fff0f2!important;
  color:#963846!important;
}
#staffPlanningView .v115pl-stats-reg{
  width:88px;
  min-width:88px;
}
#staffPlanningView .v115pl-stats-reg strong,
#staffPlanningView .v115pl-stats-reg small{
  display:block;
}
#staffPlanningView .v115pl-stats-reg small{
  margin-top:2px;
  color:#7b8997;
  font-size:.52rem;
}
#staffPlanningView .v115pl-stats-table tfoot th,
#staffPlanningView .v115pl-stats-table tfoot td{
  position:sticky;
  bottom:0;
  z-index:2;
  background:#eaf2f9!important;
  color:#274761;
  font-weight:900;
  border-top:2px solid #bfd0df;
}
#staffPlanningView .v115pl-stats-table tfoot .v115pl-stats-person{
  z-index:4;
  background:#dfeaf4!important;
}
#staffPlanningView .v115pl-stats-foot{
  padding:8px 14px 11px;
  border-top:1px solid #e6ecf2;
  color:#7b8998;
  font-size:.6rem;
  text-align:right;
}

@media(max-width:1100px){
  #staffPlanningView .v115pl-stats-head{
    flex-direction:column;
  }
  #staffPlanningView .v115pl-stats-kpis{
    width:100%;
    min-width:0;
    grid-template-columns:repeat(2,minmax(0,1fr));
  }
}

@media print{
  body.v115pl-printing #staffPlanningView .v115pl-stats-head{
    padding:3mm!important;
  }
  body.v115pl-printing #staffPlanningView .v115pl-stats-scroll{
    overflow:visible!important;
    padding:0!important;
    background:#fff!important;
  }
  body.v115pl-printing #staffPlanningView .v115pl-stats-table{
    width:100%!important;
    min-width:0!important;
    table-layout:fixed!important;
  }
  body.v115pl-printing #staffPlanningView .v115pl-stats-table th,
  body.v115pl-printing #staffPlanningView .v115pl-stats-table td{
    position:static!important;
    height:auto!important;
    padding:.7mm .5mm!important;
    font-size:4.7pt!important;
  }
  body.v115pl-printing #staffPlanningView .v115pl-stats-person{
    width:26mm!important;
    min-width:26mm!important;
    max-width:26mm!important;
  }
  body.v115pl-printing #staffPlanningView .v115pl-stats-day{
    width:5mm!important;
    min-width:5mm!important;
    max-width:5mm!important;
  }
  body.v115pl-printing #staffPlanningView .v115pl-stats-kpis{
    grid-template-columns:repeat(5,1fr)!important;
  }
}


/* =========================================================
   Per-professional shift permissions
   ========================================================= */
#staffPlanningView .v115pl-shift-permissions-card{
  grid-column:1/-1!important;
}
#staffPlanningView .v115pl-shift-permission-list{
  display:grid!important;
  gap:6px!important;
}
#staffPlanningView .v115pl-shift-permission-row{
  display:grid!important;
  grid-template-columns:minmax(190px,1.1fr) minmax(160px,1fr) minmax(190px,1fr) auto!important;
  gap:12px!important;
  align-items:center!important;
  padding:9px 10px!important;
  border:1px solid #e3e9ef!important;
  border-radius:10px!important;
  background:#fbfcfd!important;
}
#staffPlanningView .v115pl-shift-permission-row:nth-child(even){
  background:#f7fafc!important;
}
#staffPlanningView .v115pl-shift-permission-summary{
  display:grid!important;
  gap:2px!important;
  min-width:0!important;
}
#staffPlanningView .v115pl-shift-permission-summary span{
  width:max-content!important;
  padding:2px 6px!important;
  border-radius:999px!important;
  font-size:.55rem!important;
  font-weight:850!important;
}
#staffPlanningView .v115pl-shift-permission-summary.all span{
  background:#e5f4ea!important;
  color:#2f6c45!important;
}
#staffPlanningView .v115pl-shift-permission-summary.restricted span{
  background:#fff0cf!important;
  color:#7a5900!important;
}
#staffPlanningView .v115pl-shift-permission-summary strong{
  overflow:hidden!important;
  text-overflow:ellipsis!important;
  white-space:nowrap!important;
  color:#435b72!important;
  font-size:.66rem!important;
  font-weight:750!important;
}
#staffPlanningView .v115pl-inline-24h label{
  display:flex!important;
  align-items:center!important;
  gap:8px!important;
  cursor:pointer!important;
  font-size:.8rem!important;
  font-weight:700!important;
}
#staffPlanningView .v115pl-inline-24h input{
  width:18px!important;
  height:18px!important;
  margin:0!important;
  accent-color:#2362a2!important;
}
#staffPlanningView .v115pl-inline-24h small{
  display:block!important;
  margin-top:3px!important;
  color:#526980!important;
  font-size:.7rem!important;
  overflow-wrap:anywhere!important;
}

.v115pl-permission-all{
  margin:2px 0 10px!important;
  padding:10px 12px!important;
  border:1px solid #dce6ef!important;
  border-radius:10px!important;
  background:#f7fafc!important;
}
.v115pl-permission-shifts{
  display:grid!important;
  grid-template-columns:repeat(2,minmax(0,1fr))!important;
  gap:7px!important;
  max-height:46vh!important;
  overflow:auto!important;
  padding:2px!important;
}
.v115pl-permission-shift{
  display:grid!important;
  grid-template-columns:auto auto auto minmax(0,1fr)!important;
  gap:7px!important;
  align-items:center!important;
  min-height:42px!important;
  padding:8px 9px!important;
  border:1px solid #e2e8ef!important;
  border-radius:9px!important;
  background:#fff!important;
  cursor:pointer!important;
}
.v115pl-permission-shift:hover{
  background:#f8fbfd!important;
  border-color:#cad9e7!important;
}
.v115pl-permission-shift input{
  margin:0!important;
}
.v115pl-permission-shift .dot{
  width:9px!important;
  height:9px!important;
  border-radius:50%!important;
}
.v115pl-permission-shift strong{
  color:#29445e!important;
  font-size:.69rem!important;
  font-weight:900!important;
}
.v115pl-permission-shift small{
  overflow:hidden!important;
  text-overflow:ellipsis!important;
  white-space:nowrap!important;
  color:#7a8896!important;
  font-size:.62rem!important;
}
.v115pl-permission-shift:has(input:disabled){
  opacity:.68!important;
  cursor:default!important;
}

@media(max-width:900px){
  #staffPlanningView .v115pl-shift-permission-row{
    grid-template-columns:1fr auto!important;
  }
  #staffPlanningView .v115pl-shift-permission-summary{
    grid-column:1/-1!important;
    grid-row:2!important;
  }
  #staffPlanningView .v115pl-inline-24h{grid-column:1/-1!important;grid-row:3!important;}
  #staffPlanningView [data-v115pl-edit-shift-permission]{grid-column:2!important;grid-row:1!important;}
  .v115pl-permission-shifts{
    grid-template-columns:1fr!important;
  }
}


/* =========================================================
   Planning intelligence cockpit
   ========================================================= */
#staffPlanningView .v115pl-quality{
  margin:12px 0 16px!important;
  padding:14px!important;
  border:1px solid #dbe6ef!important;
  border-radius:16px!important;
  background:linear-gradient(180deg,#fbfdff,#f6f9fc)!important;
  box-shadow:0 8px 24px rgba(31,67,103,.05)!important;
}
#staffPlanningView .v115pl-quality>header{
  display:flex!important;
  align-items:flex-start!important;
  justify-content:space-between!important;
  gap:14px!important;
  margin-bottom:12px!important;
}
#staffPlanningView .v115pl-quality>header h3{
  margin:2px 0 3px!important;
  color:#173653!important;
  font-size:1rem!important;
}
#staffPlanningView .v115pl-quality>header p{
  margin:0!important;
  color:#74869a!important;
  font-size:.7rem!important;
}
#staffPlanningView .v115pl-quality-kpis{
  display:grid!important;
  grid-template-columns:repeat(4,minmax(0,1fr))!important;
  gap:8px!important;
  margin-bottom:10px!important;
}
#staffPlanningView .v115pl-quality-kpis article{
  display:grid!important;
  gap:3px!important;
  padding:10px 11px!important;
  border:1px solid #e0e7ee!important;
  border-radius:11px!important;
  background:#fff!important;
}
#staffPlanningView .v115pl-quality-kpis article.good{border-color:#cce5d5!important;background:#f4fbf6!important}
#staffPlanningView .v115pl-quality-kpis article.watch{border-color:#ead8a8!important;background:#fffaf0!important}
#staffPlanningView .v115pl-quality-kpis article.bad{border-color:#ecc4c9!important;background:#fff4f5!important}
#staffPlanningView .v115pl-quality-kpis span{
  color:#728398!important;
  font-size:.58rem!important;
  font-weight:850!important;
  text-transform:uppercase!important;
  letter-spacing:.035em!important;
}
#staffPlanningView .v115pl-quality-kpis strong{
  color:#29445e!important;
  font-size:1rem!important;
  font-weight:900!important;
}
#staffPlanningView .v115pl-quality-kpis small{
  color:#8090a1!important;
  font-size:.6rem!important;
}
#staffPlanningView .v115pl-quality-grid{
  display:grid!important;
  grid-template-columns:1fr 1fr!important;
  gap:9px!important;
}
#staffPlanningView .v115pl-quality-grid>section{
  min-width:0!important;
  padding:10px!important;
  border:1px solid #e1e8ef!important;
  border-radius:11px!important;
  background:#fff!important;
}
#staffPlanningView .v115pl-quality-grid>section.wide{grid-column:1/-1!important}
#staffPlanningView .v115pl-quality-grid>section>header{
  display:flex!important;
  align-items:center!important;
  justify-content:space-between!important;
  gap:8px!important;
  margin-bottom:8px!important;
}
#staffPlanningView .v115pl-quality-grid h4{
  margin:0!important;
  color:#314b63!important;
  font-size:.74rem!important;
}
#staffPlanningView button.link,
.v115pl-preflight-list button.link{
  padding:0!important;
  border:0!important;
  background:transparent!important;
  color:#1670bd!important;
  font-size:.62rem!important;
  font-weight:800!important;
  cursor:pointer!important;
}
#staffPlanningView .v115pl-fairness-table{
  display:grid!important;
  gap:0!important;
  overflow:hidden!important;
  border:1px solid #e5ebf1!important;
  border-radius:8px!important;
}
#staffPlanningView .v115pl-fairness-table>div{
  display:grid!important;
  grid-template-columns:minmax(130px,1.5fr) repeat(6,minmax(40px,.55fr))!important;
  gap:4px!important;
  align-items:center!important;
  min-height:29px!important;
  padding:4px 7px!important;
  border-bottom:1px solid #edf1f5!important;
  font-size:.59rem!important;
}
#staffPlanningView .v115pl-fairness-table>div:last-child{border-bottom:0!important}
#staffPlanningView .v115pl-fairness-table .head{
  background:#f2f6f9!important;
  color:#718095!important;
  font-weight:850!important;
}
#staffPlanningView .v115pl-fairness-table strong{
  overflow:hidden!important;
  color:#304a62!important;
  text-overflow:ellipsis!important;
  white-space:nowrap!important;
  font-size:.62rem!important;
}
#staffPlanningView .v115pl-quality-issues{
  display:grid!important;
  gap:5px!important;
  max-height:250px!important;
  overflow:auto!important;
}
#staffPlanningView .v115pl-quality-issues>button{
  display:grid!important;
  gap:2px!important;
  width:100%!important;
  padding:7px 8px!important;
  border:1px solid #e5eaf0!important;
  border-radius:8px!important;
  background:#fafcfd!important;
  text-align:left!important;
  cursor:pointer!important;
}
#staffPlanningView .v115pl-quality-issues>button.block{border-left:4px solid #c7505e!important;background:#fff5f6!important}
#staffPlanningView .v115pl-quality-issues>button.warn{border-left:4px solid #d3a53d!important;background:#fffbf1!important}
#staffPlanningView .v115pl-quality-issues strong{color:#344e66!important;font-size:.64rem!important}
#staffPlanningView .v115pl-quality-issues span{color:#748397!important;font-size:.59rem!important}
#staffPlanningView .v115pl-load-list{
  display:grid!important;
  grid-template-columns:repeat(auto-fit,minmax(245px,1fr))!important;
  gap:6px!important;
}
#staffPlanningView .v115pl-load-list article{
  display:grid!important;
  grid-template-columns:auto minmax(0,1fr) auto!important;
  gap:8px!important;
  align-items:center!important;
  padding:8px 9px!important;
  border:1px solid #e5eaf0!important;
  border-radius:9px!important;
  background:#fbfcfd!important;
}
#staffPlanningView .v115pl-load-list article.high{border-left:4px solid #dfac38!important}
#staffPlanningView .v115pl-load-list article.very_high{border-left:4px solid #cc5967!important;background:#fff8f8!important}
#staffPlanningView .v115pl-load-list time{color:#4e6278!important;font-size:.61rem!important;font-weight:850!important}
#staffPlanningView .v115pl-load-list article>div{display:grid!important;gap:2px!important}
#staffPlanningView .v115pl-load-list strong{color:#304a62!important;font-size:.64rem!important}
#staffPlanningView .v115pl-load-list span,
#staffPlanningView .v115pl-load-list small{color:#78889a!important;font-size:.58rem!important}

/* My planning intelligent overview */
#staffPlanningView .v115pl-personal-overview{
  display:grid!important;
  grid-template-columns:1.45fr repeat(3,1fr)!important;
  gap:8px!important;
  margin-bottom:10px!important;
}
#staffPlanningView .v115pl-personal-overview article{
  display:grid!important;
  gap:3px!important;
  padding:10px 11px!important;
  border:1px solid #e2e8ef!important;
  border-radius:11px!important;
  background:#fff!important;
}
#staffPlanningView .v115pl-personal-overview article.next{background:#eef6ff!important;border-color:#d3e4f4!important}
#staffPlanningView .v115pl-personal-overview article.good{background:#f4fbf6!important;border-color:#cfe5d7!important}
#staffPlanningView .v115pl-personal-overview article.watch{background:#fff9ef!important;border-color:#ead8aa!important}
#staffPlanningView .v115pl-personal-overview span{color:#718095!important;font-size:.58rem!important;font-weight:850!important;text-transform:uppercase!important}
#staffPlanningView .v115pl-personal-overview strong{color:#29445e!important;font-size:.75rem!important;font-weight:900!important}
#staffPlanningView .v115pl-personal-overview small{color:#7c8c9c!important;font-size:.58rem!important}

/* Marketplace */
#staffPlanningView .v115pl-personal-marketplace{
  margin-top:12px!important;
  padding:12px!important;
  border:1px solid #dfe7ef!important;
  border-radius:13px!important;
  background:#fbfdff!important;
}
#staffPlanningView .v115pl-personal-marketplace>header{
  display:flex!important;
  align-items:flex-start!important;
  justify-content:space-between!important;
  gap:10px!important;
  margin-bottom:8px!important;
}
#staffPlanningView .v115pl-personal-marketplace h3{margin:0!important;color:#29445e!important;font-size:.78rem!important}
#staffPlanningView .v115pl-personal-marketplace p{margin:3px 0 0!important;color:#7a8999!important;font-size:.64rem!important}
#staffPlanningView .v115pl-personal-marketplace>header>span{
  padding:3px 7px!important;
  border-radius:999px!important;
  background:#e9f3fd!important;
  color:#2a628f!important;
  font-size:.59rem!important;
  font-weight:850!important;
}
#staffPlanningView .v115pl-marketplace-list,
#staffPlanningView .v115pl-marketplace-own{
  display:grid!important;
  gap:6px!important;
}
#staffPlanningView .v115pl-marketplace-list article,
#staffPlanningView .v115pl-marketplace-own article{
  display:flex!important;
  align-items:center!important;
  justify-content:space-between!important;
  gap:10px!important;
  padding:8px 9px!important;
  border:1px solid #e5ebf1!important;
  border-radius:9px!important;
  background:#fff!important;
}
#staffPlanningView .v115pl-marketplace-list article>div,
#staffPlanningView .v115pl-marketplace-own article>div{display:grid!important;gap:2px!important}
#staffPlanningView .v115pl-marketplace-list strong{color:#314c64!important;font-size:.67rem!important}
#staffPlanningView .v115pl-marketplace-list span,
#staffPlanningView .v115pl-marketplace-own span,
#staffPlanningView .v115pl-marketplace-own small{color:#78889a!important;font-size:.6rem!important}
#staffPlanningView .v115pl-marketplace-own{margin-top:9px!important;padding-top:9px!important;border-top:1px solid #e5ebf1!important}
#staffPlanningView .v115pl-marketplace-own>strong{color:#52677d!important;font-size:.63rem!important}
#staffPlanningView .v115pl-combined-marker.assignment.marketplace-open{
  background:#e9f6f0!important;
  color:#27664a!important;
  box-shadow:inset 0 0 0 1px #bee0ce!important;
}

/* Explainable assistant */
#staffPlanningView .v115pl-suggestion-main{display:grid!important;gap:3px!important;min-width:0!important}
#staffPlanningView .v115pl-suggestion-explain{
  margin-top:3px!important;
  padding-top:3px!important;
}
#staffPlanningView .v115pl-suggestion-explain summary{
  width:max-content!important;
  color:#1c70b6!important;
  font-size:.59rem!important;
  font-weight:850!important;
  cursor:pointer!important;
}
#staffPlanningView .v115pl-suggestion-explain>div{
  display:flex!important;
  flex-wrap:wrap!important;
  gap:4px!important;
  margin-top:5px!important;
}
#staffPlanningView .v115pl-suggestion-explain span{
  padding:3px 6px!important;
  border-radius:999px!important;
  background:#edf6ff!important;
  color:#496981!important;
  font-size:.54rem!important;
  font-weight:700!important;
}

/* Pre-publication + simulation modal */
.v115pl-preflight-summary,
.v115pl-simulation-kpis{
  display:grid!important;
  grid-template-columns:repeat(4,minmax(0,1fr))!important;
  gap:7px!important;
  margin:8px 0 12px!important;
}
.v115pl-preflight-summary article,
.v115pl-simulation-kpis article{
  display:grid!important;
  gap:3px!important;
  padding:9px!important;
  border:1px solid #e1e8ef!important;
  border-radius:9px!important;
  background:#f8fafc!important;
}
.v115pl-preflight-summary article.good{background:#f4fbf6!important;border-color:#cfe5d7!important}
.v115pl-preflight-summary article.watch{background:#fff9ef!important;border-color:#ead8aa!important}
.v115pl-preflight-summary article.bad{background:#fff4f5!important;border-color:#ecc5cb!important}
.v115pl-preflight-summary span,
.v115pl-simulation-kpis span{color:#758598!important;font-size:.59rem!important;font-weight:800!important}
.v115pl-preflight-summary strong,
.v115pl-simulation-kpis strong{color:#29445e!important;font-size:.9rem!important;font-weight:900!important}
.v115pl-simulation-kpis small{color:#7a8a9a!important;font-size:.57rem!important}
.v115pl-preflight-list,
.v115pl-simulation-lines{
  display:grid!important;
  gap:6px!important;
  max-height:42vh!important;
  overflow:auto!important;
}
.v115pl-preflight-list article,
.v115pl-simulation-lines article{
  display:flex!important;
  align-items:center!important;
  gap:9px!important;
  padding:8px 9px!important;
  border:1px solid #e3e9ef!important;
  border-radius:9px!important;
  background:#fbfcfd!important;
}
.v115pl-preflight-list article.block{border-left:4px solid #c7505e!important;background:#fff5f6!important}
.v115pl-preflight-list article.warn{border-left:4px solid #d3a53d!important;background:#fffbf1!important}
.v115pl-preflight-list article>span{
  min-width:58px!important;
  color:#768699!important;
  font-size:.55rem!important;
  font-weight:900!important;
  text-transform:uppercase!important;
}
.v115pl-preflight-list article>strong{
  flex:1!important;
  color:#3d556c!important;
  font-size:.64rem!important;
}
.v115pl-fairness-score{
  display:flex!important;
  align-items:baseline!important;
  gap:10px!important;
  margin:8px 0 12px!important;
  padding:10px!important;
  border:1px solid #dfe7ef!important;
  border-radius:10px!important;
  background:#f7fafc!important;
}
.v115pl-fairness-score span{color:#738397!important;font-size:.64rem!important}
.v115pl-fairness-score strong{color:#244f73!important;font-size:1.15rem!important}
.v115pl-fairness-score small{color:#7a8998!important;font-size:.6rem!important}

@media(max-width:1100px){
  #staffPlanningView .v115pl-quality-kpis,
  #staffPlanningView .v115pl-personal-overview{grid-template-columns:repeat(2,minmax(0,1fr))!important}
  #staffPlanningView .v115pl-quality-grid{grid-template-columns:1fr!important}
  #staffPlanningView .v115pl-quality-grid>section.wide{grid-column:auto!important}
}
@media(max-width:760px){
  #staffPlanningView .v115pl-quality>header{flex-direction:column!important}
  #staffPlanningView .v115pl-quality-kpis,
  #staffPlanningView .v115pl-personal-overview,
  .v115pl-preflight-summary,
  .v115pl-simulation-kpis{grid-template-columns:1fr!important}
  #staffPlanningView .v115pl-fairness-table>div{grid-template-columns:minmax(110px,1.5fr) repeat(5,38px)!important}
}


/* =========================================================
   Bulk assistant assignment
   ========================================================= */
#staffPlanningView .v115pl-suggestion-toolbar{
  display:flex!important;
  align-items:center!important;
  justify-content:space-between!important;
  gap:12px!important;
  margin-bottom:8px!important;
  padding:10px 11px!important;
  border:1px solid #d8e5f0!important;
  border-radius:11px!important;
  background:linear-gradient(180deg,#f8fbff,#f2f7fc)!important;
}
#staffPlanningView .v115pl-suggestion-toolbar>div{
  display:grid!important;
  gap:2px!important;
  min-width:0!important;
}
#staffPlanningView .v115pl-suggestion-toolbar strong{
  color:#294b69!important;
  font-size:.72rem!important;
  font-weight:900!important;
}
#staffPlanningView .v115pl-suggestion-toolbar span{
  color:#75879a!important;
  font-size:.61rem!important;
}
#staffPlanningView .v115pl-suggestion-toolbar button{
  flex:0 0 auto!important;
  min-width:140px!important;
}
@media(max-width:760px){
  #staffPlanningView .v115pl-suggestion-toolbar{
    align-items:stretch!important;
    flex-direction:column!important;
  }
  #staffPlanningView .v115pl-suggestion-toolbar button{
    width:100%!important;
  }
}


/* Leave business-day counter */
.v115pl-leave-count{
  display:grid!important;
  gap:3px!important;
  margin-top:8px!important;
  padding:9px 10px!important;
  border:1px solid #d9e6f2!important;
  border-radius:9px!important;
  background:#f4f9fd!important;
}
.v115pl-leave-count[hidden]{
  display:none!important;
}
.v115pl-leave-count strong{
  color:#244f73!important;
  font-size:.72rem!important;
  font-weight:900!important;
}
.v115pl-leave-count span{
  color:#64788d!important;
  font-size:.63rem!important;
}
.v115pl-leave-count small{
  color:#8795a4!important;
  font-size:.57rem!important;
  line-height:1.35!important;
}


/* =========================================================
   Assistant blocker repair UX
   ========================================================= */
#staffPlanningView .v115pl-ai-repair-btn{
  border-color:#c9b9eb!important;
  background:#f6f1ff!important;
  color:#654a93!important;
  font-weight:850!important;
}
#staffPlanningView .v115pl-ai-repair-btn:hover{
  background:#eee5fb!important;
}
.v115pl-preflight-actions{
  display:flex!important;
  align-items:center!important;
  justify-content:flex-end!important;
  gap:8px!important;
  flex-wrap:wrap!important;
}
.v115pl-preflight-list button.link.ai{
  color:#6b4da0!important;
}
.v115pl-preflight-list button.link.ai:hover{
  text-decoration:underline!important;
}
#staffPlanningView .v115pl-suggestion-list article.repair{
  border-color:#d9cdee!important;
  background:linear-gradient(180deg,#fdfbff,#faf7ff)!important;
  box-shadow:inset 4px 0 0 #8b6bb9!important;
}
#staffPlanningView .v115pl-repair-chip{
  display:inline-flex!important;
  align-items:center!important;
  padding:2px 5px!important;
  border-radius:999px!important;
  background:#efe7fb!important;
  color:#694b94!important;
  font-size:.5rem!important;
  font-style:normal!important;
  font-weight:900!important;
  line-height:1!important;
}
#staffPlanningView .v115pl-repair-swap{
  display:flex!important;
  align-items:center!important;
  gap:6px!important;
  width:max-content!important;
  max-width:100%!important;
  margin-top:3px!important;
  padding:4px 7px!important;
  border:1px solid #e4daf2!important;
  border-radius:8px!important;
  background:#fff!important;
  color:#64758a!important;
  font-size:.58rem!important;
}
#staffPlanningView .v115pl-repair-swap b{
  color:#8a6bb5!important;
  font-size:.72rem!important;
}
#staffPlanningView .v115pl-repair-swap>strong{
  color:#5d437f!important;
  font-size:.61rem!important;
}


/* =========================================================
   Work target presets
   ========================================================= */
#staffPlanningView .v115pl-work-target-control{
  display:grid!important;
  grid-template-columns:minmax(145px,1fr) minmax(125px,.9fr)!important;
  gap:6px 8px!important;
  align-items:end!important;
  min-width:0!important;
}
#staffPlanningView .v115pl-work-target-control>label{
  min-width:0!important;
}
#staffPlanningView .v115pl-work-target-control select,
#staffPlanningView .v115pl-work-target-control input{
  width:100%!important;
  margin-top:3px!important;
}
#staffPlanningView .v115pl-work-target-control>small{
  grid-column:1/-1!important;
  color:#73869a!important;
  font-size:.58rem!important;
  line-height:1.25!important;
}
#staffPlanningView .v115pl-target-custom[hidden]{
  display:none!important;
}
@media(max-width:1100px){
  #staffPlanningView .v115pl-work-target-control{
    grid-template-columns:1fr!important;
  }
  #staffPlanningView .v115pl-work-target-control>small{
    grid-column:1!important;
  }
}


/* =========================================================
   Assistant generation scope
   ========================================================= */
#staffPlanningView .v115pl-assistant-scope{
  margin:10px 0 12px!important;
  padding:10px!important;
  border:1px solid #dfe7ef!important;
  border-radius:12px!important;
  background:#f8fbfd!important;
}
#staffPlanningView .v115pl-assistant-scope-tabs{
  display:inline-flex!important;
  gap:3px!important;
  padding:3px!important;
  border:1px solid #d7e1ea!important;
  border-radius:9px!important;
  background:#fff!important;
  margin-bottom:9px!important;
}
#staffPlanningView .v115pl-assistant-scope-tabs button{
  min-height:30px!important;
  padding:5px 10px!important;
  border:0!important;
  border-radius:7px!important;
  background:transparent!important;
  color:#64768a!important;
  font-size:.64rem!important;
  font-weight:850!important;
  cursor:pointer!important;
}
#staffPlanningView .v115pl-assistant-scope-tabs button.active{
  background:#e9f3fd!important;
  color:#235f90!important;
  box-shadow:inset 0 0 0 1px #cfe0ef!important;
}
#staffPlanningView .v115pl-assistant-scope-control{
  display:grid!important;
  grid-template-columns:minmax(280px,1.2fr) minmax(250px,.8fr)!important;
  gap:10px!important;
  align-items:end!important;
}
#staffPlanningView .v115pl-assistant-scope-control>label{
  margin:0!important;
}
#staffPlanningView .v115pl-assistant-scope-control select,
#staffPlanningView .v115pl-assistant-scope-control input{
  margin-top:4px!important;
}
#staffPlanningView .v115pl-assistant-day-nav{
  display:grid!important;
  grid-template-columns:auto minmax(155px,1fr) auto!important;
  gap:6px!important;
  align-items:end!important;
}
#staffPlanningView .v115pl-assistant-day-nav label{
  margin:0!important;
}
#staffPlanningView .v115pl-assistant-range-summary{
  display:grid!important;
  gap:2px!important;
  min-height:54px!important;
  padding:8px 10px!important;
  border:1px solid #dfe7ef!important;
  border-radius:9px!important;
  background:#fff!important;
}
#staffPlanningView .v115pl-assistant-range-summary span{
  color:#78899c!important;
  font-size:.55rem!important;
  font-weight:850!important;
  text-transform:uppercase!important;
  letter-spacing:.035em!important;
}
#staffPlanningView .v115pl-assistant-range-summary strong{
  color:#2d4d68!important;
  font-size:.69rem!important;
}
#staffPlanningView .v115pl-assistant-range-summary small{
  color:#74869a!important;
  font-size:.58rem!important;
}
#staffPlanningView .v115pl-assistant-no-period{
  display:grid!important;
  gap:3px!important;
  padding:8px 10px!important;
  border:1px solid #ecd9ab!important;
  border-radius:9px!important;
  background:#fffaf0!important;
}
#staffPlanningView .v115pl-assistant-no-period strong{
  color:#75580f!important;
  font-size:.67rem!important;
}
#staffPlanningView .v115pl-assistant-no-period span{
  color:#876f36!important;
  font-size:.59rem!important;
}
@media(max-width:900px){
  #staffPlanningView .v115pl-assistant-scope-control{
    grid-template-columns:1fr!important;
  }
}
@media(max-width:650px){
  #staffPlanningView .v115pl-assistant-scope-tabs{
    display:grid!important;
    grid-template-columns:1fr 1fr!important;
    width:100%!important;
  }
  #staffPlanningView .v115pl-assistant-day-nav{
    grid-template-columns:1fr!important;
  }
}


/* =========================================================
   Assistant overtime balancing policy
   ========================================================= */
#staffPlanningView .v115pl-assistant-overtime-policy{
  display:grid!important;
  grid-template-columns:minmax(0,1fr) auto auto!important;
  gap:12px!important;
  align-items:center!important;
  margin:10px 0 12px!important;
  padding:10px 11px!important;
  border:1px solid #e1e6ef!important;
  border-radius:11px!important;
  background:#faf8ff!important;
}
#staffPlanningView .v115pl-assistant-overtime-policy>div:first-child{
  display:grid!important;
  gap:3px!important;
}
#staffPlanningView .v115pl-assistant-overtime-policy strong{
  color:#4f436c!important;
  font-size:.69rem!important;
  font-weight:900!important;
}
#staffPlanningView .v115pl-assistant-overtime-policy span{
  color:#7b7191!important;
  font-size:.59rem!important;
  line-height:1.35!important;
}
#staffPlanningView .v115pl-assistant-overtime-policy label{
  margin:0!important;
  color:#6f6484!important;
  font-size:.59rem!important;
  font-weight:800!important;
}
#staffPlanningView .v115pl-hours-input{
  display:flex!important;
  align-items:center!important;
  gap:5px!important;
  margin-top:3px!important;
}
#staffPlanningView .v115pl-hours-input input{
  width:78px!important;
  margin:0!important;
}
#staffPlanningView .v115pl-hours-input span{
  font-weight:900!important;
}
@media(max-width:900px){
  #staffPlanningView .v115pl-assistant-overtime-policy{
    grid-template-columns:1fr!important;
  }
}


/* Validation forte, diffusion et suppression des périodes */
.v115pl-period-row .status.validated{background:#e9f2ff;color:#245c98}
.v115pl-publish-workflow{display:grid;gap:14px;margin-top:18px}
.v115pl-workflow-steps{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
.v115pl-workflow-steps>article{display:flex;align-items:center;gap:10px;min-height:76px;padding:12px;border:1px solid #dfe7ef;border-radius:14px;background:#fff}
.v115pl-workflow-steps>article>span:first-child{display:grid;place-items:center;width:30px;height:30px;border-radius:50%;background:#eef3f8;color:#53677d;font-weight:900}
.v115pl-workflow-steps>article>div{display:grid;gap:2px;min-width:0;flex:1}
.v115pl-workflow-steps>article>div small{color:#728196;line-height:1.3}
.v115pl-workflow-steps>article.validated{border-color:#cbdff4;background:#f8fbff}
.v115pl-workflow-steps>article.validated>span:first-child{background:#e2efff;color:#245c98}
.v115pl-workflow-steps>article.published{border-color:#cfe7d8;background:#f8fcf9}
.v115pl-workflow-steps>article.published>span:first-child{background:#e3f5e9;color:#287149}
.v115pl-publication-history{background:#fff;border:1px solid #dfe7ef;border-radius:16px;padding:16px}
.v115pl-publication-history>header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:9px}
.v115pl-publication-history>header strong,.v115pl-publication-history>header span{display:block}
.v115pl-publication-history>header span{margin-top:3px;color:#728196;font-size:.78rem}
.v115pl-publication-row{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:10px 0;border-top:1px solid #edf1f5}
.v115pl-publication-row:first-of-type{border-top:0}
.v115pl-publication-row>div{display:grid;gap:2px}
.v115pl-publication-row span,.v115pl-publication-row small{color:#6c7b8e;font-size:.75rem}
.v115pl-publication-row.cancelled{opacity:.72}
.v115pl-cancelled-badge{display:inline-flex;padding:5px 9px;border-radius:999px;background:#f0f1f3;color:#6d7580!important;font-weight:800}
.v115pl-danger-button{border:1px solid #d7a7af;background:#fff5f6;color:#9f3042;border-radius:9px;padding:8px 11px;font-weight:800;cursor:pointer}
.v115pl-danger-button:hover{background:#fdecee;border-color:#c98591}
.v115pl-danger-button:disabled{opacity:.45;cursor:not-allowed}
.v115pl-danger-button.small{padding:6px 9px;font-size:.76rem}
.v115pl-workflow-notice{display:grid;gap:3px;margin:0 0 12px;padding:10px 12px;border-radius:10px;border:1px solid #dbe6f0;background:#f8fbfe}
.v115pl-workflow-notice.validated{border-color:#cbdff4;background:#f3f8ff;color:#245c98}
.v115pl-workflow-notice.published{border-color:#cfe7d8;background:#f4fbf6;color:#287149}
.v115pl-workflow-notice span{font-size:.78rem;line-height:1.4}
.v115pl-strong-confirm{display:grid;gap:8px;margin-top:13px;padding:13px;border:1px solid #cfdceb;border-radius:12px;background:#f8fbfe}
.v115pl-strong-confirm.danger{border-color:#ecc6cc;background:#fff8f8}
.v115pl-strong-confirm p{margin:0;color:#5f7084;font-size:.8rem}
.v115pl-strong-confirm code{display:inline-flex;width:max-content;padding:5px 8px;border-radius:7px;background:#fff;border:1px solid #d9e2eb;color:#243b55;font-weight:900;letter-spacing:.035em}
.v115pl-strong-confirm input[type="text"],.v115pl-strong-confirm input:not([type]){width:100%}
.v115pl-strong-confirm label{display:flex!important;align-items:flex-start;gap:8px;font-size:.78rem!important;font-weight:650!important;color:#4e6278}
.v115pl-strong-confirm label input{width:auto!important;margin-top:2px}
.v115pl-period-footer{display:flex;justify-content:space-between;align-items:center;gap:12px}
.v115pl-period-danger{display:flex;gap:8px;align-items:center}
@media(max-width:980px){.v115pl-workflow-steps{grid-template-columns:1fr}.v115pl-period-footer{align-items:stretch;flex-direction:column}.v115pl-period-danger{order:2}}


/* Planning : rééquilibrage IA + absences gestionnaire */
#staffPlanningView .v115pl-manager-add-absence{margin-top:10px}
#staffPlanningView .v115pl-ai-replacement{border-left:4px solid #4f8bc9}
#staffPlanningView .v115pl-ai-replacement .v115pl-suggestion-person small{display:block;color:#8a5c25;font-size:.72rem;margin-bottom:2px}
#staffPlanningView .v115pl-fairness-table span.good{color:#287149!important;font-weight:800}
#staffPlanningView .v115pl-fairness-table span.watch{color:#9a6b12!important;font-weight:800}
#staffPlanningView .v115pl-fairness-table span.bad{color:#a23849!important;font-weight:800}


/* Couverture de la période affichée, accès direct aux postes et conflits. */
.v115pl-coverage-overview{display:grid;grid-template-columns:minmax(210px,1fr) repeat(2,minmax(220px,1fr));gap:10px;align-items:start;margin:0 0 12px}
.v115pl-coverage-total,.v115pl-coverage-detail{background:#fff;border:1px solid #cbd5e1;border-radius:10px;padding:12px;min-width:0;color:#0f172a}
.v115pl-coverage-total{display:grid;grid-template-columns:auto 1fr;column-gap:12px;align-items:center}
.v115pl-coverage-total>strong{font-size:24px;grid-row:span 2}.v115pl-coverage-total>small{color:#475569}
.v115pl-coverage-detail>summary{cursor:pointer;font-weight:650;min-height:30px;align-content:center}
.v115pl-coverage-detail.watch{border-left:4px solid #b45309}.v115pl-coverage-detail.bad{border-left:4px solid #b91c1c}.v115pl-coverage-detail.good{border-left:4px solid #15803d}
.v115pl-coverage-list{max-height:300px;overflow:auto;margin-top:10px;display:grid;gap:6px}
.v115pl-coverage-row{display:grid;grid-template-columns:auto 1fr;gap:4px 10px;text-align:left;background:#f8fafc;border:1px solid #cbd5e1;border-radius:6px;padding:10px;color:#0f172a;white-space:normal;cursor:pointer}
.v115pl-coverage-row>span{grid-column:1/-1;font-size:12px}.v115pl-coverage-row.block{border-left:3px solid #b91c1c}.v115pl-coverage-row:focus-visible,.v115pl-coverage-detail>summary:focus-visible{outline:3px solid #2563eb;outline-offset:2px}
@media(max-width:1000px){.v115pl-coverage-overview{grid-template-columns:1fr 1fr}.v115pl-coverage-total{grid-column:1/-1}}
@media(max-width:600px){.v115pl-coverage-overview{grid-template-columns:1fr}}
@media print{.v115pl-coverage-overview{display:none!important}}

.v115pl-ai-comparison{overflow-x:auto;margin:12px 0;border:1px solid #cbd5e1;border-radius:10px;background:#fff}
.v115pl-ai-comparison table{width:100%;border-collapse:collapse;font-size:13px;color:#0f172a}
.v115pl-ai-comparison caption{text-align:left;padding:12px;font-weight:600;color:#475569;caption-side:top}
.v115pl-ai-comparison th,.v115pl-ai-comparison td{padding:10px 12px;border-bottom:1px solid #e2e8f0;text-align:left;vertical-align:top}
.v115pl-ai-comparison thead{background:#f1f5f9}.v115pl-ai-comparison td button{margin:2px}
.v115pl-innovation-runs{display:grid;gap:10px}.v115pl-innovation-runs article{padding:10px;background:#f8fafc;border:1px solid #cbd5e1;border-radius:6px}
#v115plInnovationDialog .v115pl-modal-card{width:min(1100px,96vw);max-height:92vh;overflow:auto}
#v115plInnovationDialog [data-innovation-content]{display:grid;gap:12px}#v115plInnovationDialog label{display:grid;gap:5px}
.v115pl-ai-warnings summary{cursor:pointer;font-weight:650}.v115pl-ai-warnings li p{font-size:12px;line-height:1.6}

/* Direct manager entry from each absence calendar cell. */
#staffPlanningView .v115pl-absence-cell .v115pl-absence-cell-action{display:flex;align-items:center;justify-content:center;width:100%;min-width:0;height:100%;min-height:38px;margin:0;padding:0;border:0;border-radius:0;background:transparent;color:inherit;box-shadow:none;cursor:pointer}
#staffPlanningView .v115pl-absence-cell-action:empty::after{content:'+';opacity:0;color:#2563eb;font-size:18px}
#staffPlanningView .v115pl-absence-cell-action:hover{background:rgba(37,99,235,.08)}
#staffPlanningView .v115pl-absence-cell-action:focus-visible{outline:2px solid #2563eb;outline-offset:-2px}
#staffPlanningView .v115pl-absence-cell-action:empty:hover::after,#staffPlanningView .v115pl-absence-cell-action:empty:focus-visible::after{opacity:1}
#staffPlanningView .v115pl-absence-click-hint{display:block;margin-top:8px;color:#475569}
@media print{#staffPlanningView .v115pl-absence-cell-action:empty::after,#staffPlanningView .v115pl-absence-click-hint{display:none!important}}

.v115pl-preview-panel[hidden]{display:none!important}
.v115pl-preview-panel{padding:14px;border:1px solid #cbd5e1;border-radius:10px;background:#fff}
.v115pl-modal-card.v115pl-preview-wide{width:min(1500px,96vw);max-width:96vw;max-height:94vh;overflow:auto}
.v115pl-preview-summary{display:grid;gap:6px;padding:12px 0;color:#0f172a}.v115pl-preview-summary p{color:#92400e;margin:0}
.v115pl-preview-scroll{max-height:55vh;overflow:auto;border:1px solid #cbd5e1;margin-bottom:18px}
.v115pl-preview-scroll table{border-collapse:separate;border-spacing:0;width:100%;font-size:12px;color:#0f172a}
.v115pl-preview-scroll th,.v115pl-preview-scroll td{padding:8px;border-right:1px solid #e2e8f0;border-bottom:1px solid #e2e8f0;vertical-align:top;min-width:120px;text-align:left}
.v115pl-preview-scroll thead th{position:sticky;top:0;background:#e2e8f0;z-index:2}.v115pl-preview-scroll tr>th:first-child{position:sticky;left:0;background:#f1f5f9;z-index:1}
.v115pl-preview-scroll thead th:first-child{z-index:3}.v115pl-preview-scroll th small,.v115pl-preview-slot small{display:block;font-size:10px;color:#475569}
.v115pl-preview-slot{padding:6px;border-radius:4px;margin-bottom:4px;background:#f1f5f9}.v115pl-preview-slot.vacant{background:#fef3c7;color:#92400e;font-weight:700}
