:root {
  --op-ink: #263c31;
  --op-muted: #657368;
  --op-line: #cdd4c9;
  --op-paper: #fbfcf8;
  --op-accent: #3c4a38;
  --op-error: #a02e2c;
}

[hidden] { display: none !important; }
.ch-ui { font-family: var(--sans, 'Inter', sans-serif); letter-spacing: 0; }
.ch-ui *, .ch-ui *::before, .ch-ui *::after { box-sizing: border-box; }
.ch-ui button, .ch-ui input, .ch-ui select, .ch-ui textarea { font: inherit; letter-spacing: 0; }
.ch-ui button, .ch-ui a { -webkit-tap-highlight-color: transparent; }
.ch-ui :focus-visible { outline: 2px solid var(--op-accent); outline-offset: 4px; }
.ch-ui svg { width: 19px; height: 19px; flex-shrink: 0; }
.ch-ui a { color: inherit; }
.ch-button {
  display: inline-flex; justify-content: center; align-items: center; gap: 10px;
  min-height: 44px; max-width: 100%; padding: 11px 18px; border: 1px solid var(--op-accent);
  border-radius: 4px; background: var(--op-accent); color: #fff; font-size: 13px;
  line-height: 1.4; font-weight: 500; cursor: pointer; text-decoration: none; text-align: center;
  transition: background .18s, border-color .18s;
}
.ch-ui a.ch-button { color: #fff; }
.ch-button:hover { background: #293a2d; border-color: #293a2d; }
.ch-button--outline { background: transparent; color: var(--op-ink); border-color: var(--op-line); }
.ch-ui a.ch-button--outline { color: var(--op-ink); }
.ch-button--outline:hover { background: #e6eadf; border-color: var(--op-accent); }
.ch-button--danger { background: var(--op-error); border-color: var(--op-error); }
.ch-button--danger:hover { background: #802422; border-color: #802422; }
.ch-button:disabled, .ch-icon-button:disabled { opacity: .5; cursor: not-allowed; }
.ch-icon-button {
  display: inline-flex; align-items: center; justify-content: center; width: 40px; height: 40px;
  flex: 0 0 40px; border: 1px solid transparent; border-radius: 4px; background: transparent;
  color: inherit; cursor: pointer;
}
.ch-icon-button:hover { background: #e9ede4; border-color: var(--op-line); }
.ch-icon-button--danger { color: var(--op-error); }
.ch-field { display: flex; flex-direction: column; gap: 7px; min-width: 0; text-align: left; }
.ch-field > span { font-size: 12px; font-weight: 500; color: var(--op-ink); }
.ch-field input, .ch-field select, .ch-field textarea {
  width: 100%; min-width: 0; min-height: 44px; padding: 11px 12px; border: 1px solid var(--op-line);
  border-radius: 4px; background: var(--op-paper); color: var(--op-ink); font-size: 15px;
}
.ch-field textarea { resize: vertical; min-height: 96px; line-height: 1.6; }
.ch-field input::placeholder, .ch-field textarea::placeholder { color: #7b827b; opacity: 1; }
.ch-field input[type="date"], .ch-field input[type="datetime-local"] { min-height: 46px; }
.ch-field input:focus, .ch-field select:focus, .ch-field textarea:focus { border-color: var(--op-accent); outline: 2px solid #3c4a3822; outline-offset: 1px; }
.ch-form-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 18px; }
.ch-field--wide { grid-column: 1 / -1; }
.ch-checkbox { display: flex; align-items: center; gap: 10px; min-height: 44px; font-size: 14px; }
.ch-checkbox input { accent-color: var(--op-accent); width: 18px; height: 18px; flex-shrink: 0; }
.ch-status { font-size: 13px; color: var(--op-muted); line-height: 1.6; min-height: 22px; overflow-wrap: anywhere; }
.ch-status.is-error { color: var(--op-error); }
.ch-badge { display: inline-flex; align-items: center; gap: 6px; padding: 4px 8px; border-radius: 3px; font-size: 11px; font-weight: 500; line-height: 1.4; }
.ch-badge--open, .ch-badge--confirmed { color: #2e5942; background: #e2ecde; }
.ch-badge--pending { color: #825220; background: #f5e9cf; }
.ch-badge--muted, .ch-badge--cancelled { color: #6b716b; background: #eaede7; }
.ch-empty { grid-column: 1 / -1; padding: 40px 0; color: var(--op-muted); }
.ch-empty a { text-decoration: underline; }
.ch-dialog {
  position: fixed; inset: 0; margin: auto; padding: 0; width: min(680px, calc(100% - 32px));
  max-height: calc(100dvh - 40px); border: 1px solid var(--op-line); border-radius: 6px;
  background: var(--op-paper); color: var(--op-ink); overflow-y: auto; overscroll-behavior: contain;
  box-shadow: 0 24px 100px #10201844;
}
.ch-dialog::backdrop { background: #102018a6; }
.ch-dialog__header { display: flex; align-items: center; justify-content: space-between; gap: 16px; padding: 24px 28px 18px; border-bottom: 1px solid var(--op-line); }
.ch-dialog__header h2 { font: 400 28px/1.2 var(--display, 'Fraunces', serif); letter-spacing: 0; overflow-wrap: anywhere; }
.ch-dialog__body { padding: 24px 28px 28px; }
.ch-dialog__footer { display: flex; align-items: center; justify-content: flex-end; flex-wrap: wrap; gap: 12px; margin-top: 22px; }
.ch-dialog fieldset { border: 0; margin: 0; padding: 0; min-width: 0; }
body:has(.ch-dialog[open]) { overflow: hidden; }
html.has-custom-cursor .ch-dialog, html.has-custom-cursor .ch-dialog * { cursor: auto; }
html.has-custom-cursor .ch-dialog button, html.has-custom-cursor .ch-dialog a { cursor: pointer; }
html.has-custom-cursor .ch-dialog input, html.has-custom-cursor .ch-dialog textarea { cursor: text; }
.ch-honeypot { position: absolute; left: -10000px; width: 1px; height: 1px; overflow: hidden; }

.availability-wrap { max-width: var(--container); margin: 0 auto 46px; scroll-margin-top: 110px; }
.availability-form { display: grid; grid-template-columns: 1fr 1fr .65fr auto auto; align-items: end; gap: 16px; padding: 24px 0; border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); }
.availability-form .ch-button { min-height: 46px; }
.availability-wrap .ch-status { margin-top: 12px; }
.room--live { min-width: 0; }
.room--live .room__meta h3 { font-size: 27px; letter-spacing: 0; overflow-wrap: anywhere; }
.room--live .room__meta p { overflow-wrap: anywhere; }
.room--live .room__feat { letter-spacing: 0; overflow-wrap: anywhere; }
.room__number { display: block; font-size: 11px; color: var(--stone); margin-bottom: 12px; }
.room__booking { margin-top: auto; padding-top: 22px; }
.room__booking-row { display: flex; align-items: center; justify-content: space-between; gap: 10px; flex-wrap: wrap; margin-bottom: 16px; }
.room__price { font-family: var(--display); font-size: 23px; }
.room__price small { font-family: var(--sans); font-size: 11px; color: var(--stone); }
.room__reserve { width: 100%; justify-content: space-between; }
.booking-room { display: grid; grid-template-columns: 88px minmax(0, 1fr); align-items: center; gap: 18px; margin-bottom: 24px; }
.booking-room img { width: 88px; height: 88px; object-fit: cover; border-radius: 3px; }
.booking-room h3 { font: 400 24px/1.2 var(--display); margin-bottom: 7px; overflow-wrap: anywhere; }
.booking-room p { font-size: 12px; color: var(--op-muted); }
.booking-total { padding: 16px 0; margin-top: 18px; border-top: 1px solid var(--op-line); font-size: 16px; font-weight: 500; }
.booking-policy { font-size: 12px; color: var(--op-muted); line-height: 1.7; margin: 12px 0; }
.booking-success { display: flex; flex-direction: column; align-items: flex-start; gap: 18px; }
.booking-success .booking-success__icon { width: 42px; height: 42px; color: #426545; }
.booking-success h3 { font: 400 27px/1.2 var(--display); overflow-wrap: anywhere; }
.booking-success p { font-size: 14px; line-height: 1.8; }
.events { padding: 80px var(--gutter) 100px; background: #e6e9df; scroll-margin-top: 70px; }
.events__inner { max-width: var(--container); margin: auto; }
.events__head { display: flex; align-items: flex-end; justify-content: space-between; flex-wrap: wrap; gap: 24px; margin-bottom: 40px; }
.events__head h2 { font: 300 44px/1.1 var(--display); letter-spacing: 0; }
.events__grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 32px; }
.events__empty { grid-column: 1 / -1; border-top: 1px solid #b7c0ae; border-bottom: 1px solid #b7c0ae; padding: 44px 0; display: flex; flex-direction: column; align-items: center; gap: 10px; text-align: center; }
.events__empty > svg { width: 28px; height: 28px; color: var(--op-muted); margin-bottom: 8px; }
.events__empty h3 { font: 400 25px/1.3 var(--display); }
.events__empty p { font-size: 14px; color: var(--op-muted); }
.event { min-width: 0; display: flex; flex-direction: column; }
.event__media { aspect-ratio: 4/3; overflow: hidden; margin-bottom: 20px; border-radius: 4px; }
.event__media img { width: 100%; height: 100%; object-fit: cover; }
.event__date { display: flex; align-items: center; gap: 8px; font-size: 12px; color: var(--op-ink); margin-bottom: 12px; }
.event h3 { font: 400 28px/1.2 var(--display); letter-spacing: 0; margin-bottom: 12px; overflow-wrap: anywhere; }
.event__time { font-size: 12px; color: var(--op-muted); margin-bottom: 16px; overflow-wrap: anywhere; }
.event__description { font-size: 14px; line-height: 1.8; white-space: pre-line; overflow-wrap: anywhere; margin-bottom: 24px; }
.event__foot { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 14px; margin-top: auto; padding-top: 18px; border-top: 1px solid #b7c0ae; font-size: 12px; }
.motion-unavailable [data-reveal] { opacity: 1; transform: none; }

@media (max-width: 980px) {
  .availability-form { grid-template-columns: 1fr 1fr; }
  .events__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 600px) {
  .ch-field input, .ch-field select, .ch-field textarea { font-size: 16px; }
  .ch-form-grid { grid-template-columns: minmax(0, 1fr); gap: 16px; }
  .ch-dialog { width: calc(100% - 20px); max-height: calc(100dvh - 20px); }
  .ch-dialog__header { padding: 20px 18px 16px; }
  .ch-dialog__header h2 { font-size: 26px; }
  .ch-dialog__body { padding: 20px 18px; }
  .ch-dialog__footer .ch-button { flex: 1 1 auto; }
  .booking-room { grid-template-columns: 70px minmax(0, 1fr); gap: 14px; }
  .booking-room img { width: 70px; height: 82px; }
  .booking-room h3 { font-size: 22px; }
  .availability-form { gap: 14px 10px; }
  .availability-form .ch-button { padding-left: 10px; padding-right: 10px; }
  .events { padding-top: 64px; padding-bottom: 64px; }
  .events__head h2 { font-size: 34px; }
  .events__grid { grid-template-columns: minmax(0, 1fr); }
}