.booking-app { --booking-blue:#0755d9; --booking-ink:#142b49; --booking-muted:#62738a; color:var(--booking-ink); padding-bottom:122px; }
.booking-app [hidden] { display:none!important; }
.booking-topline { display:flex; align-items:center; justify-content:space-between; gap:20px; margin-bottom:20px; }
.booking-location { display:flex; align-items:center; gap:8px; font-size:.8rem; color:var(--booking-muted); text-align:right; max-width:60%; }
.booking-progress { display:flex; align-items:center; justify-content:space-between; gap:12px; background:#fff; border:1px solid #e1e8f2; border-radius:18px; padding:16px 24px; margin-bottom:24px; box-shadow:0 3px 12px #15375d04; }
.booking-progress>i { color:#a0afc1; font-size:.9rem; }
.booking-step { display:flex; align-items:center; gap:10px; border:0; background:none; color:#69788e; font-size:.9rem; font-weight:650; padding:0; }
.booking-step-number { width:32px; height:32px; border-radius:50%; display:grid; place-items:center; background:#edf1f7; color:#6a7b91; font-weight:750; flex-shrink:0; }
.booking-step[aria-current="step"] { color:var(--booking-blue); }
.booking-step[aria-current="step"] .booking-step-number { background:var(--booking-blue); color:white; box-shadow:0 3px 8px #0755d92b; }
.booking-step.is-complete .booking-step-number { color:#fff; background:#13845c; }
.booking-step:disabled { opacity:.65; }
.booking-workspace { display:grid; grid-template-columns:minmax(0,1fr) 355px; gap:24px; align-items:start; }
.booking-main,.booking-summary { min-width:0; }
.booking-summary { position:sticky; top:100px; display:grid; gap:16px; }
.booking-panel { border:1px solid #e0e7f0; background:#fff; border-radius:22px; box-shadow:0 5px 24px #18334b05; overflow:clip; scroll-margin-top:16px; }
.booking-panel-heading { display:flex; align-items:center; gap:16px; padding:24px; background:linear-gradient(115deg,#edf5ff,#f8fbff); border-bottom:1px solid #e2ebf7; }
.booking-panel-icon { display:grid; place-items:center; width:54px; height:54px; background:#dfedff; color:var(--booking-blue); border-radius:16px; font-size:1.8rem; flex-shrink:0; }
.booking-eyebrow { display:block; color:#42698f; font-size:.65rem; font-weight:750; letter-spacing:.12em; margin-bottom:5px; }
.booking-panel-heading h1 { font-size:1.55rem; font-weight:800; letter-spacing:-.035em; line-height:1.25; margin:0 0 6px; }
.booking-panel-heading p { font-size:.85rem; line-height:1.6; color:var(--booking-muted); margin:0; max-width:440px; }
.booking-panel-body { padding:24px; }
.booking-catalog-tools { display:flex; align-items:center; justify-content:space-between; gap:16px; margin-bottom:18px; }
.booking-section-title { font-size:1rem; font-weight:750; margin:0; }
.booking-count { display:inline-block; font-size:.7rem; font-weight:600; color:var(--booking-blue); background:#edf4ff; padding:4px 8px; border-radius:7px; margin-left:4px; }
.booking-muted { color:var(--booking-muted); }
.booking-catalog-tools p { font-size:.75rem; margin:5px 0 0; }
.booking-search { display:flex; align-items:center; gap:8px; min-width:0; max-width:230px; width:45%; padding:0 12px; border:1px solid #d3dfeD; background:#fafcff; border-radius:12px; }
.booking-search>i { color:#6c7d95; }
.booking-search input { width:100%; min-width:0; height:44px; padding:8px 0; border:0; background:transparent; font-size:.85rem; color:var(--booking-ink); outline:none; }
.booking-search:focus-within { box-shadow:0 0 0 3px #0755d91c; border-color:#5f92e1; }
.booking-search button { border:0; background:transparent; color:#6c7d95; padding:4px; }
.booking-search input::-webkit-search-cancel-button { display:none; }
.booking-test-list { margin:0; padding:2px 5px 2px 2px; border:0; display:grid; gap:10px; max-height:530px; overflow-y:auto; scrollbar-width:thin; scrollbar-color:#bdccdf transparent; scroll-padding:6px; }
.booking-test { display:grid; grid-template-columns:24px minmax(0,1fr) 125px; column-gap:12px; row-gap:8px; align-items:start; padding:16px; border:1px solid #dbe4ef; border-radius:15px; background:#fff; cursor:pointer; transition:background .15s,border-color .15s; }
.booking-test:hover { background:#fafcff; border-color:#acc8ee; }
.booking-test:has(input:checked) { border-color:#2877e4; background:#f1f6ff; box-shadow:inset 0 0 0 1px #2877e4; }
.booking-test .form-check-input { margin:3px 0 0; width:22px; height:22px; border-color:#b9c9dc; cursor:pointer; }
.booking-test .form-check-input:checked { background-color:var(--booking-blue); border-color:var(--booking-blue); }
.booking-test-info { min-width:0; }
.booking-test-name { display:block; font-size:.98rem; font-weight:750; line-height:1.4; white-space:normal; word-break:normal; overflow-wrap:break-word; letter-spacing:-.01em; color:#142b49; }
.booking-test-category { display:block; margin-top:3px; font-size:.72rem; color:var(--booking-muted); }
.booking-test-online { text-align:right; white-space:nowrap; min-width:0; }
.booking-test-online strong { display:block; color:var(--booking-blue); font-size:1.08rem; font-weight:800; line-height:1.35; font-variant-numeric:tabular-nums; }
.booking-test-online small { display:block; font-size:.65rem; color:var(--booking-muted); margin-top:3px; }
.booking-test-extra { grid-column:2/-1; display:flex; align-items:center; flex-wrap:wrap; gap:6px 12px; font-size:.73rem; line-height:1.5; color:#4c607b; }
.booking-offer { display:inline-block; font-size:.65rem; font-weight:650; padding:3px 7px; border-radius:6px; background:#e7f5ed; color:#17734d; white-space:normal; }
.booking-catalog-hint { font-size:.73rem; color:var(--booking-muted); margin:18px 0 0; display:flex; gap:5px; align-items:baseline; flex-wrap:wrap; }
.booking-empty { text-align:center; padding:32px 12px; color:var(--booking-muted); }
.booking-empty>i { font-size:1.8rem; color:#759ac6; }
.booking-empty p { font-size:.9rem; margin:10px 0; }
.booking-summary-heading { padding:18px 20px; gap:12px; }
.booking-summary-heading .booking-panel-icon { width:36px; height:36px; font-size:1.35rem; border-radius:10px; }
.booking-summary-heading h2 { margin:0; font-size:1.05rem; font-weight:750; letter-spacing:-.02em; }
.booking-summary .booking-panel-body { padding:20px; }
.booking-summary-selection { display:flex; justify-content:space-between; gap:10px; align-items:center; font-size:.8rem; font-weight:650; margin-bottom:10px; }
.booking-text-button { border:0; background:none; color:var(--booking-blue); font-size:.78rem; font-weight:650; padding:4px; }
.booking-selected-tags { display:flex; flex-wrap:wrap; gap:6px; margin-bottom:18px; max-height:112px; overflow:auto; }
.booking-selected-tag { display:flex; align-items:center; gap:6px; max-width:100%; border:1px solid #dce8fa; background:#f3f7ff; color:#2f588f; font-size:.65rem; border-radius:7px; padding:5px 8px; text-align:left; }
.booking-selected-tag span { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.booking-selected-tag i { flex-shrink:0; }
.booking-amount-row { display:flex; align-items:center; justify-content:space-between; gap:12px; font-size:.8rem; margin:13px 0; }
.booking-amount-row strong { font-variant-numeric:tabular-nums; white-space:nowrap; }
.booking-discount-row { color:#14734f; }
.booking-total-row { margin:18px -8px 8px; background:#edf4ff; padding:13px 8px; border-radius:10px; color:#16437e; font-weight:750; }
.booking-total-row small { display:block; font-weight:400; color:#5c7495; font-size:.65rem; margin-top:2px; }
.booking-total-row strong { font-size:1.08rem; }
.booking-payment-split>div { display:flex; align-items:center; gap:10px; padding:16px 0; border-bottom:1px solid #edf1f7; }
.booking-payment-split>div>i { color:var(--booking-blue); font-size:1.2rem; }
.booking-payment-split>div>span { font-size:.77rem; font-weight:650; flex:1; min-width:0; }
.booking-payment-split small { display:block; color:var(--booking-muted); font-size:.65rem; font-weight:400; margin-top:3px; }
.booking-payment-split strong { font-size:1rem; color:var(--booking-blue); font-variant-numeric:tabular-nums; white-space:nowrap; }
.booking-summary-note { display:flex; gap:6px; font-size:.69rem; line-height:1.65; color:var(--booking-muted); margin:14px 0 0; }
.booking-summary-note i { margin-top:2px; }
.booking-center-card { display:flex; align-items:flex-start; gap:12px; background:#fff; border:1px solid #e0e7f0; border-radius:18px; padding:20px; }
.booking-center-card>i { color:var(--booking-blue); font-size:1.2rem; }
.booking-center-card h2 { font-size:.7rem; color:var(--booking-muted); margin:0 0 6px; font-weight:500; }
.booking-center-card strong { display:block; font-size:.8rem; line-height:1.6; }
.booking-center-card p { font-size:.73rem; line-height:1.65; color:var(--booking-muted); margin:6px 0 0; }
.booking-required-note { font-size:.72rem; color:var(--booking-muted); margin:0 0 20px; }
.booking-required,.booking-required-note>span { color:#d34141; }
.booking-app .form-label { color:#273f5e; font-size:.85rem; margin-bottom:8px; }
.booking-app .form-control,.booking-app .form-select { min-height:48px; font-size:.9rem; background-color:#fff; border-color:#cdd9e8; padding:11px 13px; }
.booking-app .form-control::placeholder { color:#8996a7; font-size:.85rem; }
.booking-app .form-control:focus,.booking-app .form-select:focus { box-shadow:0 0 0 3px #0755d91a; border-color:#6194e4; }
.booking-date-row { display:flex; flex-wrap:wrap; gap:10px; }
.booking-date-shortcuts { display:flex; flex-wrap:wrap; gap:8px; }
.booking-date-row input { flex:1; min-width:180px; }
.booking-date-shortcuts .btn { font-size:.8rem; }
.booking-date-shortcuts .btn[aria-pressed="true"] { background:#eaf2ff; color:#0755d9; border-color:#0755d9; }
.booking-same-name { display:flex; align-items:center; gap:8px; font-size:.78rem; margin-top:10px; cursor:pointer; }
.booking-same-name input { width:18px; height:18px; margin:0; }
.booking-app .form-text { color:var(--booking-muted); font-size:.7rem; line-height:1.6; }
.booking-coupon { margin-top:24px; border:1px dashed #c9d9ee; border-radius:13px; background:#fafcff; }
.booking-coupon summary { padding:15px; font-size:.82rem; font-weight:650; cursor:pointer; }
.booking-coupon summary>i { margin-right:5px; color:var(--booking-blue); }
.booking-coupon summary>span { margin-left:6px; color:var(--booking-blue); font-size:.75rem; }
.booking-coupon-body { padding:0 15px 16px; }
.booking-coupon-row { display:flex; gap:10px; }
.booking-coupon-row input { min-width:0; }
.booking-coupon-row button { flex-shrink:0; font-size:.8rem; }
.booking-form-actions { display:flex; flex-wrap:wrap; gap:10px; margin-top:24px; }
.booking-form-actions .btn { padding:12px 16px; border-radius:12px; font-weight:650; font-size:.85rem; }
.booking-form-actions .btn-primary { flex:1; }
.booking-payment-note { display:flex; gap:8px; color:var(--booking-muted); font-size:.72rem; line-height:1.7; margin:16px 0 0; }
.booking-payment-note i { color:#12805b; margin-top:2px; }
.booking-dock { position:fixed; bottom:20px; left:50%; transform:translateX(-50%); width:calc(100% - 40px); max-width:1110px; z-index:1025; padding:12px 18px; border:1px solid #dbe5f2; border-radius:18px; background:#fffffff5; box-shadow:0 -3px 30px #15375d16; backdrop-filter:blur(12px); }
.booking-dock-inner { display:flex; align-items:center; gap:16px; }
.booking-dock-total { display:grid; grid-template-columns:auto 1fr; align-items:center; column-gap:12px; flex:1; }
.booking-dock-total>span { grid-column:1/-1; color:#596e89; font-size:.75rem; line-height:1.4; }
.booking-dock-total>strong { font-size:1.35rem; font-weight:800; letter-spacing:-.03em; color:#16385f; font-variant-numeric:tabular-nums; }
.booking-dock-total>small { color:var(--booking-muted); font-size:.7rem; }
.booking-dock .btn-primary { min-height:48px; display:flex; align-items:center; justify-content:center; gap:14px; border-radius:12px; background:var(--booking-blue); font-size:.9rem; font-weight:700; padding:12px 24px; }
.booking-dock-back { display:grid; place-items:center; width:42px; height:44px; border:1px solid #d5e1f1; background:#fff; color:var(--booking-blue); border-radius:10px; flex-shrink:0; }
.booking-app #booking-error { scroll-margin-top:110px; }
.booking-panel h1 { scroll-margin-top:120px; outline:none; }
.booking-app .btn:disabled { opacity:.5; }
@media (max-width:1199.98px) {
    .booking-dock { bottom:calc(76px + env(safe-area-inset-bottom)); max-width:930px; }
    .booking-workspace { grid-template-columns:minmax(0,1fr) 320px; gap:18px; }
    .booking-test { grid-template-columns:22px minmax(0,1fr) 108px; padding:14px; gap:8px 10px; }
    .booking-panel-body { padding:20px; }
    .booking-panel-heading { padding:22px 20px; }
}
@media (max-width:991.98px) {
    .booking-workspace { display:flex; flex-direction:column; gap:20px; }
    .booking-main,.booking-summary { width:100%; }
    .booking-summary { position:static; }
    .booking-workspace[data-step="details"] .booking-summary { order:-1; }
    .booking-workspace[data-step="details"] .booking-center-card { display:none; }
    .booking-test-list { max-height:480px; }
    .booking-test { grid-template-columns:24px minmax(0,1fr) 130px; }
}
@media (max-width:575.98px) {
    .booking-app { padding-bottom:100px; }
    .booking-topline { margin-bottom:14px; }
    .booking-topline .ph-back-button { min-height:38px; font-size:.75rem; padding:8px 12px; border-radius:11px; }
    .booking-location { display:none; }
    .booking-progress { gap:5px; padding:12px 10px; border-radius:14px; margin-bottom:16px; }
    .booking-step { font-size:.65rem; gap:5px; white-space:nowrap; }
    .booking-step-number { width:24px; height:24px; font-size:.7rem; }
    .booking-progress>i { font-size:.65rem; }
    .booking-panel { border-radius:18px; }
    .booking-panel-heading { padding:18px 16px; gap:12px; }
    .booking-panel-heading h1 { font-size:1.25rem; }
    .booking-panel-heading p { font-size:.75rem; }
    .booking-panel-icon { width:42px; height:46px; font-size:1.5rem; border-radius:13px; }
    .booking-eyebrow { font-size:.57rem; }
    .booking-panel-body { padding:16px; }
    .booking-catalog-tools { flex-direction:column; align-items:stretch; gap:12px; margin-bottom:14px; }
    .booking-catalog-tools>div:first-child { display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:8px; }
    .booking-catalog-tools p { margin:0; font-size:.65rem; }
    .booking-section-title { font-size:.92rem; }
    .booking-count { font-size:.62rem; padding:3px 6px; }
    .booking-search { width:100%; max-width:none; }
    .booking-test-list { max-height:430px; max-height:52svh; gap:9px; }
    .booking-test { grid-template-columns:20px minmax(0,1fr) 100px; padding:13px 11px; gap:8px 9px; border-radius:12px; }
    .booking-test .form-check-input { width:20px; height:20px; margin-top:2px; }
    .booking-test-name { font-size:.95rem; line-height:1.45; }
    .booking-test-online strong { font-size:.98rem; }
    .booking-test-online small { font-size:.69rem; white-space:normal; }
    .booking-test-category { font-size:.7rem; }
    .booking-test-extra { font-size:.72rem; gap:5px; }
    .booking-offer { font-size:.66rem; }
    .booking-catalog-hint { font-size:.66rem; }
    .booking-summary-heading .booking-panel-icon { width:32px; height:32px; font-size:1.2rem; }
    .booking-summary-heading h2 { font-size:1rem; }
    .booking-summary .booking-panel-body { padding:16px; }
    .booking-selected-tags { max-height:76px; margin-bottom:14px; }
    .booking-total-row strong { font-size:1.04rem; }
    .booking-date-shortcuts { width:100%; gap:7px; }
    .booking-date-shortcuts .btn { font-size:.75rem; padding:9px 12px!important; }
    .booking-date-row input { width:100%; flex:auto; min-width:0; }
    .booking-app .form-control,.booking-app .form-select { font-size:16px; }
    .booking-form-actions .btn { font-size:.78rem; padding:12px; }
    .booking-dock { width:calc(100% - 20px); bottom:calc(75px + env(safe-area-inset-bottom)); padding:10px 12px; border-radius:15px; }
    .booking-dock-inner { gap:10px; }
    .booking-dock-total { display:block; min-width:0; }
    .booking-dock-total>span { display:block; font-size:.62rem; }
    .booking-dock-total>strong { font-size:1.14rem; display:block; line-height:1.5; }
    .booking-dock-total>small { font-size:.58rem; display:block; }
    .booking-dock .btn-primary { max-width:63%; min-height:48px; gap:8px; font-size:.75rem; padding:11px 13px; }
    .booking-dock-back { width:32px; height:40px; }
    .booking-coupon summary>span { font-size:.7rem; }
    .booking-coupon-row { gap:8px; }
    .booking-coupon-row .btn { padding:10px; font-size:.72rem; }
}
@media (max-width:359.98px) {
    .booking-test { grid-template-columns:20px minmax(0,1fr); }
    .booking-test-online { grid-column:2; text-align:left; }
    .booking-test-extra { grid-column:2; }
    .booking-step { font-size:.58rem; }
    .booking-dock-total>small { display:none; }
}
body.ph-keyboard-open .booking-dock { visibility:hidden; }
@media (prefers-reduced-motion:reduce) { .booking-test { transition:none; } }

.booking-test-online s { display:block; font-size:.78rem; color:#76869b; margin:3px 0; }
.booking-test-online strong { display:inline-block; border:1px solid #bfd2ef; border-radius:5px; padding:2px 6px; background:#fff; }
