/* GLASSFORGE live booking calendar */
.glassforge-calendar {
  --calendar-gap: 10px;
  margin: 28px 0;
  padding: clamp(18px, 3vw, 30px);
  color: var(--ink, #211a11);
  background:
    linear-gradient(145deg, rgba(255, 255, 255, .76), rgba(248, 244, 235, .62)),
    radial-gradient(circle at 8% 0, color-mix(in srgb, var(--rc, #d6aa3c) 16%, transparent), transparent 38%);
  border: 1px solid var(--glass-border, rgba(246, 210, 104, .36));
  box-shadow: var(--gf-raised);
  -webkit-backdrop-filter: var(--gf-glass);
  backdrop-filter: var(--gf-glass);
  isolation: isolate;
}
.glassforge-calendar__head { display: flex; align-items: flex-start; justify-content: space-between; gap: 24px; margin-bottom: 22px; }
.glassforge-calendar__head h2 { margin: 3px 0 6px; font-family: "Cormorant Garamond", Georgia, serif; font-size: clamp(30px, 4vw, 48px); line-height: 1; }
.glassforge-calendar__head p { margin: 0; }
.glassforge-calendar__trust {
  display: inline-flex; align-items: center; gap: 8px; flex: 0 0 auto;
  padding: 9px 12px; color: var(--green, #27624e); background: rgba(255, 255, 255, .38);
  border: 1px solid color-mix(in srgb, var(--green, #27624e) 28%, transparent);
  box-shadow: var(--gf-raised-sm); font-size: 12px; font-weight: 800; letter-spacing: .08em; text-transform: uppercase;
}
.glassforge-room-switcher { display: grid; grid-template-columns: repeat(auto-fit, minmax(160px, 1fr)); gap: 10px; margin-bottom: 22px; }
.glassforge-room-chip {
  --rc: var(--gold, #d6aa3c); display: flex; align-items: center; gap: 10px;
  min-height: 58px; padding: 10px 12px; text-align: left; color: var(--ink, #211a11);
  background: rgba(255, 255, 255, .42); border: 1px solid color-mix(in srgb, var(--rc) 36%, var(--glass-border));
  box-shadow: var(--gf-raised-sm); cursor: pointer;
  transition: box-shadow .16s var(--gf-ease), transform .16s var(--gf-ease), border-color .16s var(--gf-ease);
}
.glassforge-room-chip:hover { transform: translateY(-2px); border-color: var(--rc); box-shadow: 8px 8px 20px color-mix(in srgb, var(--rc) 28%, rgba(58, 40, 14, .16)), -6px -6px 16px rgba(255, 250, 238, .82); }
.glassforge-room-chip.is-active { border-color: var(--rc); box-shadow: var(--gf-inset-sm), 0 0 0 2px color-mix(in srgb, var(--rc) 48%, transparent) !important; }
.glassforge-room-chip__dot { width: 14px; height: 34px; flex: 0 0 auto; background: var(--rc); box-shadow: 0 0 18px color-mix(in srgb, var(--rc) 72%, transparent); }
.glassforge-room-chip > span:last-child { display: grid; min-width: 0; }
.glassforge-room-chip strong, .glassforge-room-chip small { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.glassforge-room-chip strong { font-size: 13px; }
.glassforge-room-chip small { color: var(--muted, #766b5c); font-size: 11px; }
.glassforge-calendar__toolbar {
  display: grid; grid-template-columns: 44px minmax(0, 1fr) 44px; align-items: center; gap: 14px;
  margin-bottom: 12px; padding: 12px; background: rgba(255, 255, 255, .34);
  border: 1px solid var(--glass-border); box-shadow: var(--gf-inset-sm);
}
.glassforge-calendar__month-picker { display: grid; grid-template-columns: auto minmax(130px, 190px) 94px; align-items: center; justify-content: center; gap: 8px; }
.glassforge-calendar__month-picker select, .glassforge-calendar__month-picker input { min-height: 40px; padding: 7px 9px; font-weight: 800; }
.glassforge-calendar__month-picker small { grid-column: 1 / -1; color: var(--muted, #766b5c); text-align: center; font-size: 11px; letter-spacing: .08em; text-transform: uppercase; }
.glassforge-calendar__nav {
  display: grid; place-items: center; width: 44px; height: 44px; color: var(--ink, #211a11);
  background: rgba(255, 255, 255, .44); border: 1px solid var(--glass-border); box-shadow: var(--gf-raised-sm); cursor: pointer;
}
.glassforge-calendar__nav:active { box-shadow: var(--gf-inset-sm); }
.glassforge-calendar__weekdays, .glassforge-calendar__grid { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: var(--calendar-gap); }
.glassforge-calendar__weekdays { margin-bottom: 8px; }
.glassforge-calendar__weekdays span { padding: 5px 2px; color: var(--muted, #766b5c); text-align: center; font-size: 10px; font-weight: 800; letter-spacing: .12em; text-transform: uppercase; }
.glassforge-calendar__grid { position: relative; }
.glassforge-calendar__grid.is-loading { opacity: .55; pointer-events: none; }
.glassforge-calendar__grid.is-loading::after {
  content: "Refreshing live availability…"; position: absolute; inset: 0; z-index: 5; display: grid; place-items: center;
  color: var(--ink, #211a11); background: rgba(248, 244, 235, .76); border: 1px solid var(--glass-border);
  -webkit-backdrop-filter: blur(8px); backdrop-filter: blur(8px); font-weight: 800;
}
.glassforge-day {
  --rc: var(--gold, #d6aa3c); position: relative; display: grid; grid-template-rows: auto auto 1fr auto;
  align-content: start; gap: 3px; min-height: 112px; padding: 10px; overflow: hidden; text-align: left;
  color: var(--ink, #211a11); background: rgba(255, 255, 255, .62);
  border: 1px solid color-mix(in srgb, var(--rc) 34%, var(--glass-border));
  box-shadow: 6px 6px 15px color-mix(in srgb, var(--rc) 30%, rgba(58, 40, 14, .14)), -5px -5px 12px rgba(255, 250, 238, .82);
  cursor: pointer; transition: box-shadow .16s var(--gf-ease), transform .16s var(--gf-ease), opacity .16s var(--gf-ease), background .16s var(--gf-ease);
}
.glassforge-day::before { content: ""; position: absolute; inset: 0 0 auto; height: 4px; background: var(--rc); box-shadow: 0 0 16px color-mix(in srgb, var(--rc) 70%, transparent); }
.glassforge-day:hover:not(:disabled) { z-index: 2; transform: translateY(-3px); box-shadow: 10px 10px 26px color-mix(in srgb, var(--rc) 45%, rgba(58, 40, 14, .2)), -8px -8px 20px rgba(255, 250, 238, .88); }
.glassforge-day.is-booked, .glassforge-day:disabled { color: color-mix(in srgb, var(--muted, #766b5c) 82%, transparent); background: color-mix(in srgb, var(--danger, #9f2d2d) 7%, rgba(255, 255, 255, .56)); border-color: color-mix(in srgb, var(--danger, #9f2d2d) 18%, var(--glass-border)); box-shadow: var(--gf-inset-sm) !important; cursor: not-allowed; }
.glassforge-day.is-booked::before { background: color-mix(in srgb, var(--danger, #9f2d2d) 46%, #fff); box-shadow: none; }
.glassforge-day.is-outside { opacity: .42; }
.glassforge-day.is-in-range { background: color-mix(in srgb, var(--rc) 13%, rgba(255, 255, 255, .68)); }
.glassforge-day.is-start, .glassforge-day.is-end { outline: 2px solid var(--gold, #d6aa3c); outline-offset: -4px; box-shadow: var(--gf-inset), 0 0 0 2px color-mix(in srgb, var(--gold, #d6aa3c) 36%, transparent) !important; }
.glassforge-day__date { font-family: "Cormorant Garamond", Georgia, serif; font-size: 25px; font-weight: 800; line-height: 1; }
.glassforge-day__season { overflow: hidden; color: var(--muted, #766b5c); font-size: 9px; font-weight: 800; letter-spacing: .08em; text-overflow: ellipsis; text-transform: uppercase; white-space: nowrap; }
.glassforge-day strong { align-self: end; font-size: 12px; }
.glassforge-day small { color: var(--muted, #766b5c); font-size: 9px; }
.glassforge-calendar__summary {
  display: grid; grid-template-columns: minmax(220px, 1fr) auto auto; align-items: center; gap: 18px;
  margin-top: 18px; padding: 15px; background: rgba(255, 255, 255, .38); border: 1px solid var(--glass-border); box-shadow: var(--gf-inset-sm);
}
.glassforge-calendar__selection { display: flex; align-items: center; gap: 11px; min-width: 0; }
.glassforge-calendar__selection span { display: grid; min-width: 0; }
.glassforge-calendar__selection small { color: var(--muted, #766b5c); }
.glassforge-calendar__selection strong { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.glassforge-calendar__legend { display: flex; flex-wrap: wrap; justify-content: center; gap: 9px; color: var(--muted, #766b5c); font-size: 10px; font-weight: 700; }
.glassforge-calendar__legend span { display: inline-flex; align-items: center; gap: 5px; }
.glassforge-calendar__legend i { width: 10px; height: 10px; border: 1px solid var(--glass-border); }
.glassforge-calendar__legend i.is-available { background: var(--green, #27624e); }
.glassforge-calendar__legend i.is-booked { background: var(--danger, #9f2d2d); }
.glassforge-calendar__legend i.is-selected { background: var(--gold, #d6aa3c); }
.glassforge-calendar__message { margin: 12px 0 0; padding: 10px 12px; background: rgba(255, 255, 255, .34); border-left: 4px solid var(--gold, #d6aa3c); box-shadow: var(--gf-inset-sm); }
.glassforge-calendar-host + .rate-calendar, .glassforge-calendar-host ~ .rate-calendar { display: none !important; }

@media (max-width: 900px) {
  .glassforge-calendar { --calendar-gap: 7px; padding: 18px; }
  .glassforge-calendar__summary { grid-template-columns: 1fr; }
  .glassforge-calendar__summary .button { width: 100%; }
  .glassforge-day { min-height: 96px; padding: 8px; }
}
@media (max-width: 680px) {
  .glassforge-calendar__head { display: grid; }
  .glassforge-calendar__trust { justify-self: start; }
  .glassforge-room-switcher { display: flex; overflow-x: auto; padding: 4px 2px 12px; scroll-snap-type: x mandatory; }
  .glassforge-room-chip { min-width: 180px; scroll-snap-align: start; }
  .glassforge-calendar__toolbar { grid-template-columns: 40px minmax(0, 1fr) 40px; gap: 7px; padding: 8px; }
  .glassforge-calendar__month-picker { grid-template-columns: minmax(100px, 1fr) 78px; gap: 5px; }
  .glassforge-calendar__month-picker > svg { display: none; }
  .glassforge-calendar__weekdays, .glassforge-calendar__grid { gap: 4px; }
  .glassforge-calendar__weekdays span { font-size: 8px; }
  .glassforge-day { min-height: 78px; padding: 7px 5px; }
  .glassforge-day__date { font-size: 20px; }
  .glassforge-day__season, .glassforge-day small { display: none; }
  .glassforge-day strong { font-size: 9px; }
}
@media (max-width: 420px) {
  .glassforge-calendar { padding: 14px 8px; }
  .glassforge-calendar__head { padding: 0 6px; }
  .glassforge-calendar__toolbar { margin-inline: 3px; }
  .glassforge-day { min-height: 68px; }
  .glassforge-day strong { font-size: 8px; }
}
@media (prefers-color-scheme: dark) {
  .glassforge-calendar, .glassforge-room-chip, .glassforge-day, .glassforge-calendar__toolbar, .glassforge-calendar__summary { color: #f7ecd2; background-color: rgba(30, 24, 16, .78); }
  .glassforge-day.is-in-range { background: color-mix(in srgb, var(--rc) 18%, rgba(30, 24, 16, .82)); }
}
@media (prefers-reduced-motion: reduce) {
  .glassforge-day:hover:not(:disabled), .glassforge-room-chip:hover { transform: none; }
}
