:root{font-family:Inter,ui-sans-serif,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:#18243a;background:#f8fafc;font-synthesis:none}*{box-sizing:border-box}body{margin:0}.shell{max-width:1360px;margin:auto;padding:36px 28px 24px}.header{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:34px}.eyebrow{font-size:11px;letter-spacing:.12em;font-weight:750;color:#64748b}.header h1{font-size:32px;letter-spacing:-.045em;margin:8px 0}.subhead{margin:0;color:#64748b;font-size:14px}.status{white-space:nowrap;background:white;border:1px solid #e2e8f0;padding:10px 13px;border-radius:999px;font-size:12px;color:#475569;display:flex;gap:8px;align-items:center}.status-dot{width:8px;height:8px;border-radius:50%;background:#94a3b8}.status.online .status-dot{background:#16a34a}.status.offline .status-dot{background:#ef4444}.toolbar{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px;gap:16px}.range{font-size:20px;font-weight:750;letter-spacing:-.03em}.micro{font-size:12px;color:#64748b;margin-top:5px}.navigation{display:flex;align-items:center;gap:8px}button{font:inherit;cursor:pointer}button:disabled{opacity:.42;cursor:not-allowed}.navbtn,.todaybtn{background:white;border:1px solid #e2e8f0;color:#334155;border-radius:9px;height:36px;padding:0 14px;font-size:13px;font-weight:650}.navbtn{font-size:24px;width:37px;padding:0}.navbtn:hover:not(:disabled),.todaybtn:hover:not(:disabled){background:#f1f5f9}.legend{display:flex;gap:19px;font-size:12px;color:#64748b;margin:0 0 13px}.legend span{display:flex;align-items:center;gap:6px}.swatch{width:12px;height:12px;border-radius:3px;display:inline-block}.swatch.available{background:#f1f5f9}.swatch.reserved{background:#d9f5e7}.swatch.past{background:#e2e8f0}.calendar-wrap{overflow-x:auto;border:1px solid #e2e8f0;border-radius:14px;background:white;box-shadow:0 8px 28px rgba(18,38,63,.04)}.calendar{min-width:685px}.calendar-head,.time-row{display:grid;grid-template-columns:88px repeat(7,minmax(0,1fr))}.calendar-head{position:sticky;top:0;background:white;z-index:2;border-bottom:1px solid #e2e8f0}.headcell{padding:16px 5px;text-align:center;border-left:1px solid #f1f5f9}.headcell:first-child{border-left:0}.head-day{font-size:11px;color:#64748b;text-transform:uppercase;font-weight:700}.head-date{font-size:20px;font-weight:750;margin-top:3px}.headcell.is-today .head-date{display:inline-flex;align-items:center;justify-content:center;background:#1d4ed8;color:white;width:34px;height:34px;border-radius:50%}.time-label{display:flex;align-items:flex-start;justify-content:center;padding-top:8px;font-size:11px;color:#94a3b8;font-variant-numeric:tabular-nums;border-top:1px solid #f1f5f9}.slot{height:39px;min-width:0;border:1px solid #fff;background:#f8fafc;color:#166534;border-radius:7px;transition:background .12s;display:flex;align-items:center;justify-content:center;margin:2px 3px;padding:2px 4px;font-size:11px;font-weight:700;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.slot:not(:disabled):hover{background:#e0efff}.slot.booked{background:#dcfce7;color:#166534}.slot.booked:not(:disabled):hover{background:#bbf7d0}.slot.elapsed{background:#f1f5f9;color:#94a3b8}.slot:focus-visible{outline:2px solid #2563eb;outline-offset:-2px}.slot span{overflow:hidden;text-overflow:ellipsis}.separator{display:flex;align-items:center;justify-content:space-between;background:#f1f5f9;color:#475569;border-top:1px solid #e2e8f0;border-bottom:1px solid #e2e8f0;padding:12px 17px;font-weight:700;font-size:12px;width:100%;text-align:left}.separator:hover{background:#e2e8f0}.separator small{color:#64748b;font-size:11px;font-weight:500}.late .time-label{align-items:center;padding:0;font-size:10px}.late .slot{height:45px}.notice{padding:14px 16px;margin-bottom:22px;background:#fff7ed;border:1px solid #fed7aa;border-radius:10px;font-size:13px;color:#9a3412}.hidden{display:none!important}footer{text-align:center;font-size:12px;color:#94a3b8;margin-top:23px}dialog{border:1px solid #e2e8f0;border-radius:16px;width:min(440px,calc(100vw - 32px));box-shadow:0 25px 80px #0f172a30;padding:24px}dialog::backdrop{background:#0f172a79}.dialogtop{display:flex;justify-content:space-between;gap:16px}.dialogtop h2{margin:7px 0;font-size:23px;letter-spacing:-.03em}.dialogtop p{margin:0 0 24px;font-size:13px;color:#64748b}.closebtn{border:0;background:transparent;font-size:28px;color:#64748b;height:30px;line-height:20px}dialog label{display:block;font-weight:650;font-size:13px;margin-bottom:8px}input{width:100%;padding:12px 13px;border-radius:9px;border:1px solid #cbd5e1;font:inherit;font-size:14px}input:focus{outline:2px solid #bfdbfe;border-color:#2563eb}.dialogactions{display:flex;justify-content:flex-end;gap:8px;margin-top:22px}.dialogactions button{padding:11px 14px;border-radius:9px;font-size:13px;font-weight:700}.primary{border:1px solid #1d4ed8;background:#1d4ed8;color:white}.secondary{background:white;border:1px solid #e2e8f0;color:#475569}.danger{background:#fee2e2;border:1px solid #fecaca;color:#b91c1c;margin-right:auto}.error{font-size:12px;color:#b91c1c;min-height:12px;margin:7px 0 0}@media(max-width:700px){.shell{padding:23px 12px}.header{align-items:flex-start;margin-bottom:24px}.header h1{font-size:26px}.subhead{font-size:12px}.status{font-size:11px;padding:8px}.toolbar{align-items:flex-start}.range{font-size:16px}.micro{font-size:10px}.navigation{gap:4px}.todaybtn{padding:0 9px}.calendar-head,.time-row{grid-template-columns:70px repeat(7,minmax(0,1fr))}.legend{gap:10px}}


/* Thème sombre : fond noir / noir doux, textes blancs / gris. */
:root {
  color-scheme: dark;
  color: #f4f4f5;
  background: #09090b;
}
html { min-height: 100%; background: #09090b; }
body {
  min-height: 100vh;
  color: #f4f4f5;
  background: radial-gradient(ellipse 80% 52% at 50% -10%, #27272d 0%, #17171b 44%, transparent 80%),
              linear-gradient(155deg, #101013 0%, #0c0c0f 48%, #050506 100%);
  background-attachment: fixed;
}
.brand-and-heading { min-width: 0; }
.brand-logo { display: block; width: min(190px, 55vw); max-height: 76px; object-fit: contain; object-position: left center; margin: 0 0 23px; }
.brand-logo[hidden], .partners-logo[hidden] { display: none; }
.eyebrow { color: #aaaab4; }
.header h1, .range, .dialogtop h2 { color: #fafafa; }
.subhead, .micro, .legend, .head-day, .separator small, .dialogtop p { color: #aaaab4; }
.status { background: rgba(29,29,33,.9); border-color: #35353c; color: #d0d0d6; }
.navbtn, .todaybtn { background: #232329; border-color: #3b3b43; color: #f5f5f6; }
.navbtn:hover:not(:disabled), .todaybtn:hover:not(:disabled) { background: #37373f; }
.swatch.available { background: #303036; }
.swatch.reserved { background: #225444; }
.swatch.past { background: #1d1d21; }
.calendar-wrap { background: #151519; border-color: #34343b; box-shadow: 0 16px 45px rgba(0,0,0,.28); }
.calendar-head { background: #1b1b20; border-bottom-color: #35353d; }
.headcell { border-left-color: #303036; }
.headcell.is-today .head-date { background: #e4e4e7; color: #18181b; }
.time-label { color: #9797a2; border-top-color: #28282e; }
.slot { background: #27272d; color: #e4e4e7; border-color: #151519; }
.slot:not(:disabled):hover { background: #414149; }
.slot.booked { background: #245441; color: #e7fff2; }
.slot.booked:not(:disabled):hover { background: #2d7055; }
.slot.elapsed { background: #1d1d22; color: #757580; }
.slot:focus-visible, button:focus-visible { outline: 2px solid #e4e4e7; outline-offset: 2px; }
.separator { background: #24242b; border-top-color: #383840; border-bottom-color: #383840; color: #eeeef0; }
.separator:hover { background: #35353d; }
.notice { background: #3e2a20; border-color: #7c5034; color: #ffdfb8; }
footer { color: #9999a4; margin-top: 28px; }
footer p { margin: 0; }
.partners-logo { display: block; width: min(280px, 75vw); max-height: 105px; object-fit: contain; margin: 24px auto 0; }
dialog { background: #1a1a20; color: #f4f4f5; border-color: #42424b; box-shadow: 0 25px 80px #000a; }
dialog::backdrop { background: #000b; }
.closebtn { color: #b7b7c1; }
input { color: #f4f4f5; background: #27272e; border-color: #494952; }
input::placeholder { color: #9a9aa5; }
input:focus { outline: 2px solid #b4b4c3; border-color: #c4c4d0; }
.primary { border-color: #f4f4f5; background: #f4f4f5; color: #141417; }
.primary:hover:not(:disabled) { background: #d4d4d8; }
.secondary { background: #2b2b32; border-color: #494952; color: #f3f3f4; }
.secondary:hover:not(:disabled) { background: #3e3e47; }
.danger { background: #49272a; border-color: #7b3b41; color: #ffd8dc; }
.error { color: #ff9ea6; }
@media (max-width:700px) { .brand-logo { width: min(150px, 48vw); margin-bottom: 18px; } }
