.room-detail-page{overflow-x:clip;padding:clamp(1rem,2vw,2rem) 0 3.5rem}
.room-detail-container{width:min(92vw,80rem);margin:0 auto}
.room-detail-hero{position:relative;isolation:isolate;width:100%;aspect-ratio:16/7;min-height:400px;max-height:640px;overflow:hidden;border-radius:var(--booking-card-radius);background:var(--booking-surface);box-shadow:var(--booking-card-shadow)}
.room-detail-hero__media{display:block;width:100%;height:100%;margin:0;padding:0;border:0;background:transparent;cursor:zoom-in}
.room-detail-hero__media:focus-visible{outline:3px solid var(--booking-primary);outline-offset:-5px}
.room-detail-hero__image{display:block;width:100%;height:100%;object-fit:cover;object-position:center}
.room-detail-hero__shade{position:absolute;z-index:1;inset:0;background:linear-gradient(180deg,rgba(15,23,42,.26),transparent 32%,transparent 68%,rgba(15,23,42,.28));pointer-events:none}
.room-detail-hero__controls{position:absolute;z-index:3;inset:1.25rem 1.25rem auto;display:flex;align-items:center;justify-content:space-between;gap:1rem;pointer-events:none}
.room-detail-back,.room-detail-photo-count{display:inline-flex;align-items:center;gap:.5rem;min-height:2.65rem;padding:.7rem 1rem;border:1px solid color-mix(in srgb,var(--booking-surface) 78%,transparent);border-radius:var(--booking-button-radius);background:color-mix(in srgb,var(--booking-surface) 90%,transparent);color:var(--booking-text-primary);font-size:.84rem;font-weight:750;box-shadow:var(--booking-dropdown-shadow);backdrop-filter:blur(12px);pointer-events:auto}
.room-detail-back:hover,.room-detail-photo-count:hover{background:var(--booking-surface);color:var(--booking-primary)}
.room-detail-gallery-arrow{position:absolute;z-index:3;top:50%;display:inline-flex;align-items:center;justify-content:center;width:2.75rem;height:2.75rem;border:1px solid color-mix(in srgb,var(--booking-surface) 76%,transparent);border-radius:999px;background:color-mix(in srgb,var(--booking-surface) 88%,transparent);color:var(--booking-text-primary);box-shadow:var(--booking-dropdown-shadow);transform:translateY(-50%);backdrop-filter:blur(10px)}
.room-detail-gallery-arrow:hover{background:var(--booking-primary);color:#fff}
.room-detail-gallery-arrow--prev{left:1.25rem}
.room-detail-gallery-arrow--next{right:1.25rem}
.room-detail-gallery-state{position:absolute;z-index:3;right:1.25rem;bottom:1.25rem;padding:.45rem .7rem;border-radius:999px;background:rgba(15,23,42,.74);color:#fff;font-size:.76rem;font-weight:750}
.room-detail-thumbs{position:absolute;z-index:3;left:1.25rem;bottom:1.25rem;display:flex;max-width:min(60%,32rem);gap:.45rem;overflow-x:auto;padding:.4rem;border:1px solid color-mix(in srgb,var(--booking-surface) 65%,transparent);border-radius:var(--booking-button-radius);background:color-mix(in srgb,var(--booking-surface) 78%,transparent);backdrop-filter:blur(10px)}
.room-detail-thumb{flex:0 0 auto;width:4rem;height:2.75rem;overflow:hidden;padding:0;border:2px solid transparent;border-radius:calc(var(--booking-button-radius) - 4px);background:var(--booking-surface)}
.room-detail-thumb img{display:block;width:100%;height:100%;object-fit:cover}
.room-detail-thumb.is-active,.room-detail-thumb:focus-visible{border-color:var(--booking-primary);box-shadow:0 0 0 2px color-mix(in srgb,var(--booking-primary) 24%,transparent)}

.room-detail-stay{position:relative;z-index:5;margin-top:1rem}
.room-detail-stay-form{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1.1fr) minmax(6rem,.7fr) minmax(6rem,.7fr) minmax(6rem,.7fr) auto;align-items:end;gap:.75rem;margin:0}
.room-detail-stay-form .booking-search-action{min-width:9.5rem}
.room-detail-notice,.room-detail-low-availability{margin-top:.75rem;padding:.8rem 1rem;border:1px solid var(--booking-border);border-radius:var(--booking-button-radius);background:color-mix(in srgb,var(--booking-page-background) 55%,var(--booking-surface));color:var(--booking-text-primary);font-size:.88rem}
.room-detail-notice--error{border-color:color-mix(in srgb,var(--booking-danger) 32%,var(--booking-surface));background:color-mix(in srgb,var(--booking-danger) 9%,var(--booking-surface));color:var(--booking-danger)}
.room-detail-low-availability{border-color:#fed7aa;background:#fff7ed;color:#9a3412;font-weight:750}

.room-detail-layout{display:grid;grid-template-columns:minmax(280px,.8fr) minmax(0,1.45fr);gap:clamp(1.25rem,3vw,2.5rem);align-items:start;margin-top:clamp(1.5rem,3vw,2.5rem)}
.room-detail-information{min-width:0}
.room-detail-information__inner{padding:clamp(1.2rem,2.4vw,2rem);border:1px solid var(--booking-border);border-radius:var(--booking-card-radius);background:var(--booking-surface);box-shadow:var(--booking-card-shadow)}
.room-detail-eyebrow{margin-bottom:.5rem;color:var(--booking-primary);font-size:.72rem;font-weight:800;letter-spacing:.11em;text-transform:uppercase}
.room-detail-information h1{margin:0;color:var(--booking-text-primary);font-family:var(--font-heading,inherit);font-size:clamp(2rem,3.5vw,3rem);font-weight:800;line-height:1.08}
.room-detail-capacity{display:flex;align-items:center;gap:.55rem;margin:1rem 0 0;color:var(--booking-text-primary);font-size:.95rem;font-weight:750}
.room-detail-capacity i{color:var(--booking-primary)}
.room-detail-compact-facts{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.75rem;margin:1.25rem 0 0;padding-top:1.25rem;border-top:1px solid var(--booking-border)}
.room-detail-compact-facts>div{min-width:0}
.room-detail-compact-facts dt{display:flex;align-items:center;gap:.45rem;color:var(--booking-text-secondary);font-size:.78rem;font-weight:750}
.room-detail-compact-facts dt i{color:var(--booking-primary)}
.room-detail-compact-facts dd{margin:.35rem 0 0;color:var(--booking-text-primary);font-size:.9rem;font-weight:700;overflow-wrap:anywhere}
.room-detail-description{margin:1rem 0 0;color:var(--booking-text-secondary);font-size:.98rem;line-height:1.75}
.room-detail-facts-section,.room-detail-amenities-preview{margin-top:1.75rem;padding-top:1.5rem;border-top:1px solid var(--booking-border)}
.room-detail-facts-section h2,.room-detail-amenities-preview h2{margin:0 0 .9rem;color:var(--booking-text-primary);font-family:var(--font-heading,inherit);font-size:1.25rem;font-weight:800}
.room-detail-facts{display:grid;gap:.75rem;margin:0}
.room-detail-fact{display:grid;grid-template-columns:minmax(7rem,.72fr) minmax(0,1fr);gap:.85rem;align-items:start}
.room-detail-fact dt{display:flex;align-items:center;gap:.55rem;color:var(--booking-text-secondary);font-size:.84rem;font-weight:700}
.room-detail-fact dt i{width:1rem;color:var(--booking-primary);text-align:center}
.room-detail-fact dd{margin:0;color:var(--booking-text-primary);font-size:.9rem;line-height:1.45}
.room-detail-guest-fit{display:flex;gap:.5rem;margin:1rem 0 0;color:#047857;font-size:.86rem;font-weight:700}
.room-detail-guest-fit i{margin-top:.15rem}
.room-detail-information .room-detail-low-availability{margin-top:1rem}
.room-detail-amenities-preview ul{display:grid;gap:.65rem;margin:0;padding:0;list-style:none}
.room-detail-amenities-preview li{display:flex;gap:.55rem;color:var(--booking-text-primary);font-size:.9rem}
.room-detail-amenities-preview li i{margin-top:.18rem;color:var(--booking-primary)}
.room-detail-amenities-button{margin-top:1rem;padding:.45rem 0;border:0;border-bottom:1px solid currentColor;background:transparent;color:var(--booking-primary);font-size:.87rem;font-weight:800}

.room-detail-offers{min-width:0}
.room-detail-offer-list{display:grid;gap:1rem}
.room-detail-rate-option.booking-room-card{display:grid;grid-template-columns:minmax(0,1fr) minmax(205px,29%);min-height:0;overflow:hidden;border:1px solid var(--booking-border);border-radius:var(--booking-card-radius);background:var(--booking-surface);box-shadow:var(--booking-card-shadow)}
.room-detail-rate-option .booking-room-card__details{padding:1.5rem;border-right:1px solid var(--booking-border)}
.room-detail-rate-option .booking-room-card__booking{border-radius:0 var(--booking-card-radius) var(--booking-card-radius) 0}
.room-detail-rate-option .booking-rate-row__commerce{display:flex;flex:1;flex-direction:column;height:100%}
.room-detail-rate-option .booking-room-card__actions{margin-top:auto}
.room-detail-rate-option .booking-room-card__amenities{margin-top:.65rem}
.room-detail-rate-option .booking-rate-row__totals>div{justify-content:flex-end;gap:.4rem;text-align:right}
.room-detail-rate-option__information{min-width:0}
.room-detail-rate-option__header h3{overflow-wrap:anywhere;margin:0;color:var(--booking-text-primary);font-size:1.15rem;font-weight:800;line-height:1.35}
.room-detail-rate-option__header p{margin:.3rem 0 0;color:var(--booking-text-secondary);font-size:.88rem;font-weight:650}
.room-detail-rate-option__status{display:flex;align-items:center;gap:.5rem;margin:.9rem 0 0;color:var(--booking-text-primary);font-size:.85rem;font-weight:750}
.room-detail-rate-option__status i{color:var(--booking-primary)}
.room-detail-rate-option__policy{display:grid;gap:.25rem;margin-top:1rem;color:var(--booking-text-secondary);font-size:.82rem;line-height:1.5}
.room-detail-rate-option__policy strong{color:var(--booking-text-primary)}
.room-detail-rate-option__restrictions{margin:1rem 0 0;color:var(--booking-text-secondary);font-size:.78rem}
.room-detail-rate-option__commerce{align-self:stretch;text-align:right}
.room-detail-rate-option__price strong{display:block;overflow-wrap:anywhere;color:var(--booking-text-primary);font-size:clamp(1.35rem,2vw,1.7rem);font-weight:850;line-height:1.15}
.room-detail-rate-option__price span{display:block;margin-top:.2rem;color:var(--booking-text-secondary);font-size:.75rem}
.room-detail-rate-option__breakdown{display:grid;gap:.5rem;margin:1rem 0 0;font-size:.8rem}
.room-detail-rate-option__breakdown>div{display:flex;justify-content:space-between;gap:.75rem}
.room-detail-rate-option__breakdown dt{color:var(--booking-text-secondary);text-align:left}
.room-detail-rate-option__breakdown dd{margin:0;color:var(--booking-text-primary);font-weight:750}
.room-detail-rate-option__total{margin-top:.2rem;padding-top:.7rem;border-top:1px solid var(--booking-border)}
.room-detail-rate-option__total dt,.room-detail-rate-option__total dd{font-weight:850}
.room-detail-rate-option__action{display:flex;flex-direction:column;margin-top:0}
.room-detail-rate-option__action .theme-button-primary{min-height:2.8rem}
.room-detail-rate-option__room-requirement{margin:0 0 .55rem;color:var(--booking-text-secondary);font-size:.75rem;text-align:center}
.room-detail-policies{margin-top:1.5rem}
.room-detail-policy-section{padding:clamp(1.2rem,2.4vw,2rem);border:1px solid var(--booking-border);border-radius:var(--booking-card-radius);background:var(--booking-surface);box-shadow:var(--booking-card-shadow)}
.room-detail-policy-section h2{margin:0;color:var(--booking-text-primary);font-family:var(--font-heading,inherit);font-size:1.5rem;font-weight:800}
.room-detail-policy-list{display:grid;gap:0;margin-top:1rem;border-top:1px solid var(--booking-border)}
.room-detail-policy-list details{border-bottom:1px solid var(--booking-border)}
.room-detail-policy-list summary{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:1rem 0;color:var(--booking-text-primary);font-weight:750;cursor:pointer}
.room-detail-policy-list summary i{transition:transform .18s ease}
.room-detail-policy-list details[open] summary i{transform:rotate(180deg)}
.room-detail-policy-list p{margin:0;padding:0 0 1rem;color:var(--booking-text-secondary);font-size:.9rem;line-height:1.7}

.room-amenities-modal[hidden]{display:none}
.room-amenities-modal{position:fixed;z-index:10020;inset:0;display:grid;place-items:center;padding:max(1rem,env(safe-area-inset-top)) max(1rem,env(safe-area-inset-right)) max(1rem,env(safe-area-inset-bottom)) max(1rem,env(safe-area-inset-left))}
.room-amenities-modal__backdrop{position:absolute;inset:0;background:color-mix(in srgb,var(--booking-modal-backdrop) calc(var(--booking-modal-backdrop-opacity) * 100%),transparent);backdrop-filter:blur(var(--booking-overlay-blur))}
.room-amenities-modal__panel{position:relative;width:min(94vw,46rem);max-height:min(84vh,42rem);overflow:auto;border:1px solid var(--booking-modal-border);border-radius:var(--booking-modal-radius);background:var(--booking-modal-surface);box-shadow:var(--booking-modal-shadow)}
.room-amenities-modal__panel header{position:sticky;z-index:1;top:0;display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:1.25rem 1.5rem;border-bottom:1px solid var(--booking-border);background:var(--booking-surface)}
.room-amenities-modal__panel h2{margin:0;color:var(--booking-text-primary);font-size:1.25rem;font-weight:800}
.room-amenities-modal__close{display:inline-flex;flex:0 0 auto;align-items:center;justify-content:center;width:2.5rem;height:2.5rem;border:1px solid var(--booking-border);border-radius:999px;background:var(--booking-surface);color:var(--booking-text-primary)}
.room-amenities-modal__grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem 1.5rem;padding:1.5rem}
.room-amenities-modal__grid>div{display:flex;gap:.6rem;color:var(--booking-text-primary);font-size:.9rem}
.room-amenities-modal__grid i{margin-top:.18rem;color:var(--booking-primary)}
.room-detail-page :is(button,a,input,select):focus-visible,.room-amenities-modal :is(button,a):focus-visible{outline:3px solid var(--softstay-focus-ring,var(--booking-primary));outline-offset:3px}
body.room-detail-modal-open{overflow:hidden}

@media (min-width:1100px){
  .room-detail-information__inner{position:sticky;top:1.25rem}
}
@media (max-width:1099px){
  .room-detail-stay-form{grid-template-columns:repeat(3,minmax(0,1fr))}
  .room-detail-stay-form .booking-search-action{min-width:0}
  .room-detail-layout{grid-template-columns:minmax(250px,.8fr) minmax(0,1.25fr);gap:1rem}
  .room-detail-rate-option{grid-template-columns:1fr}
  .room-detail-rate-option.booking-room-card{grid-template-columns:1fr!important}
  .room-detail-rate-option .booking-room-card__details{border-right:0;border-bottom:1px solid var(--booking-border)}
  .room-detail-rate-option .booking-room-card__booking{border-radius:0 0 var(--booking-card-radius) var(--booking-card-radius)}
  .room-detail-rate-option__commerce{text-align:left}
}
@media (max-width:767px){
  .room-detail-page{padding-top:.75rem}
  .room-detail-container{width:min(94vw,44rem)}
  .room-detail-hero{aspect-ratio:4/3;min-height:250px;max-height:520px}
  .room-detail-hero__controls{inset:.75rem .75rem auto}
  .room-detail-back,.room-detail-photo-count{min-height:2.4rem;padding:.58rem .72rem;font-size:.76rem}
  .room-detail-gallery-arrow{width:2.5rem;height:2.5rem}
  .room-detail-gallery-arrow--prev{left:.75rem}
  .room-detail-gallery-arrow--next{right:.75rem}
  .room-detail-gallery-state{right:.75rem;bottom:.75rem}
  .room-detail-thumbs{display:none}
  .room-detail-stay-form{grid-template-columns:1fr}
  .room-detail-stay-form .booking-search-action{width:100%}
  .room-detail-layout{grid-template-columns:1fr}
  .room-detail-information__inner{padding:1.15rem}
  .room-detail-rate-option .booking-room-card__details,.room-detail-rate-option .booking-room-card__booking{padding:1.15rem}
  .room-detail-rate-option__action .theme-button-primary{width:100%;min-height:3rem}
  .room-amenities-modal__panel{width:100%;max-height:calc(100dvh - max(2rem,env(safe-area-inset-top) + env(safe-area-inset-bottom)))}
  .room-amenities-modal__grid{grid-template-columns:1fr;padding:1.1rem}
  .room-amenities-modal__panel header{padding:1rem 1.1rem}
}
@media (max-width:420px){
  .room-detail-hero__controls{align-items:flex-start}
  .room-detail-photo-count{max-width:45%;text-align:left}
  .room-detail-fact{grid-template-columns:1fr;gap:.25rem}
  .room-detail-compact-facts{grid-template-columns:repeat(2,minmax(0,1fr));gap:.6rem}
}
