.sbs-book {
	--sbs-accent: #4A1420;
	--sbs-ink: #241A17;
	--sbs-dark: #1E1512;
	--sbs-muted: rgba(36,26,23,.62);
	--sbs-faint: rgba(36,26,23,.4);
	--sbs-line: rgba(36,26,23,.12);
	--sbs-line-strong: rgba(36,26,23,.18);
	--sbs-cream: #F6F2EC;
	--sbs-paper: #FFFFFF;
	--sbs-tint: #ECE0D6;
	--sbs-ok: #1E1512;
	max-width: 900px; margin: 0 auto; padding: 90px 16px 32px; box-sizing: border-box;
	font-family: 'Inter', system-ui, sans-serif; color: var(--sbs-ink); background: var(--sbs-cream);
	position: relative; overflow: hidden;
}
.sbs-book * { box-sizing: border-box; }
.sbs-book h1, .sbs-book h2, .sbs-book h3, .sbs-book h4 { font-family: 'Playfair Display', Georgia, serif; }

/* Halo en arrière-plan du titre — même traitement que le hero de la page d'accueil
   (test-hero), pour que le début du parcours de réservation se lise comme une suite
   naturelle du hero plutôt qu'un écran d'admin générique. */
.sbs-book-glow {
	pointer-events:none; position:absolute; z-index:0; top:260px; left:0; width:100%; height:300px;
	background:linear-gradient(to right, #ECE0D6, #4A1420, #1E1512);
	filter:blur(80px); opacity:.1;
}

.sbs-book-head { position:relative; z-index:1; text-align: center; max-width: 640px; margin: 0 auto 32px; }
.sbs-eyebrow {
	display:block; font-size: 12px; letter-spacing: 0.14em; text-transform: uppercase; color: var(--sbs-accent); font-weight:600; margin-bottom: 18px;
	opacity:0; filter:blur(10px); animation: sbsBlurIn .7s ease forwards; animation-delay:.1s;
}
.sbs-book-head h2 {
	font-weight: 600; font-size: clamp(32px,5vw,56px); margin: 0; color: var(--sbs-ink); line-height:1.05;
	opacity:0; filter:blur(10px); animation: sbsBlurIn .7s ease forwards; animation-delay:.25s;
}
.sbs-book-head p {
	font-size: 16px; color: var(--sbs-muted); margin: 20px 0 0; line-height:1.6;
	opacity:0; filter:blur(10px); animation: sbsBlurIn .7s ease forwards; animation-delay:.4s;
}
@keyframes sbsBlurIn { to { opacity:1; filter:blur(0); } }
.sbs-help-line { text-align:center; font-size:14px; color: var(--sbs-muted); margin: 0 0 24px; }
.sbs-help-line a { color: var(--sbs-accent); text-decoration: underline; }

/* Contexte persistant : produits WooCommerce déjà au panier + prestations sélectionnées,
   visible à chaque étape pour ne jamais perdre le fil d'un panier cumulé. */
.sbs-cart-context { max-width:760px; margin:0 auto 28px; background:var(--sbs-paper); border-radius:20px; padding:18px 22px; display:flex; flex-direction:column; gap:10px; box-shadow:0 10px 30px rgba(36,26,23,.06); }
.sbs-cart-context-row { display:flex; align-items:center; gap:14px; }
.sbs-cart-context-row .icon { width:34px; height:34px; border-radius:50%; background:var(--sbs-tint); color:var(--sbs-accent); display:flex; align-items:center; justify-content:center; flex-shrink:0; }
.sbs-cart-context-row .txt { font-size:14.5px; color:var(--sbs-ink); line-height:1.5; }
.sbs-cart-context-row .txt .muted { color: var(--sbs-faint); }
.sbs-cart-context-total { border-top:1px dashed rgba(36,26,23,.2); padding-top:10px; font-size:14.5px; display:flex; justify-content:space-between; font-weight:700; }
.sbs-suggest-add { display:inline-flex; align-items:center; gap:4px; background:var(--sbs-tint); border:none; border-radius:999px; padding:4px 14px; margin:2px 4px 2px 0; font-size:12px; font-weight:600; color:var(--sbs-accent); cursor:pointer; }

.sbs-book-rail { display:flex; justify-content:center; gap:0; max-width:640px; margin:0 auto 40px; position:relative; }
.sbs-book-rail::before { content:''; position:absolute; top:9px; left:6%; right:6%; height:1px; background:rgba(36,26,23,.15); z-index:0; }
.sbs-book-rail-fill { position:absolute; top:9px; left:6%; height:1px; background:var(--sbs-accent); z-index:1; transition:width .4s ease; width:0%; }
.sbs-book-step-dot { position:relative; z-index:2; flex:1; display:flex; flex-direction:column; align-items:center; gap:12px; }
.sbs-book-step-dot .dot { width:18px; height:18px; border-radius:50%; background:#fff; border:2px solid rgba(36,26,23,.25); transition:all .3s ease; }
.sbs-book-step-dot.active .dot, .sbs-book-step-dot.done .dot { border-color:var(--sbs-accent); background:var(--sbs-accent); }
.sbs-book-step-dot span.label { font-size:12px; letter-spacing:0.05em; color:rgba(36,26,23,.45); text-align:center; font-weight:500; }
.sbs-book-step-dot.active span.label { color:var(--sbs-ink); font-weight:700; }

.sbs-book-panel { display:none; max-width:800px; margin:0 auto; }
.sbs-book-panel.active { display:block; }

/* Cartes de catégorie : vidéo/image plein cadre, dégradé bas, nom + compte de prestations */
.sbs-cat-tiles { display:grid; grid-template-columns:repeat(3, 1fr); gap:24px; margin-bottom:8px; }
.sbs-cat-tile { display:block; position:relative; width:100%; height:340px; border-radius:18px; padding:0; cursor:pointer; overflow:hidden; box-shadow:0 8px 24px rgba(36,26,23,.08); border:none; transition: all .3s cubic-bezier(.22,.61,.36,1); background: linear-gradient(160deg, #6B4A44 0%, var(--sbs-accent) 45%, var(--sbs-dark) 100%); }
.sbs-cat-tile:hover { box-shadow:0 20px 40px rgba(36,26,23,.18); transform: translateY(-4px); }
.sbs-cat-tile-photo { position:absolute; inset:0; width:100%; height:100%; }
.sbs-cat-tile-photo video, .sbs-cat-tile-photo img { width:100%; height:100%; object-fit:cover; object-position: top center; display:block; }
.sbs-cat-tile-scrim { position:absolute; inset:0; background: linear-gradient(to top, rgba(30,18,14,.92), rgba(30,18,14,0) 60%); }
.sbs-cat-tile-text { position:absolute; left:0; right:0; bottom:0; padding:26px; display:flex; flex-direction:column; gap:10px; text-align:left; }
.sbs-cat-tile-label { font-family:'Playfair Display',Georgia,serif; font-weight:600; font-size:24px; color:#fff; }
.sbs-cat-tile-count { font-size:13px; color:rgba(255,255,255,.75); margin-top:-4px; }
.sbs-cat-tile-cta { align-self:flex-start; padding:11px 20px; border-radius:100px; background:rgba(255,255,255,.16); border:1px solid rgba(255,255,255,.5); color:#fff; font-size:12.5px; font-weight:600; margin-top:2px; }
@media (max-width: 900px) { .sbs-cat-tiles { grid-template-columns:repeat(2, 1fr); } }
@media (max-width: 640px) { .sbs-cat-tiles { grid-template-columns:repeat(2, 1fr); gap:12px; } .sbs-cat-tile { height:260px; } .sbs-cat-tile-text { padding:18px; } }
.sbs-cat-back { display:none; border:none; background:transparent; color:var(--sbs-accent); font-size:14px; text-decoration:underline; cursor:pointer; margin-bottom:16px; padding:0; }

.sbs-svc-info-link { width:fit-content; border:none; background:transparent; padding:0; margin-top:0; font-size:12px; font-weight:500; color:rgba(255,255,255,.65); text-decoration:underline; cursor:pointer; }
.sbs-svc-info-link-row { margin-top:0; text-decoration:none; border:1px solid var(--sbs-line-strong); border-radius:999px; padding:7px 14px; font-size:11.5px; color: var(--sbs-accent); }

.sbs-svc-category { margin-bottom: 44px; }
.sbs-svc-category h3 { font-family:'Playfair Display',Georgia,serif; font-weight:600; font-size:30px; color:var(--sbs-ink); margin: 0 0 24px; }
.sbs-svc-subgroup { margin-bottom: 30px; }
.sbs-svc-subgroup-label { display:block; font-size:11px; letter-spacing:0.1em; text-transform:uppercase; color:var(--sbs-accent); font-weight:700; margin: 0 0 14px; }
.sbs-svc-grid { display:grid; grid-template-columns:repeat(3, 1fr); gap:24px; }

/* Carte prestation "plein cadre" : nom/description/prix/CTA superposés sur la photo via un
   dégradé, comme les tuiles de catégorie et les cards services de la page d'accueil. */
.sbs-svc-card { position:relative; width:100%; height:380px; background:var(--sbs-dark); border-radius:18px; overflow:hidden; box-shadow:0 8px 24px rgba(36,26,23,.08); cursor:pointer; transition: transform .3s cubic-bezier(.22,.61,.36,1), box-shadow .3s ease; }
.sbs-svc-card:hover { transform:translateY(-3px); box-shadow:0 18px 36px rgba(36,26,23,.16); }
.sbs-svc-card.selected { box-shadow: 0 0 0 3px #fff, 0 0 0 6px var(--sbs-accent), 0 18px 36px rgba(36,26,23,.16); }
.sbs-svc-card .sbs-svc-photo { position:absolute; inset:0; width:100%; height:100%; }
.sbs-svc-card .sbs-svc-photo.sbs-svc-photo-placeholder { background: linear-gradient(160deg, #6B4A44 0%, var(--sbs-accent) 45%, var(--sbs-dark) 100%); }
.sbs-svc-card .sbs-svc-photo img, .sbs-svc-card .sbs-svc-photo video { width:100%; height:100%; object-fit:cover; object-position: top center; display:block; }
.sbs-svc-card .sbs-svc-scrim { position:absolute; inset:0; background: linear-gradient(to top, rgba(30,18,14,.94), rgba(30,18,14,0) 65%); }
.sbs-svc-card .sbs-svc-video-badge { position:absolute; bottom:12px; left:12px; width:26px; height:26px; border-radius:50%; background:rgba(30,18,14,.65); color:#fff; display:flex; align-items:center; justify-content:center; }
.sbs-svc-card .sbs-svc-check { position:absolute; top:16px; right:16px; width:28px; height:28px; border-radius:50%; background:var(--sbs-dark); color:#fff; display:none; align-items:center; justify-content:center; }
.sbs-svc-card.selected .sbs-svc-check { display:flex; }
.sbs-svc-card .sbs-svc-overlay { position:absolute; left:0; right:0; bottom:0; padding:24px; display:flex; flex-direction:column; gap:8px; }
.sbs-svc-card h4 { font-family:'Playfair Display',Georgia,serif; font-weight:600; font-size:22px; margin:0; color:#fff; }
.sbs-svc-card p.desc { font-size:12.5px; color:rgba(255,255,255,.7); margin:0; line-height:1.5; }
.sbs-svc-card .sbs-svc-meta { display:flex; justify-content:space-between; align-items:center; margin-top:4px; font-size:13.5px; font-weight:700; color:#fff; }
.sbs-svc-card .sbs-svc-meta .price.confirmed { color:#fff; }
.sbs-svc-card .sbs-svc-meta .dur { font-size:12px; font-weight:400; color:rgba(255,255,255,.7); }
@media (max-width: 900px) { .sbs-svc-grid { grid-template-columns:repeat(2, 1fr); } }
@media (max-width: 640px) {
	.sbs-svc-grid { grid-template-columns:repeat(2, 1fr); gap:12px; }
	.sbs-svc-card { height:260px; }
	.sbs-svc-card .sbs-svc-overlay { padding:16px; }
	.sbs-svc-card p.desc { display:none; }
}

.sbs-svc-select {
	width:100%; margin-top:8px; padding:11px; border-radius:100px; border:1px solid rgba(255,255,255,.6);
	background:rgba(255,255,255,.14); color:#fff; font-size:12.5px; font-weight:600; cursor:pointer; transition: all .2s;
}
.sbs-svc-select:hover { background: rgba(255,255,255,.28); }
.sbs-svc-select .lbl-on { display:none; }
.sbs-svc-card.selected .sbs-svc-select { background:#fff; border-color:#fff; color: var(--sbs-dark); }
.sbs-svc-card.selected .sbs-svc-select .lbl-off { display:none; }
.sbs-svc-card.selected .sbs-svc-select .lbl-on { display:inline; }
.sbs-svc-select-row { width:auto; margin-top:0; padding:7px 14px; font-size:11.5px; background:transparent; border-color:var(--sbs-line-strong); color:var(--sbs-accent); }
.sbs-svc-select-row:hover { background: var(--sbs-tint); }

.sbs-svc-list { display:flex; flex-direction:column; gap:10px; }
.sbs-svc-card.sbs-svc-row { position:static; height:auto; background:var(--sbs-paper); display:flex; flex-direction:row; align-items:center; gap:14px; padding:14px 18px; border-radius:14px; box-shadow:0 6px 18px rgba(36,26,23,.05); }
.sbs-svc-card.sbs-svc-row:hover { box-shadow:0 10px 24px rgba(36,26,23,.1); }
.sbs-svc-card.sbs-svc-row .sbs-svc-check { position:static; flex-shrink:0; width:24px; height:24px; background:var(--sbs-tint); color:var(--sbs-accent); display:flex; }
.sbs-svc-card.sbs-svc-row.selected .sbs-svc-check { background:var(--sbs-dark); color:#fff; }
.sbs-svc-card.sbs-svc-row .sbs-svc-row-text { flex:1 1 auto; display:flex; flex-direction:column; gap:2px; min-width:0; }
.sbs-svc-card.sbs-svc-row h4 { margin:0; font-size:15px; color:var(--sbs-ink); }
.sbs-svc-card.sbs-svc-row .dur { font-size:11px; color:var(--sbs-faint); }
.sbs-svc-card.sbs-svc-row .sbs-svc-meta { margin-top:0; padding-top:0; border-top:none; flex-shrink:0; align-items:center; gap:12px; color:var(--sbs-ink); font-weight:400; }
.sbs-svc-card.sbs-svc-row .price.confirmed { color:var(--sbs-accent); font-weight:700; }
.sbs-svc-card.sbs-svc-row .sbs-svc-select { width:auto; margin-top:0; background:transparent; border-color:var(--sbs-line-strong); color:var(--sbs-accent); }
.sbs-svc-card.sbs-svc-row.selected .sbs-svc-select { background:var(--sbs-dark); border-color:var(--sbs-dark); color:#fff; }
@media (max-width: 640px) {
	.sbs-svc-card.sbs-svc-row { flex-direction:column; align-items:stretch; padding:14px; gap:10px; position:relative; }
	.sbs-svc-card.sbs-svc-row .sbs-svc-check { position:absolute; top:14px; right:14px; }
	.sbs-svc-card.sbs-svc-row .sbs-svc-row-text { padding-right:34px; }
	.sbs-svc-card.sbs-svc-row .sbs-svc-meta { flex-wrap:wrap; row-gap:8px; }
}

/* Barre fixe pleine largeur, comme le maquette (plus un bandeau flottant arrondi) — le bouton
   de poursuite est conservé (même comportement) mais recomposé en pastille sur la droite. */
.sbs-book-sticky { position:fixed; left:0; right:0; bottom:0; z-index:50; background:var(--sbs-dark); color:#fff; padding:18px 40px; display:flex; align-items:center; justify-content:space-between; gap:16px; flex-wrap:wrap; }
.sbs-book-sticky .recap { font-size:13px; line-height:1.5; opacity:.85; }
.sbs-book-sticky .recap b { font-family:'Playfair Display', Georgia, serif; font-size:16px; display:block; opacity:1; }
.sbs-book-sticky .sbs-btn-dark { background:#fff; color:var(--sbs-dark) !important; border-radius:100px; padding:12px 22px; }
.sbs-book-sticky .sbs-btn-dark:hover:not(:disabled) { background: var(--sbs-tint); }
body:has(.sbs-book-sticky) .sbs-book { padding-bottom: 96px; }

.sbs-date-strip { display:flex; gap:12px; overflow-x:auto; padding: 6px 2px 16px; }
.sbs-date-card { flex:0 0 112px; border:1px solid var(--sbs-line-strong); border-radius:14px; padding:16px 10px; text-align:center; cursor:pointer; background:var(--sbs-paper); transition: all .2s ease; }
.sbs-date-card .wd { font-size:11px; letter-spacing:0.05em; font-weight:600; color:rgba(36,26,23,.45); }
.sbs-date-card .dnum { font-family:'Playfair Display', Georgia, serif; font-size:26px; font-weight:600; color:var(--sbs-ink); margin:2px 0; }
.sbs-date-card .mo { font-size:11px; color:rgba(36,26,23,.45); }
.sbs-date-card.selected { background:var(--sbs-dark); border-color:var(--sbs-dark); }
.sbs-date-card.selected .wd, .sbs-date-card.selected .dnum, .sbs-date-card.selected .mo { color:#fff; }
.sbs-date-card.closed { opacity:0.4; cursor:not-allowed; background:transparent; border-color:var(--sbs-line); }

.sbs-slot-grid { display:flex; flex-wrap:wrap; gap:12px; margin-top:20px; }
.sbs-slot-pill { border:1px solid var(--sbs-line-strong); border-radius:100px; padding:13px 22px; font-size:14px; font-weight:600; cursor:pointer; background:var(--sbs-paper); color:var(--sbs-ink); transition: transform .2s ease, background-color .2s ease, border-color .2s ease; }
.sbs-slot-pill:hover { transform: translateY(-2px); border-color:var(--sbs-accent); }
.sbs-slot-pill.selected { background:var(--sbs-dark); border-color:var(--sbs-dark); color:#fff; }
.sbs-slot-empty { font-size:14px; color:var(--sbs-faint); padding:20px 0; }

.sbs-book-form { display:flex; flex-direction:column; gap:16px; }
.sbs-book-form .row { display:grid; grid-template-columns:1fr 1fr; gap:20px; }
.sbs-book-form input, .sbs-book-form textarea { padding:18px 20px; border:1px solid var(--sbs-line-strong); border-radius:10px; background:var(--sbs-paper); font-size:15px; outline:none; font-family:inherit; color:var(--sbs-ink); }
.sbs-book-form textarea { min-height:100px; resize:vertical; }
.sbs-book-form label.check { display:flex; align-items:center; gap:10px; font-size:14px; color:var(--sbs-ink); cursor:pointer; }
/* Case à cocher recomposée en carré arrondi plein — même élément natif, juste restylé. */
.sbs-book-form label.check input[type="checkbox"] {
	appearance:none; -webkit-appearance:none; width:18px; height:18px; margin:0; flex-shrink:0;
	border-radius:5px; border:1px solid var(--sbs-line-strong); background:#fff; position:relative; cursor:pointer;
}
.sbs-book-form label.check input[type="checkbox"]:checked { background:var(--sbs-dark); border-color:var(--sbs-dark); }
.sbs-book-form label.check input[type="checkbox"]:checked::after {
	content:''; position:absolute; left:5px; top:1px; width:5px; height:9px;
	border:solid #fff; border-width:0 2px 2px 0; transform:rotate(45deg);
}
.sbs-fine-print { font-size:13.5px; font-weight:700; color:var(--sbs-ink); margin:0; }
@media (max-width: 640px) { .sbs-book-form .row { grid-template-columns:1fr; } }

.sbs-confirm-card { background:var(--sbs-paper); border-radius:18px; padding:32px; box-shadow:0 8px 24px rgba(36,26,23,.06); display:flex; flex-direction:column; gap:14px; }
.sbs-confirm-card h3 { margin:0 0 10px; color:var(--sbs-ink); }
.sbs-confirm-line { display:flex; justify-content:space-between; padding:0; border-bottom:none; font-size:15px; }
.sbs-confirm-line span:first-child { color:rgba(36,26,23,.55); }
.sbs-confirm-line span:last-child { color:var(--sbs-ink); font-weight:700; text-align:right; }
.sbs-confirm-card .sbs-confirm-line:last-of-type { border-top:1px dashed rgba(36,26,23,.2); padding-top:14px; margin-top:4px; font-size:17px; }
.sbs-confirm-card .sbs-confirm-line:last-of-type span { font-weight:700; }
.sbs-cross-sell { margin-top:14px; padding-top:22px; border-top: 1px dashed rgba(36,26,23,.2); }
.sbs-cross-sell h4 { font-size:16px; color:var(--sbs-accent); margin:0 0 12px; }
.sbs-cross-item { display:flex; justify-content:space-between; align-items:center; padding:10px 0; font-size:14px; }
.sbs-cross-item button { font-size:11px; padding:7px 14px; }
.sbs-btn-small { border:1px solid var(--sbs-line-strong); background:transparent; border-radius:999px; cursor:pointer; color:var(--sbs-accent); }

.sbs-book-nav { display:flex; justify-content:space-between; align-items:center; margin-top:28px; }
.sbs-btn-dark { background:var(--sbs-dark); color:#fff !important; padding:15px 28px; border-radius:2px; border:none; font-size:13px; letter-spacing:0.05em; font-weight:600; cursor:pointer; transition: background .2s; }
.sbs-btn-dark:hover:not(:disabled) { background: var(--sbs-accent); }
.sbs-btn-dark:disabled { opacity:0.35; cursor:not-allowed; }
.sbs-book-back { background:transparent; border:none; color:var(--sbs-ink); font-size:14px; cursor:pointer; text-decoration:none; }
.sbs-book-back:hover { text-decoration:underline; }

/* Fenêtre d'info sur une prestation */
.sbs-info-bg { position:fixed; inset:0; z-index:9999; background:rgba(30,18,14,.5); backdrop-filter:blur(3px); align-items:center; justify-content:center; padding:24px; display:flex; }
.sbs-info-card { background:var(--sbs-cream); border-radius:18px; max-width:440px; width:100%; padding:32px; display:flex; flex-direction:column; gap:14px; box-shadow:0 24px 60px rgba(30,18,14,.3); }
.sbs-info-head { display:flex; justify-content:space-between; align-items:flex-start; gap:12px; }
.sbs-info-head h3 { font-family:'Playfair Display',Georgia,serif; font-size:22px; margin:0; color:var(--sbs-ink); }
.sbs-info-close { width:30px; height:30px; flex-shrink:0; border-radius:50%; border:1px solid var(--sbs-line-strong); background:transparent; cursor:pointer; display:flex; align-items:center; justify-content:center; color:var(--sbs-muted); }
.sbs-info-carousel { position:relative; width:100%; aspect-ratio:4/3; border-radius:12px; overflow:hidden; background:var(--sbs-dark); }
.sbs-info-carousel-track { position:relative; width:100%; height:100%; }
.sbs-info-carousel-slide { position:absolute; inset:0; opacity:0; transition:opacity .35s ease; }
.sbs-info-carousel-slide.active { opacity:1; }
.sbs-info-carousel-slide img, .sbs-info-carousel-slide video { width:100%; height:100%; object-fit:cover; display:block; }
.sbs-info-carousel-arrow {
	position:absolute; top:50%; transform:translateY(-50%); width:30px; height:30px; border-radius:50%;
	border:none; background:rgba(255,255,255,.85); color:var(--sbs-ink); cursor:pointer;
	display:flex; align-items:center; justify-content:center; z-index:2; transition:background .2s;
}
.sbs-info-carousel-arrow:hover { background:#fff; }
.sbs-info-carousel-arrow.prev { left:10px; }
.sbs-info-carousel-arrow.next { right:10px; }
.sbs-info-carousel-dots { position:absolute; left:0; right:0; bottom:10px; display:flex; justify-content:center; gap:6px; z-index:2; }
.sbs-info-carousel-dot { width:6px; height:6px; padding:0; border-radius:50%; border:none; background:rgba(255,255,255,.5); cursor:pointer; }
.sbs-info-carousel-dot.active { background:#fff; width:16px; border-radius:3px; }
#sbs-svc-info-desc { font-size:14px; color:var(--sbs-muted); line-height:1.6; margin:0; white-space:pre-line; }
.sbs-info-meta { display:flex; justify-content:space-between; font-size:13px; color:var(--sbs-ink); border-top:1px solid var(--sbs-line); padding-top:12px; }
.sbs-info-meta span:first-child { font-weight:700; }

@media (max-width: 640px) {
	.sbs-book-rail { max-width: 100%; }
	.sbs-book-step-dot span.label { display:none; }
	.sbs-book-sticky { flex-direction:column; align-items:stretch; padding:16px 20px; }
}
