/* Rendez-vous publics */
.appointment-page,.appointment-admin{padding:46px 0 80px;background:radial-gradient(circle at 88% 8%,rgba(248,177,18,.14),transparent 28%),var(--cream)}
.appointment-hero{display:grid;grid-template-columns:minmax(0,1fr) 380px;gap:30px;align-items:stretch}
.appointment-hero>div,.appointment-hero aside,.appointment-shell,.admin-hero,.admin-card{background:#fff;border:1px solid rgba(10,50,138,.08);border-radius:32px;box-shadow:var(--shadow);padding:34px}
.appointment-hero h1,.admin-hero h1{font-family:var(--serif);color:var(--blue);font-size:clamp(54px,5.6vw,90px);line-height:.92;letter-spacing:-.04em;margin:8px 0 18px}
.appointment-lead,.admin-hero p{color:#304366;font-size:clamp(20px,1.55vw,26px);line-height:1.48;max-width:840px}
.appointment-hero aside{background:linear-gradient(145deg,var(--blue),#0f4f93);color:#fff}.appointment-hero aside strong{font-size:24px}.appointment-hero aside p{color:rgba(255,255,255,.82);line-height:1.55}
.appointment-shell{margin-top:30px}
.appointment-alert{border-radius:20px;padding:16px 18px;margin-bottom:20px;font-weight:800}.appointment-alert.ok{background:#e8f8ef;color:#145c31}.appointment-alert.error{background:#ffecec;color:#931515}
.appointment-week-nav{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:24px}.appointment-week-nav h2{color:var(--blue);font-size:30px;margin:0;text-align:center}.week-btn{border:1px solid rgba(10,50,138,.16);border-radius:999px;padding:10px 14px;color:var(--blue);font-weight:900;background:#fff}
.appointment-calendar{display:grid;grid-template-columns:repeat(5,1fr);gap:14px}.appointment-day{background:#f8fbff;border:1px solid rgba(10,50,138,.09);border-radius:24px;padding:16px;min-height:310px}.appointment-day header{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:14px}.appointment-day header strong{color:var(--blue);font-size:20px}.appointment-day header span{color:#64748b;font-weight:800}
.appointment-slots{display:grid;gap:10px}.no-slot{color:#8895aa;font-size:14px;line-height:1.45}.slot-btn{border:0;border-radius:18px;padding:13px 12px;display:flex;justify-content:space-between;align-items:center;cursor:pointer;font:inherit;box-shadow:0 10px 24px rgba(15,43,90,.08);transition:.18s transform,.18s box-shadow}.slot-btn:hover{transform:translateY(-2px);box-shadow:0 14px 32px rgba(15,43,90,.13)}.slot-btn strong{font-size:18px}.slot-btn span{font-size:12px;font-weight:900;letter-spacing:.06em;text-transform:uppercase}.slot-btn.is-video{background:#eaf5ff;color:#0b4f8a}.slot-btn.is-onsite{background:#eaf8ef;color:#126634}

.appointment-milo-note{margin-top:22px;display:grid;gap:6px;background:#f7fbff;border:1px solid rgba(10,50,138,.10);border-left:6px solid var(--orange);border-radius:22px;padding:16px 18px;max-width:860px}
.appointment-milo-note strong{color:var(--blue);font-size:18px}
.appointment-milo-note span{color:#304366;line-height:1.48}

.appointment-modal{position:fixed;inset:0;background:rgba(5,22,54,.52);z-index:1000;display:flex;align-items:center;justify-content:center;padding:24px}.appointment-modal[hidden]{display:none}.appointment-modal-card{background:#fff;border-radius:30px;box-shadow:0 28px 90px rgba(0,0,0,.28);padding:30px;max-width:680px;width:100%;position:relative;max-height:92vh;overflow:auto}.modal-close{position:absolute;right:18px;top:14px;border:0;background:#ffe8e8;color:#b01212;border-radius:50%;width:38px;height:38px;font-size:24px;font-weight:900;cursor:pointer}.appointment-modal-card h2,.admin-card h2{color:var(--blue);font-size:32px;margin:0 0 12px}.selected-slot{background:#f8fbff;border:1px solid rgba(10,50,138,.10);border-radius:18px;padding:14px;color:#304366;font-weight:800}
.appointment-form{display:grid;gap:16px}.appointment-form label{display:grid;gap:8px}.appointment-form label span{font-weight:900;color:#0b254f}.appointment-form input,.appointment-form select,.appointment-form textarea{width:100%;border:1px solid #cbd8ea;border-radius:14px;background:#fff;padding:12px 14px;color:#0b254f;font:inherit;outline:none}.appointment-form input:focus,.appointment-form select:focus,.appointment-form textarea:focus{border-color:var(--blue-2);box-shadow:0 0 0 4px rgba(29,124,255,.10)}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:14px}.appointment-small{color:#64748b;font-size:14px;margin:0}
.admin-grid{display:grid;grid-template-columns:1fr 1fr;gap:24px;margin-top:28px}.admin-card{margin-top:24px}.inline-form{grid-template-columns:1.3fr 1fr .8fr .8fr .9fr auto;align-items:end}.admin-table-wrap{overflow:auto}.admin-table{width:100%;border-collapse:collapse}.admin-table th,.admin-table td{border-bottom:1px solid #e6edf7;padding:12px;text-align:left;vertical-align:top}.admin-table th{color:var(--blue);font-size:13px;text-transform:uppercase;letter-spacing:.08em}.mini-btn{display:inline-flex;border:0;border-radius:999px;background:#eef5ff;color:var(--blue);padding:8px 12px;font-weight:900;cursor:pointer;margin:2px}.mini-btn.ok{background:#e8f8ef;color:#145c31}.mini-btn.danger{background:#ffecec;color:#931515}
@media(max-width:1180px){.appointment-calendar{grid-template-columns:repeat(2,1fr)}.appointment-hero,.admin-grid{grid-template-columns:1fr}.inline-form{grid-template-columns:1fr 1fr}}@media(max-width:680px){.appointment-calendar,.form-row,.inline-form{grid-template-columns:1fr}.appointment-week-nav{flex-direction:column}.appointment-hero h1,.admin-hero h1{font-size:52px}}

.appointment-admin-discreet{margin-top:18px;text-align:right}.appointment-admin-discreet a{font-size:12px;color:#7b879c;text-decoration:none;font-weight:800}.appointment-admin-discreet a:hover{color:var(--blue);text-decoration:underline}
