@font-face {
  font-family: "Archivo";
  src: url("assets/fonts/archivo-variable.woff2") format("woff2");
  font-style: normal;
  font-weight: 100 900;
  font-display: swap;
}

:root {
  --graphite: #1f2328;
  --graphite-2: #30363d;
  --ink: #171a1f;
  --muted: #606874;
  --paper: #f7f8fa;
  --white: #ffffff;
  --silver: #dce1e8;
  --silver-2: #aeb7c4;
  --content: min(1240px, calc(100% - 72px));
  --measure: 66ch;
  color-scheme: light;
}

*, *::before, *::after { box-sizing: border-box; }

html {
  scroll-behavior: smooth;
  background: var(--paper);
}

body {
  margin: 0;
  min-width: 320px;
  background: var(--paper);
  color: var(--ink);
  font-family: "Archivo", Arial, sans-serif;
  font-size: 16px;
  line-height: 1.55;
  text-rendering: optimizeLegibility;
}

body.menu-open { overflow: hidden; }

img {
  display: block;
  width: 100%;
  max-width: 100%;
  height: auto;
}

figure, h1, h2, h3, p, blockquote, dl, dd { margin: 0; }

a { color: inherit; }

button, input, select, textarea { font: inherit; }

button, a, input, select, textarea { -webkit-tap-highlight-color: transparent; }

:focus-visible {
  outline: 3px solid var(--accent);
  outline-offset: 4px;
}

.skip-link {
  position: fixed;
  z-index: 100;
  left: 18px;
  top: 18px;
  padding: 12px 16px;
  background: var(--white);
  color: var(--ink);
  border: 2px solid var(--ink);
  transform: translateY(-160%);
}

.skip-link:focus { transform: translateY(0); }

.announcement {
  min-height: 36px;
  padding: 7px max(36px, calc((100vw - 1240px) / 2));
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 18px;
  background: var(--graphite);
  color: #f7f8fa;
  font-size: 12px;
  font-weight: 560;
  letter-spacing: .035em;
}

.announcement a {
  color: #c8d5ff;
  font-weight: 750;
  text-underline-offset: 3px;
}

.site-header {
  position: relative;
  z-index: 30;
  background: var(--white);
  border-bottom: 1px solid var(--silver);
}

.header-inner {
  width: var(--content);
  min-height: 80px;
  margin: 0 auto;
  display: grid;
  grid-template-columns: minmax(220px, 1fr) auto auto auto;
  align-items: center;
  gap: 28px;
}

.brand {
  width: fit-content;
  display: inline-flex;
  align-items: center;
  gap: 12px;
  text-decoration: none;
}

.brand-mark {
  width: 31px;
  height: 31px;
  position: relative;
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 4px;
  flex: 0 0 auto;
}

.brand-mark i {
  display: block;
  background: var(--accent);
}

.brand-mark i:last-child { margin-top: 9px; }

.brand-name {
  max-width: 210px;
  color: var(--graphite);
  font-size: 15px;
  font-weight: 790;
  letter-spacing: -.025em;
  line-height: 1.05;
}

.brand-logo { width: auto; max-width: 208px; height: 48px; object-fit: contain; }

.site-menu {
  display: flex;
  align-items: center;
  gap: 28px;
}

.site-menu a {
  position: relative;
  padding: 29px 0 27px;
  color: #343a43;
  font-size: 13px;
  font-weight: 620;
  text-decoration: none;
}

.site-menu a::after {
  content: "";
  position: absolute;
  left: 0;
  right: 100%;
  bottom: 20px;
  height: 2px;
  background: var(--accent);
  transition: right 180ms ease;
}

.site-menu a:hover::after,
.site-menu a[aria-current="page"]::after { right: 0; }

.language-switch {
  display: flex;
  align-items: center;
  gap: 6px;
  color: var(--silver-2);
  font-size: 11px;
  font-weight: 700;
}

.language-switch a {
  color: var(--muted);
  text-decoration: none;
}

.language-switch a[aria-current="true"] { color: var(--ink); }

.header-book {
  min-height: 42px;
  padding: 11px 16px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: var(--graphite);
  color: var(--white);
  font-size: 12px;
  font-weight: 700;
  text-decoration: none;
}

.header-book:hover { background: var(--accent); color: var(--accent-on); }

.menu-toggle {
  display: none;
  border: 0;
  background: transparent;
  color: var(--ink);
}

.hero {
  min-height: clamp(650px, calc(100svh - 116px), 790px);
  display: grid;
  grid-template-columns: minmax(0, 44%) minmax(0, 56%);
  background: var(--accent);
}

.hero-copy {
  padding: clamp(72px, 8vw, 120px) max(48px, calc((100vw - 1240px) / 2));
  padding-right: clamp(44px, 5vw, 82px);
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: flex-start;
  color: var(--accent-on);
}

.hero h1 {
  max-width: 16ch;
  font-size: clamp(48px, 5vw, 70px);
  font-weight: 760;
  line-height: .99;
  letter-spacing: -.055em;
  text-wrap: balance;
}

.hero-lede {
  max-width: 45ch;
  margin-top: 28px;
  color: color-mix(in srgb, var(--accent-on) 82%, transparent);
  font-size: clamp(16px, 1.55vw, 20px);
  line-height: 1.55;
}

.hero-actions {
  margin-top: 38px;
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
}

.btn {
  min-height: 50px;
  padding: 14px 20px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border: 1px solid transparent;
  font-size: 13px;
  font-weight: 740;
  line-height: 1.1;
  text-decoration: none;
  cursor: pointer;
  transition: background-color 160ms ease, color 160ms ease, border-color 160ms ease;
}

.btn-inverse { background: var(--white); color: var(--ink); }
.btn-inverse:hover { background: var(--graphite); color: var(--white); }

.btn-outline {
  border-color: color-mix(in srgb, var(--accent-on) 70%, transparent);
  color: var(--accent-on);
}

.btn-outline:hover { background: var(--accent-on); color: var(--accent); }

.btn-primary { background: var(--accent); color: var(--accent-on); }
.btn-primary:hover { background: var(--graphite); color: var(--white); }

.btn-secondary { border-color: var(--graphite); background: transparent; color: var(--graphite); }
.btn-secondary:hover { background: var(--graphite); color: var(--white); }

.hero-media { min-width: 0; overflow: hidden; background: var(--graphite-2); }

.hero-media img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: 50% 45%;
}

.section { width: var(--content); margin: 0 auto; }

.story {
  padding: clamp(92px, 10vw, 150px) 0;
  display: grid;
  grid-template-columns: minmax(0, 1.25fr) minmax(310px, .75fr);
  gap: clamp(52px, 8vw, 112px);
  align-items: end;
}

.story-image { position: relative; }

.story-image::before {
  content: "";
  position: absolute;
  z-index: -1;
  inset: -24px 28% 38% -36px;
  background: var(--accent-soft);
}

.story-image img { aspect-ratio: 3 / 2; object-fit: cover; }

.story-copy { padding-bottom: 16px; }

h2 {
  max-width: 18ch;
  font-size: clamp(38px, 4.8vw, 66px);
  font-weight: 710;
  line-height: 1.02;
  letter-spacing: -.052em;
  text-wrap: balance;
}

h3 {
  font-size: clamp(20px, 2.1vw, 28px);
  font-weight: 690;
  line-height: 1.16;
  letter-spacing: -.032em;
  text-wrap: balance;
}

.story-copy p,
.craft-statement p,
.section-heading p,
.room-copy p,
.closing-copy p,
.page-intro p,
.page-closing p,
.team > div > p {
  max-width: var(--measure);
  margin-top: 24px;
  color: var(--muted);
  font-size: 17px;
  line-height: 1.72;
}

.text-link {
  width: fit-content;
  margin-top: 32px;
  display: inline-block;
  color: var(--ink);
  border-bottom: 2px solid var(--accent);
  font-size: 13px;
  font-weight: 750;
  text-decoration: none;
}

.text-link:hover { color: var(--accent-text); }

.popular { padding: 0 0 clamp(100px, 11vw, 160px); }

.section-heading {
  padding-top: 38px;
  border-top: 1px solid var(--silver-2);
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(280px, .48fr);
  gap: 48px;
  align-items: end;
}

.section-heading p { margin-top: 0; }

.service-list {
  margin-top: 64px;
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 1px;
  background: var(--silver);
  border: 1px solid var(--silver);
}

.service-card {
  min-width: 0;
  display: grid;
  grid-template-columns: minmax(180px, .8fr) minmax(0, 1.2fr);
  background: var(--white);
}

.service-card:first-child { grid-column: 1 / -1; grid-template-columns: minmax(0, 1.12fr) minmax(330px, .88fr); }

.service-photo { min-width: 0; overflow: hidden; background: #d7dce3; }

.service-photo img {
  height: 100%;
  min-height: 310px;
  aspect-ratio: 4 / 3;
  object-fit: cover;
  transition: transform 300ms ease;
}

.service-card:first-child .service-photo img { min-height: 420px; aspect-ratio: 1.45 / 1; }

.service-photo:hover img { transform: scale(1.018); }

.service-card-copy {
  min-width: 0;
  padding: clamp(30px, 4vw, 54px);
  display: flex;
  flex-direction: column;
}

.service-facts {
  padding-bottom: 18px;
  display: flex;
  justify-content: space-between;
  gap: 16px;
  border-bottom: 1px solid var(--silver);
  color: var(--muted);
  font-size: 11px;
  font-weight: 700;
  letter-spacing: .06em;
  text-transform: uppercase;
}

.service-card h3 { margin-top: 26px; }

.service-card-copy > p {
  max-width: 50ch;
  margin-top: 16px;
  color: var(--muted);
  font-size: 15px;
  line-height: 1.68;
}

.service-action {
  margin-top: auto;
  padding-top: 28px;
  display: flex;
  align-items: end;
  justify-content: space-between;
  gap: 20px;
}

.service-action strong { font-size: 16px; }

.service-action a {
  color: var(--accent-text);
  font-size: 13px;
  font-weight: 750;
  text-underline-offset: 4px;
}

.service-card.is-unavailable { opacity: .72; }
.service-card.is-unavailable .service-photo { filter: grayscale(1); }

.popular-link { margin-left: auto; }

.empty-state {
  grid-column: 1 / -1;
  padding: 64px;
  background: var(--white);
}

.empty-state p { max-width: 48ch; margin: 18px 0 28px; color: var(--muted); }

.craft {
  width: 100%;
  padding: clamp(90px, 10vw, 150px) max(36px, calc((100vw - 1240px) / 2));
  display: grid;
  grid-template-columns: minmax(0, .88fr) minmax(0, 1.12fr);
  gap: clamp(70px, 10vw, 150px);
  background: var(--graphite);
  color: var(--white);
}

.craft-statement p { color: #b6bec9; }

.craft-grid { border-top: 1px solid #515965; }

.craft-grid article {
  padding: 32px 0;
  display: grid;
  grid-template-columns: minmax(180px, .8fr) minmax(0, 1.2fr);
  gap: 32px;
  border-bottom: 1px solid #515965;
}

.craft-grid h3 { font-size: 22px; }

.craft-grid p { color: #b6bec9; font-size: 15px; }

.process { padding: clamp(100px, 11vw, 160px) 0; }

.process ol {
  margin: 64px 0 0;
  padding: 0;
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  list-style: none;
  border-top: 1px solid var(--silver-2);
  border-bottom: 1px solid var(--silver-2);
}

.process li {
  min-height: 270px;
  padding: 28px;
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  border-right: 1px solid var(--silver-2);
}

.process li:last-child { border-right: 0; }

.process li b {
  color: var(--accent-text);
  font-size: 44px;
  font-weight: 350;
  line-height: 1;
}

.process li h3 { font-size: 24px; }
.process li p { max-width: 28ch; margin-top: 12px; color: var(--muted); }

.room {
  display: grid;
  grid-template-columns: minmax(0, 1.38fr) minmax(330px, .62fr);
  background: var(--accent);
  color: var(--accent-on);
}

.room figure { min-width: 0; }
.room figure img { height: 100%; min-height: 640px; object-fit: cover; }

.room-copy {
  padding: clamp(48px, 5vw, 72px);
  display: flex;
  flex-direction: column;
  justify-content: center;
}

.room-copy h2 { font-size: clamp(36px, 3.5vw, 50px); }

.room-copy p { color: color-mix(in srgb, var(--accent-on) 78%, transparent); }
.light-link { color: var(--accent-on); border-color: var(--accent-on); }
.light-link:hover { color: var(--accent-on); opacity: .74; }

.visit {
  padding: clamp(100px, 11vw, 160px) 0;
  display: grid;
  grid-template-columns: minmax(300px, .6fr) minmax(0, 1.4fr);
  gap: clamp(52px, 8vw, 110px);
  align-items: center;
}

.visit-copy > p { margin-top: 22px; color: var(--muted); }
.visit-copy > p + p { margin-top: 5px; }
.visit > figure img { aspect-ratio: 3 / 2; object-fit: cover; }

.visit .sb-location-map--embedded {
  width: 100% !important;
  margin: 42px 0 0 !important;
  grid-column: 1 / -1;
}

.sb-location-map__canvas { border-radius: 0 !important; border-color: var(--silver-2) !important; }

.quote {
  padding: clamp(92px, 10vw, 144px) max(36px, calc((100vw - 1240px) / 2));
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 64px;
  align-items: end;
  background: var(--white);
  border-top: 1px solid var(--silver);
  border-bottom: 1px solid var(--silver);
}

.quote blockquote {
  max-width: 24ch;
  color: var(--graphite);
  font-size: clamp(38px, 5vw, 68px);
  font-weight: 610;
  line-height: 1.06;
  letter-spacing: -.045em;
  text-wrap: balance;
}

.quote p {
  max-width: 20ch;
  padding: 12px 0;
  border-top: 3px solid var(--accent);
  color: var(--muted);
  font-size: 12px;
  font-weight: 700;
}

.closing {
  display: grid;
  grid-template-columns: minmax(330px, .72fr) minmax(0, 1.28fr);
  background: var(--paper);
}

.closing-copy {
  padding: clamp(72px, 9vw, 130px) max(48px, calc((100vw - 1240px) / 2));
  padding-right: clamp(48px, 7vw, 112px);
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  justify-content: center;
}

.closing-copy .btn { margin-top: 34px; }
.closing figure img { height: 100%; min-height: 580px; object-fit: cover; }

.page-intro {
  width: var(--content);
  min-height: 480px;
  margin: 0 auto;
  padding: clamp(88px, 10vw, 148px) 0 72px;
  display: grid;
  grid-template-columns: minmax(0, 1.15fr) minmax(300px, .55fr);
  gap: 90px;
  align-items: end;
  border-bottom: 1px solid var(--silver-2);
}

.page-intro h1,
.booking-copy h1,
.contact-copy h1 {
  max-width: 16ch;
  font-size: clamp(48px, 6vw, 78px);
  font-weight: 730;
  line-height: .99;
  letter-spacing: -.058em;
  text-wrap: balance;
}

.page-intro p { margin-top: 0; }

.services-page { padding: 72px 0 clamp(100px, 11vw, 160px); }
.services-page .service-list { margin-top: 0; }

.page-closing {
  width: var(--content);
  margin: 0 auto clamp(100px, 11vw, 160px);
  padding: 56px 0 0;
  border-top: 1px solid var(--silver-2);
}

.page-closing .btn { margin-top: 32px; }

.about-intro { border-bottom: 0; }

.about-story {
  padding-bottom: clamp(100px, 11vw, 160px);
  display: grid;
  grid-template-columns: minmax(0, 1.22fr) minmax(310px, .78fr);
  gap: clamp(52px, 8vw, 110px);
  align-items: center;
}

.about-story figure img { aspect-ratio: 3 / 2; object-fit: cover; }
.about-story p { margin-top: 24px; color: var(--muted); font-size: 17px; line-height: 1.72; }

.values {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  border-top: 1px solid var(--silver-2);
  border-bottom: 1px solid var(--silver-2);
}

.values article { min-height: 310px; padding: 42px 38px; border-right: 1px solid var(--silver-2); }
.values article:last-child { border-right: 0; }
.values h3 { font-size: 25px; }
.values p { margin-top: 26px; color: var(--muted); }

.team {
  padding: clamp(100px, 11vw, 160px) 0;
  display: grid;
  grid-template-columns: minmax(0, .9fr) minmax(0, 1.1fr);
  gap: clamp(68px, 10vw, 150px);
}

.team-disciplines { border-top: 1px solid var(--silver-2); }
.team-disciplines article { padding: 34px 0; border-bottom: 1px solid var(--silver-2); }
.team-disciplines p { margin-top: 12px; color: var(--muted); }
.about-closing { margin-bottom: clamp(100px, 11vw, 160px); }

.contact-page {
  width: var(--content);
  margin: 0 auto;
  padding: clamp(88px, 10vw, 148px) 0 clamp(100px, 11vw, 160px);
  display: grid;
  grid-template-columns: minmax(0, 1.18fr) minmax(340px, .62fr);
  gap: clamp(72px, 11vw, 160px);
  align-items: start;
}

.contact-copy > p { max-width: 55ch; margin-top: 26px; color: var(--muted); font-size: 17px; }

.contact-ledger { margin-top: 60px; border-top: 1px solid var(--silver-2); }

.contact-ledger > div {
  padding: 20px 0;
  display: grid;
  grid-template-columns: 110px minmax(0, 1fr);
  gap: 24px;
  border-bottom: 1px solid var(--silver-2);
}

.contact-ledger span { color: var(--muted); font-size: 12px; font-weight: 700; }
.contact-ledger a, .contact-ledger p { overflow-wrap: anywhere; font-weight: 630; }

.contact-actions {
  margin-top: 34px;
  padding: clamp(36px, 5vw, 58px);
  background: var(--graphite);
  color: var(--white);
}

.contact-actions h2 { max-width: 12ch; font-size: clamp(34px, 3.8vw, 52px); }
.contact-actions p { margin-top: 24px; color: #bcc4cf; }
.contact-actions .btn { width: 100%; margin-top: 32px; }
.contact-actions .btn + .btn { margin-top: 12px; border-color: #87909d; color: var(--white); }
.contact-actions .btn + .btn:hover { background: var(--white); color: var(--ink); }

.contact-page .sb-location-map--embedded {
  width: 100% !important;
  margin: 72px 0 0 !important;
  grid-column: 1 / -1;
  display: grid !important;
  grid-template-columns: minmax(240px, .55fr) minmax(0, 1.45fr) !important;
  gap: 52px !important;
}

.contact-page .sb-location-map__copy h2 { font-size: clamp(36px, 4vw, 56px) !important; }

.booking-page {
  width: var(--content);
  margin: 0 auto;
  padding: clamp(82px, 9vw, 130px) 0 clamp(100px, 11vw, 160px);
  display: grid;
  grid-template-columns: minmax(0, .9fr) minmax(440px, .72fr);
  gap: clamp(72px, 10vw, 150px);
  align-items: start;
}

.booking-copy > p { max-width: 54ch; margin-top: 28px; color: var(--muted); font-size: 17px; }
.booking-copy dl { margin-top: 58px; border-top: 1px solid var(--silver-2); }
.booking-copy dl > div { padding: 21px 0; border-bottom: 1px solid var(--silver-2); }
.booking-copy dt { font-size: 13px; font-weight: 750; }
.booking-copy dd { margin-top: 5px; color: var(--muted); font-size: 14px; }

.booking-panel { border: 1px solid var(--silver-2); background: var(--white); }
.booking-panel form { padding: clamp(30px, 4vw, 50px); }

.form-head {
  margin-bottom: 34px;
  padding-bottom: 18px;
  display: flex;
  justify-content: space-between;
  gap: 20px;
  border-bottom: 1px solid var(--silver);
  font-size: 13px;
  font-weight: 750;
}

.form-head b { color: var(--accent-text); }

.booking-panel label, .field-label {
  display: block;
  color: var(--graphite);
  font-size: 12px;
  font-weight: 700;
}

.booking-panel label > span, .field-label { display: block; margin-bottom: 8px; }

.booking-panel input,
.booking-panel select,
.booking-panel textarea {
  width: 100%;
  min-height: 48px;
  padding: 11px 12px;
  border: 1px solid #aab3c0;
  border-radius: 0;
  background: var(--white);
  color: var(--ink);
}

.booking-panel textarea { min-height: 104px; resize: vertical; }
.booking-panel input:focus, .booking-panel select:focus, .booking-panel textarea:focus { border-color: var(--accent); outline: 2px solid var(--accent); outline-offset: 1px; }

.form-row { margin-top: 20px; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 18px; }
.booking-panel .full { margin-top: 20px; }
.booking-panel .form-head + .full { margin-top: 0; }

.slot-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 6px; }
.slot-grid button { min-height: 42px; border: 1px solid #aab3c0; background: var(--white); color: var(--ink); cursor: pointer; }
.slot-grid button[aria-pressed="true"] { border-color: var(--accent); background: var(--accent); color: var(--accent-on); }
.slot-note { margin-top: 9px; color: var(--muted); font-size: 12px; }

.booking-panel .consent { margin-top: 22px; display: grid; grid-template-columns: 20px minmax(0, 1fr); gap: 10px; font-weight: 500; }
.booking-panel .consent input { width: 18px; min-height: 18px; margin: 2px 0 0; accent-color: var(--accent); }
.booking-panel .consent span { margin: 0; }

.booking-panel button[type="submit"] { width: 100%; margin-top: 25px; border: 0; }
.booking-panel button[disabled] { opacity: .42; cursor: not-allowed; }
.form-note, .booking-status { margin-top: 12px; color: var(--muted); font-size: 12px; text-align: center; }
.booking-status:not(:empty) { padding: 10px; background: #fff3f3; color: #9e2020; }

.booking-success { padding: clamp(40px, 6vw, 72px); }
.success-mark { width: 52px; height: 52px; display: grid; place-items: center; background: var(--accent); color: var(--accent-on); font-size: 26px; }
.booking-success h2 { margin-top: 32px; font-size: clamp(34px, 4vw, 52px); }
.booking-success p { margin-top: 20px; color: var(--muted); }
.booking-success .btn { margin-top: 28px; }

.site-footer {
  padding: 76px max(36px, calc((100vw - 1240px) / 2)) 28px;
  background: var(--graphite);
  color: #f4f6f8;
}

.footer-grid {
  display: grid;
  grid-template-columns: minmax(250px, 1.4fr) repeat(3, minmax(150px, .55fr));
  gap: 56px;
}

.footer-brand .brand-mark i { background: #8ca8ff; }
.footer-brand .brand-name { color: var(--white); }
.footer-lead > p { max-width: 38ch; margin-top: 26px; color: #aeb7c4; }

.footer-grid > div:not(:first-child) { display: flex; flex-direction: column; align-items: flex-start; gap: 9px; }
.footer-label { margin-bottom: 10px; color: #808b99; font-size: 11px; font-weight: 750; letter-spacing: .07em; text-transform: uppercase; }
.footer-grid a { color: #f1f3f5; font-size: 13px; text-underline-offset: 4px; }
.footer-grid p { overflow-wrap: anywhere; }
.footer-cta { padding-bottom: 3px; border-bottom: 2px solid #8ca8ff; font-weight: 750; text-decoration: none; }

.footer-bottom {
  margin-top: 72px;
  padding-top: 18px;
  display: flex;
  justify-content: space-between;
  gap: 24px;
  border-top: 1px solid #4a525d;
  color: #89939f;
  font-size: 11px;
}

.toast {
  position: fixed;
  z-index: 80;
  right: 24px;
  bottom: 24px;
  max-width: min(360px, calc(100vw - 48px));
  padding: 14px 18px;
  background: var(--graphite);
  color: var(--white);
  opacity: 0;
  pointer-events: none;
  transform: translateY(12px);
  transition: opacity 160ms ease, transform 160ms ease;
}

.toast.is-visible { opacity: 1; transform: translateY(0); }

@media (max-width: 1100px) {
  :root { --content: min(100% - 48px, 1240px); }

  .header-inner { grid-template-columns: minmax(190px, 1fr) auto auto auto; gap: 18px; }
  .site-menu { gap: 20px; }
  .header-book { padding-inline: 12px; }

  .hero { grid-template-columns: minmax(0, 48%) minmax(0, 52%); }
  .hero-copy { padding-left: 36px; padding-right: 40px; }
  .hero h1 { font-size: clamp(46px, 5.7vw, 64px); }

  .service-card:not(:first-child) { grid-template-columns: 1fr; }
  .service-card:not(:first-child) .service-photo img { min-height: 260px; }

  .craft { padding-left: 36px; padding-right: 36px; gap: 72px; }
  .craft-grid article { grid-template-columns: 1fr; gap: 12px; }

  .room { grid-template-columns: minmax(0, 1.12fr) minmax(310px, .88fr); }
  .room-copy { padding: 52px; }

  .closing-copy { padding-left: 36px; padding-right: 50px; }
  .footer-grid { grid-template-columns: 1.2fr repeat(3, .6fr); gap: 36px; }
}

@media (max-width: 920px) {
  .header-inner { min-height: 68px; grid-template-columns: 1fr auto auto; }

  .menu-toggle {
    min-width: 48px;
    min-height: 44px;
    padding: 8px;
    display: grid;
    grid-template-columns: 22px auto;
    align-content: center;
    gap: 4px 8px;
    cursor: pointer;
  }

  .menu-toggle span { height: 2px; display: block; background: currentColor; }
  .menu-toggle b { grid-row: 1 / 3; grid-column: 2; align-self: center; font-size: 11px; }
  .menu-toggle[aria-expanded="true"] span:first-child { transform: translateY(3px) rotate(45deg); }
  .menu-toggle[aria-expanded="true"] span:nth-child(2) { transform: translateY(-3px) rotate(-45deg); }

  .site-menu {
    position: absolute;
    z-index: 10;
    top: 100%;
    left: 0;
    right: 0;
    padding: 18px 24px 30px;
    display: none;
    flex-direction: column;
    align-items: stretch;
    gap: 0;
    background: var(--white);
    border-top: 1px solid var(--silver);
    border-bottom: 1px solid var(--silver-2);
  }

  .site-menu.is-open { display: flex; }
  .site-menu a { padding: 17px 0; border-bottom: 1px solid var(--silver); font-size: 15px; }
  .site-menu a::after { display: none; }
  .header-book { display: none; }
}

@media (max-width: 800px) {
  :root { --content: min(100% - 40px, 1240px); }

  .hero {
    min-height: 0;
    display: flex;
    flex-direction: column;
  }

  .hero-copy { min-height: 480px; padding: 64px 34px; }
  .hero h1 { max-width: 17ch; font-size: clamp(46px, 9.2vw, 66px); }
  .hero-media { height: 520px; }

  .story, .about-story { grid-template-columns: 1fr; gap: 48px; }
  .story-copy { max-width: 620px; }

  .section-heading { grid-template-columns: 1fr; gap: 24px; }

  .service-list { grid-template-columns: 1fr; }
  .service-card:first-child { grid-column: auto; grid-template-columns: 1fr; }
  .service-card:first-child .service-photo img { min-height: 360px; }

  .craft { grid-template-columns: 1fr; gap: 58px; }

  .process ol { grid-template-columns: 1fr; }
  .process li { min-height: 200px; border-right: 0; border-bottom: 1px solid var(--silver-2); }
  .process li:last-child { border-bottom: 0; }

  .room { grid-template-columns: 1fr; }
  .room figure img { min-height: 0; aspect-ratio: 4 / 3; }

  .visit { grid-template-columns: 1fr; }
  .visit-copy { max-width: 570px; }

  .quote { grid-template-columns: 1fr; gap: 36px; }
  .quote p { margin-left: auto; }

  .closing { grid-template-columns: 1fr; }
  .closing-copy { padding: 74px 34px; }
  .closing figure { order: -1; }
  .closing figure img { min-height: 0; aspect-ratio: 3 / 2; }

  .page-intro { min-height: 0; grid-template-columns: 1fr; gap: 32px; }
  .page-intro p { max-width: 54ch; }

  .values { grid-template-columns: 1fr; }
  .values article { min-height: 0; border-right: 0; border-bottom: 1px solid var(--silver-2); }
  .values article:last-child { border-bottom: 0; }

  .team { grid-template-columns: 1fr; gap: 58px; }

  .contact-page, .booking-page { grid-template-columns: 1fr; gap: 60px; }
  .contact-actions { max-width: 560px; margin-top: 0; }
  .contact-page .sb-location-map--embedded { grid-template-columns: 1fr !important; gap: 28px !important; }

  .footer-grid { grid-template-columns: 1.2fr 1fr 1fr; }
  .footer-lead { grid-column: 1 / -1; }
}

@media (max-width: 560px) {
  :root { --content: min(100% - 28px, 1240px); }

  .announcement { min-height: 40px; padding: 8px 14px; justify-content: space-between; gap: 10px; font-size: 10px; }
  .announcement p { max-width: 28ch; }
  .announcement a { flex: 0 0 auto; }

  .header-inner { width: calc(100% - 28px); min-height: 64px; gap: 9px; }
  .brand { gap: 8px; }
  .brand-mark { width: 25px; height: 25px; gap: 3px; }
  .brand-name { max-width: 122px; font-size: 12px; }
  .language-switch { gap: 4px; }
  .menu-toggle { min-width: 40px; grid-template-columns: 20px; }
  .menu-toggle b { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); }

  .hero-copy { min-height: 410px; padding: 48px 20px; }
  .hero h1 { font-size: clamp(42px, 12.5vw, 52px); }
  .hero-lede { margin-top: 22px; font-size: 16px; }
  .hero-actions { width: 100%; margin-top: 30px; gap: 8px; }
  .hero-actions .btn { flex: 1 1 150px; padding-inline: 12px; }
  .hero-media { height: 330px; }

  h2 { font-size: clamp(34px, 10vw, 46px); }
  h3 { font-size: 21px; }

  .story { padding: 82px 0; }
  .story-image::before { inset: -14px 28% 48% -14px; }

  .popular { padding-bottom: 88px; }
  .section-heading { padding-top: 25px; }
  .service-list { margin-top: 42px; }
  .service-card-copy { padding: 28px 22px; }
  .service-card:first-child .service-photo img,
  .service-card:not(:first-child) .service-photo img { min-height: 240px; }
  .service-action { align-items: flex-start; flex-direction: column; }

  .craft { padding: 82px 20px; }
  .craft-grid article { padding: 25px 0; }

  .process { padding: 86px 0; }
  .process ol { margin-top: 40px; }
  .process li { min-height: 180px; padding: 24px 6px; }
  .process li b { font-size: 34px; }

  .room-copy { padding: 54px 20px; }
  .visit { padding: 86px 0; gap: 42px; }

  .quote { padding: 78px 20px; }
  .quote blockquote { font-size: clamp(34px, 10vw, 46px); }

  .closing-copy { padding: 64px 20px; }

  .page-intro { padding: 72px 0 56px; }
  .page-intro h1, .booking-copy h1, .contact-copy h1 { font-size: clamp(42px, 12vw, 55px); }
  .services-page { padding: 42px 0 88px; }
  .page-closing { margin-bottom: 88px; }

  .about-story { padding-bottom: 86px; }
  .values article { padding: 34px 8px; }
  .team { padding: 86px 0; }

  .contact-page, .booking-page { padding: 72px 0 88px; gap: 48px; }
  .contact-ledger { margin-top: 42px; }
  .contact-ledger > div { grid-template-columns: 82px minmax(0, 1fr); gap: 12px; }
  .contact-actions { padding: 34px 22px; }
  .contact-page .sb-location-map--embedded { margin-top: 48px !important; }

  .booking-panel form { padding: 28px 18px; }
  .form-row { grid-template-columns: 1fr; }
  .slot-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }

  .site-footer { padding: 62px 20px 24px; }
  .footer-grid { grid-template-columns: 1fr 1fr; gap: 42px 24px; }
  .footer-lead { grid-column: 1 / -1; }
  .footer-bottom { margin-top: 56px; flex-direction: column; }
}

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after { animation-duration: .01ms !important; animation-iteration-count: 1 !important; transition-duration: .01ms !important; }
}

/* The mobile hero retains Monolith's strong photographic right-hand plane. */
@media (max-width: 800px) {
  .hero {
    position: relative;
    isolation: isolate;
    min-height: 680px;
    display: block;
    background: var(--graphite);
  }

  .hero-copy {
    position: relative;
    z-index: 2;
    min-height: 680px;
    background: transparent;
  }

  .hero-media {
    position: absolute;
    z-index: 0;
    inset: 0;
    height: auto;
  }

  .hero-media::after {
    position: absolute;
    inset: 0;
    background:
      linear-gradient(90deg, rgba(27, 31, 36, .9), rgba(27, 31, 36, .38)),
      linear-gradient(180deg, rgba(27, 31, 36, .16), rgba(27, 31, 36, .9));
    content: "";
    pointer-events: none;
  }

  .hero-media img {
    width: 100%;
    height: 100%;
    object-position: 64% 45%;
  }
}

/* MBOA_INSPIRED_EDITORIAL_POLISH_V1: composition quality, Monolith identity. */
:root { --polish-shadow: rgba(31,35,40,.16); }
html,body { overflow-x: clip; }
:is(.hero h1,.section-head h2,.craft-title h2,.room-copy h2,.visit-copy h2,.closing h2,.page-intro h1,.booking-copy h1,.contact-copy h1,.contact-actions h2,.about-story h2,.team-intro h2) { text-wrap: balance; }
p { text-wrap: pretty; }
.contact-page { grid-template-columns: minmax(0,1.2fr) minmax(360px,.8fr); gap: clamp(40px,5vw,64px); align-items: start; }
.contact-copy h1 { max-width: none; font-size: clamp(3rem,5vw,4.5rem); text-wrap: balance; }
.contact-actions { border-radius: 0; box-shadow: 0 22px 54px var(--polish-shadow); }
:is(.btn,.header-book,.service-card) { transition: transform .22s cubic-bezier(.16,1,.3,1),box-shadow .22s ease,background-color .22s ease,color .22s ease,border-color .22s ease; }
:is(a,button,input,select):focus-visible { outline: 3px solid var(--accent); outline-offset: 3px; }
@media (hover:hover) and (pointer:fine) { .service-card:hover { transform: translateY(-3px); box-shadow: 0 18px 42px var(--polish-shadow); } :is(.btn,.header-book):hover { transform: translateY(-2px); } :is(.btn,.header-book):active { transform: translateY(0); } }
@media (max-width:980px) { .contact-page { grid-template-columns: 1fr; gap: 52px; } .contact-actions { width: min(100%,680px); } }
@media (max-width:680px) { .contact-copy h1 { font-size: clamp(2.8rem,12vw,3.2rem); } .contact-page { gap: 40px; } }
@media (prefers-reduced-motion:reduce) { :is(.btn,.header-book,.service-card) { transition: none; } }
/* MBOA_FULL_SITE_POLISH_V3 */
:root{--polish-radius:10px;--polish-radius-sm:6px;--polish-ease:cubic-bezier(.16,1,.3,1);--polish-shadow-soft:0 12px 34px rgba(31,35,40,.11);--polish-shadow-deep:0 26px 68px rgba(31,35,40,.19)}
:is(.service-card,.contact-card,.contact-actions,.booking-panel){border-radius:var(--polish-radius);box-shadow:var(--polish-shadow-soft);overflow:hidden;transition:transform .32s var(--polish-ease),box-shadow .32s ease}:is(.hero-media,.service-photo,.home-story figure,.about-story figure,.room-large,.visit-photo,.closing-media,.sb-location-map__canvas){border-radius:var(--polish-radius);overflow:hidden;box-shadow:var(--polish-shadow-soft)}:is(.hero-media,.service-photo,.home-story figure,.about-story figure,.room-large,.visit-photo,.closing-media) img{transition:transform .7s var(--polish-ease),filter .35s ease}:is(.btn,.header-book){border-radius:var(--polish-radius-sm);box-shadow:0 7px 18px rgba(31,35,40,.11);will-change:transform}.service-card-copy{padding:clamp(26px,3vw,40px)}:is(.hero-lede,.section-head>p,.home-story-copy>p,.room-copy>p,.visit-copy>p,.booking-copy>p,.contact-copy>p){max-width:62ch}:is(.booking-panel input,.booking-panel select){border-radius:var(--polish-radius-sm);transition:border-color .2s ease,box-shadow .2s ease,background-color .2s ease}
@keyframes polishRevealV3{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}:is(.hero-copy,.page-intro>*,.contact-copy,.contact-card,.contact-actions,.booking-panel,.service-card){animation:polishRevealV3 .62s var(--polish-ease) backwards}.service-card:nth-child(2){animation-delay:.06s}.service-card:nth-child(3){animation-delay:.12s}@media(hover:hover) and (pointer:fine){:is(.service-card,.contact-card,.contact-actions,.booking-panel):hover{transform:translateY(-4px);box-shadow:var(--polish-shadow-deep)}:is(.service-card,.home-story,.about-story,.room-feature,.visit,.closing):hover img{transform:scale(1.025)}:is(.btn,.header-book):hover{transform:translateY(-2px);box-shadow:0 12px 24px rgba(31,35,40,.17)}:is(.btn,.header-book):active{transform:translateY(0) scale(.985)}}@media(max-width:680px){:is(.service-card,.contact-card,.contact-actions,.booking-panel,.hero-media,.service-photo,.home-story figure,.about-story figure,.room-large,.visit-photo,.closing-media,.sb-location-map__canvas){box-shadow:0 10px 28px rgba(31,35,40,.10)}}@media(prefers-reduced-motion:reduce){:is(.hero-copy,.page-intro>*,.contact-copy,.contact-card,.contact-actions,.booking-panel,.service-card){animation:none}:is(.service-card,.contact-card,.contact-actions,.booking-panel,.hero-media img,.service-photo img,.home-story img,.about-story img,.room-large img,.visit-photo img,.closing-media img){transition:none!important;transform:none!important}}

/* PROFESSIONAL_RHYTHM_AND_READING_V4 */
:root{--space-section:clamp(64px,6.25vw,80px);--space-editorial:clamp(76px,7.5vw,96px);--space-compact:clamp(48px,5vw,64px)}
:is(.home-story.section,.services-preview.section,.craft.section,.process.section,.visit.section,.team.section,.values.section,.about-story.section,.services-page,.booking-page,.contact-page){padding-block:var(--space-section)}:is(.quote-section,.quote){padding-block:var(--space-editorial)}body :is(.closing-with-media,.page-intro){padding-block:var(--space-compact)}:is(.home-story,.craft,.room-feature,.visit,.closing-with-media,.about-story,.team,.section-head,.page-intro,.booking-copy,.contact-copy) :is(h1,h2){max-width:none;text-wrap:balance}:is(.home-story,.about-story,.craft,.room-feature,.visit,.closing-with-media,.booking-grid,.contact-grid){column-gap:clamp(32px,5vw,64px)}:is(.booking-copy,.contact-copy) h1{font-size:clamp(42px,4.5vw,60px);line-height:1.02}
@media(max-width:680px){:root{--space-section:56px;--space-editorial:68px;--space-compact:48px}:is(.home-story.section,.services-preview.section,.craft.section,.process.section,.visit.section,.team.section,.values.section,.about-story.section,.services-page,.booking-page,.contact-page){padding-block:var(--space-section)}:is(.quote-section,.quote){padding-block:var(--space-editorial)}body :is(.closing-with-media,.page-intro){padding-block:var(--space-compact)}:is(.booking-copy,.contact-copy) h1{font-size:clamp(36px,11vw,44px)}}

/* MONOLITH_PHASE2_EDITORIAL_SYSTEM
   Mboa's warmth and editorial cadence, rebuilt around Monolith's analytical identity. */
@font-face{font-family:"Monolith Editorial";src:url("assets/fonts/cormorant-garamond-variable.woff2") format("woff2");font-style:normal;font-weight:400 700;font-display:swap}
:root{--phase2-ink:#1c211f;--phase2-paper:#f4f2ec;--phase2-surface:#fbfaf7;--phase2-graphite:#18201f;--phase2-cobalt:var(--accent,#2449b8);--phase2-line:#d5d2c9;--phase2-muted:#626861;--phase2-radius:4px;--display:"Monolith Editorial",Georgia,serif}
body{background:var(--phase2-paper);color:var(--phase2-ink);-webkit-font-smoothing:antialiased}
::selection{background:var(--phase2-cobalt);color:#fff}
h1,h2,.quote blockquote{font-family:var(--display);font-weight:560;letter-spacing:-.04em}
h3{font-weight:660;letter-spacing:-.025em}
.site-header{background:rgba(251,250,247,.97);border-color:var(--phase2-line);box-shadow:0 8px 24px rgba(24,32,31,.055);backdrop-filter:saturate(120%) blur(14px)}
.announcement,.site-footer,.contact-actions{background:var(--phase2-graphite);color:var(--phase2-paper)}
.site-menu a,.brand-name{color:var(--phase2-ink)}
.hero{grid-template-columns:minmax(0,42%) minmax(0,58%);background:var(--phase2-graphite);color:var(--phase2-paper);min-height:clamp(680px,calc(100dvh - 116px),820px)}
.hero-copy{position:relative;background:var(--phase2-graphite);color:var(--phase2-paper);padding-right:clamp(48px,5vw,84px)}
.hero-copy::before{content:"";position:absolute;inset:0;background:radial-gradient(circle at 18% 22%,rgba(255,255,255,.045) 0 1px,transparent 1.5px);background-size:18px 18px;pointer-events:none}
.hero-copy::after{content:"";position:absolute;z-index:3;right:-2px;top:13%;width:4px;height:74%;background:var(--phase2-cobalt);box-shadow:0 0 0 1px rgba(255,255,255,.12)}
.hero-kicker{position:relative;z-index:1;margin:0 0 28px;color:#b9c5c1;font-size:11px;font-weight:700;letter-spacing:.17em;text-transform:uppercase}
.hero h1{position:relative;z-index:1;max-width:13ch;font-size:clamp(58px,5.5vw,82px);font-weight:560;line-height:.9;letter-spacing:-.045em}
.hero-lede,.hero-actions{position:relative;z-index:1}
.hero-media{position:relative;border-radius:0;box-shadow:none}
.hero-media::after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,rgba(24,32,31,.23),transparent 28%);pointer-events:none}
.hero-media img{filter:saturate(.82) contrast(1.03);transform:scale(1.01)}
.story{grid-template-columns:minmax(0,1.08fr) minmax(320px,.72fr);gap:clamp(56px,7vw,96px);align-items:center}
.story-image img{min-height:520px;aspect-ratio:1.24/1;object-fit:cover;filter:saturate(.86)}
.story-image::before{inset:-22px 62% 68% -22px;background:var(--phase2-cobalt)}
.story-copy{padding:34px 0 34px clamp(22px,3vw,42px);border-left:1px solid var(--phase2-line)}
.story-copy h2,.section-heading h2{color:var(--phase2-ink)}
.story-copy p,.section-heading p,.service-card-copy>p,.process li p{color:var(--phase2-muted)}
.popular{padding-top:24px}
.section-heading{border-color:var(--phase2-line);grid-template-columns:minmax(0,1.12fr) minmax(280px,.48fr)}
.section-heading p{padding-left:24px;border-left:2px solid var(--phase2-cobalt)}
.service-list{gap:18px;background:transparent;border:0}
.service-card{border:1px solid var(--phase2-line);background:var(--phase2-surface);box-shadow:0 14px 38px rgba(24,32,31,.08)}
.service-card:first-child{grid-template-columns:minmax(0,1.18fr) minmax(340px,.82fr)}
.service-photo img{filter:saturate(.84) contrast(1.02);transition:transform .55s cubic-bezier(.16,1,.3,1),filter .3s ease}
.service-card h3{font-size:clamp(22px,2.2vw,30px)}
.service-facts{border-color:var(--phase2-line);letter-spacing:.1em}
.service-facts span:last-child::before{content:"";display:inline-block;width:6px;height:6px;margin:0 8px 1px 0;border-radius:50%;background:var(--phase2-cobalt);box-shadow:0 0 0 4px rgba(36,73,184,.1)}
.service-action strong{font-variant-numeric:tabular-nums;font-size:15px;letter-spacing:-.02em}
.craft{background:var(--phase2-graphite);position:relative}
.craft::before{content:"";position:absolute;left:max(36px,calc((100vw - 1240px)/2));right:max(36px,calc((100vw - 1240px)/2));top:0;height:3px;background:var(--phase2-cobalt)}
.craft-grid{border-color:#46504d}.craft-grid article{border-color:#46504d}
.process ol{border-color:var(--phase2-line)}.process li{border-color:var(--phase2-line)}
.room{background:var(--phase2-surface);color:var(--phase2-ink);border-block:1px solid var(--phase2-line)}
.room-copy{position:relative;border-left:4px solid var(--phase2-cobalt)}
.room-copy p{color:var(--phase2-muted)}.light-link{color:var(--phase2-ink);border-color:var(--phase2-cobalt)}
.visit{border-color:var(--phase2-line)}
.quote{background:#ebe8df;border-color:var(--phase2-line)}
.quote blockquote{font-size:clamp(48px,5.3vw,76px);line-height:.96}
.closing{background:var(--phase2-surface)}
.btn-primary{background:var(--phase2-cobalt);color:#fff}.btn-primary:hover{background:var(--phase2-graphite)}
.text-link,.service-action a{border-color:var(--phase2-cobalt)}
.page-intro,.page-closing,.values,.team-disciplines,.contact-ledger,.booking-copy dl{border-color:var(--phase2-line)}
.booking-panel{background:var(--phase2-surface);border-color:var(--phase2-line)}
.contact-actions{border-radius:0;box-shadow:12px 12px 0 color-mix(in srgb,var(--phase2-cobalt) 13%,transparent)}
:is(.service-card,.contact-card,.booking-panel,.service-photo,.story-image,.room-large,.visit-photo,.closing-media){border-radius:var(--phase2-radius)}
:is(.btn,.header-book,.booking-panel input,.booking-panel select){border-radius:2px}
.sb-location-map__canvas{position:relative;background-color:#e8e9e3;background-image:linear-gradient(30deg,rgba(28,33,31,.055) 12%,transparent 12.5%,transparent 87%,rgba(28,33,31,.055) 87.5%,rgba(28,33,31,.055)),linear-gradient(150deg,rgba(28,33,31,.055) 12%,transparent 12.5%,transparent 87%,rgba(28,33,31,.055) 87.5%,rgba(28,33,31,.055));background-size:48px 84px}
.monolith-map-fallback{position:absolute;z-index:3;left:18px;bottom:18px;display:flex;align-items:center;gap:14px;padding:11px 14px;background:rgba(24,32,31,.94);color:#fff;font-size:12px;font-weight:700;letter-spacing:.04em;box-shadow:0 8px 24px rgba(24,32,31,.18)}
.monolith-map-fallback a{color:#fff;border-bottom:2px solid var(--phase2-cobalt);text-decoration:none}.monolith-map-fallback a:focus-visible{outline:2px solid #fff;outline-offset:4px}
@media(hover:hover) and (pointer:fine){.service-card:hover{transform:translateY(-4px);box-shadow:0 20px 46px rgba(24,32,31,.12)}.service-card:hover .service-photo img{transform:scale(1.025);filter:saturate(.94) contrast(1.03)}}
@media(max-width:800px){.hero{min-height:720px;background:var(--phase2-graphite)}.hero-copy{min-height:720px;padding:86px 34px 54px;background:transparent;justify-content:flex-end}.hero-copy::after{left:34px;right:auto;top:70px;width:42px;height:3px}.hero-copy::before{display:none}.hero-kicker{margin-bottom:22px}.hero h1{font-size:clamp(52px,12.5vw,70px);max-width:12ch}.hero-media{position:absolute}.hero-media::after{background:linear-gradient(180deg,rgba(24,32,31,.2) 0%,rgba(24,32,31,.9) 76%,var(--phase2-graphite) 100%)}.hero-media img{object-position:62% center}.story{grid-template-columns:1fr}.story-image img{min-height:0;aspect-ratio:4/3}.story-copy{padding:28px 0 0;border-left:0;border-top:1px solid var(--phase2-line)}.section-heading{grid-template-columns:1fr;gap:24px}.section-heading p{padding-left:0;border-left:0}.service-card:first-child{grid-template-columns:1fr}.room-copy{border-left:0;border-top:4px solid var(--phase2-cobalt)}}
@media(max-width:560px){.hero{min-height:680px}.hero-copy{min-height:680px;padding:72px 20px 40px}.hero-copy::after{left:20px;top:56px}.hero h1{font-size:clamp(47px,13.7vw,60px)}.hero-actions{gap:10px}.story-image::before{inset:-12px 70% 72% -12px}.service-list{gap:14px}.quote blockquote{font-size:clamp(42px,12vw,54px)}}
@media(prefers-reduced-motion:reduce){.hero-copy,.story-image,.service-card{animation:none!important}.hero-media img,.service-photo img{transform:none!important;transition:none!important}}

/* MONOLITH_PHASE3_INTERACTION_AND_RHYTHM
   Precision feedback, restrained motion and faster perceived rendering. */
:root{--phase3-ease:cubic-bezier(.2,.8,.2,1);--phase3-focus:color-mix(in srgb,var(--phase2-cobalt) 24%,transparent);--phase3-rule:color-mix(in srgb,var(--phase2-line) 82%,transparent)}
:is(a,button,input,select,textarea):focus-visible{outline:2px solid var(--phase2-cobalt);outline-offset:4px;box-shadow:0 0 0 4px var(--phase3-focus)}
:is(.btn,.header-book){min-height:44px;transition:transform .18s var(--phase3-ease),box-shadow .18s ease,background-color .18s ease,color .18s ease,border-color .18s ease;touch-action:manipulation}
:is(.btn,.header-book):active{transform:translateY(1px) scale(.99);box-shadow:0 3px 10px rgba(24,32,31,.12)}
:is(.btn,.header-book):focus-visible{transform:translateY(-1px)}
:is(.text-link,.service-action a,.light-link){position:relative;display:inline-flex;align-items:center;min-height:44px;border-bottom-color:transparent;text-decoration:none}
:is(.text-link,.service-action a,.light-link)::after{content:"";position:absolute;left:0;right:0;bottom:4px;height:2px;background:var(--phase2-cobalt);transform:scaleX(0);transform-origin:right;transition:transform .24s var(--phase3-ease)}
:is(.text-link,.service-action a,.light-link):is(:hover,:focus-visible)::after{transform:scaleX(1);transform-origin:left}
:is(.site-menu a,.language-switch a,.footer-links a){min-height:44px}
:is(.popular,.craft,.process,.room,.visit,.quote,.closing,.services-page,.about-story,.values,.team,.contact-page,.booking-page){scroll-margin-top:112px}
:is(.popular,.process,.visit,.values,.team){border-top:1px solid var(--phase3-rule)}
.process li{position:relative}.process li::after{content:"";position:absolute;left:28px;right:28px;top:0;height:2px;background:var(--phase2-cobalt);transform:scaleX(.22);transform-origin:left;opacity:.72}
:is(.page-intro>*,.contact-copy,.contact-card,.contact-actions,.booking-panel,.service-card){animation:none}
@keyframes monolithPhase3HeroIn{from{opacity:0;transform:translateY(18px)}to{opacity:1;transform:none}}
.hero-copy{animation:monolithPhase3HeroIn .68s var(--phase3-ease) both}

@media(hover:hover) and (pointer:fine){:is(.btn,.header-book):hover{transform:translateY(-2px);box-shadow:0 12px 26px rgba(24,32,31,.17)}.service-card:hover,.service-card:focus-within{transform:translateY(-4px);box-shadow:0 20px 46px rgba(24,32,31,.12)}.process li:hover::after{transform:scaleX(1);transition:transform .32s var(--phase3-ease)}}
@media(max-width:680px){:is(.btn,.header-book,.text-link,.service-action a,.light-link){min-height:44px}.process li::after{left:20px;right:20px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.hero-copy,.service-card,.process li::after{animation:none!important;transition:none!important;transform:none!important}:is(.btn,.header-book,.text-link,.service-action a,.light-link)::after{transition:none!important;transform:none!important}}

/* MONOLITH_SPACE_RATIONALIZATION_V1
   Uses the full editorial rail for closing calls to action without adding decoration. */
.page-closing{display:grid;width:var(--content);grid-template-columns:minmax(0,1.25fr) minmax(300px,.75fr);column-gap:clamp(48px,7vw,104px);row-gap:24px;align-items:center;margin:0 auto clamp(72px,8vw,112px);padding:clamp(44px,5vw,64px) 0 0;border-top:1px solid var(--phase2-line)}
.page-closing h2{grid-column:1;grid-row:1 / span 2;max-width:none;align-self:center;text-wrap:balance}
.page-closing p{grid-column:2;grid-row:1;margin-top:0;align-self:end}
.page-closing .btn{grid-column:2;grid-row:2;margin-top:0;justify-self:start;align-self:start}
.page-closing:not(:has(p)) .btn{grid-row:1;align-self:center}
@media(max-width:800px){.page-closing{display:block;margin-bottom:72px;padding-top:40px}.page-closing p{margin-top:20px}.page-closing .btn{margin-top:28px}}

/* MONOLITH_PAGE_INTRO_SPACE_RATIONALIZATION_V1
   Content-driven height replaces the decorative 480px spacer on internal page intros. */
body .page-intro{min-height:0;align-items:end}

/* On the graphite hero this button is NOT on the accent, so the
   accent's own foreground is the wrong colour for it: with a light
   brand that is near-black on a near-black panel. */
.hero .btn-outline{color:var(--phase2-paper);border-color:color-mix(in srgb,var(--phase2-paper) 60%,transparent)}
/* Published pages are one language, so the header grid has no EN / FR column. */
.header-inner.header-inner--one-language { grid-template-columns: minmax(220px, 1fr) auto auto; }
@media (max-width: 1100px) { .header-inner.header-inner--one-language { grid-template-columns: minmax(190px, 1fr) auto auto; } }
@media (max-width: 920px) { .header-inner.header-inner--one-language { grid-template-columns: 1fr auto; } }
