.booking-hero{background:radial-gradient(circle at 82% 20%,#2aae4733,#0000 32%),linear-gradient(130deg,#eef7f0 0%,#f9f9f9 58%,#f3f2ea 100%)}.booking-layout{grid-template-columns:minmax(0,1fr) 320px;align-items:start;gap:clamp(1.5rem,3vw,2.5rem);display:grid}.booking-shell{border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--surface);box-shadow:var(--shadow-md);scroll-margin-top:calc(var(--header-height) + 1.5rem);overflow:hidden}.booking-progress{border-bottom:1px solid var(--border);background:var(--surface-alt);grid-template-columns:repeat(5,minmax(0,1fr));gap:0;margin:0;padding:0;list-style:none;display:grid}.booking-progress__item{min-height:62px;color:var(--subtle);align-items:center;gap:.55rem;padding:.7rem .8rem;font-size:.78rem;font-weight:700;line-height:1.2;display:flex;position:relative}.booking-progress__item+.booking-progress__item:before{content:"";background:var(--border);block-size:24px;inline-size:1px;position:absolute;top:50%;left:0;transform:translateY(-50%)}.booking-progress__num{border:1px solid var(--border-strong);background:var(--surface);block-size:26px;inline-size:26px;color:var(--subtle);border-radius:50%;flex-shrink:0;place-items:center;font-size:.72rem;font-weight:800;display:grid}.booking-progress__item.is-active{color:var(--green-900);background:var(--green-50)}.booking-progress__item.is-active .booking-progress__num{border-color:var(--green-800);background:var(--green-800);color:#fff}.booking-progress__item.is-done{color:var(--green-900)}.booking-progress__item.is-done .booking-progress__num{border-color:var(--green-200);background:var(--green-100);color:var(--green-900)}.booking-body{padding:clamp(1.25rem,3.5vw,2.25rem)}.booking-step[hidden]{display:none}.booking-step h2{font-size:clamp(1.45rem,2.6vw,2rem)}.booking-step__head{margin-bottom:1.4rem}.booking-step__head p{color:var(--muted);margin-top:.5rem;font-size:.94rem}.booking-step__head h2:focus{outline:none}.booking-alert{border:1px solid #e6b8b8;border-left:3px solid var(--danger);border-radius:var(--radius-sm);background:var(--danger-soft);color:#731111;margin:0 0 1.25rem;padding:.9rem 1rem;font-size:.9rem}.booking-alert--warning{border-color:#ead9a4;border-left-color:var(--warning);background:var(--warning-soft);color:#5a470d}.booking-alert[hidden]{display:none}.choice-grid{gap:.7rem;display:grid}.choice{border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface);cursor:pointer;transition:border-color var(--transition), background-color var(--transition), box-shadow var(--transition);grid-template-columns:76px minmax(0,1fr) auto;align-items:center;gap:1rem;padding:.8rem;display:grid;position:relative}.choice:hover{border-color:var(--green-500);background:#fbfefc}.choice:has(input:checked){border-color:var(--green-800);background:var(--green-50);box-shadow:0 0 0 1px var(--green-800)}.choice:has(input:focus-visible){outline:3px solid var(--green-900);outline-offset:3px}.choice input{opacity:0;pointer-events:none;block-size:1px;inline-size:1px;position:absolute}.choice__media{border-radius:var(--radius-xs);background:var(--surface-alt);block-size:58px;inline-size:76px;overflow:hidden}.choice__media img{object-fit:cover;block-size:100%;inline-size:100%}.choice__body{min-width:0}.choice__body h3{font-size:1rem;line-height:1.3}.choice__body p{color:var(--muted);-webkit-line-clamp:2;-webkit-box-orient:vertical;margin-top:.25rem;font-size:.83rem;line-height:1.45;display:-webkit-box;overflow:hidden}.choice__meta{color:var(--subtle);text-align:right;white-space:nowrap;flex-direction:column;align-items:flex-end;gap:.4rem;font-size:.76rem;font-weight:700;display:flex}.choice__check{border:1px solid var(--border-strong);background:var(--surface);color:#0000;border-radius:50%;place-items:center;block-size:22px;inline-size:22px;font-size:.7rem;display:grid}.choice:has(input:checked) .choice__check{border-color:var(--green-800);background:var(--green-800);color:#fff}.calendar{border:1px solid var(--border);border-radius:var(--radius-md);overflow:hidden}.calendar__head{border-bottom:1px solid var(--border);background:var(--surface-alt);justify-content:space-between;align-items:center;gap:1rem;padding:.75rem .85rem;display:flex}.calendar__title{text-transform:capitalize;font-size:.98rem;font-weight:800}.calendar__weekdays,.calendar__grid{grid-template-columns:repeat(7,minmax(0,1fr));display:grid}.calendar__weekdays{color:var(--subtle);letter-spacing:.05em;text-align:center;text-transform:uppercase;padding:.55rem .5rem .35rem;font-size:.7rem;font-weight:800}.calendar__grid{gap:.2rem;padding:.25rem .5rem .6rem}.calendar__day{border-radius:var(--radius-xs);min-height:47px;color:var(--text);transition:background-color var(--transition), border-color var(--transition), color var(--transition);border:1px solid #0000;place-items:center;font-size:.88rem;font-weight:650;display:grid;position:relative}.calendar__day:hover:not(:disabled){border-color:var(--green-500);background:var(--green-50)}.calendar__day:disabled{color:#a4aaa5;cursor:not-allowed}.calendar__day--empty{pointer-events:none}.calendar__day[aria-pressed=true]{border-color:var(--green-800);background:var(--green-800);color:#fff}.calendar__day[aria-pressed=true]:after{content:"";background:#fff;border-radius:50%;block-size:4px;inline-size:4px;position:absolute;bottom:4px}.calendar__day--available:not([aria-pressed=true]):after{content:"";background:var(--green-600);border-radius:50%;block-size:5px;inline-size:5px;position:absolute;bottom:5px}.calendar__legend{color:var(--subtle);flex-wrap:wrap;gap:.5rem 1.1rem;margin-top:.8rem;font-size:.78rem;display:flex}.calendar__legend span{align-items:center;gap:.4rem;display:inline-flex}.calendar__legend i{background:var(--green-600);border-radius:50%;block-size:8px;inline-size:8px}.calendar__legend i.is-off{background:#c9cec9}.slot-grid{grid-template-columns:repeat(auto-fill,minmax(96px,1fr));gap:.55rem;display:grid}.slot{border:1px solid var(--border-strong);border-radius:var(--radius-sm);background:var(--surface);min-height:48px;color:var(--text);transition:border-color var(--transition), background-color var(--transition), color var(--transition);padding:.5rem .6rem;font-weight:750;line-height:1.2}.slot:hover{border-color:var(--green-700);background:var(--green-50)}.slot[aria-pressed=true]{border-color:var(--green-800);background:var(--green-800);color:#fff}.slot span{opacity:.75;margin-top:.15rem;font-size:.68rem;font-weight:600;display:block}.slot-summary{border-radius:var(--radius-sm);background:var(--green-50);color:var(--green-900);flex-wrap:wrap;align-items:center;gap:.5rem 1rem;margin-bottom:1rem;padding:.75rem .9rem;font-size:.86rem;font-weight:700;display:flex}.form-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem;display:grid}.field{flex-direction:column;gap:.35rem;display:flex}.field--full{grid-column:1/-1}.field label{font-size:.86rem;font-weight:700}.field .req{color:var(--danger)}.field input{border:1px solid var(--border-strong);border-radius:var(--radius-sm);background:var(--surface);width:100%;min-height:48px;transition:border-color var(--transition), box-shadow var(--transition);padding:.65rem .8rem}.field input:hover{border-color:#a8bdae}.field input:focus{border-color:var(--green-700);outline-offset:0;outline:3px solid #1e7e3429}.field input[aria-invalid=true]{border-color:var(--danger)}.field__error{color:var(--danger);font-size:.78rem;font-weight:650}.field__error:empty{display:none}.field__hint{color:var(--subtle);font-size:.78rem;line-height:1.45}.checkbox{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface-alt);grid-template-columns:22px minmax(0,1fr);align-items:start;gap:.65rem;padding:.9rem;font-size:.85rem;line-height:1.55;display:grid}.checkbox input{block-size:20px;inline-size:20px;accent-color:var(--green-800);margin-top:.12rem}.checkbox a{font-weight:700}.checkbox__error{color:var(--danger);grid-column:2;font-size:.78rem;font-weight:650}.checkbox__error:empty{display:none}.hp-field{block-size:1px!important;inline-size:1px!important;position:absolute!important;left:-9999px!important;overflow:hidden!important}.booking-review{border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface-alt);gap:.55rem;margin:0;padding:1rem;display:grid}.booking-review__row{border-bottom:1px solid var(--border);grid-template-columns:110px minmax(0,1fr);gap:.75rem;padding:.4rem 0;font-size:.9rem;display:grid}.booking-review__row:last-child{border-bottom:0}.booking-review dt{color:var(--subtle);font-weight:650}.booking-review dd{overflow-wrap:anywhere;margin:0;font-weight:700}.booking-review__action{color:var(--green-800);font-size:.75rem;font-weight:750;text-decoration:underline}.booking-nav{border-top:1px solid var(--border);background:var(--surface-alt);justify-content:space-between;align-items:center;gap:.8rem;padding:1rem clamp(1.25rem,3.5vw,2.25rem);display:flex}.booking-nav [hidden]{display:none!important}.booking-nav__spacer{margin-left:auto}.booking-success{border:1px solid var(--green-200);border-radius:var(--radius-lg);background:var(--surface);box-shadow:var(--shadow-md);padding:clamp(1.75rem,5vw,3rem)}.booking-success[hidden]{display:none}.booking-success__icon{background:var(--green-50);block-size:64px;inline-size:64px;color:var(--green-800);border-radius:50%;place-items:center;display:grid}.booking-success h2{margin-top:1.2rem}.booking-success__code{border:1px dashed var(--green-500);border-radius:var(--radius-sm);background:var(--green-50);color:var(--green-900);letter-spacing:.06em;align-items:center;gap:.6rem;margin-top:1.2rem;padding:.65rem 1rem;font-size:1.1rem;font-weight:800;display:inline-flex}.booking-success__details{color:var(--muted);gap:.35rem;margin-top:1.2rem;font-size:.94rem;display:grid}.booking-aside{top:calc(var(--header-height) + 1.2rem);gap:1rem;display:grid;position:sticky}.booking-help{border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface);box-shadow:var(--shadow-sm);padding:1.35rem}.booking-help h2{font-size:1.05rem}.booking-help p{color:var(--muted);margin-top:.55rem;font-size:.88rem;line-height:1.6}.booking-help__actions{gap:.5rem;margin-top:1rem;display:grid}.booking-help__list{border-top:1px solid var(--border);color:var(--muted);gap:.55rem;margin:1rem 0 0;padding:1rem 0 0;font-size:.84rem;list-style:none;display:grid}.booking-help__list li{grid-template-columns:18px minmax(0,1fr);gap:.5rem;display:grid}.booking-help__list svg{color:var(--green-800);margin-top:.16rem}.booking-aside__note{border-radius:var(--radius-sm);background:var(--olive-soft);color:#5b553a;padding:1rem 1.1rem;font-size:.8rem;line-height:1.55}.skeleton{border-radius:var(--radius-sm);background:#eef1ee;position:relative;overflow:hidden}.skeleton:after{content:"";background:linear-gradient(90deg,#0000,#fff9,#0000);animation:1.3s infinite skeleton-shine;position:absolute;inset:0;transform:translate(-100%)}.skeleton--choice{min-height:78px}.skeleton--calendar{min-height:320px}@keyframes skeleton-shine{to{transform:translate(100%)}}.booking-loading{color:var(--muted);align-items:center;gap:.75rem;padding:1.4rem;font-size:.9rem;display:flex}.spinner{border:2px solid var(--green-200);border-top-color:var(--green-800);border-radius:50%;block-size:20px;inline-size:20px;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.booking-empty{border:1px dashed var(--border-strong);border-radius:var(--radius-sm);color:var(--muted);text-align:center;padding:1.4rem;font-size:.9rem}.booking-retry{margin-top:.8rem}@media (width<=980px){.booking-layout{grid-template-columns:minmax(0,1fr)}.booking-aside{grid-template-columns:repeat(2,minmax(0,1fr));position:static}}@media (width<=700px){.booking-progress__item{justify-content:center;min-height:54px;padding:.5rem .25rem;font-size:.66rem}.booking-progress__item>span:last-child{display:none}.booking-progress__num{block-size:28px;inline-size:28px}.choice{grid-template-columns:58px minmax(0,1fr) auto;gap:.7rem}.choice__media{block-size:52px;inline-size:58px}.choice__body p{display:none}.choice__meta{font-size:.7rem}.form-grid{grid-template-columns:minmax(0,1fr)}.booking-review__row{grid-template-columns:1fr;gap:.15rem}.booking-aside{grid-template-columns:minmax(0,1fr)}.calendar__day{min-height:42px}}
