  --cl-space-xl: 64px;
  --cl-space-2xl: 96px;

  /* Corners */
  --cl-radius-sm: 3px;
  --cl-radius-md: 6px;
  --cl-radius-lg: 10px;
  --cl-radius-pill: 999px;

  /* Geometry */
  --cl-container-max: 1440px;
  --cl-content-max: 760px;
  --cl-side-gap: clamp(20px, 4vw, 56px);

  /* Blocksy variables (recognized by theme where used) */
  --theme-container-width: 1440px;
  --theme-button-border-radius: 3px;
}

body {
  font-family: var(--cl-font-body);
  font-size: var(--cl-body-size);
  line-height: var(--cl-body-leading);
  color: var(--cl-forest);
  background: var(--cl-paper);
}

h1, h2, h3, h4, h5, h6 {
  font-family: var(--cl-font-heading);
  font-weight: 700;
  line-height: 1.1;
  letter-spacing: 0;
  color: var(--cl-forest);
}
h1 { font-size: clamp(48px, 5vw, 80px); line-height: 1.04; }
h2 { font-size: clamp(36px, 3.5vw, 52px); line-height: 1.08; }
h3 { font-size: clamp(27px, 2.4vw, 32px); line-height: 1.12; }
h4 { font-size: clamp(23px, 2vw, 27px); }
h5 { font-size: 21px; }
h6 { font-size: 18px; }
p, li { line-height: 1.6; }

/* Buttons: intentionally utilitarian rather than rounded or glossy */
.ct-button, .button, button[type='submit'], input[type='submit'],
.wp-block-button__link {
  font-family: var(--cl-font-heading);
  font-weight: 700;
  font-size: 18px;
  line-height: 1.2;
  letter-spacing: .045em;
  text-transform: uppercase;
  border-radius: var(--cl-radius-sm);
  min-height: 48px;
  padding: 13px 24px;
  background-color: var(--cl-copper);
  color: #fff;
  transition: background-color 180ms ease, border-color 180ms ease;
}
.ct-button:hover, .button:hover, button[type='submit']:hover,
input[type='submit']:hover, .wp-block-button__link:hover {
  background-color: var(--cl-copper-hover);
  color: #fff;
}

/* Underlined inline links are discoverable even without colour perception */
.entry-content a:not(.ct-button):not(.wp-block-button__link),
.ct-content a:not(.ct-button):not(.wp-block-button__link) {
  color: var(--cl-copper);
  text-underline-offset: .18em;
  text-decoration-thickness: 1px;
}
.entry-content a:not(.ct-button):not(.wp-block-button__link):hover,
.ct-content a:not(.ct-button):not(.wp-block-button__link):hover {
  color: var(--cl-copper-hover);
}

/* Accessible keyboard focus */
:where(a, button, input, select, textarea):focus-visible {
  outline: 3px solid var(--cl-gold);
  outline-offset: 3px;
}

/* Reusable site-specific utilities for bespoke Gutenberg blocks */
.cl-container { width: min(calc(100% - 2 * var(--cl-side-gap)), var(--cl-container-max)); margin-inline: auto; }
.cl-section { padding-block: clamp(56px, 6vw, 96px); }
.cl-eyebrow { font: 600 14px/1.35 var(--cl-font-body); letter-spacing: .13em; text-transform: uppercase; }
.cl-dark { background: var(--cl-forest); color: var(--cl-ivory); }
.cl-dark :is(h1,h2,h3,h4,h5,h6) { color: var(--cl-ivory); }
.cl-accent-heading { color: var(--cl-gold); }
.cl-card { border-radius: var(--cl-radius-md); overflow: hidden; }
.cl-booking-panel { background: var(--cl-panel); color: var(--cl-ivory); border: 1px solid #7C897D; border-radius: var(--cl-radius-lg); }
.cl-booking-panel :is(h1,h2,h3,h4,h5,h6) { color: var(--cl-ivory); }

@media (max-width: 767px) {
  :root { --cl-body-size: 16px; --cl-side-gap: 20px; }
  .ct-button, .button, .wp-block-button__link { min-height: 48px; }
}
