:root{--bg:#f6f7fb;--surface:#fff;--text:#1a1f2b;--text-muted:#667085;--border:#e3e6ec;--accent:#2f6feb;--accent-hover:#2456bf;--accent-soft:#eaf1ff;--error:#dc2626;--error-soft:#fdecea;--radius-sm:6px;--radius-md:10px;--shadow-sm:0 1px 2px #1018280f;--shadow-md:0 6px 20px #10182814;--sector-ambulatoire:#2f6feb;--sector-ambulatoire-night:#16326b;--sector-couche:#8b5cf6;--sector-couche-night:#3f2670;--sector-reanimation:#e11d48;--sector-reanimation-night:#6a0f24;--sector-observation:#0d9488;--sector-observation-night:#0a4a44;--sector-smur:#ea580c;--sector-smur-night:#7c2d12;--sector-azc:#64748b;--sector-azc-night:#2a3342;--sector-astreinte:#ca8a04;--sector-astreinte-night:#5c4108;color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased;font:15px/1.55 -apple-system,BlinkMacSystemFont,Segoe UI,Inter,Roboto,sans-serif}*{box-sizing:border-box}body{margin:0}h1{letter-spacing:-.02em;margin:0 0 4px;font-size:26px;font-weight:650}h2{margin:28px 0 8px;font-size:17px;font-weight:650}h3{margin:0;font-size:15px;font-weight:650}a{color:var(--accent)}.page{max-width:1080px;margin:0 auto;padding:32px 20px 64px}.page--wide{max-width:none}.auth-page{background:linear-gradient(160deg, var(--bg) 0%, #eef2fb 100%);justify-content:center;align-items:center;min-height:100svh;padding:16px;display:flex}.auth-form{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);width:100%;max-width:380px;box-shadow:var(--shadow-md);flex-direction:column;gap:14px;padding:36px;display:flex}.auth-form h1{margin-bottom:8px}.auth-form label{color:var(--text-muted);flex-direction:column;gap:6px;font-size:13px;font-weight:600;display:flex}.auth-form button{margin-top:8px}.form-error{color:var(--error);background:var(--error-soft);border-radius:var(--radius-sm);padding:8px 10px;font-size:13px}button{font:inherit}button:not(.link-button):not(.tab){background:var(--accent);color:#fff;border-radius:var(--radius-sm);cursor:pointer;border:none;padding:8px 16px;font-size:14px;font-weight:550;transition:background-color .15s,transform 50ms}button:not(.link-button):not(.tab):hover{background:var(--accent-hover)}button:not(.link-button):not(.tab):active{transform:translateY(1px)}button:disabled{opacity:.55;cursor:not-allowed}input,select{font:inherit;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);color:var(--text);padding:7px 10px}input:focus,select:focus,button:focus-visible{outline:2px solid var(--accent-soft);outline-offset:1px;border-color:var(--accent)}.navbar{background:var(--surface);border-bottom:1px solid var(--border);box-shadow:var(--shadow-sm);z-index:10;flex-wrap:wrap;align-items:center;gap:22px;padding:14px 28px;display:flex;position:sticky;top:0}.navbar .brand{letter-spacing:-.01em;color:var(--accent);border-right:1px solid var(--border);align-self:stretch;align-items:center;gap:9px;margin-right:4px;padding:0 20px 0 0;font-size:16px;font-weight:700;text-decoration:none;display:flex}.navbar .brand:hover{color:var(--accent-hover);border-bottom-color:#0000}.brand-logo{width:22px;height:22px;display:block}.navbar a{color:var(--text-muted);border-bottom:2px solid #0000;padding:6px 2px;font-size:14px;font-weight:550;text-decoration:none;transition:color .15s,border-color .15s}.navbar a:hover{color:var(--text);border-bottom-color:var(--border)}.navbar-spacer{flex:1}.link-button{color:var(--text-muted);cursor:pointer;background:0 0;border:none;padding:0;font-size:14px;font-weight:550}.link-button:hover{color:var(--text)}.page-header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;margin-bottom:8px;display:flex}.button-link{background:var(--accent);color:#fff;border-radius:var(--radius-sm);padding:8px 16px;font-size:14px;font-weight:550;text-decoration:none}.button-link:hover{background:var(--accent-hover)}.tabs{background:var(--bg);border-radius:var(--radius-sm);gap:4px;padding:4px;display:flex}.tab{border-radius:var(--radius-sm);cursor:pointer;color:var(--text-muted);background:0 0;border:none;padding:6px 14px;font-weight:550}.tab.active{background:var(--surface);color:var(--text);box-shadow:var(--shadow-sm)}.data-table{border-collapse:separate;border-spacing:0;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);width:100%;box-shadow:var(--shadow-sm);margin-top:16px;font-size:14px;overflow:hidden}.data-table th,.data-table td{text-align:left;border-bottom:1px solid var(--border);padding:10px 14px}.data-table th{background:var(--bg);text-transform:uppercase;letter-spacing:.04em;color:var(--text-muted);font-size:12px;font-weight:650}.data-table tbody tr:last-child td{border-bottom:none}.data-table tbody tr:hover{background:var(--bg)}.data-table .row-error{background:var(--error-soft)}.data-table .row-error:hover{background:#fbdedb}.data-table .row-inactive{opacity:.5}.inline-form{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);flex-wrap:wrap;align-items:flex-end;gap:14px;margin:14px 0;padding:14px 16px;display:flex}.inline-form label{color:var(--text-muted);flex-direction:column;gap:5px;font-size:13px;font-weight:600;display:flex}.inline-form button{height:fit-content}.hint{color:var(--text-muted);font-size:13px}.badge{background:var(--error);color:#fff;text-align:center;border-radius:9px;min-width:18px;margin-left:4px;padding:0 5px;font-size:11px;font-weight:700;line-height:18px;display:inline-block}.schedule-filters{margin-top:16px}.day-groups{flex-direction:column;gap:16px;margin-top:20px;display:flex}.day-group{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);box-shadow:var(--shadow-sm);padding:14px 18px}.day-group-header{color:var(--text);border-bottom:1px solid var(--border);text-transform:capitalize;margin-bottom:10px;padding-bottom:10px}.shift-chip-list{flex-wrap:wrap;gap:8px;display:flex}.shift-chip{border-radius:var(--radius-sm);color:#fff;background:var(--sector-azc);box-shadow:var(--shadow-sm);align-items:center;gap:8px;padding:7px 12px;font-size:13px;display:flex}.shift-chip-time{white-space:nowrap;font-weight:700}.shift-chip-name{font-weight:550}.shift-chip-doctor{opacity:.9;font-style:italic}.shift-chip-unfilled{text-transform:uppercase;letter-spacing:.03em;background:#ffffff40;border-radius:4px;padding:1px 6px;font-size:11px}.week-nav{flex-wrap:wrap;align-items:center;gap:14px;margin:14px 0;display:flex}.schedule-grid-wrap{border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface);box-shadow:var(--shadow-sm);overflow-x:auto}.schedule-grid{border-collapse:collapse;width:100%;font-size:13px}.schedule-grid th,.schedule-grid td{border:1px solid var(--border);vertical-align:top;min-width:108px;padding:5px 7px}.schedule-grid thead th{background:var(--bg);white-space:nowrap;font-weight:650;position:sticky;top:0}.schedule-grid th.weekend,.schedule-grid td.weekend{background:#eef0f6}.schedule-grid .shift-col{background:var(--surface);text-align:left;z-index:1;min-width:165px;max-width:230px;font-weight:600;position:sticky;left:0}.schedule-grid thead .shift-col{background:var(--bg);z-index:2}.grid-cell-doctor{color:#fff;white-space:nowrap;background:var(--sector-azc);border-radius:4px;margin:2px 0;padding:2px 7px;display:block}.grid-cell-doctor.dimmed{opacity:.18}.grid-unfilled{color:var(--error);padding:2px 0;font-size:12px;font-style:italic;display:block}.calendar-grid{table-layout:fixed}.calendar-grid th,.calendar-grid td{width:14.28%;min-width:0}.calendar-grid td{height:86px}.calendar-day-number{color:var(--text-muted);margin-bottom:3px;font-size:11px;font-weight:650;display:block}.calendar-grid .grid-cell-doctor{white-space:normal;font-size:12px;line-height:1.35}td.calendar-off{background:var(--bg)}.grid-absence{color:var(--text);background:repeating-linear-gradient(45deg,#e9ecf3,#e9ecf3 6px,#f5f7fa 6px 12px);border:1px dashed #b8bfcc;border-radius:4px;margin:2px 0;padding:2px 7px;font-size:12px;display:block}.shift-chip.absence-chip{color:var(--text);box-shadow:none;background:repeating-linear-gradient(45deg,#e9ecf3,#e9ecf3 6px,#f5f7fa 6px 12px);border:1px dashed #b8bfcc}.data-table th.sortable{cursor:pointer;-webkit-user-select:none;user-select:none;white-space:nowrap}.data-table th.sortable:hover{color:var(--accent)}.free-form-field{flex:100%}.free-form-field textarea{font:inherit;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);color:var(--text);resize:vertical;padding:7px 10px}.swap-description{white-space:pre-wrap;max-width:420px}.filter-count{color:var(--text-muted);white-space:nowrap;align-self:center;font-size:13px}.checkbox-inline{align-items:center;gap:7px;display:inline-flex;flex-direction:row!important}.shift-chip--ambulatoire{background:var(--sector-ambulatoire)}.shift-chip--ambulatoire-night{background:var(--sector-ambulatoire-night)}.shift-chip--couche{background:var(--sector-couche)}.shift-chip--couche-night{background:var(--sector-couche-night)}.shift-chip--reanimation{background:var(--sector-reanimation)}.shift-chip--reanimation-night{background:var(--sector-reanimation-night)}.shift-chip--observation{background:var(--sector-observation)}.shift-chip--observation-night{background:var(--sector-observation-night)}.shift-chip--smur{background:var(--sector-smur)}.shift-chip--smur-night{background:var(--sector-smur-night)}.shift-chip--azc{background:var(--sector-azc)}.shift-chip--azc-night{background:var(--sector-azc-night)}.shift-chip--astreinte{background:var(--sector-astreinte)}.shift-chip--astreinte-night{background:var(--sector-astreinte-night)}.legend{border-top:1px solid var(--border);color:var(--text-muted);flex-wrap:wrap;gap:16px;margin-top:20px;padding-top:14px;font-size:12px;display:flex}.legend-item{align-items:center;gap:5px;display:inline-flex}.legend-swatch{border-radius:3px;width:12px;height:12px;display:inline-block}.stat-cards{flex-wrap:wrap;gap:12px;margin:14px 0;display:flex}.stat-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);min-width:140px;box-shadow:var(--shadow-sm);flex-direction:column;gap:4px;padding:14px 18px;display:flex}.stat-card-value{letter-spacing:-.02em;font-size:24px;font-weight:700}.stat-card-label{color:var(--text-muted);font-size:12px}.sector-count-chip{background:var(--bg);border:1px solid var(--border);white-space:nowrap;border-radius:999px;margin:2px 4px 2px 0;padding:2px 8px;font-size:12px;display:inline-block}
