:root{
  --bg:#F7F9FA; --panel:#FFFFFF; --ink:#1C2B33; --ink-muted:#6B7C85;
  --line:#E2E9EC; --line-strong:#C7D3D8;
  --repos-bg:#ECEEEA; --danger:#B14A3D;
  --accent:#1E6E8C; --accent-dark:#155670; --accent-tint:#E3F0F5;
  --cat-principal-bg:#E3E8EE; --cat-principal-fg:#33415C;
  --cat-secondaire-bg:#D8ECEF; --cat-secondaire-fg:#1E6E8C;
  --cat-bloc-bg:#FBD8C8; --cat-bloc-fg:#9C4A22;
  --cat-repos-bg:#ECEEEA; --cat-repos-fg:#767F73;
  --ophtalmo:#33415C; --ophtalmo-tint:#E4E8EF;
  --ortho:#3E8073; --ortho-tint:#DFEEEA;
  --secretaire:#B9793A; --secretaire-tint:#F3E7D8;
  --responsable:#6B4E71; --responsable-tint:#EDE4EE;
  --resp-admin:#2B6E77; --resp-admin-tint:#DCEFF1;
  --admin-role:#8C2F39; --admin-role-tint:#F3DCE0;
}
*{box-sizing:border-box;}
html,body{margin:0;padding:0;}
body{font-family: ui-sans-serif,"IBM Plex Sans","Segoe UI",Helvetica,Arial,sans-serif;color:var(--ink);padding:24px;background:var(--bg);}
.wrap{max-width:1180px;margin:0 auto;}
h1{font-family: ui-serif,"Iowan Old Style","Palatino Linotype",Georgia,serif;font-size:27px;font-weight:600;letter-spacing:-0.01em;margin:0;}
h2{font-size:16px;font-weight:700;margin:0 0 10px 0;}
h3{font-size:13.5px;font-weight:700;margin:18px 0 8px 0;color:var(--ink);}
.subtitle{font-size:11px;color:var(--ink-muted);margin-top:5px;text-transform:uppercase;letter-spacing:.12em;}
.meta{font-size:12.5px;color:var(--ink-muted);}
.cabinet-name{font-size:14px;color:var(--ink-muted);border:none;background:transparent;border-bottom:1px solid var(--line-strong);padding:2px 0;width:220px;font-family:inherit;margin-top:10px;}
.cabinet-name:focus{outline:none;border-bottom-color:var(--ink);}

.titlebar{display:flex;align-items:center;gap:14px;}
.logo-circle{width:46px;height:46px;border-radius:50%;background:linear-gradient(135deg,#1E6E8C,#5FAFC4);display:flex;align-items:center;justify-content:center;font-size:20px;flex-shrink:0;box-shadow:0 1px 3px rgba(0,0,0,.12);}

header{background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:18px 20px 0 20px;display:flex;flex-direction:column;gap:14px;margin-bottom:18px;box-shadow:0 1px 3px rgba(20,30,20,.04);}
.header-top{display:flex;justify-content:space-between;align-items:flex-start;flex-wrap:wrap;gap:14px;padding-bottom:16px;}
.whoami{display:flex;align-items:center;gap:8px;font-size:12.5px;color:var(--ink-muted);position:relative;}
.notif-badge{position:absolute;top:-4px;right:-4px;background:var(--danger);color:#fff;font-size:9.5px;font-weight:700;border-radius:999px;padding:1px 5px;line-height:1.3;}
.login-gate{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:20px;}
.login-card{background:var(--panel);border:1px solid var(--line);border-radius:16px;padding:32px 28px;width:100%;max-width:340px;box-shadow:0 10px 30px rgba(0,0,0,.08);}
.login-card input{width:100%;padding:10px 12px;border:1px solid var(--line);border-radius:8px;font-size:14px;}
.login-error{color:var(--danger);font-size:12.5px;font-weight:600;margin-top:10px;text-align:center;}
.welcome-toast{position:fixed;top:18px;left:50%;transform:translateX(-50%);background:var(--accent-dark);color:#fff;font-weight:600;font-size:14px;padding:12px 22px;border-radius:999px;box-shadow:0 8px 24px rgba(0,0,0,.18);z-index:100;animation:welcomeFade 3.5s ease forwards;}
@keyframes welcomeFade{ 0%{opacity:0;transform:translateX(-50%) translateY(-10px);} 10%{opacity:1;transform:translateX(-50%) translateY(0);} 85%{opacity:1;} 100%{opacity:0;} }
.notif-panel{position:absolute;top:calc(100% + 6px);right:0;background:var(--panel);border:1px solid var(--line);border-radius:10px;box-shadow:0 6px 20px rgba(0,0,0,.12);padding:12px;width:320px;max-height:400px;overflow:auto;z-index:50;text-align:left;}
.notif-item{padding:7px 0;border-bottom:1px solid var(--line);font-size:12px;}
.notif-item:last-child{border-bottom:none;}
.notif-item.unread{font-weight:700;}
.bourse-card{background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:14px 16px;margin-bottom:12px;}
.bourse-card .offer-row{display:flex;justify-content:space-between;align-items:center;padding:5px 0;font-size:12.5px;border-top:1px solid var(--line);margin-top:6px;}
.whoami select{font-family:inherit;font-size:13px;padding:6px 10px;border-radius:999px;border:1px solid var(--line-strong);background:var(--panel);}
.whoami .pill{background:var(--accent);color:#fff;font-size:11px;font-weight:600;padding:3px 10px;border-radius:999px;}

nav.tabs{display:flex;gap:22px;flex-wrap:wrap;border-top:1px solid var(--line);padding:12px 0;margin:0;}
nav.tabs button{border:none;background:transparent;padding:7px 4px;font-size:13.5px;font-family:inherit;cursor:pointer;color:var(--ink-muted);border-radius:0;font-weight:500;}
nav.tabs button.active{color:#fff;font-weight:600;background:var(--accent);padding:7px 16px;border-radius:999px;}
nav.tabs button:hover:not(.active){color:var(--ink);}

.subtabs{display:flex;gap:8px;margin-bottom:16px;align-items:center;flex-wrap:wrap;}
.filter-cat-label{font-size:10.5px;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--ink-muted);margin-right:2px;flex-shrink:0;}
#versionBadge{position:fixed;bottom:10px;right:14px;font-size:10.5px;color:var(--ink-muted);background:var(--panel);border:1px solid var(--line);border-radius:999px;padding:4px 10px;box-shadow:0 1px 3px rgba(20,30,20,.08);z-index:40;cursor:default;}
.aligned-table{table-layout:fixed;width:auto;min-width:0;}
.subtabs button{border:1px solid var(--line-strong);background:var(--panel);padding:7px 14px;border-radius:999px;font-size:13px;font-family:inherit;cursor:pointer;color:var(--ink-muted);}
.subtabs button.active{background:var(--ink);color:#fff;border-color:var(--ink);}

.panel{display:none;}
.panel.active{display:block;}
.subpanel{display:none;}
.subpanel.active{display:block;}

button{font-family:inherit;font-size:13.5px;cursor:pointer;border-radius:8px;border:1px solid var(--line-strong);background:var(--panel);color:var(--ink);padding:8px 14px;transition:background .12s ease,transform .05s ease;}
button:hover{background:#F6F7F4;}
button:active{transform:scale(0.98);}
button.primary{background:var(--accent);color:#fff;border-color:var(--accent);}
button.primary:hover{background:var(--accent-dark);}
button.ghost{border-color:transparent;background:transparent;color:var(--ink-muted);}
button.ghost:hover{color:var(--danger);}
button.small{padding:4px 9px;font-size:11.5px;}
button:disabled{opacity:.5;cursor:default;}

input[type=text],input[type=date],input[type=tel],input[type=password],select,textarea{font-family:inherit;font-size:13.5px;padding:8px 10px;border:1px solid var(--line-strong);border-radius:8px;background:var(--panel);color:var(--ink);}
textarea{width:100%;resize:vertical;min-height:50px;}

.card{background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:14px;box-shadow:0 1px 3px rgba(20,30,20,.03);}
.grid-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:12px;}

.legend{display:flex;gap:16px;flex-wrap:wrap;font-size:12.5px;color:var(--ink-muted);margin:2px 0 16px 0;padding:10px 14px;background:var(--panel);border:1px solid var(--line);border-radius:10px;}
.legend-item{display:flex;align-items:center;gap:6px;}
.swatch{width:16px;height:16px;border-radius:6px;flex-shrink:0;}
.swatch.principal{background:var(--cat-principal-bg);border:1px solid var(--cat-principal-fg);}
.swatch.secondaire{background:var(--cat-secondaire-bg);border:1px solid var(--cat-secondaire-fg);}
.swatch.bloc{background:var(--cat-bloc-bg);border:1px solid var(--cat-bloc-fg);}
.swatch.repos{background:var(--cat-repos-bg);border:1px solid var(--line-strong);}
.dot-flag{width:7px;height:7px;border-radius:50%;background:var(--danger);display:inline-block;}

.week-nav{display:flex;align-items:center;gap:10px;margin-bottom:12px;flex-wrap:wrap;}
.week-nav .label{font-size:13.5px;font-weight:600;}

.table-scroll{overflow-x:auto;border:1px solid var(--line);border-radius:14px;background:var(--panel);}
table{border-collapse:collapse;width:100%;min-width:760px;}
thead th{font-size:10.5px;font-weight:600;color:var(--ink-muted);text-align:center;padding:10px 4px;border-bottom:1px solid var(--line);background:var(--panel);text-transform:uppercase;letter-spacing:.06em;}
thead .weekend{background:#FBF3E7;}
thead .today{background:var(--accent-tint);color:var(--accent-dark);}
tbody tr:nth-child(even) td.member-col{background:#FAFBF8;}
tbody tr.my-row td{background:#FBF0F1;}
tbody tr.my-row td.member-col{background:#F8E7E9;}
th.member-col,td.member-col{position:sticky;left:0;background:var(--panel);text-align:left;padding:9px 12px;border-bottom:1px solid var(--line);border-right:1px solid var(--line);min-width:160px;z-index:2;}
.staff-name{font-size:13.5px;font-weight:600;}
.role-tag{display:inline-block;font-size:10.5px;font-weight:600;padding:1px 7px;border-radius:999px;margin-top:3px;}
.role-tag.Ophtalmologue{background:var(--ophtalmo-tint);color:var(--ophtalmo);}
.role-tag.Orthoptiste{background:var(--ortho-tint);color:var(--ortho);}
.role-tag.Secrétaire{background:var(--secretaire-tint);color:var(--secretaire);}
.role-tag.Responsable{background:var(--responsable-tint);color:var(--responsable);}
.role-tag.Responsable-de-centre{background:var(--responsable-tint);color:var(--responsable);}
.role-tag.Responsable-administrative{background:var(--resp-admin-tint);color:var(--resp-admin);}
.role-tag.Administrateur{background:var(--admin-role-tint);color:var(--admin-role);}
.row-actions{float:right;}

td.cell{border-bottom:1px solid var(--line);border-left:1px solid var(--line);padding:3px;text-align:center;width:56px;height:44px;position:relative;}
td.cell.weekend{background:#FCF6EC;}
td.cell.today{background:#F2FAF5;}
td.cell.dim{opacity:.25;}
td.cell.unavailable{background:#EAEAEA;}
.unavailable-placeholder{font-size:11px;color:var(--ink-muted);font-weight:600;text-align:center;padding:8px 2px;}
select.cell-select{width:100%;height:100%;border:none;border-radius:7px;text-align:center;font-size:11px;font-weight:600;font-family:inherit;cursor:pointer;appearance:none;-webkit-appearance:none;padding:0 2px;background:transparent;color:var(--ink-muted);}
select.cell-select.cat-principal{background:var(--cat-principal-bg);color:var(--cat-principal-fg);}
select.cell-select.cat-secondaire{background:var(--cat-secondaire-bg);color:var(--cat-secondaire-fg);}
select.cell-select.cat-bloc{background:var(--cat-bloc-bg);color:var(--cat-bloc-fg);}
select.cell-select.cat-repos{background:var(--cat-repos-bg);color:var(--cat-repos-fg);}
.cell-readonly{width:100%;height:100%;min-height:26px;display:flex;align-items:center;justify-content:center;border-radius:7px;font-size:11px;font-weight:600;padding:4px 2px;color:var(--ink-muted);}
.cell-readonly.cat-principal{background:var(--cat-principal-bg);color:var(--cat-principal-fg);}
.cell-readonly.cat-secondaire{background:var(--cat-secondaire-bg);color:var(--cat-secondaire-fg);}
.cell-readonly.cat-bloc{background:var(--cat-bloc-bg);color:var(--cat-bloc-fg);}
.cell-readonly.cat-repos{background:var(--cat-repos-bg);color:var(--cat-repos-fg);}
.flag-dot{position:absolute;top:3px;right:3px;}
tfoot td{padding:8px 6px;text-align:center;font-size:11.5px;color:var(--ink-muted);border-top:1px solid var(--line-strong);font-variant-numeric:tabular-nums;}
tfoot td.member-col{text-align:left;font-weight:600;color:var(--ink);}

.add-panel{margin-top:14px;background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:14px;display:flex;gap:10px;flex-wrap:wrap;align-items:center;}
.add-panel input,.add-panel select{flex:1;min-width:140px;}

.status-bar{margin-top:12px;font-size:12px;color:var(--ink-muted);display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:6px;}

.list-item{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:10px 12px;border-bottom:1px solid var(--line);flex-wrap:wrap;}
.list-item:last-child{border-bottom:none;}
.list-item .meta{font-size:12.5px;color:var(--ink-muted);}
.badge{font-size:10.5px;font-weight:600;padding:2px 8px;border-radius:999px;background:var(--repos-bg);color:var(--ink-muted);}
.badge.ouvert{background:#FBEAD9;color:#8a5426;}
.badge.pourvu{background:var(--ortho-tint);color:var(--ortho);}

.trombi-card{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:16px;text-align:center;}
.trombi-card.role-Orthoptiste, .poste-chip.role-Orthoptiste{background:var(--ortho-tint);border-color:var(--ortho);}
.trombi-card.role-Secrétaire, .poste-chip.role-Secrétaire{background:var(--secretaire-tint);border-color:var(--secretaire);}
.trombi-card.role-Responsable-de-centre, .poste-chip.role-Responsable-de-centre{background:var(--responsable-tint);border-color:var(--responsable);}
.trombi-card.role-Responsable-administrative, .poste-chip.role-Responsable-administrative{background:var(--resp-admin-tint);border-color:var(--resp-admin);}
.trombi-card.role-Administrateur{background:var(--admin-role-tint);border-color:var(--admin-role);}
.avatar{font-size:40px;line-height:1;margin-bottom:8px;cursor:pointer;user-select:none;}
.tagline-input{width:100%;margin-top:8px;text-align:center;}

.ai-box{margin-top:16px;padding:14px;border:1px dashed var(--line-strong);border-radius:10px;background:#FAFBF9;}
.ai-lines{font-size:12.5px;line-height:1.6;max-height:200px;overflow:auto;background:var(--panel);border:1px solid var(--line);border-radius:8px;padding:10px;margin:10px 0;}
.empty-hint{font-size:13px;color:var(--ink-muted);padding:16px;text-align:center;}

#homeTable{border-collapse:collapse;width:100%;}
#homeTable th{font-size:11px;font-weight:600;color:var(--ink-muted);text-transform:none;letter-spacing:0;padding:8px 6px;border-bottom:1px solid var(--line);text-align:center;line-height:1.5;}
#homeTable td{border-bottom:1px solid var(--line);padding:6px;text-align:center;font-size:11px;}
#homeTable tr.today td{background:var(--accent-tint);}

.site-table td, .site-table th{vertical-align:top;}
.site-name{text-align:center;font-size:20px;}
.rotation-badge{background:var(--accent-tint);color:var(--accent);font-weight:700;font-size:12.5px;padding:4px 12px;border-radius:999px;}
#readOnlyBanner{background:#F3E7D8;color:#8a5426;font-weight:600;font-size:12.5px;text-align:center;padding:7px 12px;}
.poste-cell{min-width:150px;padding:6px;text-align:left;vertical-align:top;}
.poste-chip{background:#FAFBF8;border:1px solid var(--line);border-radius:7px;padding:5px 7px;font-size:11.5px;margin-bottom:5px;display:flex;justify-content:space-between;align-items:flex-start;gap:6px;}
.poste-chip.mine{box-shadow:inset 3px 0 0 var(--accent);}
.doc-badge{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;border-radius:50%;border:1px solid;font-size:10px;margin-right:4px;vertical-align:-3px;}
.poste-chip .info b{display:block;font-size:11.5px;}
.poste-chip .info span{color:var(--ink-muted);font-size:10.5px;}
.poste-chip.no-doctor{border:1.5px dashed #C7833B;}
.no-doctor-label{display:block;color:#8a5426!important;font-weight:700;font-size:10px!important;}
.poste-group{border-radius:8px;padding:5px 7px 6px;margin-bottom:6px;border:1px solid var(--line);}
.poste-group-head{display:flex;align-items:center;gap:2px;font-size:11px;font-weight:700;margin-bottom:4px;padding-bottom:3px;border-bottom:1px solid rgba(0,0,0,.08);}
.poste-row{display:flex;justify-content:space-between;align-items:flex-start;gap:6px;padding:2px 0;}
.poste-row.mine{box-shadow:inset 3px 0 0 var(--accent);padding-left:4px;}
.poste-row .info b{display:block;font-size:11.5px;}
.poste-row .info span{color:var(--ink-muted);font-size:10.5px;}
.role-dot{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:5px;vertical-align:1px;flex-shrink:0;}
.unavailable-note{background:#ECECEC;color:#5b5b5b;border:1px solid #d9d9d9;border-radius:6px;padding:3px 6px;font-size:10.5px;font-weight:600;margin-bottom:5px;}
.desid-status{font-size:10.5px;font-weight:700;padding:2px 8px;border-radius:999px;margin-left:6px;}
.desid-status.validated{background:var(--ortho-tint);color:var(--ortho);}
.desid-status.pending{background:#F3E7D8;color:#8a5426;}
.add-poste-btn{width:100%;font-size:11px;padding:4px 6px;margin-top:2px;}

.types-panel{margin-top:10px;padding:14px;border:1px solid var(--line);border-radius:10px;background:#FAFBF9;}
.types-row{display:flex;gap:8px;align-items:center;padding:5px 0;border-bottom:1px solid var(--line);flex-wrap:wrap;}
.types-row:last-child{border-bottom:none;}

.modal-overlay{display:none;position:fixed;inset:0;background:rgba(20,30,20,.35);align-items:center;justify-content:center;z-index:50;}
.modal-overlay.active{display:flex;}
.modal-box{background:var(--panel);border-radius:12px;padding:20px;max-width:420px;width:92%;box-shadow:0 8px 30px rgba(0,0,0,.2);}
.modal-box h2{margin-bottom:14px;}
.modal-field{display:flex;flex-direction:column;gap:4px;margin-bottom:12px;}
.modal-field label{font-size:12px;color:var(--ink-muted);}
.modal-actions{display:flex;gap:8px;justify-content:flex-end;margin-top:16px;}

@media print{
  @page{ size:A4 landscape; margin:8mm; }
  body{ background:#fff; }
  #loginGate, header, nav.tabs, #readOnlyBanner, .status-bar, #versionBadge, #notifPanel,
  .week-nav button, #btnPrintPlanning, #btnAdd, #addPanel, .row-actions,
  [data-del-slot], [data-remove], .add-poste-btn, #roleFiltersRow, #placeFiltersRow{ display:none !important; }
  .panel{ display:none !important; }
  .panel.active{ display:block !important; }
  .site-table{ page-break-inside:auto; }
  .site-table tr{ page-break-inside:avoid; }
  .poste-cell{ page-break-inside:avoid; }
}
