*{box-sizing:border-box} :root{--navy:#142b3b;--blue:#176b87;--muted:#6d7d88;--line:#e2e9ed;--bg:#f4f7f9;--green:#12a150}body{margin:0;background:var(--bg);color:#1c2c38;font:15px system-ui,-apple-system,"Segoe UI",sans-serif}.topbar{min-height:68px;background:#fff;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 max(calc((100% - 1160px)/2),24px);gap:20px}.brand{font-weight:800;color:var(--navy);text-decoration:none;font-size:17px}.brand span{font-size:24px;margin-right:8px}.topbar nav{display:flex;gap:4px}.topbar nav a{padding:23px 13px 20px;text-decoration:none;color:var(--muted);font-size:13px;font-weight:700;border-bottom:3px solid transparent}.topbar nav a.active{color:var(--blue);border-color:var(--blue)}.container{max-width:1160px;margin:36px auto 60px;padding:0 24px}.page-heading{display:flex;justify-content:space-between;align-items:center;margin-bottom:24px}.eyebrow{font-size:11px;letter-spacing:1.5px;color:var(--blue);font-weight:800;margin:0 0 8px}h1{font-size:30px;letter-spacing:-.8px;margin:0 0 7px;color:var(--navy)}h2{font-size:18px;margin:0 0 20px;color:var(--navy)}h3{font-size:16px;margin:0 0 12px;color:var(--navy)}.muted{color:var(--muted);margin:0;line-height:1.5}.heading-icon{font-size:32px;background:#e8f1f5;border-radius:15px;padding:14px}.layout{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(280px,.9fr);gap:20px;align-items:start}.panel{background:#fff;border:1px solid var(--line);border-radius:14px;padding:24px;box-shadow:0 3px 12px #1a354509;margin-bottom:20px}.form-panel{padding:27px}label{display:block;font-size:13px;font-weight:700;color:#354b59;margin:0 0 7px}input,select,textarea{width:100%;border:1px solid #d7e0e5;border-radius:8px;padding:11px 12px;font:inherit;color:#1c2c38;background:#fff;margin-bottom:17px;min-height:43px}textarea{resize:vertical}input:focus,select:focus,textarea:focus{outline:2px solid #176b8722;border-color:var(--blue)}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:13px}.hint{background:#eff7fa;color:#426270;padding:12px;border-radius:8px;font-size:12px;line-height:1.5;margin:-2px 0 19px}.button{border:0;border-radius:8px;padding:11px 15px;display:inline-flex;justify-content:center;align-items:center;text-decoration:none;font-weight:750;font-size:13px;cursor:pointer;min-height:41px}.primary{background:var(--blue);color:#fff}.secondary{background:#f0f4f6;color:#405561;border:1px solid var(--line)}.full{width:100%}.side-column .panel{padding:20px}.tip-panel{background:linear-gradient(140deg,#fff,#f2f8fa)}.tip-icon{font-size:23px;margin-bottom:10px}.tip-panel p{font-size:13px;color:var(--muted);line-height:1.5}.calculation,.vehicle-row{display:flex;justify-content:space-between;align-items:center;gap:9px;background:#f7f9fa;border-radius:8px;padding:12px;margin-top:9px;font-size:12px}.calculation strong,.vehicle-km{font-size:15px;color:var(--green);font-weight:800;white-space:nowrap}.vehicle-row strong{font-size:13px}.vehicle-row small,.recent-item small,.subline{display:block;color:var(--muted);font-size:11px;margin-top:4px}.recent-list{display:grid;gap:12px}.recent-item{display:flex;justify-content:space-between;gap:10px;border-bottom:1px solid #eef1f3;padding-bottom:10px;font-size:13px}.recent-item b{white-space:nowrap;color:var(--blue)}.flash{padding:13px 16px;border-radius:9px;margin-bottom:17px;font-weight:650;font-size:13px}.flash.success{background:#e8f6ef;color:#075c2b}.flash.error{background:#ffe0dd;color:#a31610}.filters{padding:19px}.filter-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr)) auto;gap:11px;align-items:end}.filter-grid input,.filter-grid select{margin:0}.filter-actions{display:flex;gap:7px;align-items:center}.stats-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin-bottom:19px}.stat-card{background:#fff;border:1px solid var(--line);border-radius:12px;padding:17px 19px}.stat-card span{display:block;color:var(--muted);font-size:12px;font-weight:650;margin-bottom:7px}.stat-card strong{font-size:26px;color:var(--navy)}.stat-card small{font-size:13px;color:var(--muted)}.vehicle-summary{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}.section-title{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:16px}.section-title h2{margin:0 0 4px}.section-title p{font-size:12px}.table-wrap{overflow-x:auto}table{width:100%;border-collapse:collapse;text-align:left;font-size:12px;min-width:820px}th{background:#f7f9fa;color:var(--muted);padding:11px 9px}td{padding:12px 9px;border-bottom:1px solid #edf0f2;vertical-align:middle}td strong{color:var(--navy)}.distance-pill{background:#eaf5f0;color:#16734e;padding:5px 8px;border-radius:6px;font-weight:800;white-space:nowrap}.comment-cell{max-width:180px;color:var(--muted)}.actions{white-space:nowrap}.actions a,.link-danger{color:var(--blue);font-size:12px;font-weight:700;text-decoration:none}.actions form{display:inline}.link-danger{border:0;background:none;padding:4px;cursor:pointer;color:#b4443c}.status{font-size:11px;font-weight:800;padding:5px 7px;border-radius:6px;white-space:nowrap}.status.late{background:#ffe0dd;color:#a31610}.status.ok{background:#e8f6ef;color:#075c2b}.empty-state{text-align:center;padding:32px;color:var(--muted)}footer{text-align:center;color:#91a0a9;font-size:11px;padding:20px;border-top:1px solid var(--line);background:#fff}
@media(max-width:900px){.layout{grid-template-columns:1fr}.filter-grid{grid-template-columns:repeat(2,1fr)}.filter-actions{grid-column:1/-1}.vehicle-summary{grid-template-columns:repeat(2,1fr)}}
@media(max-width:600px){.topbar{padding:8px 14px;display:block}.brand{display:block;padding:5px 0 10px}.topbar nav{overflow-x:auto}.topbar nav a{padding:12px 10px;font-size:12px;white-space:nowrap}.container{margin:24px auto 40px;padding:0 13px}h1{font-size:24px}.heading-icon{font-size:25px;padding:10px}.panel,.form-panel{padding:18px}.form-grid,.filter-grid{grid-template-columns:1fr;gap:0}.filter-actions{grid-column:auto;margin-top:10px}.filter-actions .button{flex:1}.stats-grid{gap:7px}.stat-card{padding:12px 9px}.stat-card strong{font-size:20px}.stat-card span{font-size:10px}.vehicle-summary{grid-template-columns:1fr}.section-title{align-items:flex-start;flex-direction:column}.section-title .button{width:100%}}

.brand{display:flex;align-items:center;gap:12px}.brand img{width:68px;height:48px;object-fit:contain}.brand span{font-size:19px}
.month-nav{display:flex;justify-content:space-between;align-items:center;gap:12px;margin:0 0 18px}.month-nav strong{font-size:18px;color:var(--navy);text-transform:capitalize}
.booking-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px;align-items:start}.booking-panel{padding:20px}.booking-title{display:flex;justify-content:space-between;align-items:center}.booking-title h2{margin:0 0 14px;text-transform:capitalize}.vehicle-symbol{font-size:28px;background:#eef5f8;border-radius:12px;padding:9px}
.calendar{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:5px}.weekday{text-align:center;color:var(--muted);font-size:11px;font-weight:800;padding:7px 0}.day{min-height:66px;border-radius:8px;padding:7px 5px;font-size:13px;display:flex;flex-direction:column;gap:6px;border:1px solid var(--line)}.day.blank{border-color:transparent;background:transparent}.day.available{background:#f0f8f3;border-color:#d8eee0}.day.reserved{background:#ffe0dd;border-color:#ffb8b2}.day.today{outline:2px solid var(--blue);outline-offset:-2px}.day>span{font-weight:800}.day small{font-size:10px;line-height:1.2;overflow-wrap:anywhere;color:var(--muted)}.reserved small{color:#a31610;font-weight:700}.legend{display:flex;gap:18px;margin:12px 0 20px;color:var(--muted);font-size:11px}.legend span{display:flex;align-items:center;gap:6px}.legend i{width:9px;height:9px;border-radius:50%;display:inline-block}.free-dot{background:#62ae7e}.busy-dot{background:#ef4438}.reserve-form{border-top:1px solid var(--line);padding-top:18px}.reserve-form h3,.reservation-list h3{margin-bottom:12px}.reservation-list{border-top:1px solid var(--line);padding-top:16px;margin-top:18px}.reservation-item{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:10px 0;border-bottom:1px solid #edf0f2;font-size:12px}.reservation-item small{display:block;color:var(--muted);margin-top:4px}.reservation-item form{margin:0}.reservation-item .link-danger{white-space:nowrap}
@media(max-width:850px){.booking-grid{grid-template-columns:1fr}}@media(max-width:600px){.month-nav{flex-wrap:wrap}.month-nav strong{order:-1;width:100%;text-align:center}.day{min-height:56px;padding:5px 3px}.day small{font-size:9px}.brand img{width:54px;height:40px}}
.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.form-grid>div{display:flex;flex-direction:column;gap:7px}.weekly-panel{margin-top:22px}.weekly-scroll{overflow-x:auto}.week-table{width:100%;min-width:760px;border-collapse:collapse;font-size:13px}.week-table th,.week-table td{border:1px solid #dce3ea;padding:5px;vertical-align:top}.week-table thead th{background:#f1f5f9;text-align:center;position:sticky;top:0}.week-table tbody th{width:65px;background:#f8fafc;text-align:center;font-weight:600}.week-table td{height:39px;min-width:90px}.week-table .slot-free{background:#f0fdf4}.week-table .slot-busy{background:#fee2e2}.slot-booking{font-size:11px;line-height:1.3;overflow-wrap:anywhere}.slot-booking small{display:block}.weekly-panel h3{margin-top:20px}@media(max-width:650px){.form-grid{grid-template-columns:1fr}}

.vehicle-choice{max-width:520px}.vehicle-choice select{margin-bottom:0}
.week-table .slot-pending{background:#fff3c4}.week-table .slot-accepted{background:#baf2cb}
.week-table .slot-booking{padding:2px}.slot-pending .slot-booking strong{color:#8a5a00}
.slot-accepted .slot-booking strong{color:#075c2b}
.pending-dot{background:#e8b638}.accepted-dot{background:#16a34a}.rejected-dot{background:#ef4438}
.legend{flex-wrap:wrap}.reservation-item{align-items:flex-start}.reservation-actions{display:flex;gap:6px;align-items:center;flex-wrap:wrap}
.reservation-actions form{margin:0}.action-accept{background:#baf2cb;color:#075c2b;padding:7px 10px;min-height:32px}
.action-reject{background:#ffe0dd;color:#a31610;padding:7px 10px;min-height:32px}
.status-badge{display:inline-block;margin-top:7px;padding:4px 7px;border-radius:6px;font-size:10px;font-weight:800}
.status-badge.pending{background:#fff3c4;color:#8a5a00}.status-badge.accepted{background:#baf2cb;color:#075c2b}.status-badge.rejected{background:#ffc2bd;color:#a31610}
.reservation-pending{background:#fffdf5}.reservation-accepted{background:#e8ffef}.reservation-rejected{background:#fff0ee}
.reservation-help{font-size:12px;margin-top:10px}

/* Réservations interactives directement dans le planning */
.week-table td{vertical-align:top}
.week-table .slot-booking{display:block;margin:2px 0 5px;padding:4px;border:1px solid #e2e8ee;border-radius:6px;background:#fff;white-space:normal}
.slot-booking summary{cursor:pointer;list-style:none}
.slot-booking summary::-webkit-details-marker{display:none}
.slot-booking summary:after{content:' +';font-weight:900;color:var(--blue)}
.slot-booking[open] summary:after{content:' −'}
.slot-booking summary strong{display:block;font-size:11px}
.slot-booking summary small{display:block;font-size:10px;line-height:1.25;margin-top:2px}
.booking-pending{border-left:4px solid #e8b638!important;background:#fffdf4!important}
.booking-accepted{border-left:4px solid #16a34a!important;background:#e8ffef!important}
.booking-rejected{border-left:4px solid #ef4438!important;background:#fff0ee!important}
.booking-detail{position:relative;z-index:2;min-width:180px;padding:7px 2px 2px;border-top:1px solid #e8edf0;margin-top:6px;white-space:normal}
.booking-detail p{font-size:10px;line-height:1.35;margin:4px 0;overflow-wrap:anywhere}
.booking-detail .reservation-actions{display:flex;gap:5px;flex-wrap:wrap;margin-top:7px}
.booking-detail .reservation-actions form{margin:0}
.booking-detail .button{font-size:10px;min-height:28px;padding:5px 7px}
.booking-detail .link-danger{font-size:10px}
.accepted-note{font-size:10px;color:#075c2b;font-weight:700}
.rejected-note{font-size:10px;color:#a31610;font-weight:700}
.week-table .slot-rejected{background:#ffe0dd}
.calendar-instruction{font-size:12px;margin-top:10px}
@media(max-width:650px){.booking-detail{min-width:150px}}

/* V6 : couleurs de statut nettes et blocs fusionnés par réservation */
.merged-week-table{min-width:980px}
.merged-week-table>tbody>tr>th.hours-column{width:62px;padding:0;vertical-align:top}
.hours-column div{height:42px;display:flex;align-items:flex-start;justify-content:center;padding-top:3px;border-bottom:1px solid #edf0f2;font-size:10px}
.day-calendar-cell{padding:0!important;vertical-align:top!important}
.day-calendar{--row-height:42px;display:grid;grid-template-columns:repeat(var(--lanes),minmax(0,1fr));grid-template-rows:repeat(24,var(--row-height));gap:2px;min-width:95px;position:relative;background:repeating-linear-gradient(to bottom,#fff 0, #fff calc(var(--row-height) - 1px),#e9eef2 calc(var(--row-height) - 1px),#e9eef2 var(--row-height))}
.calendar-event{position:relative;min-width:0;margin:1px;border-radius:6px;border:1px solid transparent;overflow:visible;z-index:1;font-size:10px}
.calendar-event[open]{z-index:10;overflow:visible}
.calendar-event summary{list-style:none;cursor:pointer;padding:4px;height:100%;overflow:hidden}
.calendar-event summary::-webkit-details-marker{display:none}
.calendar-event summary strong,.calendar-event summary span,.calendar-event summary small,.calendar-event summary em{display:block;overflow-wrap:anywhere;line-height:1.25}
.calendar-event summary strong{font-size:10px}
.calendar-event summary span{font-size:9px}
.calendar-event summary small{font-size:9px}
.calendar-event summary em{font-style:normal;font-size:8px;font-weight:800;margin-top:2px}
.event-pending{background:#fff0b8;border-color:#e4bd48;color:#755000}
.event-accepted{background:#baf2cb;border-color:#16a34a;color:#075c2b}
.event-rejected{background:#ffc2bd;border-color:#ef4438;color:#a31610}
.event-details{position:absolute;top:0;left:calc(100% + 6px);min-width:220px;max-width:300px;width:max-content;background:#fff;border:1px solid #cbd6dc;border-radius:9px;box-shadow:0 8px 24px #142b3b30;padding:10px;z-index:30;color:#263946;overflow:visible}
.calendar-event:nth-last-child(-n+2) .event-details{left:auto;right:calc(100% + 6px)}
.event-details p{font-size:11px;margin:4px 0;line-height:1.35;overflow-wrap:anywhere}
.event-details .reservation-actions{display:flex;gap:6px;flex-wrap:wrap;margin:8px 0}
.edit-reservation{border-top:1px solid #e6ecef;padding-top:7px;margin-top:7px}
.edit-reservation>summary{cursor:pointer;color:var(--blue);font-weight:800;font-size:11px}
.edit-reservation-form{display:grid;gap:4px;margin-top:8px}
.edit-reservation-form label{font-size:10px;margin:3px 0 0}
.edit-reservation-form input{font-size:11px;min-height:34px;padding:6px;margin:0}
.edit-reservation-form .button{margin-top:6px}
.calendar-instruction{font-size:12px;margin-top:10px}
@media(max-width:650px){.day-calendar{--row-height:38px}.hours-column div{height:38px}.event-details{min-width:190px;max-width:230px}}

/* V8: actions pour passer librement entre les trois statuts */
.status-actions{gap:5px;flex-wrap:wrap}
.status-actions form{margin:0}
.status-actions .button{font-size:10px;padding:6px 8px;min-height:30px}
.status-actions .action-pending{background:#fff0b8;color:#755000}
.status-actions .button:disabled{opacity:.55;cursor:default;box-shadow:none}

/* V9 : accès bureau et administrateur */
.access-strip{display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-size:13px}
.admin-lock{margin:8px 0 2px;font-size:12px}
