:root{--p:#5b4bdb;--p2:#8b5cf6;--ink:#1f2340;--muted:#6b7280;--bg:#f5f4fb;--line:#ecebf5}
body{font-family:'Inter',system-ui,-apple-system,sans-serif;background:var(--bg);color:var(--ink)}
body.public{background:radial-gradient(900px 500px at 50% -8%,#e6e0ff 0,transparent 65%),linear-gradient(180deg,#faf8ff,#fdf2f8);min-height:100vh}
.card{border:0;border-radius:20px;box-shadow:0 10px 30px rgba(60,50,140,.08)}
.btn{border-radius:12px;font-weight:600}
.btn-main{background:linear-gradient(135deg,var(--p),var(--p2));color:#fff;border:0;padding:.85rem 1rem;box-shadow:0 8px 20px rgba(91,75,219,.3);transition:.2s}
.btn-main:hover{color:#fff;transform:translateY(-1px);box-shadow:0 12px 26px rgba(91,75,219,.38)}
.form-control,.form-select{border-radius:12px;border:1.5px solid var(--line);padding:.7rem .9rem;background:#fcfcff}
.form-control:focus,.form-select:focus{border-color:var(--p2);box-shadow:0 0 0 .2rem rgba(139,92,246,.15)}
.form-label{font-weight:600;font-size:.85rem;margin-bottom:.35rem}
/* Page publique */
.wrap{max-width:560px;margin:0 auto;padding:36px 16px 48px}
.profile{text-align:center;margin-bottom:22px}
.avatar{width:132px;height:132px;border-radius:50%;object-fit:cover;border:5px solid #fff;box-shadow:0 12px 32px rgba(91,75,219,.28),0 0 0 3px rgba(139,92,246,.35)}
.profile h1{font-size:1.65rem;font-weight:800;margin:16px 0 6px;letter-spacing:-.02em}
.tag{font-size:.74rem;line-height:1.6;color:var(--muted);margin:0}
.sec{display:flex;align-items:center;gap:10px;font-weight:700;margin:6px 0 14px}
.sec span{width:26px;height:26px;border-radius:50%;background:linear-gradient(135deg,var(--p),var(--p2));color:#fff;font-size:.8rem;display:grid;place-items:center}
.iti{width:100%}.iti input{width:100%}
.slots-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(84px,1fr));gap:8px}
.slot{border:1.5px solid var(--line);background:#fff;border-radius:12px;padding:.55rem 0;font-weight:600;color:var(--ink);transition:.15s}
.slot:hover{border-color:var(--p2);color:var(--p)}
.slot.on{background:linear-gradient(135deg,var(--p),var(--p2));color:#fff;border-color:transparent;box-shadow:0 6px 14px rgba(91,75,219,.3)}
.note{font-size:.76rem;color:var(--muted);text-align:center;margin-top:14px}
.hero{background:linear-gradient(135deg,var(--p),var(--p2));color:#fff;border-radius:20px 20px 0 0;padding:26px}
/* Admin */
.topbar{background:#fff;border-bottom:1px solid var(--line)}
.brand-av{width:38px;height:38px;border-radius:50%;object-fit:cover}
.stat{padding:18px;display:flex;align-items:center;gap:14px}
.stat .ic{width:48px;height:48px;border-radius:14px;display:grid;place-items:center;font-size:1.4rem}
.stat .n{font-size:1.7rem;font-weight:800;line-height:1}.stat small{color:var(--muted);font-weight:500}
.nav-pills .nav-link{border-radius:12px;font-weight:600;color:var(--muted)}
.nav-pills .nav-link.active{background:linear-gradient(135deg,var(--p),var(--p2))}
.table>:not(caption)>*>*{padding:.9rem .75rem;border-color:var(--line)}
.table thead th{font-size:.75rem;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);border-bottom:2px solid var(--line)}
.table tbody tr:hover{background:#faf9ff}
.ini{width:38px;height:38px;border-radius:50%;background:#ede9fe;color:var(--p);font-weight:700;display:grid;place-items:center}
/* Agenda */
.cal-wrap{background:#fff;border-radius:18px}
.cal-legend{display:flex;flex-wrap:wrap;gap:16px;padding:4px 4px 18px;font-size:.8rem;color:var(--muted)}
.cal-legend b{width:10px;height:10px;border-radius:50%;display:inline-block;margin-right:6px}
.fc{--fc-button-bg-color:#fff;--fc-button-border-color:var(--line);--fc-button-text-color:var(--ink);
  --fc-button-hover-bg-color:#f5f3ff;--fc-button-hover-border-color:var(--p2);
  --fc-button-active-bg-color:linear-gradient(135deg,var(--p),var(--p2));--fc-today-bg-color:#f7f5ff;--fc-border-color:var(--line);
  font-family:'Inter',sans-serif}
.fc .fc-toolbar-title{font-size:1.15rem;font-weight:800;color:var(--ink)}
.fc .fc-button{border-radius:10px!important;font-weight:600;padding:.4rem .85rem!important;box-shadow:none!important;text-transform:capitalize}
.fc .fc-button-primary:not(:disabled).fc-button-active,.fc .fc-button-primary:not(:disabled):active{background:linear-gradient(135deg,var(--p),var(--p2))!important;border-color:transparent!important;color:#fff!important}
.fc .fc-button-primary:hover{color:var(--p)!important}
.fc .fc-col-header-cell{background:#faf9ff;padding:8px 0}
.fc .fc-col-header-cell-cushion{color:var(--muted);font-weight:700;font-size:.72rem;text-transform:uppercase;letter-spacing:.05em}
.fc .fc-daygrid-day-number,.fc .fc-timegrid-slot-label-cushion{color:var(--muted);font-size:.78rem}
.fc .fc-day-today{background:var(--fc-today-bg-color)!important}
.fc .fc-daygrid-day.fc-day-today .fc-daygrid-day-number{background:linear-gradient(135deg,var(--p),var(--p2));color:#fff;border-radius:50%;width:24px;height:24px;display:flex;align-items:center;justify-content:center;font-weight:700}
.fc .fc-event{cursor:pointer;border:0!important;border-radius:9px;padding:2px 6px;font-weight:600;font-size:.76rem;box-shadow:0 2px 6px rgba(30,20,80,.12);transition:.15s}
.fc .fc-event:hover{transform:translateY(-1px);box-shadow:0 4px 10px rgba(30,20,80,.2)}
.fc .fc-timegrid-slot{height:2.6em}
.fc .fc-list-event:hover td{background:#faf9ff}
.fc .fc-list-day-cushion{background:#faf9ff!important}
.fc-theme-standard td,.fc-theme-standard th{border-color:var(--line)}

/* Responsive */
@media (max-width:767.98px){
  .wrap{padding:24px 14px 36px}
  .avatar{width:104px;height:104px}
  .profile h1{font-size:1.35rem}
  .hero{padding:20px}
  .stat{padding:14px}
  .stat .ic{width:40px;height:40px;font-size:1.15rem}
  .stat .n{font-size:1.35rem}
  .table thead{display:none}
  .table tbody tr{display:block;border:1px solid var(--line);border-radius:14px;margin-bottom:10px;padding:10px 12px}
  .table tbody td{display:block;border:0!important;padding:.3rem 0!important}
  .table tbody td.text-end{text-align:left!important}
  .table tbody td:last-child{margin-top:8px}
}
@media (max-width:575.98px){
  .container-fluid{padding-left:.75rem!important;padding-right:.75rem!important}
  .fc .fc-toolbar{flex-direction:column;gap:8px}
  .fc .fc-toolbar-chunk{display:flex;justify-content:center;width:100%}
  .fc .fc-toolbar-title{font-size:1rem;text-align:center}
  .fc-footer-toolbar{margin-top:10px}
  .cal-legend{justify-content:center}
  .modal-dialog{margin:.75rem}
}
@media (max-width:399.98px){
  .avatar{width:88px;height:88px}
  .fc .fc-button{padding:.32rem .6rem!important;font-size:.8rem}
}
.modal-content{border:0;border-radius:20px}
.swal2-popup{border-radius:20px!important;font-family:'Inter',sans-serif!important}
