:root {
  --ink: #241326;
  --ink-2: #34213a;
  --kauri: #4a2949;
  --teal: #5d4960;
  --pearl: #f8f3ea;
  --linen: #e7ded2;
  --limestone: #cfc1b4;
  --brass: #c07c4a;
  --brass-dark: #8d5635;
  --copper-soft: #ead2bd;
  --white: #fffaf4;
  --line: rgba(36,19,38,.18);
  --line-strong: rgba(36,19,38,.42);
  --shadow: 0 26px 70px rgba(36,19,38,.13);
  --font-body: "Inter", "Helvetica Neue", Arial, sans-serif;
  --font-head: "Libre Baskerville", Georgia, "Times New Roman", serif;
  --font-accent: Montserrat, "Avenir", "Helvetica Neue", Arial, sans-serif;
  --step--1: clamp(.88rem, .84rem + .16vw, .96rem);
  --step-0: clamp(1rem, .96rem + .24vw, 1.1rem);
  --step-1: clamp(1.16rem, 1.02rem + .56vw, 1.43rem);
  --step-2: clamp(1.48rem, 1.2rem + 1vw, 2.05rem);
  --step-3: clamp(2rem, 1.46rem + 1.9vw, 3.18rem);
  --step-4: clamp(2.55rem, 1.68rem + 3.55vw, 4.85rem);
  --space-xs: .5rem;
  --space-sm: .9rem;
  --space-md: 1.45rem;
  --space-lg: 2.35rem;
  --space-xl: 3.9rem;
  --space-2xl: clamp(4.2rem, 7vw, 7.4rem);
  --radius-ui: 999px;
  --radius-soft: 18px;
  --measure: 70ch;
}

* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body {
  margin: 0;
  font-family: var(--font-body);
  font-size: var(--step-0);
  line-height: 1.66;
  color: var(--ink);
  background:
    linear-gradient(90deg, rgba(17,29,28,.045) 1px, transparent 1px) 0 0 / 64px 64px,
    linear-gradient(180deg, #f7f2e9 0%, var(--pearl) 42%, #ede4d6 100%);
  text-rendering: optimizeLegibility;
}
a { color: inherit; text-underline-offset: .24em; }
a:hover { color: var(--brass-dark); }
img { max-width: 100%; display: block; }
.skip-link { position:absolute; left:-999px; top:0; background:var(--brass); color:var(--ink); padding:.8rem 1rem; z-index:1000; }
.skip-link:focus { left:0; }
:focus-visible { outline: 3px solid var(--brass); outline-offset: 4px; }
.sr-only { position:absolute; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip:rect(0,0,0,0); white-space:nowrap; border:0; }

.site-header {
  position: sticky;
  top: 0;
  z-index: 50;
  background: rgba(243,239,231,.96);
  backdrop-filter: blur(16px);
  border-bottom: 2px solid var(--ink);
}
.header-inner {
  max-width: 1280px;
  margin: 0 auto;
  padding: .62rem 1rem;
  display: grid;
  grid-template-columns: auto minmax(0,1fr) auto;
  gap: 1.2rem;
  align-items: center;
}
.brand-link { display:inline-flex; align-items:center; color:var(--ink); text-decoration:none; min-width:186px; }
.brand-link svg { width: 184px; height:auto; }
.nav-toggle {
  display:none;
  border: 1px solid var(--ink);
  background: var(--white);
  color: var(--ink);
  padding: .58rem .82rem;
  border-radius: var(--radius-ui);
  font-weight: 850;
}
.main-nav { display:flex; align-items:center; justify-content:center; gap:.1rem; }
.main-nav a {
  text-decoration:none;
  padding:.54rem .6rem;
  font-family: var(--font-accent);
  font-size:.82rem;
  font-weight:800;
  letter-spacing:.04em;
  border:1px solid transparent;
  text-transform: uppercase;
}
.main-nav a[aria-current="page"], .main-nav a:hover { border-color: var(--ink); background:var(--white); color:var(--ink); }
.header-actions { display:flex; align-items:center; gap:.72rem; }
.age-note {
  font-size:.74rem;
  line-height:1.35;
  color:var(--ink-2);
  border-left:1px solid var(--line-strong);
  padding-left:.72rem;
  max-width:158px;
}

.btn {
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:.4rem;
  min-height:44px;
  padding:.74rem 1.04rem;
  border:1.5px solid var(--ink);
  background:transparent;
  color:var(--ink);
  text-decoration:none;
  font-family:var(--font-accent);
  font-size:.96rem;
  font-weight:850;
  letter-spacing:.015em;
  border-radius: var(--radius-ui);
  transition: transform .16s ease, background .16s ease, color .16s ease, box-shadow .16s ease;
  cursor:pointer;
}
.btn:hover { transform: translate(-2px,-2px); background:var(--ink); color:var(--pearl); box-shadow:4px 4px 0 var(--brass); }
.btn-primary { background:var(--ink); color:var(--pearl); border-color:var(--ink); }
.btn-primary:hover { background:var(--brass); color:var(--ink); box-shadow:4px 4px 0 var(--ink); }
.btn-light { color:var(--pearl); border-color:rgba(243,239,231,.72); }
.btn-light:hover { background:var(--pearl); color:var(--ink); box-shadow:4px 4px 0 var(--brass); }
.btn-brass { background:var(--brass); border-color:var(--brass); color:var(--ink); }
.btn-ghost { border-color:var(--line-strong); }
.text-link { font-weight:900; text-decoration-thickness:1.5px; text-decoration-color:var(--brass); }

main { overflow:hidden; }
.section { padding: var(--space-2xl) 1rem; }
.section-tight { padding: var(--space-xl) 1rem; }
.wrap { max-width:1180px; margin:0 auto; }
.wrap-wide { max-width:1340px; margin:0 auto; }
.eyebrow {
  font-family:var(--font-accent);
  font-size:.76rem;
  letter-spacing:.2em;
  text-transform:uppercase;
  font-weight:900;
  color:var(--brass-dark);
  margin-bottom:.78rem;
}
h1,h2,h3 { font-family:var(--font-head); line-height:1.06; margin:0 0 1rem; color:var(--ink); font-weight:600; }
h1 { font-size:var(--step-4); max-width:11.5ch; letter-spacing:-.04em; }
h2 { font-size:var(--step-3); max-width:15ch; letter-spacing:-.028em; }
h3 { font-size:var(--step-1); letter-spacing:-.01em; }
p { margin:0 0 1.08rem; max-width:var(--measure); }
.lead { font-size:clamp(1.08rem, 1rem + .42vw, 1.32rem); line-height:1.6; color:rgba(17,29,28,.84); }

.hero {
  padding: clamp(2.1rem, 4.2vw, 5.8rem) 1rem 3.2rem;
  background:
    linear-gradient(90deg, rgba(47,76,66,.1), transparent 44%),
    linear-gradient(180deg, var(--pearl), #e9dfd1);
  border-bottom: 2px solid var(--ink);
}
.hero-grid {
  max-width: 1340px;
  margin:0 auto;
  display:grid;
  grid-template-columns: minmax(0,.72fr) minmax(390px,.86fr);
  gap: clamp(1.4rem, 4vw, 5rem);
  align-items: center;
}
.hero-copy {
  padding: clamp(.4rem, 2vw, 2rem) 0 clamp(.8rem, 2vw, 2rem);
  border-left: 4px solid var(--ink);
  padding-left: clamp(1rem, 2vw, 2rem);
}
.hero h1 { margin-bottom:1.1rem; }
.hero-actions { display:flex; flex-wrap:wrap; gap:.85rem; margin-top:1.45rem; }
.hero-media {
  position:relative;
  background: var(--ink);
  color: var(--pearl);
  padding:.78rem;
  border:2px solid var(--ink);
  box-shadow: 14px 14px 0 var(--limestone);
}
.hero-media img { width:100%; aspect-ratio: 5/4; object-fit: cover; filter:saturate(.94) contrast(1.02); }
.hero-panel {
  position:absolute;
  left: auto;
  right: -1.25rem;
  bottom: 1.35rem;
  width:min(340px, 88%);
  background:var(--white);
  color:var(--ink);
  padding:1rem 1.1rem;
  border:1.5px solid var(--ink);
  border-radius:0;
  box-shadow:6px 6px 0 var(--brass);
}
.hero-panel strong { display:block; font-family:var(--font-accent); font-size:1.05rem; margin-bottom:.28rem; }
.hero-panel p { font-size:.94rem; margin:0; }

.trust-strip { background:var(--ink); color:var(--pearl); }
.trust-strip .wrap { display:grid; grid-template-columns:repeat(3,1fr); }
.trust-item { padding:1.08rem 1.2rem; border-left:1px solid rgba(243,239,231,.22); }
.trust-item:first-child { border-left:0; }
.trust-item span { display:block; color:var(--limestone); font-family:var(--font-accent); font-weight:900; font-size:.78rem; letter-spacing:.16em; text-transform:uppercase; }

.intro-grid { display:grid; grid-template-columns:.74fr 1fr; gap:clamp(1.6rem, 4.5vw, 5.4rem); align-items:center; }
.intro-grid.reverse { grid-template-columns:1fr .74fr; }
.copy-panel { border-left:1px solid var(--line-strong); padding-left:clamp(1rem,2.4vw,2.25rem); }
.image-frame {
  position:relative;
  border:1.5px solid var(--ink);
  background:var(--linen);
  padding:.52rem;
  border-radius:0;
}
.image-frame::after {
  content:"";
  position:absolute;
  inset:auto -10px -10px auto;
  width:42%;
  height:38%;
  border-right:2px solid var(--brass);
  border-bottom:2px solid var(--brass);
  pointer-events:none;
}
.image-frame.soft { border-radius:0; overflow:visible; }
.image-frame.soft img { border-radius:0; }
.image-frame.square img, .image-frame img { width:100%; aspect-ratio:4/3; object-fit:cover; }
.caption { font-size:.86rem; color:rgba(17,29,28,.68); margin:.62rem 0 0; }

.room-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:1rem; }
.card {
  border:1.5px solid var(--line-strong);
  background:rgba(255,250,242,.64);
  padding:1.1rem;
  box-shadow:none;
}
.card:hover { border-color:var(--ink); box-shadow:6px 6px 0 rgba(168,117,69,.22); }
.room-card { display:flex; flex-direction:column; min-height:100%; }
.price-pill {
  display:inline-flex;
  align-self:flex-start;
  padding:.3rem .58rem;
  border-radius:0;
  background:var(--ink);
  color:var(--pearl);
  border:1px solid var(--ink);
  font-family:var(--font-accent);
  font-weight:900;
  margin:.35rem 0 .75rem;
}
.room-card ul, .tick-list { padding:0; margin:.2rem 0 1.15rem; list-style:none; }
.room-card li, .tick-list li { position:relative; padding-left:1.25rem; margin:.46rem 0; }
.room-card li::before, .tick-list li::before {
  content:"";
  position:absolute;
  left:0;
  top:.72em;
  width:.55rem;
  height:2px;
  background:var(--brass);
}
.card .btn { margin-top:auto; }

.band { background:var(--ink); color:var(--pearl); border-block:2px solid var(--ink); }
.band h2,.band h3 { color:var(--pearl); }
.band .eyebrow { color:var(--limestone); }
.band p { color:rgba(243,239,231,.84); }
.split-band { display:grid; grid-template-columns:repeat(2,1fr); gap:1px; background:rgba(243,239,231,.25); }
.split-band > div { background:var(--ink); padding:clamp(1.4rem,3vw,2.6rem); min-height:330px; }
.service-matrix { display:grid; grid-template-columns:repeat(4,1fr); border-top:1.5px solid var(--line-strong); border-left:1.5px solid var(--line-strong); }
.service-matrix .cell { padding:1.1rem; border-right:1.5px solid var(--line-strong); border-bottom:1.5px solid var(--line-strong); min-height:165px; }
.service-matrix .cell strong { display:block; font-size:1.05rem; margin-bottom:.35rem; }
.band .service-matrix { border-color:rgba(243,239,231,.28); }
.band .service-matrix .cell { border-color:rgba(243,239,231,.28); }

.price-table { width:100%; border-collapse:collapse; font-size:.98rem; background:rgba(255,250,242,.68); }
.price-table th,.price-table td { text-align:left; padding:.95rem 1rem; border-bottom:1px solid var(--line); vertical-align:top; }
.price-table th { font-family:var(--font-accent); font-size:.76rem; letter-spacing:.16em; text-transform:uppercase; color:var(--ink); background:rgba(207,197,178,.46); }
.price-table td:nth-child(2) { font-weight:900; white-space:nowrap; color:var(--kauri); }
.price-group { margin:1.4rem 0 2.25rem; border:1.5px solid var(--ink); background:rgba(255,250,242,.45); }
.price-group h3 { padding:1rem; margin:0; background:var(--ink); color:var(--pearl); }
.anchor-tabs { position:sticky; top:74px; z-index:10; background:rgba(243,239,231,.96); backdrop-filter:blur(16px); border-bottom:1.5px solid var(--ink); }
.anchor-tabs .wrap { display:flex; gap:.55rem; overflow:auto; padding:.75rem 1rem; }
.anchor-tabs a { white-space:nowrap; font-family:var(--font-accent); font-weight:850; text-decoration:none; border:1px solid var(--line-strong); padding:.4rem .7rem; border-radius:var(--radius-ui); background:var(--white); }

.faq { border-top:1.5px solid var(--ink); }
.faq-item { border-bottom:1.5px solid var(--line-strong); }
.faq button { width:100%; text-align:left; background:transparent; border:0; padding:1.05rem 0; font:inherit; font-weight:900; color:var(--ink); display:flex; justify-content:space-between; gap:1rem; cursor:pointer; }
.faq button::after { content:'+'; font-family:var(--font-accent); font-weight:900; color:var(--brass-dark); }
.faq button[aria-expanded="true"]::after { content:'–'; }
.faq-panel { display:none; padding:0 0 1rem; }
.faq-panel.open { display:block; }

.form-shell { display:grid; grid-template-columns:.72fr 1fr; gap:0; border:1.5px solid var(--ink); background:var(--white); box-shadow:10px 10px 0 var(--limestone); }
.form-aside { background:var(--ink); color:var(--pearl); padding:clamp(1.4rem,3vw,2.5rem); }
.form-aside h2 { color:var(--pearl); }
.form-aside a { color:var(--pearl); }
.enquiry-form { padding:clamp(1.2rem,3vw,2.5rem); display:grid; gap:1rem; }
.field-grid { display:grid; grid-template-columns:repeat(2,1fr); gap:1rem; }
label { display:block; font-weight:850; margin-bottom:.35rem; font-size:.92rem; }
input,select,textarea { width:100%; border:1.5px solid rgba(17,29,28,.35); background:#fffdf7; color:var(--ink); padding:.82rem .86rem; border-radius:var(--radius-ui); font:inherit; }
input:focus,select:focus,textarea:focus { border-color:var(--ink); }
textarea { min-height:135px; resize:vertical; }
.consent-check { display:flex; gap:.65rem; align-items:flex-start; font-size:.94rem; }
.consent-check input { width:auto; margin-top:.32rem; }
.hidden { display:none !important; }

.cta-panel { border:1.5px solid var(--ink); background:var(--linen); padding:clamp(1.2rem,3vw,2.4rem); display:grid; grid-template-columns:1fr auto; gap:1rem; align-items:center; box-shadow:8px 8px 0 rgba(168,117,69,.25); }
.breadcrumb { font-size:.88rem; margin-bottom:1rem; color:rgba(17,29,28,.7); }
.breadcrumb a { color:rgba(17,29,28,.75); }
.page-hero { padding:var(--space-xl) 1rem; border-bottom:2px solid var(--ink); background:linear-gradient(90deg, #e7decf, var(--pearl)); }
.page-hero-grid { max-width:1180px; margin:0 auto; display:grid; grid-template-columns:.76fr 1fr; gap:clamp(1.4rem,4vw,4.8rem); align-items:center; }
.page-hero h1 { max-width:12.5ch; }
.detail-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:1rem; }
.detail-card { border-top:3px solid var(--ink); padding-top:.9rem; }
.legal-content { max-width:940px; margin:0 auto; }
.legal-content h1 { max-width:none; }
.legal-content h2 { max-width:none; margin-top:2rem; font-size:clamp(1.6rem,1.3rem + 1vw,2.25rem); }
.legal-content p,.legal-content li { max-width:75ch; }

.site-footer { background:var(--ink); color:var(--pearl); padding:3.2rem 1rem 1.2rem; border-top:3px solid var(--brass); }
.footer-grid { max-width:1180px; margin:0 auto; display:grid; grid-template-columns:1.1fr repeat(3,.8fr); gap:2rem; }
.footer-logo { color:var(--pearl); width:190px; margin-bottom:1rem; }
.footer-col h2,.footer-col h3 { color:var(--pearl); font-family:var(--font-accent); font-size:.8rem; text-transform:uppercase; letter-spacing:.18em; margin-bottom:.72rem; }
.footer-col ul { list-style:none; padding:0; margin:0; }
.footer-col li { margin:.35rem 0; }
.footer-col a { color:rgba(243,239,231,.88); text-decoration:none; }
.footer-col a:hover { color:var(--limestone); }
.footer-bottom { max-width:1180px; margin:2rem auto 0; padding-top:1.1rem; border-top:1px solid rgba(243,239,231,.18); font-size:.88rem; color:rgba(243,239,231,.72); display:flex; justify-content:space-between; gap:1rem; flex-wrap:wrap; }

.cookie-banner { position:fixed; left:1rem; right:1rem; bottom:1rem; z-index:80; background:var(--white); border:1.5px solid var(--ink); box-shadow:8px 8px 0 var(--brass); padding:1rem; display:none; max-width:980px; margin:0 auto; }
.cookie-banner.active { display:block; }
.cookie-actions { display:flex; gap:.7rem; flex-wrap:wrap; margin-top:.8rem; }
.modal-backdrop { position:fixed; inset:0; background:rgba(17,29,28,.6); display:none; z-index:90; padding:1rem; }
.modal-backdrop.active { display:grid; place-items:center; }
.cookie-modal { width:min(720px,100%); max-height:90vh; overflow:auto; background:var(--pearl); border:1.5px solid var(--ink); padding:1.2rem; box-shadow:10px 10px 0 var(--brass); }
.cookie-row { border:1px solid var(--line-strong); padding:1rem; margin:.8rem 0; display:flex; justify-content:space-between; gap:1rem; }
.cookie-row input { width:auto; }

@media (max-width:1060px) {
  .header-inner { grid-template-columns:auto auto; justify-content:space-between; }
  .nav-toggle { display:inline-flex; }
  .main-nav { grid-column:1/-1; display:none; flex-direction:column; align-items:stretch; background:var(--pearl); border-top:1.5px solid var(--ink); padding:.5rem 0; }
  .main-nav.open { display:flex; }
  .main-nav a { padding:.78rem .2rem; }
  .header-actions .btn { display:none; }
  .age-note { max-width:220px; }
  .hero-grid,.page-hero-grid,.intro-grid,.intro-grid.reverse,.form-shell { grid-template-columns:1fr; }
  .hero-copy { border-left:0; padding-left:0; border-top:4px solid var(--ink); padding-top:1rem; }
  .hero-media { box-shadow:8px 8px 0 var(--limestone); }
  .hero-panel { position:static; width:auto; margin:.75rem; box-shadow:4px 4px 0 var(--brass); }
  .room-grid,.detail-grid { grid-template-columns:repeat(2,1fr); }
  .service-matrix { grid-template-columns:repeat(2,1fr); }
  .field-grid { grid-template-columns:1fr; }
  .footer-grid { grid-template-columns:repeat(2,1fr); }
  .cta-panel { grid-template-columns:1fr; }
}
@media (max-width:680px) {
  body { background:var(--pearl); }
  .brand-link svg { width:152px; }
  .age-note { display:none; }
  .hero-actions,.cookie-actions { flex-direction:column; align-items:stretch; }
  .trust-strip .wrap,.split-band,.room-grid,.detail-grid,.service-matrix,.footer-grid { grid-template-columns:1fr; }
  .trust-item { border-left:0; border-top:1px solid rgba(243,239,231,.18); }
  .trust-item:first-child { border-top:0; }
  .image-frame::after { display:none; }
  .price-table thead { display:none; }
  .price-table,.price-table tbody,.price-table tr,.price-table td { display:block; width:100%; }
  .price-table tr { border-bottom:1px solid var(--line); padding:.5rem 0; }
  .price-table td { border:0; padding:.42rem 1rem; }
  .price-table td::before { content:attr(data-label); display:block; font-family:var(--font-accent); font-size:.74rem; letter-spacing:.12em; text-transform:uppercase; color:var(--kauri); font-weight:900; }
}


/* RoyalTui redesign v4: aubergine editorial art-deco system */
body {
  background:
    radial-gradient(circle at 8% 5%, rgba(192,124,74,.15), transparent 26rem),
    radial-gradient(circle at 90% 18%, rgba(74,41,73,.1), transparent 30rem),
    linear-gradient(135deg, #fffaf4 0%, var(--pearl) 45%, #efe3d7 100%);
  color: var(--ink);
}
a:hover { color: var(--brass-dark); }
.site-header { background: rgba(248,243,234,.92); backdrop-filter: blur(18px); border-bottom-color: var(--line); }
.header-inner { max-width: 1260px; padding: .68rem 1rem; }
.brand-link svg { width: 172px; }
.main-nav { gap: .1rem; }
.main-nav a { font-family: var(--font-accent); font-size: .78rem; text-transform: uppercase; letter-spacing: .095em; font-weight: 850; border: 1px solid transparent; border-radius: 999px; padding: .48rem .72rem; }
.main-nav a[aria-current="page"], .main-nav a:hover { border-color: rgba(192,124,74,.55); background: rgba(192,124,74,.1); color: var(--ink); }
.age-note { border:1px solid rgba(192,124,74,.46); border-radius:999px; padding:.44rem .7rem; color: var(--teal); max-width:180px; }
.btn { border-radius: 999px; font-family: var(--font-accent); font-size:.92rem; letter-spacing:.035em; min-height:46px; box-shadow:none; }
.btn::after { content:""; width:.62rem; height:1px; background:currentColor; transition:width .18s ease; }
.btn:hover { transform: translateY(-2px); background: var(--ink); color: var(--pearl); }
.btn:hover::after { width:1.15rem; }
.btn-primary { background: var(--ink); color: var(--pearl); border-color: var(--ink); }
.btn-primary:hover { background: var(--brass); color: var(--ink); border-color: var(--brass); }
.eyebrow { display:inline-flex; align-items:center; gap:.55rem; font-size:.72rem; letter-spacing:.19em; color: var(--brass-dark); }
.eyebrow::before { content:""; width:1.4rem; height:1px; background:var(--brass); }
h1,h2,h3 { letter-spacing: -.025em; }
h1 { letter-spacing:-.035em; }
.lead { color: rgba(36,19,38,.82); }
.hero { background: linear-gradient(90deg, var(--ink) 0 38%, transparent 38% 100%), linear-gradient(180deg, #fffaf4 0%, var(--pearl) 100%); }
.hero-grid { grid-template-columns: minmax(0,.86fr) minmax(380px,.86fr); align-items:center; }
.hero-copy { background: rgba(248,243,234,.94); border: 1px solid var(--line); border-left: 7px solid var(--brass); padding: clamp(1.1rem, 2vw, 2.3rem); box-shadow: var(--shadow); }
.hero-media { background: var(--ink); padding:.72rem; border:1px solid rgba(36,19,38,.18); }
.hero-media::before, .page-hero .image-frame::before, .intro-grid .image-frame::before { content:""; position:absolute; inset:.42rem; border:1px solid rgba(192,124,74,.28); pointer-events:none; z-index:1; }
.hero-media .image-frame { padding:0; border:0; position:relative; }
.hero-media img, .image-frame img { filter:saturate(.92) contrast(1.03); }
.hero-panel { right:1.4rem; left:auto; bottom:1.4rem; background:rgba(248,243,234,.96); border:1px solid rgba(36,19,38,.22); border-radius:999px; box-shadow:var(--shadow); }
.trust-strip { background:var(--ink); }
.trust-item span { color: var(--copper-soft); font-family: var(--font-accent); font-size:.74rem; letter-spacing:.15em; }
.copy-panel { border-left:1px solid var(--line-strong); position:relative; }
.copy-panel::before { content:""; position:absolute; left:-5px; top:.15rem; width:9px; height:4.2rem; background:var(--brass); }
.image-frame { position:relative; padding:.72rem; background:var(--linen); box-shadow:none; }
.image-frame.soft { border-radius:0 48px 0 48px; overflow:hidden; }
.image-frame.soft img { border-radius:0 36px 0 36px; }
.caption { color:rgba(36,19,38,.68); font-style:italic; }
.card { background:rgba(255,250,244,.72); border:1px solid var(--line); position:relative; }
.card::before { content:""; display:block; width:2.5rem; height:2px; background:var(--brass); margin-bottom:.75rem; }
.card:hover { border-color:rgba(192,124,74,.72); box-shadow:0 16px 42px rgba(36,19,38,.08); }
.price-pill { background:var(--ink); color:var(--pearl); border:1px solid var(--ink); font-family:var(--font-accent); font-size:.82rem; letter-spacing:.04em; }
.room-card li::before, .tick-list li::before { width:.52rem; height:.52rem; border:1px solid var(--brass); background:transparent; transform:rotate(45deg); top:.68em; }
.band { background:linear-gradient(90deg, rgba(192,124,74,.12), transparent 48%), var(--ink); }
.band .eyebrow { color:var(--copper-soft); }
.band .eyebrow::before { background:var(--copper-soft); }
.split-band { background:var(--ink); gap:0; border-top:1px solid rgba(248,243,234,.18); border-bottom:1px solid rgba(248,243,234,.18); }
.split-band > div { background:transparent; border-left:1px solid rgba(248,243,234,.18); }
.split-band > div:first-child { border-left:0; }
.service-matrix .cell { background:rgba(255,250,244,.52); }
.price-table { background:rgba(255,250,244,.72); }
.price-table th { background: var(--copper-soft); color: var(--ink); font-family: var(--font-accent); font-size:.72rem; letter-spacing:.16em; }
.price-table td:nth-child(2) { font-family: var(--font-head); font-size: clamp(1.05rem, 1rem + .32vw, 1.28rem); font-weight:700; }
.price-group { background:rgba(255,250,244,.45); }
.price-group h3 { background:var(--ink); color:var(--pearl); font-family:var(--font-accent); font-size:.86rem; letter-spacing:.13em; text-transform:uppercase; }
.anchor-tabs { background:rgba(248,243,234,.94); }
.anchor-tabs a { background:rgba(255,250,244,.62); font-family:var(--font-accent); font-size:.82rem; border-radius:999px; }
.form-shell { border-radius:0 44px 0 44px; overflow:hidden; box-shadow:var(--shadow); background:var(--white); }
.form-aside { background:linear-gradient(160deg, rgba(192,124,74,.18), transparent 48%), var(--ink); }
input, select, textarea { border-radius:16px; background:#fffdf8; }
.cta-panel { border-radius:0 44px 0 44px; background:linear-gradient(90deg, rgba(192,124,74,.15), transparent 58%), var(--linen); }
.detail-card { border-left:2px solid var(--brass); padding-left:.95rem; border-top:0; }
.site-footer { background:linear-gradient(90deg, rgba(192,124,74,.12), transparent 36%), var(--ink); }
.footer-col a:hover { color:var(--copper-soft); }
.cookie-banner, .cookie-modal { border-radius:0 36px 0 36px; }
.cookie-row { border-radius:18px; }
@media (max-width:1060px) { .hero { background:var(--pearl); } .hero-copy{padding:1.2rem;} .hero-panel{position:static; width:auto; margin:.75rem 0 0; border-radius:0 30px 0 30px;} .main-nav a{border-radius:0;} }
@media (max-width:680px) { .image-frame.soft, .image-frame.soft img, .form-shell, .cta-panel, .cookie-banner, .cookie-modal { border-radius:0 24px 0 24px; } }

.form-honeypot { position:absolute; left:-9999px; width:1px; height:1px; overflow:hidden; opacity:0; pointer-events:none; }


/* Room card photography */
.room-card-media {
  margin: -1.05rem -1.05rem 1rem;
  border-bottom: 1px solid var(--line);
  background: var(--linen);
  overflow: hidden;
}
.room-card-media img {
  width: 100%;
  aspect-ratio: 4 / 3;
  object-fit: cover;
  display: block;
  filter: saturate(.96) contrast(1.03);
  transition: transform .28s ease, filter .28s ease;
}
.room-card:hover .room-card-media img {
  transform: scale(1.025);
  filter: saturate(1) contrast(1.05);
}
.room-card .room-card-media + h3 {
  margin-top: .15rem;
}
.room-card::before {
  display: none;
}

/* Header desktop overlap fix: keep casino age note out of the navigation flow */
.header-inner {
  grid-template-columns: minmax(164px, auto) minmax(0, 1fr) minmax(248px, auto);
  column-gap: clamp(.75rem, 1.4vw, 1.35rem);
}
.main-nav {
  min-width: 0;
  flex-wrap: wrap;
  justify-content: center;
  row-gap: .22rem;
  overflow: visible;
}
.main-nav a {
  flex: 0 0 auto;
  white-space: nowrap;
  padding-inline: clamp(.34rem, .52vw, .58rem);
  font-size: clamp(.7rem, .72vw, .82rem);
}
.header-actions {
  justify-self: end;
  min-width: 0;
  flex-shrink: 0;
}
.age-note {
  flex: 0 0 auto;
  max-width: 168px;
  white-space: normal;
}
@media (min-width:1061px) and (max-width:1240px) {
  .header-inner {
    grid-template-columns: minmax(156px, auto) minmax(0, 1fr) minmax(180px, auto);
    column-gap: .7rem;
  }
  .brand-link { min-width: 158px; }
  .brand-link svg { width: 158px; }
  .main-nav { justify-content: center; }
  .main-nav a {
    padding: .42rem .36rem;
    font-size: .68rem;
    letter-spacing: .025em;
  }
  .header-actions { gap: .45rem; }
  .age-note {
    max-width: 118px;
    padding-left: .55rem;
    font-size: .66rem;
    line-height: 1.22;
  }
  .header-actions .btn {
    min-height: 38px;
    padding: .58rem .72rem;
    font-size: .78rem;
  }
}
@media (min-width:1061px) and (max-width:1130px) {
  .age-note {
    border-left: 0;
    padding-left: 0;
    max-width: 92px;
  }
  .age-note::before {
    content: '20+';
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 2.45rem;
    min-height: 2.45rem;
    border: 1px solid var(--line-strong);
    border-radius: 999px;
    font-weight: 900;
    background: var(--white);
  }
  .age-note { font-size: 0; }
}

/* Final responsive header fix: desktop and mobile layouts are isolated */
@media (min-width: 1061px) {
  .site-header { overflow: visible; }
  .header-inner {
    max-width: 1360px;
    grid-template-columns: minmax(150px, auto) minmax(0, 1fr) minmax(218px, auto);
    column-gap: clamp(.7rem, 1.15vw, 1.25rem);
  }
  .brand-link {
    min-width: 156px;
    flex-shrink: 0;
  }
  .brand-link svg {
    width: clamp(156px, 13vw, 184px);
  }
  .nav-toggle {
    display: none;
  }
  .main-nav {
    display: flex;
    grid-column: auto;
    min-width: 0;
    width: 100%;
    flex-direction: row;
    flex-wrap: wrap;
    align-items: center;
    justify-content: center;
    row-gap: .22rem;
    column-gap: .08rem;
    overflow: visible;
  }
  .main-nav a {
    flex: 0 0 auto;
    white-space: nowrap;
    padding: .46rem clamp(.28rem, .45vw, .6rem);
    font-size: clamp(.66rem, .66vw, .78rem);
    letter-spacing: .035em;
    line-height: 1.15;
    border-radius: 999px;
  }
  .header-actions {
    grid-column: auto;
    display: flex;
    align-items: center;
    justify-self: end;
    justify-content: flex-end;
    min-width: 0;
    gap: .52rem;
    flex-wrap: nowrap;
  }
  .header-actions .btn {
    flex: 0 0 auto;
    white-space: nowrap;
    min-height: 40px;
    padding: .62rem .82rem;
    font-size: .82rem;
  }
  .age-note {
    display: inline-flex;
    align-items: center;
    flex: 0 0 auto;
    max-width: 132px;
    white-space: normal;
    font-size: .66rem;
    line-height: 1.18;
    padding: .38rem .58rem;
    border-left: 0;
    border: 1px solid rgba(192,124,74,.46);
    border-radius: 999px;
  }
  .age-note::before {
    content: none;
  }
}
@media (min-width: 1241px) {
  .header-inner {
    grid-template-columns: minmax(176px, auto) minmax(0, 1fr) minmax(252px, auto);
  }
  .main-nav a {
    font-size: .74rem;
    letter-spacing: .07em;
    padding-inline: .56rem;
  }
  .age-note {
    max-width: 172px;
    font-size: .72rem;
    line-height: 1.25;
    padding: .42rem .7rem;
  }
  .header-actions .btn {
    min-height: 44px;
    padding: .72rem .95rem;
    font-size: .9rem;
  }
}
@media (min-width: 1061px) and (max-width: 1160px) {
  .header-inner {
    grid-template-columns: minmax(140px, auto) minmax(0, 1fr) minmax(150px, auto);
    column-gap: .5rem;
  }
  .brand-link { min-width: 140px; }
  .brand-link svg { width: 140px; }
  .main-nav a {
    padding: .38rem .26rem;
    font-size: .62rem;
    letter-spacing: .018em;
  }
  .header-actions { gap: .36rem; }
  .header-actions .btn {
    min-height: 36px;
    padding: .5rem .62rem;
    font-size: .72rem;
  }
  .age-note {
    max-width: none;
    min-width: 2.45rem;
    min-height: 2.45rem;
    justify-content: center;
    padding: 0 .52rem;
    font-size: 0;
  }
  .age-note::after {
    content: '20+';
    font-size: .78rem;
    font-weight: 900;
    letter-spacing: .02em;
  }
}
@media (max-width: 1060px) {
  .site-header { overflow: visible; }
  .header-inner {
    grid-template-columns: auto auto;
    justify-content: space-between;
    align-items: center;
    gap: .7rem 1rem;
  }
  .brand-link {
    min-width: 0;
    grid-column: auto;
  }
  .brand-link svg {
    width: 152px;
  }
  .nav-toggle {
    display: inline-flex;
    grid-column: auto;
    justify-self: end;
  }
  .main-nav {
    grid-column: 1 / -1;
    width: 100%;
    min-width: 0;
    display: none;
    flex-direction: column;
    flex-wrap: nowrap;
    align-items: stretch;
    justify-content: flex-start;
    row-gap: 0;
    column-gap: 0;
    padding: .55rem 0 0;
    background: var(--pearl);
    border-top: 1.5px solid var(--ink);
    overflow: visible;
  }
  .main-nav.open {
    display: flex;
  }
  .main-nav a {
    width: 100%;
    white-space: normal;
    border-radius: 0;
    padding: .78rem .25rem;
    font-size: .88rem;
    line-height: 1.25;
    letter-spacing: .04em;
  }
  .header-actions {
    grid-column: 1 / -1;
    display: flex;
    width: 100%;
    min-width: 0;
    justify-content: flex-start;
    align-items: center;
    padding-top: .5rem;
    border-top: 1px solid var(--line);
  }
  .header-actions .btn {
    display: none;
  }
  .age-note {
    display: inline-flex;
    width: auto;
    max-width: none;
    white-space: normal;
    font-size: .72rem;
    line-height: 1.25;
    padding: .34rem .62rem;
    border-left: 0;
    border: 1px solid rgba(192,124,74,.46);
    border-radius: 999px;
  }
  .age-note::before,
  .age-note::after {
    content: none;
  }
}
@media (max-width: 680px) {
  .header-inner {
    grid-template-columns: 1fr auto;
    gap: .55rem .8rem;
  }
  .brand-link svg {
    width: 146px;
  }
  .header-actions {
    display: none;
  }
  .main-nav {
    padding-top: .45rem;
  }
  .main-nav a {
    font-size: .86rem;
    padding: .74rem .15rem;
  }
}

/* Final responsive layout repair: stable desktop/tablet/mobile header and mobile main flow */
html, body {
  max-width: 100%;
  overflow-x: hidden;
}
.site-header,
.header-inner,
.main-nav,
.header-actions,
main,
.hero,
.section,
.section-tight,
.page-hero,
.wrap,
.wrap-wide {
  min-width: 0;
}
.site-header {
  overflow: visible;
}
.header-inner {
  width: 100%;
  grid-template-columns: minmax(160px, auto) minmax(0, 1fr) minmax(230px, auto);
  column-gap: .85rem;
}
.brand-link {
  min-width: 0;
}
.brand-link img,
.footer-logo {
  height: auto;
}
.main-nav {
  min-width: 0;
  max-width: 100%;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: center;
  gap: .22rem;
  overflow: visible;
}
.main-nav a {
  flex: 0 1 auto;
  white-space: nowrap;
  line-height: 1.18;
}
.header-actions {
  min-width: 0;
  justify-self: end;
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: .55rem;
}
.header-actions .btn {
  flex: 0 0 auto;
  white-space: nowrap;
}
.age-note {
  flex: 0 1 auto;
  max-width: 154px;
  white-space: normal;
  overflow-wrap: anywhere;
}

@media (min-width: 1161px) and (max-width: 1320px) {
  .header-inner {
    grid-template-columns: minmax(148px, auto) minmax(0, 1fr) minmax(182px, auto);
    column-gap: .55rem;
  }
  .brand-link svg,
  .brand-link img { width: 148px; }
  .main-nav a {
    font-size: .66rem;
    letter-spacing: .035em;
    padding: .38rem .32rem;
  }
  .header-actions { gap: .38rem; }
  .header-actions .btn {
    min-height: 38px;
    padding: .54rem .68rem;
    font-size: .74rem;
  }
  .age-note {
    max-width: none;
    min-width: 2.55rem;
    min-height: 2.55rem;
    justify-content: center;
    text-align: center;
    padding: 0 .54rem;
    font-size: 0;
    line-height: 1;
  }
  .age-note::before {
    content: '20+';
    font-size: .8rem;
    font-weight: 900;
    letter-spacing: .02em;
  }
  .age-note::after { content: none; }
}

@media (min-width: 1061px) and (max-width: 1160px) {
  .header-inner {
    grid-template-columns: minmax(128px, auto) minmax(0, 1fr) minmax(148px, auto);
    column-gap: .42rem;
  }
  .brand-link svg,
  .brand-link img { width: 128px; }
  .main-nav a {
    font-size: .58rem;
    letter-spacing: .01em;
    padding: .34rem .22rem;
  }
  .header-actions { gap: .32rem; }
  .header-actions .btn {
    min-height: 34px;
    padding: .45rem .55rem;
    font-size: .68rem;
  }
  .age-note {
    max-width: none;
    min-width: 2.35rem;
    min-height: 2.35rem;
    justify-content: center;
    text-align: center;
    padding: 0 .48rem;
    font-size: 0;
    line-height: 1;
  }
  .age-note::before {
    content: '20+';
    font-size: .76rem;
    font-weight: 900;
  }
  .age-note::after { content: none; }
}

@media (max-width: 1060px) {
  body.nav-is-open { overflow-x: hidden; }
  .site-header {
    position: sticky;
    overflow: visible;
  }
  .header-inner {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    gap: .6rem .8rem;
    align-items: center;
    justify-content: stretch;
    padding: .62rem .88rem;
  }
  .brand-link {
    grid-column: 1;
    width: auto;
    min-width: 0;
  }
  .brand-link svg,
  .brand-link img {
    width: min(154px, 48vw);
    max-width: 100%;
    height: auto;
  }
  .nav-toggle {
    display: inline-flex;
    grid-column: 2;
    justify-self: end;
    align-items: center;
    justify-content: center;
    min-width: 4.7rem;
    min-height: 2.75rem;
    padding: .6rem .86rem;
    line-height: 1;
    z-index: 2;
  }
  .nav-toggle[aria-expanded="true"] {
    background: var(--ink);
    color: var(--pearl);
  }
  .main-nav {
    grid-column: 1 / -1;
    display: none;
    width: 100%;
    max-width: 100%;
    flex-direction: column;
    flex-wrap: nowrap;
    align-items: stretch;
    justify-content: flex-start;
    gap: 0;
    margin: .15rem 0 0;
    padding: .45rem 0 0;
    border-top: 1px solid var(--line-strong);
    background: var(--pearl);
    overflow: visible;
  }
  .main-nav.open {
    display: flex;
  }
  .main-nav a {
    display: block;
    width: 100%;
    white-space: normal;
    border-radius: 0;
    border: 0;
    border-bottom: 1px solid var(--line);
    padding: .84rem .15rem;
    font-size: .86rem;
    line-height: 1.28;
    letter-spacing: .045em;
  }
  .main-nav a:hover,
  .main-nav a[aria-current="page"] {
    border-bottom-color: var(--line-strong);
  }
  .header-actions {
    display: none;
  }

  main {
    overflow: visible;
  }
  .hero,
  .page-hero,
  .section,
  .section-tight {
    padding-left: .95rem;
    padding-right: .95rem;
  }
  .hero {
    padding-top: 1.65rem;
    padding-bottom: 2.2rem;
    background: var(--pearl);
  }
  .hero-grid,
  .page-hero-grid,
  .intro-grid,
  .intro-grid.reverse,
  .form-shell,
  .cta-panel {
    display: grid;
    grid-template-columns: minmax(0, 1fr) !important;
    gap: 1.25rem;
  }
  .hero-copy {
    width: 100%;
    min-width: 0;
    padding: 1.05rem;
    border-left: 0;
    border-top: 5px solid var(--brass);
  }
  .hero h1,
  .page-hero h1,
  h1,
  h2,
  h3,
  p,
  .lead {
    max-width: 100%;
    overflow-wrap: break-word;
  }
  .hero-actions {
    flex-direction: column;
    align-items: stretch;
    gap: .65rem;
  }
  .hero-actions .btn,
  .hero-actions .text-link,
  .cta-panel .btn,
  .form-shell .btn {
    width: 100%;
  }
  .hero-media,
  .image-frame,
  .room-card-media {
    max-width: 100%;
  }
  .hero-media {
    padding: .45rem;
    box-shadow: none;
  }
  .hero-media::before,
  .page-hero .image-frame::before,
  .intro-grid .image-frame::before {
    display: none;
  }
  .hero-panel {
    position: static;
    width: auto;
    max-width: none;
    margin: .7rem 0 0;
    border-radius: 0 22px 0 22px;
  }
  .trust-strip .wrap,
  .room-grid,
  .detail-grid,
  .service-matrix,
  .split-band,
  .footer-grid,
  .field-grid {
    display: grid;
    grid-template-columns: minmax(0, 1fr) !important;
  }
  .room-grid {
    gap: 1rem;
  }
  .card,
  .room-card,
  .price-group,
  .price-table,
  .form-shell,
  .cta-panel {
    min-width: 0;
    max-width: 100%;
  }
  .room-card-media {
    margin: -1.05rem -1.05rem 1rem;
  }
  .image-frame.soft,
  .image-frame.soft img,
  .form-shell,
  .cta-panel,
  .cookie-banner,
  .cookie-modal {
    border-radius: 0 24px 0 24px;
  }
  .price-table thead { display: none; }
  .price-table,
  .price-table tbody,
  .price-table tr,
  .price-table td {
    display: block;
    width: 100%;
  }
  .price-table tr {
    border-bottom: 1px solid var(--line);
    padding: .5rem 0;
  }
  .price-table td {
    border: 0;
    padding: .42rem 1rem;
    white-space: normal !important;
  }
  .price-table td::before {
    content: attr(data-label);
    display: block;
    font-family: var(--font-accent);
    font-size: .72rem;
    letter-spacing: .12em;
    text-transform: uppercase;
    color: var(--kauri);
    font-weight: 900;
  }
  .anchor-tabs {
    top: 67px;
  }
  .anchor-tabs .wrap {
    padding-left: .95rem;
    padding-right: .95rem;
  }
  .cookie-banner {
    left: .75rem;
    right: .75rem;
    bottom: .75rem;
  }
}

@media (min-width: 681px) and (max-width: 1060px) {
  .room-grid,
  .detail-grid,
  .service-matrix,
  .footer-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
  }
  .trust-strip .wrap,
  .split-band,
  .form-shell,
  .hero-grid,
  .page-hero-grid,
  .intro-grid,
  .intro-grid.reverse {
    grid-template-columns: minmax(0, 1fr) !important;
  }
}

@media (max-width: 480px) {
  .header-inner {
    padding-left: .75rem;
    padding-right: .75rem;
  }
  .brand-link svg,
  .brand-link img {
    width: min(142px, 48vw);
  }
  .nav-toggle {
    min-width: 4.35rem;
    padding-inline: .72rem;
  }
  .hero,
  .page-hero,
  .section,
  .section-tight {
    padding-left: .82rem;
    padding-right: .82rem;
  }
  .hero-copy,
  .card,
  .enquiry-form,
  .form-aside,
  .cta-panel {
    padding: 1rem;
  }
  .room-card-media {
    margin: -1rem -1rem .95rem;
  }
}
