:root {
  --bg: #f5ead7;
  --bg-soft: #ead7bd;
  --sand: #d7bc95;
  --green: #5f805d;
  --green-deep: #263f32;
  --terracotta: #c45f34;
  --clay-soft: #d4865f;
  --text: #1f2320;
  --text-soft: #5d665e;
  --white: #fffaf2;
  --border: rgba(64, 82, 70, 0.16);
  --shadow: 0 18px 40px rgba(31, 35, 32, 0.08);
  --radius: 24px;
  --container: 1180px;
}
* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body {
  margin: 0;
  font-family: 'Inter', sans-serif;
  background: linear-gradient(180deg, #f5ead7 0%, #ead7bd 42%, #f3e4cc 100%);
  color: var(--text);
  line-height: 1.6;
  padding-bottom: 84px;
  position: relative;
}
body::before {
  content:'';
  position:fixed;
  inset:0;
  z-index:-2;
  pointer-events:none;
  background:
    linear-gradient(180deg, rgba(245,234,215,.76), rgba(234,215,189,.72)),
    url('../img/web/kubu-garden-walkway.webp') center/cover;
  opacity:.55;
}
body::after {
  content:'';
  position:fixed;
  inset:0;
  z-index:-1;
  pointer-events:none;
  background:
    radial-gradient(circle at 12% 18%, rgba(196,95,52,.22), transparent 30%),
    radial-gradient(circle at 86% 34%, rgba(38,63,50,.20), transparent 34%),
    radial-gradient(circle at 50% 82%, rgba(220,200,173,.26), transparent 38%);
}
a { color: inherit; text-decoration: none; }
.skip-link { position:absolute; left:16px; top:-80px; z-index:100; background:var(--green-deep); color:var(--white); padding:10px 14px; border-radius:999px; }
.skip-link:focus { top:16px; }
.site-header,.section,.section-tight,.site-footer,.staging-ribbon { width: min(calc(100% - 32px), var(--container)); margin: 0 auto; }
.section,.section-tight,.site-footer { position:relative; z-index:1; }
.staging-ribbon {
  position: relative;
  z-index: 30;
  margin-top: 12px;
  padding: 10px 16px;
  border-radius: 999px;
  background: var(--terracotta);
  color: var(--white);
  font-size: .78rem;
  font-weight: 800;
  letter-spacing: .08em;
  text-align: center;
  text-transform: uppercase;
  box-shadow: 0 10px 24px rgba(196,95,52,.22);
}
.site-header {
  position: sticky; top: 14px; z-index: 20; display: flex; align-items: center; justify-content: space-between;
  gap: 20px; padding: 16px 20px; margin-top: 14px; background: rgba(255,250,242,0.88);
  border: 1px solid rgba(38,63,50,.18); backdrop-filter: blur(14px); border-radius: 999px; box-shadow: 0 12px 30px rgba(31,35,32,.08);
}
.brand { display:grid; gap:1px; font-family: 'Fraunces', serif; font-size: 1.15rem; font-weight: 700; line-height:1; color:var(--green-deep); }
.brand small { font-family:'Inter', sans-serif; font-size:.66rem; font-weight:700; letter-spacing:.08em; text-transform:uppercase; color:var(--text-soft); }
.site-nav { display: flex; gap: 22px; color: var(--text-soft); font-size: .95rem; }
.header-actions { display:inline-flex; align-items:center; gap:10px; }
.social-icon { width:46px; height:46px; border-radius:50%; display:inline-flex; align-items:center; justify-content:center; background:rgba(255,255,255,.78); color:var(--green-deep); border:1px solid var(--border); box-shadow:0 12px 24px rgba(64,82,70,.12); }
.social-icon svg { width:22px; height:22px; fill:currentColor; display:block; }
.social-icon:hover { transform:translateY(-1px); }
.button {
  display: inline-flex; align-items: center; justify-content: center; gap: 8px; border: none; border-radius: 999px;
  padding: 14px 22px; font-weight: 600; cursor: pointer; transition: transform .2s ease, box-shadow .2s ease, background .2s ease;
}
.button:hover { transform: translateY(-1px); }
.button-primary { background: var(--green-deep); color: var(--white); box-shadow: 0 12px 24px rgba(38,63,50,.24); }
.button-secondary { background: rgba(196,95,52,.12); color: var(--green-deep); border: 1px solid rgba(196,95,52,.28); }
.section { padding: 72px 0; }
.section-tight { padding: 18px 0 0; }
.hero { display: grid; grid-template-columns: 1.05fr .95fr; gap: 42px; align-items: center; min-height: calc(100vh - 180px); }
.hero-copy { position:relative; padding:26px 0; }
.hero-copy::before { content:''; position:absolute; inset:-36px -28px -28px -40px; z-index:-1; border-radius:34px; background:linear-gradient(90deg, rgba(252,250,246,.90), rgba(252,250,246,.58)), url('../img/web/bali-rice-sunset.webp') center/cover; opacity:.78; }
.eyebrow {
  display:inline-flex; align-items:center; padding:8px 12px; border-radius:999px; background:rgba(196,95,52,.16); color:var(--green-deep); font-size:.85rem; font-weight:700; margin-bottom:18px;
}
h1,h2,h3 { margin:0; line-height:1.1; }
h1 span { display:block; }
h1,h2 { font-family:'Fraunces', serif; }
h1 { font-size: clamp(2.8rem, 5vw, 5.2rem); letter-spacing:-.04em; max-width:11ch; }
h2 { font-size: clamp(2rem, 3vw, 3.3rem); letter-spacing:-.03em; }
.lead { font-size:1.12rem; color:var(--text-soft); max-width:560px; margin:22px 0 28px; }
.hero-cta { display:flex; flex-wrap:wrap; gap:14px; }
.proof-list,.feature-list,.booking-points { list-style:none; padding:0; margin:24px 0 0; }
.proof-list { display:flex; flex-wrap:wrap; gap:12px; color:var(--text-soft); }
.proof-list li,.feature-list li,.booking-points li { position:relative; padding-left:20px; }
.proof-list li::before,.feature-list li::before,.booking-points li::before { content:'•'; position:absolute; left:0; top:0; color:var(--terracotta); font-weight:700; }
.hero-image-card { border-radius:30px; }
.hero-image-card {
  width:100%; min-height:620px; position:relative; overflow:hidden;
  background: linear-gradient(180deg, rgba(31,35,32,.02), rgba(31,35,32,.12)), url('../img/web/hero-front-pool.webp') center/cover;
  box-shadow: var(--shadow);
}
.availability-strip { margin-top:-32px; }
.availability-form,.card,.booking-form,.faq-item { background:rgba(255,250,242,.90); border:1px solid rgba(38,63,50,.14); box-shadow:var(--shadow); }
.availability-intro { margin-bottom: 14px; font-weight: 600; color: var(--green-deep); }
.availability-form { display:grid; grid-template-columns:repeat(5,1fr); gap:14px; padding:18px; border-radius:28px; }
.availability-calendar,.availability-result { margin-top:14px; padding:18px; color:var(--green-deep); }
.calendar-head { display:flex; justify-content:space-between; gap:12px; align-items:end; margin-bottom:12px; }
.calendar-head > div:first-child { display:grid; gap:4px; }
.calendar-head span,.calendar-legend { color:var(--text-soft); font-size:.9rem; }
.calendar-controls { display:inline-flex; align-items:center; gap:10px; padding:6px; border:1px solid var(--border); border-radius:999px; background:rgba(252,250,246,.78); white-space:nowrap; }
.calendar-controls span { min-width:132px; text-align:center; font-weight:700; color:var(--green-deep); }
.calendar-nav { width:34px; height:34px; border:0; border-radius:50%; background:rgba(64,82,70,.10); color:var(--green-deep); font-size:1.35rem; line-height:1; cursor:pointer; }
.calendar-nav:hover { background:rgba(64,82,70,.16); }
.calendar-legend { display:flex; gap:14px; flex-wrap:wrap; margin-bottom:14px; }
.calendar-legend span { display:inline-flex; align-items:center; gap:6px; }
.legend-dot { width:12px; height:12px; border-radius:4px; display:inline-block; box-sizing:border-box; background:#dfeadd; border:2px solid #6f8d73; }
.legend-dot.limited { background:#ffe2c7; border-color:#c45f34; }
.legend-dot.unavailable { background:#f6ded9; border-color:#9b2f24; }
.availability-calendar-grid { display:grid; grid-template-columns:repeat(7,minmax(0,1fr)); gap:8px; }
.calendar-blank { min-height:52px; }
.calendar-day { min-height:52px; border:2px solid var(--border); border-radius:14px; background:rgba(252,250,246,.95); color:var(--text); display:grid; align-content:center; gap:2px; padding:7px; cursor:pointer; position:relative; }
.calendar-day:hover { border-color:rgba(64,82,70,.55); }
.calendar-day strong { margin:0; font-size:.95rem; }
.calendar-day span { color:var(--text-soft); font-size:.72rem; }
.calendar-day.available { background:#dfeadd; border-color:#6f8d73; }
.calendar-day.limited { background:#ffe2c7; border-color:#c45f34; }
.calendar-day.unavailable { color:rgba(31,35,32,.44); background:#f6ded9; border-color:#9b2f24; cursor:not-allowed; }
.calendar-day.past { color:rgba(31,35,32,.38); background:rgba(235,229,216,.72); border-color:rgba(64,82,70,.12); cursor:not-allowed; box-shadow:none; }
.calendar-day:disabled { pointer-events:none; }
.calendar-day.unavailable::after { content:''; position:absolute; left:7px; right:7px; top:50%; border-top:2px solid rgba(155,47,36,.78); transform:rotate(-18deg); }
.calendar-day.selected { outline:3px solid var(--green-deep); background:#dbeadc; border-color:rgba(64,82,70,.72); }
.calendar-day.today { box-shadow:0 0 0 3px rgba(38,63,50,.28), 0 10px 22px rgba(64,82,70,.12); border-color:var(--green-deep); }
.calendar-day.today strong::after { content:' today'; position:absolute; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip:rect(0,0,0,0); white-space:nowrap; border:0; }
.calendar-day.today span:last-child { font-weight:800; color:var(--green-deep); }
.calendar-day.unavailable.today span:last-child { color:#9b2f24; }
.calendar-loading { grid-column:1 / -1; min-height:180px; display:grid; place-items:center; color:var(--text-soft); font-weight:700; }
.calendar-unknown { grid-column:1 / -1; min-height:180px; display:grid; place-content:center; gap:8px; padding:28px; border:1px dashed rgba(38,63,50,.28); border-radius:18px; background:rgba(255,250,242,.68); text-align:center; color:var(--green-deep); }
.calendar-unknown strong { font-family:'Fraunces',serif; font-size:1.35rem; }
.calendar-unknown span { max-width:520px; color:var(--text-soft); }
.calendar-day.range { background:#dbeadc; border-color:rgba(64,82,70,.46); }
.calendar-day.range::before { content:''; position:absolute; left:-9px; right:-9px; top:50%; height:4px; background:rgba(64,82,70,.46); transform:translateY(-50%); z-index:0; }
.calendar-day.range-start::before { content:''; position:absolute; left:50%; right:-9px; top:50%; height:4px; background:rgba(64,82,70,.46); transform:translateY(-50%); z-index:0; }
.calendar-day.selected.range-end::before { content:''; position:absolute; left:-9px; right:50%; top:50%; height:4px; background:rgba(64,82,70,.46); transform:translateY(-50%); z-index:0; }
.calendar-day > * { position:relative; z-index:1; }
.availability-result { color:var(--green-deep); }
.availability-result strong { display:block; margin-bottom:8px; }
.availability-result ul { margin:10px 0 0; padding-left:20px; color:var(--text-soft); }
.flow-step { display:inline-flex; align-items:center; padding:7px 10px; border-radius:999px; background:rgba(64,82,70,.10); color:var(--green-deep); font-size:.78rem; font-weight:800; margin-bottom:10px; }
.flow-copy,.flow-note { margin:0; color:var(--text-soft); font-size:.92rem; }
.flow-note { margin-top:14px; padding:12px 14px; border-radius:16px; background:rgba(111,138,109,.12); color:var(--green-deep); font-weight:700; }
.availability-room-grid { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:12px; margin-top:14px; }
.availability-room { display:grid; gap:8px; padding:14px; border-radius:18px; border:1px solid var(--border); background:rgba(252,250,246,.92); }
.availability-room strong { margin:0; }
.availability-room span { color:var(--text-soft); font-size:.9rem; }
.availability-room.unavailable { opacity:.55; }
.availability-room .button { padding:10px 14px; font-size:.9rem; }
.availability-room.unavailable .button { display:none; }
label { display:grid; gap:8px; font-size:.92rem; font-weight:600; color:var(--green-deep); }
input,select,textarea { width:100%; border:1px solid var(--border); border-radius:16px; padding:14px 16px; font:inherit; color:var(--text); background:rgba(252,250,246,.95); }
.phone-input-group { display:grid; grid-template-columns:minmax(108px,.32fr) minmax(0,1fr); gap:10px; }
textarea { resize:vertical; min-height:120px; }
.section-heading { display:grid; gap:10px; max-width:780px; margin-bottom:28px; }
.section-heading.narrow { max-width:640px; }
.card { border-radius:var(--radius); padding:24px; }
.faq-item p,.booking-copy p { color:var(--text-soft); }
.feature-list { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:10px 16px; margin-bottom:20px; }
.compact-rooms-section { padding-top:64px; padding-bottom:46px; }
.compact-feature-list { margin:6px 0 4px; grid-template-columns:repeat(2,minmax(0,1fr)); }
.rooms-showcase { padding:0; overflow:hidden; display:grid; grid-template-columns:minmax(320px,1.15fr) minmax(0,.85fr); background:rgba(255,250,242,.88); border:0; }
.rooms-carousel-shell { position:relative; min-width:0; }
.rooms-carousel { min-height:520px; background:rgba(255,250,242,.88); overflow-x:auto; overflow-y:hidden; scroll-snap-type:x mandatory; scrollbar-width:none; -webkit-overflow-scrolling:touch; border-radius:var(--radius) 0 0 var(--radius); }
.rooms-carousel::-webkit-scrollbar { display:none; }
.room-carousel-arrow { position:absolute; z-index:2; top:50%; width:38px; height:38px; padding:0; border:1px solid rgba(255,255,255,.55); border-radius:999px; background:rgba(255,250,242,.70); color:rgba(38,63,50,.78); box-shadow:0 6px 18px rgba(31,35,32,.12); backdrop-filter:blur(8px); transform:translateY(-50%); display:grid; place-items:center; font:500 1.55rem/1 Inter,sans-serif; cursor:pointer; opacity:.72; transition:opacity .18s ease, background .18s ease, transform .18s ease; }
.room-carousel-arrow:hover { opacity:.96; background:rgba(255,250,242,.90); transform:translateY(-50%) scale(1.03); }
.room-carousel-arrow.previous { left:14px; }
.room-carousel-arrow.next { right:14px; }
.room-carousel-arrow:disabled { opacity:.20; cursor:default; transform:translateY(-50%); }
.room-photo-track { min-height:520px; display:grid; grid-auto-flow:column; grid-auto-columns:100%; }
.room-photo-panel { min-height:520px; margin:0; padding:0; display:grid; place-items:center; scroll-snap-align:start; background:rgba(255,250,242,.88); }
.room-photo-panel img { display:block; width:100%; height:100%; max-height:520px; object-fit:cover; object-position:center; background:rgba(255,250,242,.88); }

.rooms-copy { padding:34px; display:grid; align-content:center; gap:14px; }
.rooms-copy p { margin:0; color:var(--text-soft); }
.rooms-copy .button { width:max-content; }
.culture-section { padding-top:34px; padding-bottom:44px; }
.culture-card { display:grid; grid-template-columns:minmax(280px,.78fr) minmax(0,1fr); gap:28px; align-items:center; margin:0; padding:18px; background:linear-gradient(135deg, rgba(38,63,50,.94), rgba(38,63,50,.84)); color:var(--white); border-color:rgba(196,95,52,.28); }
.culture-image-wrap { min-height:430px; border-radius:22px; overflow:hidden; background:#263f32; display:grid; place-items:center; box-shadow:0 18px 40px rgba(31,35,32,.20); }
.culture-image-wrap img { width:100%; height:100%; max-height:520px; object-fit:contain; object-position:center; display:block; }
.culture-copy { display:grid; align-content:center; gap:14px; padding:10px 10px 10px 0; }
.culture-copy .eyebrow { width:max-content; margin-bottom:2px; background:rgba(196,95,52,.34); color:var(--white); }
.culture-copy h2 { color:var(--white); }
.culture-copy p:not(.eyebrow) { margin:0; color:rgba(255,250,242,.82); font-size:1.02rem; max-width:560px; }
.location-section { padding-top:24px; padding-bottom:48px; }
.location-card { display:grid; grid-template-columns:minmax(0,1fr) minmax(240px,.6fr); gap:28px; align-items:stretch; padding:28px; background:rgba(255,250,242,.9); }
.location-copy { display:grid; align-content:center; justify-items:start; gap:12px; }
.location-copy h2 { margin:0; }
.location-copy address { max-width:560px; color:var(--text-soft); font-style:normal; line-height:1.7; }
.location-copy .button { margin-top:6px; }
.location-map { width:100%; min-height:260px; border:0; border-radius:24px; background:#e9e2d7; box-shadow:inset 0 0 0 1px rgba(64,82,70,.12); }
.booking-section { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:28px; align-items:center; }
.section-note { color:var(--text-soft); max-width:760px; margin:2px 0 0; }
.booking-form { display:grid; gap:16px; padding:28px; }
.fine-print,.form-message { margin:0; font-size:.92rem; }
.form-message { color:var(--green-deep); font-weight:600; }
.form-message.error { color:#9b3b2e; }
.success-panel { display:grid; gap:4px; padding:16px 18px; border-radius:18px; background:rgba(111,138,109,.12); border:1px solid rgba(111,138,109,.24); color:var(--green-deep); }
.success-panel[hidden] { display:none; }
.button[disabled] { cursor:not-allowed; opacity:.7; transform:none; }
.faq-list { display:grid; gap:14px; }
.faq-item { border-radius:20px; overflow:hidden; }
.faq-item summary { list-style:none; cursor:pointer; padding:20px 22px; font-weight:700; }
.faq-item p { padding:0 22px 22px; margin:0; }
.site-footer { padding:24px 0 150px; color:var(--text-soft); text-align:center; }
.back-to-top { position:fixed; right:14px; bottom:calc(20px + env(safe-area-inset-bottom)); z-index:31; width:46px; height:46px; border-radius:50%; display:inline-flex; align-items:center; justify-content:center; background:rgba(252,250,246,.92); color:var(--green-deep); border:1px solid var(--border); box-shadow:0 12px 28px rgba(31,35,32,.12); font-size:1.35rem; font-weight:700; backdrop-filter:blur(12px); }
.back-to-top:hover { transform:translateY(-1px); }
.ops-shell { width:min(calc(100% - 24px), 1180px); margin:0 auto; padding:32px 0 120px; }
.ops-header,.ops-login-card { padding:28px; margin-top:18px; }
.ops-title { font-family:'Fraunces', serif; font-size:clamp(2.2rem, 4vw, 4rem); letter-spacing:-.03em; margin:0; }
.ops-copy { max-width:640px; color:var(--text-soft); margin:12px 0 0; }
.ops-login-card { max-width:620px; }
.ops-login-form,.ops-status-form { display:grid; gap:14px; margin-top:18px; }
.ops-summary { display:grid; grid-template-columns:repeat(6,minmax(0,1fr)); gap:14px; margin:22px 0 30px; }
.ops-count-card { display:grid; gap:6px; padding:18px; text-align:center; }
.ops-count-card strong { font-size:1.8rem; font-family:'Fraunces', serif; color:var(--green-deep); }
.ops-header-actions { display:flex; gap:12px; flex-wrap:wrap; }
.ops-lane { padding:18px 0 12px; }
.ops-card-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:18px; }
.ops-enquiry-card { display:grid; gap:16px; padding:22px; align-content:start; }
.ops-enquiry-top { display:flex; justify-content:space-between; gap:12px; align-items:start; }
.ops-enquiry-top strong { display:block; font-size:1.1rem; }
.ops-enquiry-top span:last-child { color:var(--text-soft); font-size:.92rem; }
.ops-status-pill { display:inline-flex; align-items:center; justify-content:center; padding:8px 12px; border-radius:999px; font-size:.82rem; font-weight:700; text-transform:capitalize; }
.ops-status-new,.ops-status-contacted { background:rgba(183,110,77,.14); color:#8c5238; }
.ops-status-quoted { background:rgba(232,221,204,.92); color:var(--green-deep); }
.ops-status-confirmed { background:rgba(111,138,109,.16); color:var(--green-deep); }
.ops-status-lost,.ops-status-spam { background:rgba(31,35,32,.08); color:var(--text-soft); }
.ops-facts { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:12px 16px; }
.ops-facts div,.ops-notes,.ops-timeline,.ops-empty-state { padding:14px 16px; border-radius:18px; background:rgba(255,255,255,.62); border:1px solid var(--border); }
.ops-facts strong,.ops-notes strong,.ops-timeline strong { display:block; margin-bottom:4px; color:var(--green-deep); }
.ops-notes p { margin:0; }
.ops-timeline ul { margin:10px 0 0; padding-left:18px; color:var(--text-soft); }
.ops-timeline li { margin:0 0 6px; }
.ops-actions { display:flex; gap:12px; flex-wrap:wrap; }
@media (max-width: 1024px) {
  .hero,.booking-section,.availability-form { grid-template-columns:1fr 1fr; }
  .site-nav { display:none; }
  .hero { min-height:auto; padding-top:40px; }
  .availability-form button { grid-column: span 2; }
  .availability-room-grid { grid-template-columns:1fr 1fr; }
  .availability-calendar-grid { grid-template-columns:repeat(7,minmax(42px,1fr)); }
  .ops-summary { grid-template-columns:repeat(3,minmax(0,1fr)); }
  .ops-card-grid { grid-template-columns:1fr; }
}
@media (max-width: 720px) {
  body { padding-bottom:110px; }
  .site-header,.section,.section-tight,.site-footer { width:min(calc(100% - 24px), var(--container)); }
  .site-header { border-radius:999px; padding:10px 12px 10px 16px; display:grid; grid-template-columns:minmax(0,1fr) auto; }
  .brand { font-size:1.02rem; min-width:0; }
  .brand small { font-size:.58rem; }
  .header-actions { gap:8px; }
  .social-icon { width:42px; height:42px; flex:0 0 42px; }
  .social-icon svg { width:21px; height:21px; }
  .hero,.booking-section,.availability-form { grid-template-columns:1fr; }
  .section { padding:56px 0; }
  .hero { gap:22px; }
  h1 { font-size: clamp(1.92rem, 9.4vw, 2.55rem); max-width: 100%; overflow-wrap: normal; }
  .lead { font-size:.98rem; margin:14px 0 18px; }
  .hero-image-card { min-height:min(34svh,280px); }
  .hero-copy { padding:18px 0; }
  .hero-copy::before { inset:-18px -12px -16px -12px; border-radius:24px; background:rgba(252,250,246,.86); opacity:1; }
  .availability-strip { margin-top:0; }
  .availability-form { gap:12px; padding:14px; border-radius:22px; }
  .availability-form label { min-width:0; }
  .availability-form button { grid-column:auto; width:100%; margin-top:2px; }
  label { gap:6px; font-size:.84rem; }
  input,select,textarea { min-width:0; max-width:100%; padding:12px 12px; border-radius:14px; font-size:16px; }
  input[type="date"] { appearance:none; -webkit-appearance:none; line-height:1.2; min-height:48px; }
  .availability-calendar { padding:14px; border-radius:22px; overflow:hidden; }
  .proof-list { display:grid; gap:8px; }
  .feature-list { grid-template-columns:1fr; }
  .rooms-showcase { grid-template-columns:1fr; }
  .room-carousel-arrow { display:none; }
  .rooms-carousel { border-radius:var(--radius) var(--radius) 0 0; }
  .rooms-carousel,.room-photo-track,.room-photo-panel { min-height:260px; }
  .room-photo-panel img { height:260px; max-height:none; }
  .rooms-copy { padding:22px; }
  .compact-feature-list { grid-template-columns:1fr 1fr; gap:8px 12px; }
  .rooms-copy .button { width:100%; }
  .culture-section { padding-top:24px; padding-bottom:34px; }
  .culture-card { grid-template-columns:1fr; gap:18px; padding:14px; border-radius:24px; }
  .culture-image-wrap { min-height:0; height:auto; }
  .culture-image-wrap img { height:auto; max-height:none; object-fit:contain; }
  .culture-copy { padding:0 6px 8px; }
  .culture-copy p:not(.eyebrow) { font-size:.96rem; }
  .location-section { padding-top:12px; padding-bottom:34px; }
  .location-card { grid-template-columns:1fr; padding:18px; }
  .location-map { min-height:240px; }

  .availability-room-grid { grid-template-columns:1fr; }
  .calendar-head { display:grid; gap:12px; align-items:start; }
  .calendar-head > div:first-child span { font-size:.82rem; }
  .calendar-controls { width:100%; justify-content:space-between; gap:6px; padding:6px; }
  .calendar-controls span { min-width:0; flex:1; font-size:.88rem; }
  .calendar-nav { width:38px; height:38px; flex:0 0 38px; }
  .calendar-legend { gap:8px 10px; font-size:.78rem; }
  .availability-calendar-grid { gap:6px; }
  .calendar-blank { min-height:42px; }
  .calendar-day { min-height:44px; padding:5px 3px; border-radius:11px; }
  .calendar-day strong { font-size:.84rem; }
  .calendar-day span { font-size:.62rem; }
  .availability-result { padding:14px; border-radius:22px; }
  .site-footer { padding:28px 8px 170px; }
  .site-footer p { margin:8px 0; }
  .back-to-top { width:42px; height:42px; right:12px; bottom:calc(18px + env(safe-area-inset-bottom)); font-size:1.2rem; }
  .ops-shell { padding-top:20px; }
  .ops-header,.ops-login-card,.ops-enquiry-card { padding:18px; }
  .ops-summary,.ops-facts { grid-template-columns:1fr 1fr; }
}
