.booking-page{background:var(--color-bg)}.booking-page__header{text-align:center;background:var(--color-bg-secondary);padding:clamp(2rem,4vw,3.5rem) 0 clamp(2.5rem,5vw,4.5rem)}.booking-page__title{letter-spacing:-.02em;margin-bottom:var(--space-3);font-size:clamp(1.75rem,1.2rem + 2.2vw,2.75rem);font-weight:700}.booking-page__subtitle{font-size:var(--text-base);color:var(--color-text-secondary);max-width:34ch;margin:0 auto}.booking-page__content{padding:0 0 var(--space-16);max-width:1160px;margin:clamp(-3rem,-2.5vw,-2rem) auto 0}.booking-form__layout{align-items:start;gap:clamp(1rem,2vw,2rem);display:grid}@media (min-width:960px){.booking-form__layout{grid-template-columns:minmax(0,1fr) 22rem}}.booking-form__main{gap:clamp(.75rem,1.5vw,1.25rem);min-width:0;display:grid}.booking-step{background:var(--color-white);border:1px solid var(--color-border);border-radius:var(--radius-xl);animation:.62s cubic-bezier(.16,1,.3,1) both booking-rise;animation-delay:calc(var(--step-index,0)*90ms);padding:clamp(1rem,2vw,1.75rem)}.booking-step__head{margin-bottom:var(--space-4);align-items:center;gap:.6rem;display:flex}.booking-step__num{background:var(--color-bg-secondary);width:26px;height:26px;color:var(--color-primary);font-variant-numeric:tabular-nums;border-radius:50%;place-items:center;font-size:13px;font-weight:600;display:grid}.booking-step__title{font-size:var(--text-lg);margin:0;font-weight:600}.booking-step__hint{font-size:var(--text-sm);color:var(--color-text-secondary);margin-left:auto;animation:1.4s ease-in-out infinite booking-pulse}.booking-field-row{gap:var(--space-4);grid-template-columns:repeat(auto-fit,minmax(190px,1fr));display:grid}.booking-field{gap:.35rem;min-width:0;display:grid}.booking-field--narrow{max-width:12rem}.booking-field__label{font-size:var(--text-sm);color:var(--color-text-secondary);font-weight:500}.booking-field input,.booking-field select,.booking-field textarea{border:1px solid var(--color-border);border-radius:var(--radius-md);width:100%;font:inherit;font-size:var(--text-base);color:var(--color-text);background:var(--color-white);padding:.7rem .8rem;transition:border-color .16s,box-shadow .16s}.booking-field textarea{resize:vertical;min-height:5.5rem}.booking-field input:hover,.booking-field select:hover,.booking-field textarea:hover{border-color:var(--color-gray-300)}.booking-field input:focus-visible,.booking-field select:focus-visible,.booking-field textarea:focus-visible{border-color:var(--color-primary);outline:none;box-shadow:0 0 0 3px #0a633124}.booking-field+.booking-field{margin-top:var(--space-4)}.booking-quick{margin-top:var(--space-4);flex-wrap:wrap;align-items:center;gap:.5rem;display:flex}.booking-quick__label{font-size:var(--text-sm);color:var(--color-text-secondary);margin-right:.25rem}.booking-quick__chip{border:1px solid var(--color-border);background:var(--color-white);color:var(--color-text);font:inherit;font-size:var(--text-sm);cursor:pointer;border-radius:999px;padding:.55rem .9rem;transition:background-color .16s,border-color .16s,transform .16s cubic-bezier(.16,1,.3,1)}.booking-quick__chip:hover{background:var(--color-bg-secondary);border-color:var(--color-primary);transform:translateY(-1px)}.booking-quick__chip:active{transform:translateY(0)}.room-choice{border:0;margin:0;padding:0}.room-choice__legend{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.room-choice__grid{gap:var(--space-3);grid-template-columns:repeat(auto-fit,minmax(200px,1fr));display:grid}.room-choice__card{border:1px solid var(--color-border);border-radius:var(--radius-lg);background:var(--color-white);cursor:pointer;animation:.56s cubic-bezier(.16,1,.3,1) both booking-rise;animation-delay:calc(var(--card-index,0)*70ms + .12s);grid-template-rows:auto 1fr;transition:border-color .18s,box-shadow .22s,transform .22s cubic-bezier(.16,1,.3,1);display:grid;position:relative;overflow:hidden}.room-choice__card:hover{border-color:var(--color-gray-300);transform:translateY(-3px);box-shadow:0 12px 28px #1018281a}.room-choice__card--active{border-color:var(--color-primary);box-shadow:0 0 0 2px #0a633129}.room-choice__card--soldout .room-choice__photo-img{filter:grayscale(.7)}.room-choice__input{opacity:0;cursor:pointer;width:100%;height:100%;margin:0;position:absolute;inset:0}.room-choice__input:focus-visible+.room-choice__photo{outline:var(--focus-ring-width,2px)solid var(--focus-ring-color,var(--color-primary));outline-offset:-2px}.room-choice__photo{aspect-ratio:4/3;background:var(--color-bg-secondary);display:block;position:relative}.room-choice__photo-img{object-fit:cover;transition:transform .48s cubic-bezier(.16,1,.3,1),filter .24s}.room-choice__card:hover .room-choice__photo-img{transform:scale(1.04)}.room-choice__price{color:var(--color-white);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#101828c7;border-radius:999px;padding:4px 10px;font-size:13px;font-weight:600;position:absolute;bottom:8px;left:8px}.room-choice__card--active .room-choice__photo:after{content:"✓";background:var(--color-primary);width:24px;height:24px;color:var(--color-white);border-radius:50%;place-items:center;font-size:13px;font-weight:600;display:grid;position:absolute;top:8px;left:8px}.room-choice__body{gap:.3rem;padding:.75rem .85rem .9rem;display:grid}.room-choice__name{font-size:var(--text-base);font-weight:600;line-height:1.3}.room-choice__meta,.room-choice__state{color:var(--color-text-secondary);font-size:13px}.room-choice__meta{flex-wrap:wrap;gap:0 .3rem;line-height:1.45;display:flex}.room-choice__sep{color:var(--color-gray-300)}.room-choice__state{font-weight:500}.room-choice__card--soldout .room-choice__state{color:#b42318}.room-gallery{margin-top:var(--space-4);gap:.5rem;display:grid}.room-gallery:focus-visible{outline:var(--focus-ring-width,2px)solid var(--focus-ring-color,var(--color-primary));outline-offset:4px;border-radius:var(--radius-lg)}.room-gallery__stage{aspect-ratio:3/2;border-radius:var(--radius-lg);background:var(--color-bg-secondary);position:relative;overflow:hidden}.room-gallery__photo{object-fit:cover;animation:.42s both booking-fade}.room-gallery__nav{width:40px;height:40px;color:var(--color-text);cursor:pointer;background:#ffffffe6;border:0;border-radius:50%;place-items:center;transition:background-color .16s,opacity .16s;display:grid;position:absolute;top:50%;transform:translateY(-50%)}.room-gallery__nav svg{fill:none;stroke:currentColor;stroke-width:2px;stroke-linecap:round;stroke-linejoin:round;width:20px;height:20px}.room-gallery__nav:hover{background:var(--color-white)}.room-gallery__nav--prev{left:10px}.room-gallery__nav--next{right:10px}.room-gallery__counter{color:var(--color-white);font-variant-numeric:tabular-nums;background:#101828b3;border-radius:999px;margin:0;padding:3px 9px;font-size:12px;position:absolute;bottom:12px;right:12px}.room-gallery__strip{scrollbar-width:thin;gap:.5rem;padding-bottom:2px;display:flex;overflow-x:auto}.room-gallery__thumb{aspect-ratio:4/3;border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-bg-secondary);cursor:pointer;opacity:.72;flex:none;width:84px;padding:0;transition:opacity .18s,border-color .18s;position:relative;overflow:hidden}.room-gallery__thumb:hover{opacity:1}.room-gallery__thumb--active{opacity:1;border-color:var(--color-primary)}.room-gallery__thumb-photo{object-fit:cover}.booking-summary{min-width:0}@media (min-width:960px){.booking-summary{top:calc(var(--header-height,72px) + 1rem);position:sticky}}.booking-summary__card{background:var(--color-white);border:1px solid var(--color-border);border-radius:var(--radius-xl);animation:.7s cubic-bezier(.16,1,.3,1) .16s both booking-rise;overflow:hidden;box-shadow:0 18px 40px #10182812}.booking-summary__empty{color:var(--color-text-secondary);margin:.9rem 1rem 0;font-size:13px;line-height:1.5}.booking-summary__photo{aspect-ratio:16/10;background:var(--color-bg-secondary);position:relative}.booking-summary__photo-img{object-fit:cover}.booking-summary__room{color:var(--color-white);font-size:var(--text-base);background:linear-gradient(#0000,#101828d1);margin:0;padding:2.5rem .9rem .7rem;font-weight:600;position:absolute;inset:auto 0 0}.booking-summary__rows{gap:.45rem;margin:0;padding:.9rem 1rem .4rem;display:grid}.booking-summary__row{font-size:var(--text-sm);justify-content:space-between;gap:1rem;display:flex}.booking-summary__row dt{color:var(--color-text-secondary)}.booking-summary__row dd{font-variant-numeric:tabular-nums;margin:0;font-weight:500}.booking-summary__total{border-top:1px solid var(--color-border);font-size:var(--text-sm);color:var(--color-text-secondary);justify-content:space-between;align-items:baseline;gap:1rem;margin:.5rem 1rem 0;padding-top:.75rem;display:flex}.booking-summary__total strong{font-size:var(--text-2xl);color:var(--color-primary);font-variant-numeric:tabular-nums;font-weight:700}.booking-summary__state{border-radius:var(--radius-md);background:var(--color-bg-secondary);color:var(--color-text-secondary);margin:.6rem 1rem 0;padding:.45rem .7rem;font-size:13px}.booking-summary__state--busy{color:#b42318;background:#fdecea}.booking-summary__consent{color:var(--color-text-secondary);align-items:flex-start;gap:.55rem;margin:.9rem 1rem 0;font-size:13px;line-height:1.45;display:flex}.booking-summary__consent input[type=checkbox]{width:18px;height:18px;accent-color:var(--color-primary);cursor:pointer;flex:none;margin-top:1px}.booking-summary__errors{border-radius:var(--radius-md);color:#b42318;background:#fdecea;margin:.9rem 1rem 0;padding:.6rem .75rem .6rem 1.6rem;font-size:13px}.booking-summary__submit{width:calc(100% - 2rem);margin:.9rem 1rem 0}.booking-summary__submit:disabled{opacity:.6;cursor:progress}.booking-summary__note{color:var(--color-text-secondary);margin:.7rem 1rem 1.1rem;font-size:13px;line-height:1.5}.booking-done{background:var(--color-white);border:1px solid var(--color-border);border-radius:var(--radius-xl);max-width:40rem;margin:0 auto;animation:.62s cubic-bezier(.16,1,.3,1) both booking-rise;overflow:hidden;box-shadow:0 18px 40px #10182812}.booking-done__photo{aspect-ratio:16/9;background:var(--color-bg-secondary);position:relative}.booking-done__photo img{object-fit:cover}.booking-done__body{padding:clamp(1.1rem,2.5vw,1.9rem)}.booking-done__badge{background:var(--color-bg-secondary);color:var(--color-primary);letter-spacing:.04em;text-transform:uppercase;border-radius:999px;margin:0 0 .6rem;padding:3px 10px;font-size:12px;font-weight:600;display:inline-block}.booking-done__title{margin:0 0 var(--space-3);font-size:var(--text-2xl);letter-spacing:-.01em;font-weight:700}.booking-done__text{margin:0 0 var(--space-3);color:var(--color-text-secondary);line-height:1.6}.booking-done__text--note{font-size:var(--text-sm)}.booking-done__actions{gap:var(--space-3);margin-top:var(--space-5);flex-wrap:wrap;display:flex}.booking-done__reset{margin-top:var(--space-4);color:var(--color-text-secondary);font:inherit;font-size:var(--text-sm);cursor:pointer;background:0 0;border:none;padding:0;text-decoration:underline}.booking-done__reset:hover{color:var(--color-primary)}.booking-form__note{background:var(--color-white);border:1px solid var(--color-border);border-radius:var(--radius-lg);color:var(--color-text-secondary);margin:0;padding:clamp(1rem,2vw,1.5rem)}@keyframes booking-rise{0%{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}@keyframes booking-fade{0%{opacity:0}to{opacity:1}}@keyframes booking-pulse{0%,to{opacity:1}50%{opacity:.45}}@media (prefers-reduced-motion:reduce){.booking-step,.room-choice__card,.booking-summary__card,.booking-done,.room-gallery__photo,.booking-step__hint{animation:none}.room-choice__card,.room-choice__photo-img,.booking-quick__chip{transition:none}}@media (max-width:640px){.booking-page__content{padding-bottom:var(--space-10);margin-top:-1.5rem}.room-choice__grid{grid-template-columns:1fr}.room-choice__card{grid-template-rows:auto;grid-template-columns:8.5rem minmax(0,1fr);align-items:stretch}.room-choice__photo{aspect-ratio:auto;width:100%;height:100%;min-height:7rem}.room-choice__body{align-content:center;padding:.7rem .85rem}.room-choice__meta{gap:1px;display:grid}.room-choice__sep{display:none}.room-gallery__stage{aspect-ratio:4/3}.booking-field--narrow{max-width:none}}
