*,*::before,*::after{margin:0;padding:0;box-sizing:border-box}
:root{--noir:#000;--blanc:#fff;--beige:#d4c1b1;--gris:#f5f2ef;--display:'Barlow Condensed',sans-serif;--body:'Barlow',sans-serif}
html{scroll-behavior:smooth}
body{background:var(--blanc);color:var(--noir);font-family:var(--body);font-weight:300;overflow-x:hidden}
nav{position:fixed;top:0;left:0;right:0;z-index:200;background:var(--blanc);border-bottom:1px solid #e0e0e0;display:flex;align-items:center;justify-content:space-between;padding:0 2.5rem;height:56px}
.nav-logo{font-family:var(--display);font-weight:800;font-size:1.3rem;letter-spacing:-.04em;color:var(--noir);text-decoration:none;text-transform:lowercase}
.nav-back{font-size:.68rem;letter-spacing:.1em;text-transform:uppercase;color:var(--noir);font-weight:700;text-decoration:none}
.page{padding-top:56px;min-height:100vh;display:grid;grid-template-columns:1fr 1.2fr}
.page.step4{grid-template-columns:1fr}
.page.step4 .summary{display:none}
.page.step4 .content{max-width:560px;margin:0 auto;width:100%}
.summary{background:var(--noir);color:var(--blanc);padding:3rem;display:flex;flex-direction:column;justify-content:space-between;position:sticky;top:56px;height:calc(100vh - 56px)}
.sum-label{font-size:.58rem;letter-spacing:.28em;text-transform:uppercase;color:rgba(255,255,255,.75);font-weight:700;margin-bottom:2rem}
.sum-presta{font-family:var(--display);font-weight:800;font-size:clamp(2rem,3.5vw,3.5rem);letter-spacing:-.04em;line-height:.95;margin-bottom:.5rem}
.sum-detail{font-size:.78rem;color:rgba(255,255,255,.75);font-weight:700;letter-spacing:.04em;margin-bottom:2rem}
.sum-price-wrap{border-top:1px solid #333;padding-top:1.5rem}
.sum-price-lbl{font-size:.58rem;letter-spacing:.2em;text-transform:uppercase;color:rgba(255,255,255,.75);font-weight:700;margin-bottom:.3rem}
.sum-price{font-family:var(--display);font-weight:800;font-size:3.5rem;letter-spacing:.05em;line-height:1}
.sum-price span{font-size:.72rem;color:rgba(255,255,255,.65);font-weight:700;letter-spacing:.2em;text-transform:uppercase;display:block;margin-top:.5rem;font-family:var(--body)}
.sum-steps{display:flex;flex-direction:column;gap:.6rem}
.sum-step{display:flex;align-items:center;gap:.8rem;font-size:.7rem;color:rgba(255,255,255,.5);font-weight:700}
.sum-step.active{color:var(--blanc)}
.sum-step.done{color:rgba(255,255,255,.65)}
.step-dot{width:6px;height:6px;border-radius:50%;background:rgba(255,255,255,.2);flex-shrink:0}
.sum-step.active .step-dot{background:var(--beige)}
.sum-step.done .step-dot{background:rgba(255,255,255,.5)}
.content{padding:3.5rem 3rem}
.step-block{display:none}
.step-block.active{display:block}
.step-title{font-family:var(--display);font-weight:800;font-size:clamp(1.8rem,3vw,2.8rem);letter-spacing:-.04em;line-height:1;margin-bottom:.5rem}
.step-sub{font-size:.78rem;color:#444;margin-bottom:2rem;font-weight:400}
.sem-grid{display:grid;grid-template-columns:1fr 1fr;gap:.8rem;margin-bottom:2rem}
.sem-card{border:1px solid #ddd;padding:1.5rem;cursor:pointer;transition:all .2s;background:var(--blanc);position:relative}
.sem-card:hover{border-color:var(--noir)}
.sem-card.selected{border-color:var(--noir);background:var(--noir);color:var(--blanc)}
.sem-num{font-family:var(--display);font-weight:800;font-size:2.5rem;letter-spacing:-.05em;line-height:1;margin-bottom:.3rem}
.sem-lbl{font-size:.7rem;letter-spacing:.06em;text-transform:uppercase;font-weight:700}
.sem-card.selected .sem-lbl{color:rgba(255,255,255,.65)}
.sem-price{font-family:var(--display);font-weight:800;font-size:1.4rem;letter-spacing:-.03em;position:absolute;top:1.2rem;right:1.2rem}
.suppl-item{display:flex;align-items:center;gap:.8rem;padding:.75rem 1rem;border:1px solid #e0e0e0;cursor:pointer;font-size:.82rem;transition:background .2s;margin-bottom:.4rem}
.suppl-item:hover{background:var(--gris)}
.suppl-item input{accent-color:var(--noir)}
.suppl-price{margin-left:auto;font-family:var(--display);font-weight:700;font-size:1rem}
.cal-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:1rem}
.cal-month{font-family:var(--display);font-weight:800;font-size:1.4rem;letter-spacing:-.03em;text-transform:capitalize}
.cal-nav button{background:none;border:1px solid #ddd;padding:.4rem .9rem;cursor:pointer;font-size:.9rem;transition:border-color .2s}
.cal-nav button:hover{border-color:var(--noir)}
.cal-nav button:disabled{opacity:.3;cursor:default;border-color:#ddd}
.cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:.3rem;margin-bottom:2rem}
.cal-dn{font-size:.6rem;letter-spacing:.1em;text-transform:uppercase;color:#000;font-weight:700;text-align:center;padding:.4rem 0}
.cal-day{aspect-ratio:1;display:flex;align-items:center;justify-content:center;font-size:.78rem;cursor:pointer;border:1px solid transparent;transition:all .2s;position:relative}
.cal-day:hover:not(.disabled):not(.empty){border-color:var(--noir)}
.cal-day.selected{background:var(--noir);color:var(--blanc)}
.cal-day.today{font-weight:700;border-color:#ccc}
.cal-day.disabled{color:#ddd;cursor:default}
.cal-day.dispo::after{content:'';width:4px;height:4px;background:#3a9d5d;border-radius:50%;position:absolute;bottom:3px;left:50%;transform:translateX(-50%)}
.cal-day.complet,.cal-day.ferme{color:#bbb;cursor:default}
.cal-day.complet::before,.cal-day.ferme::before{content:'';position:absolute;top:50%;left:26%;right:26%;height:1px;background:#ccc;transform:rotate(-16deg)}
.slots-lbl{font-size:.65rem;letter-spacing:.15em;text-transform:uppercase;color:#000;font-weight:700;margin-bottom:.8rem}
.slots-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:.4rem;margin-bottom:2rem}
.slot{border:1px solid #ddd;padding:.7rem;text-align:center;cursor:pointer;font-size:.8rem;transition:all .2s}
.slot:hover:not(.full){border-color:var(--noir)}
.slot.selected{background:var(--noir);color:var(--blanc);border-color:var(--noir)}
.slot.full{color:#ccc;cursor:default;text-decoration:line-through}
.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:1rem;margin-bottom:1.5rem}
.form-group{display:flex;flex-direction:column;gap:.4rem}
.form-group.full{grid-column:span 2}
.form-label{font-size:.65rem;letter-spacing:.12em;text-transform:uppercase;color:#000;font-weight:700}
.form-input{border:1px solid #ddd;padding:.75rem 1rem;font-size:.85rem;font-family:var(--body);font-weight:300;outline:none;transition:border-color .2s;width:100%}
.form-input:focus{border-color:var(--noir)}
.form-input::placeholder{color:#bbb}
.form-radio-group{display:flex;gap:.8rem;margin-top:.3rem}
.form-radio{display:flex;align-items:center;gap:.5rem;cursor:pointer;font-size:.8rem}
.form-radio input{accent-color:var(--noir)}
.recap-box{background:var(--gris);padding:1.5rem;margin-bottom:1.5rem;border:1px solid #e0e0e0}
.recap-title{font-family:var(--display);font-weight:700;font-size:1rem;letter-spacing:-.02em;margin-bottom:1rem}
.recap-line{display:flex;justify-content:space-between;font-size:.8rem;padding:.4rem 0;border-bottom:1px solid #e8e8e8;color:#555}
.recap-line strong{color:var(--noir);font-weight:600}
.recap-total{display:flex;justify-content:space-between;align-items:center;padding-top:1rem;margin-top:.5rem;border-top:1px solid #ccc}
.recap-total-lbl{font-size:.72rem;letter-spacing:.08em;text-transform:uppercase;color:#555;font-weight:700}
.recap-total-price{font-family:var(--display);font-weight:800;font-size:1.8rem;letter-spacing:-.04em}
.recap-note{font-size:.65rem;color:#000;font-weight:500;margin-top:.8rem;line-height:1.6}
.btn-next{display:block;width:100%;background:var(--noir);color:var(--blanc);font-family:var(--display);font-weight:700;font-size:.78rem;letter-spacing:.2em;text-transform:uppercase;padding:1.1rem;text-align:center;border:none;cursor:pointer;transition:background .2s}
.btn-next:hover{background:#222}
.btn-next:disabled{background:#ccc;cursor:default}
.btn-prev{background:none;border:none;font-size:.68rem;letter-spacing:.1em;text-transform:uppercase;color:#000;font-weight:700;cursor:pointer;padding:.8rem 0;display:block;font-family:var(--body)}
.success-block{text-align:center;padding:3rem 0}
.success-icon{font-size:3rem;margin-bottom:1.5rem}
.success-title{font-family:var(--display);font-weight:800;font-size:2.5rem;letter-spacing:-.04em;margin-bottom:1rem}
.success-text{font-size:.85rem;color:#444;line-height:1.8;max-width:400px;margin:0 auto 2rem;font-weight:400}
@media(max-width:900px){nav{padding:0 1.2rem}.page{grid-template-columns:1fr}.summary{position:static;height:auto;padding:2rem 1.5rem}.content{padding:2rem 1.5rem}.slots-grid{grid-template-columns:repeat(3,1fr)}.form-grid{grid-template-columns:1fr}.form-group.full{grid-column:span 1}}
@media(max-width:480px){.slots-grid{grid-template-columns:repeat(2,1fr)}}
