/*
 Theme Name:   Bricks Child Theme
 Theme URI:    https://bricksbuilder.io/
 Description:  Use this child theme to extend Bricks.
 Author:       Bricks
 Author URI:   https://bricksbuilder.io/
 Template:     bricks
 Version:      1.1
 Text Domain:  bricks
*/
/* ============================================================
   WLCS · Anchor System · Tokens
   Source: Concept 1 (Issue 01) · parchment-dominant magazine
   Aesthetic register: Slow Magazine
   Status: canonical — every page builds from this file
   Extend only when a real page reveals a gap (no speculative tokens)
   Every custom property resolves to a raw value (Bricks constraint — no
   var() referencing another var(); same rule as the Bridge system).
   ============================================================ */

:root {
  /* 01 · Brand palette (LOCKED — brand law) */
  --wlcs-ink:        #0d1a2f;
  --wlcs-ink-2:      #1a2a48;
  --wlcs-paper:      #f5efe1;
  --wlcs-paper-50:   #fcfaf3;
  --wlcs-brass:      #a87f3e;
  --wlcs-brass-dk:   #5c4520;
  --wlcs-charcoal:   #2a2e35;
  --wlcs-ivory:      #fcfaf3;
  --wlcs-rule-soft:  rgba(13, 26, 47, 0.10);
  --wlcs-rule-hard:  rgba(13, 26, 47, 0.28);
  --wlcs-rule-on-ink: rgba(245, 239, 225, 0.14);
  --wlcs-ink-deep:   #061325;
  --wlcs-shadow-img: 0 32px 80px rgba(13, 26, 47, 0.18);

  /* 02 · Surface roles (parchment-dominant)
     Raw values, not var() aliases — Bricks registers :root properties as
     Global Variables and a variable whose value is another variable has no
     swatch, no picker preview, and breaks if the referenced name is edited.
     The source token is named in the comment so the pairing stays legible. */
  --wlcs-surface-page:    #f5efe1;              /* = --wlcs-paper */
  --wlcs-surface-block:   #fcfaf3;              /* = --wlcs-paper-50 */
  --wlcs-surface-deep:    #0d1a2f;              /* = --wlcs-ink */
  --wlcs-text-primary:    #0d1a2f;              /* = --wlcs-ink */
  --wlcs-text-secondary:  #2a2e35;              /* = --wlcs-charcoal */
  --wlcs-text-muted:      rgba(42, 46, 53, 0.62);
  --wlcs-text-on-deep:    #f5efe1;              /* = --wlcs-paper */
  --wlcs-accent:          #a87f3e;              /* = --wlcs-brass */

  /* 03 · Type families (LOCKED) */
  --wlcs-font-display: 'Marcellus', 'Times New Roman', serif;
  --wlcs-font-body:    'Inter', system-ui, sans-serif;
  --wlcs-font-mono:    'JetBrains Mono', ui-monospace, monospace;

  /* 04 · Type scale (image-priority — smaller display) */
  --wlcs-text-display:    72px;
  --wlcs-text-h1:         48px;
  --wlcs-text-h2:         36px;
  --wlcs-text-hero:       72px;
  --wlcs-text-h3:         22px;
  --wlcs-text-h4:         18px;
  --wlcs-text-body:       17px;
  --wlcs-text-body-lg:    19px;
  --wlcs-text-small:      15px;
  --wlcs-text-mono:       13px;
  --wlcs-text-mono-lg:    14px;

  /* 05 · Type rhythm */
  --wlcs-leading-display: 1.04;
  --wlcs-leading-tight:   1.14;
  --wlcs-leading-body:    1.68;
  --wlcs-tracking-tight:  -0.012em;
  --wlcs-tracking-normal: 0em;
  --wlcs-tracking-wide:   0.22em;

  /* 06 · Spacing scale */
  --wlcs-space-2xs:  4px;
  --wlcs-space-xs:   8px;
  --wlcs-space-sm:   16px;
  --wlcs-space-md:   24px;
  --wlcs-space-lg:   40px;
  --wlcs-space-xl:   72px;
  --wlcs-space-2xl:  120px;
  --wlcs-space-3xl:  180px;
  --wlcs-space-4xl:  240px;

  /* 07 · Container + grid */
  --wlcs-container:  1320px;
  --wlcs-container-tight:  1140px;
  --wlcs-gutter:     48px;

  /* 08 · Border + rule */
  --wlcs-rule-w:     1px;
  --wlcs-radius:     0px;
  --wlcs-radius-img: 2px;

  /* 09 · Shadow */
  --wlcs-shadow:     0 1px 0 rgba(13, 26, 47, 0.10);   /* rule-soft */

  /* 10 · Motion */
  --wlcs-dur-fast:   220ms;
  --wlcs-dur-base:   420ms;
  --wlcs-dur-slow:   720ms;
  --wlcs-ease:       cubic-bezier(0.22, 0.61, 0.36, 1);
  --wlcs-ease-quiet: cubic-bezier(0.4, 0, 0.2, 1);

  /* 11 · Z-index */
  --wlcs-z-nav:      40;
  --wlcs-z-overlay:  60;
  --wlcs-z-modal:    80;

  /* 12 · Opacity */
  --wlcs-op-mute:    0.62;

  /* 13 · Component — button */
  --wlcs-btn-pad-x:  24px;
  --wlcs-btn-pad-y:  14px;
  --wlcs-btn-text:   12px;

  /* 14 · Component — media aspect */
  --wlcs-aspect-hero:    1.78;
  --wlcs-aspect-wide:    1.6;
  --wlcs-aspect-portrait: 0.78;
  --wlcs-aspect-card:    1.25;
  --wlcs-aspect-video:   1.78;
  --wlcs-aspect-rail:    0.78;
}

@media (max-width: 1024px) {
  :root {
    --wlcs-text-display: 56px !important;
    --wlcs-text-h1:      40px !important;
    --wlcs-text-h2:      30px !important;
    --wlcs-text-hero:    58px !important;
    --wlcs-space-2xl:    96px !important;
    --wlcs-space-3xl:    140px !important;
    --wlcs-container:    100% !important;
    --wlcs-gutter:       32px !important;
  }
}

@media (max-width: 768px) {
  :root {
    --wlcs-text-display: 40px !important;
    --wlcs-text-h1:      32px !important;
    --wlcs-text-h2:      26px !important;
    --wlcs-text-h3:      19px !important;
    --wlcs-text-hero:    44px !important;
    --wlcs-space-2xl:    72px !important;
    --wlcs-space-3xl:    96px !important;
    --wlcs-gutter:       24px !important;
  }
}

@media (max-width: 478px) {
  :root {
    --wlcs-text-display: 34px !important;
    --wlcs-text-h1:      28px !important;
    --wlcs-text-h2:      22px !important;
    --wlcs-text-hero:    36px !important;
    --wlcs-space-xl:     48px !important;
    --wlcs-space-2xl:    56px !important;
    --wlcs-space-3xl:    72px !important;
    --wlcs-gutter:       20px !important;
  }
}

/* ============================================================
   WLCS · Anchor System · Styles
   Source: Concept 1 (Issue 01) · left-margin sticky serial grammar
   + immersive motion (parallax hero, cursor spotlight, stagger reveals)
   Status: canonical — every page builds from this file
   Extend only when a real page reveals a gap (no speculative styles)
   Companion: wlcs-tokens.css (load first)
   ============================================================ */

/* ----- Reset ----- */
*, *::before, *::after { box-sizing: border-box; }
html { -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; }
html.lenis { height: auto; }
.lenis.lenis-smooth { scroll-behavior: auto !important; }
.lenis.lenis-smooth [data-lenis-prevent] { overscroll-behavior: contain; }
.lenis.lenis-stopped { overflow: hidden; }
.lenis.lenis-scrolling iframe { pointer-events: none; }
body { margin: 0; }
img, svg, video { display: block; max-width: 100%; }
button { font: inherit; cursor: pointer; background: none; border: none; padding: 0; color: inherit; }
a { color: inherit; text-decoration: none; }
ul, ol { margin: 0; padding: 0; list-style: none; }
h1, h2, h3, h4, h5, h6, p { margin: 0; }

.wlcs-page {
  background: var(--wlcs-surface-page);
  color: var(--wlcs-text-primary);
  font-family: var(--wlcs-font-body);
  font-size: var(--wlcs-text-body);
  line-height: var(--wlcs-leading-body);
  min-height: 100vh;
  overflow-x: hidden;
}

.wlcs-container {
  position: relative;
  width: 100%;
  max-width: var(--wlcs-container);
  margin: 0 auto;
  padding-left: var(--wlcs-gutter);
  padding-right: var(--wlcs-gutter);
}
.wlcs-container--tight { max-width: var(--wlcs-container-tight); }

/* ----- Type primitives ----- */
.wlcs-display {
  font-family: var(--wlcs-font-display);
  font-size: var(--wlcs-text-display);
  line-height: var(--wlcs-leading-display);
  letter-spacing: var(--wlcs-tracking-tight);
  font-weight: 400;
}
.wlcs-h1 {
  font-family: var(--wlcs-font-display);
  font-size: var(--wlcs-text-h1);
  line-height: var(--wlcs-leading-tight);
  letter-spacing: -0.008em;
  font-weight: 400;
}
.wlcs-h2 {
  font-family: var(--wlcs-font-display);
  font-size: var(--wlcs-text-h2);
  line-height: 1.18;
  font-weight: 400;
}
.wlcs-h3 {
  font-family: var(--wlcs-font-display);
  font-size: var(--wlcs-text-h3);
  line-height: 1.28;
  font-weight: 400;
}
.wlcs-lede { font-size: var(--wlcs-text-body-lg); color: var(--wlcs-text-secondary); line-height: var(--wlcs-leading-body); }
.wlcs-body { color: var(--wlcs-text-secondary); }
.wlcs-small { font-size: var(--wlcs-text-small); color: var(--wlcs-text-muted); }
.wlcs-italic { font-style: italic; }
.wlcs-accent { color: var(--wlcs-accent); }
.wlcs-meta {
  font-family: var(--wlcs-font-mono);
  font-size: var(--wlcs-text-mono);
  letter-spacing: var(--wlcs-tracking-wide);
  text-transform: uppercase;
  color: var(--wlcs-text-muted);
}
.wlcs-serial {
  font-family: var(--wlcs-font-mono);
  font-size: var(--wlcs-text-mono);
  letter-spacing: var(--wlcs-tracking-wide);
  text-transform: uppercase;
  color: var(--wlcs-accent);
  font-weight: 500;
}
.wlcs-rule {
  display: inline-block;
  width: 48px;
  height: 1px;
  background: var(--wlcs-accent);
  flex-shrink: 0;
}

/* ----- Scroll progress (immersive · runs at top of viewport) ----- */
.wlcs-progress {
  position: fixed;
  top: 0; left: 0;
  height: 2px;
  width: 100%;
  z-index: 50;
  pointer-events: none;
  background: rgba(245, 239, 225, 0.06);
}
.wlcs-progress-fill {
  height: 100%;
  width: 100%;
  background: var(--wlcs-brass);
  transform-origin: left;
  transform: scaleX(0);
  transition: transform 80ms linear;
}

/* ----- Plates (placeholder photography) with hover lift ----- */
.wlcs-plate {
  position: relative;
  overflow: hidden;
  background:
    radial-gradient(120% 100% at 30% 20%, rgba(168, 127, 62, 0.18) 0%, transparent 55%),
    radial-gradient(100% 100% at 80% 90%, rgba(13, 26, 47, 0.42) 0%, transparent 60%),
    linear-gradient(135deg, #1a2a48 0%, #0d1a2f 50%, #061325 100%);
  border-radius: var(--wlcs-radius-img);
}
.wlcs-plate--parchment {
  background:
    radial-gradient(120% 80% at 70% 30%, rgba(168, 127, 62, 0.18) 0%, transparent 60%),
    radial-gradient(80% 100% at 20% 80%, rgba(13, 26, 47, 0.06) 0%, transparent 50%),
    var(--wlcs-paper-50);
  border: 1px solid var(--wlcs-rule-soft);
}
.wlcs-plate--warm {
  background:
    radial-gradient(120% 80% at 25% 30%, rgba(168, 127, 62, 0.36) 0%, transparent 60%),
    radial-gradient(140% 100% at 80% 90%, rgba(13, 26, 47, 0.55) 0%, transparent 55%),
    linear-gradient(135deg, #2a1f12 0%, #1a1610 50%, #0d0905 100%);
}

/* Plates inside an interactive parent get a slow zoom on hover */
.wlcs-plate-inner {
  position: absolute;
  inset: 0;
  transition: transform 1200ms cubic-bezier(0.22, 0.61, 0.36, 1);
  will-change: transform;
}
.wlcs-hoverable:hover .wlcs-plate-inner { transform: scale(1.05); }

.wlcs-plate-label {
  position: absolute;
  bottom: 16px;
  left: 16px;
  z-index: 2;
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 6px 12px;
  background: rgba(245, 239, 225, 0.92);
  color: var(--wlcs-ink);
  font-family: var(--wlcs-font-mono);
  font-size: 12px;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  border-radius: 999px;
  backdrop-filter: blur(6px);
  transition: transform var(--wlcs-dur-base) var(--wlcs-ease);
}
.wlcs-plate-label--dark {
  background: rgba(13, 26, 47, 0.78);
  color: var(--wlcs-paper);
}
.wlcs-hoverable:hover .wlcs-plate-label { transform: translateY(-2px); }

/* ----- Navigation (paper-on-dark, brass-trigger hover) ----- */
.wlcs-nav {
  position: fixed;
  top: 0; left: 0; right: 0;
  z-index: var(--wlcs-z-nav);
  background: rgba(13, 26, 47, 0);
  transition: background var(--wlcs-dur-base) var(--wlcs-ease),
              color var(--wlcs-dur-base) var(--wlcs-ease),
              border-color var(--wlcs-dur-base) var(--wlcs-ease),
              text-shadow var(--wlcs-dur-base) var(--wlcs-ease);
  border-bottom: 1px solid transparent;
  color: var(--wlcs-paper);
  /* Text-shadow ensures wordmark + links read clearly over any hero image */
  text-shadow: 0 1px 14px rgba(13, 26, 47, 0.6), 0 1px 4px rgba(13, 26, 47, 0.4);
}
/* Entrance state — GSAP overrides on load. Gated behind .wlcs-js for the
   same reason as .wlcs-reveal: if the script never binds, an ungated
   opacity: 0 here means the header simply never appears. Fail visible. */
.wlcs-js .wlcs-nav {
  opacity: 0;
  transform: translateY(-18px);
}
/* Subtle darkening strip behind nav before scroll — gives wordmark extra contrast over hero */
.wlcs-nav::before {
  content: '';
  position: absolute;
  top: 0; left: 0; right: 0;
  height: 200%;
  background: linear-gradient(180deg, rgba(13, 26, 47, 0.42) 0%, rgba(13, 26, 47, 0.18) 50%, transparent 100%);
  pointer-events: none;
  z-index: -1;
  transition: opacity var(--wlcs-dur-base) var(--wlcs-ease);
}
.wlcs-js .wlcs-nav.wlcs-is-loaded {
  opacity: 1;
  transform: translateY(0);
}
.wlcs-nav.wlcs-is-scrolled::before { opacity: 0; }
.wlcs-nav.wlcs-is-scrolled { text-shadow: none; }
.wlcs-nav.wlcs-is-scrolled {
  background: rgba(13, 26, 47, 0.94);
  backdrop-filter: blur(14px);
  border-bottom-color: var(--wlcs-rule-on-ink);
}
.wlcs-nav-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 22px var(--wlcs-gutter);
  max-width: var(--wlcs-container);
  margin: 0 auto;
}
.wlcs-wordmark {
  font-family: var(--wlcs-font-display);
  font-size: 16px;
  letter-spacing: 0.24em;
  text-transform: uppercase;
}
.wlcs-nav-trigger {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  font-family: var(--wlcs-font-mono);
  font-size: 13px;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  padding: 12px 22px;
  border: 1px solid currentColor;
  border-radius: 999px;
  cursor: pointer;
  transition: background var(--wlcs-dur-fast) var(--wlcs-ease), color var(--wlcs-dur-fast) var(--wlcs-ease);
}
.wlcs-nav-trigger:hover { background: var(--wlcs-brass); color: var(--wlcs-ink); border-color: var(--wlcs-brass); }
.wlcs-nav-trigger-arrow {
  font-family: var(--wlcs-font-display);
  font-size: 14px;
  line-height: 1;
  transition: transform var(--wlcs-dur-base) var(--wlcs-ease);
}
.wlcs-nav.wlcs-menu-is-open .wlcs-nav-trigger-arrow { transform: rotate(180deg); }

/* Mega menu */
.wlcs-megamenu {
  position: fixed;
  top: 76px; left: 0; right: 0;
  z-index: var(--wlcs-z-overlay);
  background: var(--wlcs-ink-deep);
  color: var(--wlcs-paper);
  border-top: 1px solid var(--wlcs-rule-on-ink);
  border-bottom: 1px solid var(--wlcs-rule-on-ink);
  padding: var(--wlcs-space-xl) 0;
  transform: translateY(-12px);
  opacity: 0;
  pointer-events: none;
  transition: transform var(--wlcs-dur-base) var(--wlcs-ease), opacity var(--wlcs-dur-base) var(--wlcs-ease);
}
.wlcs-megamenu.wlcs-is-open { transform: translateY(0); opacity: 1; pointer-events: auto; }
.wlcs-megamenu-grid {
  display: grid;
  grid-template-columns: 1fr 1fr 1fr 1.4fr;
  gap: var(--wlcs-space-xl);
  max-width: var(--wlcs-container);
  margin: 0 auto;
  padding: 0 var(--wlcs-gutter);
}
.wlcs-megamenu-col h4 {
  font-family: var(--wlcs-font-mono);
  font-size: 13px;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: var(--wlcs-accent);
  margin-bottom: var(--wlcs-space-sm);
}
.wlcs-megamenu-col ul { display: flex; flex-direction: column; gap: 12px; }
.wlcs-megamenu-link {
  font-family: var(--wlcs-font-display);
  font-size: 22px;
  line-height: 1.2;
  color: var(--wlcs-paper);
  transition: color var(--wlcs-dur-fast) var(--wlcs-ease), transform var(--wlcs-dur-fast) var(--wlcs-ease);
  display: inline-block;
}
.wlcs-megamenu-link:hover { color: var(--wlcs-accent); transform: translateX(4px); }
.wlcs-megamenu-cta {
  background: var(--wlcs-brass);
  color: var(--wlcs-ink);
  padding: var(--wlcs-space-md);
  display: flex;
  flex-direction: column;
  gap: var(--wlcs-space-sm);
  align-self: start;
}
.wlcs-megamenu-cta h4 { color: var(--wlcs-ink); }
.wlcs-megamenu-cta p { font-size: 14px; line-height: 1.6; color: rgba(13, 26, 47, 0.78); }
.wlcs-megamenu-cta a {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  font-family: var(--wlcs-font-mono);
  font-size: 13px;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: var(--wlcs-ink);
  margin-top: var(--wlcs-space-xs);
  border-bottom: 1px solid var(--wlcs-ink);
  padding-bottom: 4px;
  align-self: flex-start;
}

/* ----- Hero (image-priority full-bleed + parallax + cursor spotlight) ----- */
.wlcs-hero {
  position: relative;
  height: 100vh;
  min-height: 720px;
  overflow: hidden;
  color: var(--wlcs-paper);
}
.wlcs-hero-plate-wrap {
  position: absolute;
  inset: 0;
  z-index: 0;
  overflow: hidden;
}
.wlcs-hero-plate {
  position: absolute;
  inset: -10% -5%;
  width: 110%;
  height: 110%;
  transform: translate3d(0, var(--wlcs-parallax, 0px), 0) scale(1.04);
  transition: transform 60ms linear;
  will-change: transform;
}
.wlcs-hero-plate::after {
  content: '';
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg,
    rgba(13, 26, 47, 0.48) 0%,
    rgba(13, 26, 47, 0.14) 28%,
    rgba(13, 26, 47, 0.14) 60%,
    rgba(13, 26, 47, 0.78) 100%);
  pointer-events: none;
}

/* Cursor spotlight overlay (only over hero, only on hover-capable) */
.wlcs-spotlight {
  position: absolute;
  inset: 0;
  z-index: 1;
  pointer-events: none;
  background: radial-gradient(
    520px circle at var(--wlcs-mx, 50%) var(--wlcs-my, 50%),
    rgba(168, 127, 62, 0.22) 0%,
    rgba(168, 127, 62, 0.08) 30%,
    transparent 70%
  );
  mix-blend-mode: screen;
  opacity: 0;
  transition: opacity 600ms var(--wlcs-ease);
}
.wlcs-spotlight.wlcs-is-active { opacity: 1; }

.wlcs-hero-content {
  position: relative;
  z-index: 2;
  height: 100%;
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  padding-top: 120px;
  padding-bottom: 56px;
}
.wlcs-hero-top {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
}
.wlcs-hero-issue {
  display: flex;
  align-items: center;
  gap: 12px;
  color: rgba(245, 239, 225, 0.78);
}
.wlcs-hero-bottom {
  display: flex;
  justify-content: space-between;
  align-items: flex-end;
  gap: var(--wlcs-space-xl);
  flex-wrap: wrap;
}
.wlcs-hero-headline {
  max-width: 18ch;
  font-size: var(--wlcs-text-hero);
  line-height: 1.06;
}
.wlcs-hero-em { font-style: italic; color: var(--wlcs-accent); }
.wlcs-hero-cta {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  font-family: var(--wlcs-font-mono);
  font-size: 12px;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: var(--wlcs-paper);
  padding-bottom: 6px;
  border-bottom: 1px solid var(--wlcs-accent);
  transition: color var(--wlcs-dur-fast) var(--wlcs-ease);
  margin-top: var(--wlcs-space-md);
}
.wlcs-hero-cta:hover { color: var(--wlcs-accent); }
.wlcs-hero-cta-arrow { display: inline-block; transition: transform 320ms var(--wlcs-ease); }
.wlcs-hero-cta:hover .wlcs-hero-cta-arrow { transform: translateX(6px); }
.wlcs-hero-caption {
  font-family: var(--wlcs-font-display);
  font-style: italic;
  font-size: 14px;
  color: rgba(245, 239, 225, 0.82);
  text-align: right;
  max-width: 24ch;
  line-height: 1.4;
}
.wlcs-hero-scroll-cue {
  position: absolute;
  bottom: 24px;
  left: 50%;
  transform: translateX(-50%);
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 12px;
  z-index: 2;
  color: rgba(245, 239, 225, 0.62);
}
.wlcs-hero-scroll-cue-text {
  font-family: var(--wlcs-font-mono);
  font-size: 12px;
  letter-spacing: 0.32em;
  text-transform: uppercase;
}

/* ----- Compressed page header (used by every inner page · alternative to .wlcs-hero) -----
   Page-opener for non-home pages. ~60vh ink block with image backdrop, gradient
   overlay, eyebrow + headline + lede + small caption. Markup pattern:
     <section class="wlcs-page-header">
       <div class="wlcs-page-header-plate-wrap">
         <div class="wlcs-page-header-plate wlcs-plate wlcs-plate--warm" id="..."></div>
       </div>
       <div class="wlcs-container wlcs-page-header-content">
         <div class="wlcs-page-header-eyebrow"><span class="wlcs-rule"></span><span class="wlcs-serial">…</span></div>
         <div class="wlcs-page-header-bottom">
           <h1 class="wlcs-page-header-headline">…</h1>
           <div><p class="wlcs-page-header-lede">…</p><p class="wlcs-page-header-caption">…</p></div>
         </div>
       </div>
     </section>
*/
.wlcs-page-header {
  position: relative;
  height: 62vh;
  min-height: 520px;
  overflow: hidden;
  color: var(--wlcs-paper);
}
.wlcs-page-header-plate-wrap {
  position: absolute;
  inset: 0;
  z-index: 0;
  overflow: hidden;
}
.wlcs-page-header-plate {
  position: absolute;
  inset: -4% -2%;
  width: 104%;
  height: 104%;
  transform: scale(1.02);
}
.wlcs-page-header-plate::after {
  content: '';
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg,
    rgba(13, 26, 47, 0.62) 0%,
    rgba(13, 26, 47, 0.34) 36%,
    rgba(13, 26, 47, 0.34) 64%,
    rgba(13, 26, 47, 0.86) 100%);
  pointer-events: none;
}
.wlcs-page-header-content {
  position: relative;
  z-index: 2;
  height: 100%;
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  padding-top: 140px;
  padding-bottom: 56px;
}
.wlcs-page-header-eyebrow {
  display: flex;
  align-items: center;
  gap: 14px;
}
.wlcs-page-header-eyebrow .wlcs-serial { color: var(--wlcs-accent); }
.wlcs-page-header-eyebrow .wlcs-rule { background: var(--wlcs-accent); }
.wlcs-page-header-bottom {
  display: grid;
  grid-template-columns: 1.4fr 1fr;
  column-gap: var(--wlcs-space-xl);
  align-items: end;
}
.wlcs-page-header-headline {
  max-width: 22ch;
  font-size: var(--wlcs-text-hero);
  line-height: 1.06;
  color: var(--wlcs-paper);
  font-family: var(--wlcs-font-display);
  font-weight: 400;
  letter-spacing: -0.008em;
}
.wlcs-page-header-headline-em { font-style: italic; color: var(--wlcs-accent); }
.wlcs-page-header-lede {
  font-size: var(--wlcs-text-body-lg);
  line-height: var(--wlcs-leading-body);
  color: rgba(245, 239, 225, 0.84);
  max-width: 38ch;
}
.wlcs-page-header-caption {
  font-family: var(--wlcs-font-display);
  font-style: italic;
  font-size: 14px;
  color: rgba(245, 239, 225, 0.72);
  margin-top: var(--wlcs-space-md);
}

/* ----- LEFT-MARGIN STICKY SERIAL GRAMMAR (the anchor differentiator) ----- */
.wlcs-section {
  padding: var(--wlcs-space-3xl) 0;
  position: relative;
}
.wlcs-section--tight { padding-top: var(--wlcs-space-2xl); padding-bottom: var(--wlcs-space-2xl); }
.wlcs-section--block { background: var(--wlcs-surface-block); }
.wlcs-section--deep { background: var(--wlcs-ink); color: var(--wlcs-paper); }
.wlcs-section--deep .wlcs-h1, .wlcs-section--deep .wlcs-h2 { color: var(--wlcs-paper); }
.wlcs-section--deep .wlcs-body, .wlcs-section--deep .wlcs-lede { color: rgba(245, 239, 225, 0.78); }
.wlcs-section--deep .wlcs-meta { color: rgba(245, 239, 225, 0.55); }

/* Inline section eyebrow (used on every body section except Position) */
.wlcs-section-eyebrow {
  display: flex;
  align-items: center;
  gap: 14px;
  margin-bottom: var(--wlcs-space-md);
}

/* Section grid — left-margin serial column + main content */
.wlcs-section-grid {
  display: grid;
  grid-template-columns: 200px 1fr;
  column-gap: var(--wlcs-gutter);
  align-items: start;
}
.wlcs-section-serial {
  position: sticky;
  top: 120px;
  display: flex;
  flex-direction: column;
  gap: var(--wlcs-space-xs);
  padding-top: 8px;
}
.wlcs-section-serial-rule {
  width: 32px;
  height: 1px;
  background: var(--wlcs-accent);
}
.wlcs-section-content {
  display: flex;
  flex-direction: column;
  gap: var(--wlcs-space-xl);
}

/* ----- Positioning (within the new section grid) ----- */
.wlcs-positioning-text {
  max-width: 32ch;
  font-family: var(--wlcs-font-display);
  font-size: 36px;
  line-height: 1.28;
  color: var(--wlcs-text-primary);
}
.wlcs-positioning-em { color: var(--wlcs-accent); font-style: italic; }
.wlcs-positioning-byline {
  margin-top: var(--wlcs-space-md);
  display: flex;
  align-items: center;
  gap: 12px;
}

/* ----- Services (3-up image-on-top with hover scale + stagger) ----- */
.wlcs-services {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: var(--wlcs-space-lg);
}
.wlcs-service {
  display: flex;
  flex-direction: column;
  gap: var(--wlcs-space-md);
  cursor: pointer;
}
.wlcs-service-plate {
  aspect-ratio: var(--wlcs-aspect-card);
  position: relative;
  overflow: hidden;
}
.wlcs-service-num {
  font-family: var(--wlcs-font-mono);
  font-size: 13px;
  letter-spacing: 0.22em;
  color: var(--wlcs-accent);
}
.wlcs-service-title {
  font-family: var(--wlcs-font-display);
  font-size: 22px;
  line-height: 1.24;
  color: var(--wlcs-text-primary);
  transition: color var(--wlcs-dur-fast) var(--wlcs-ease);
}
.wlcs-service:hover .wlcs-service-title { color: var(--wlcs-accent); }
.wlcs-service-desc {
  font-size: 15px;
  line-height: 1.6;
  color: var(--wlcs-text-secondary);
  max-width: 32ch;
}

/* ----- Facility (vertical rail + sticky text) ----- */
.wlcs-facility {
  display: grid;
  grid-template-columns: 1fr 1fr;
  column-gap: var(--wlcs-space-xl);
  align-items: start;
}
.wlcs-facility-rail {
  display: flex;
  flex-direction: column;
  gap: var(--wlcs-space-lg);
}
.wlcs-rail-plate {
  aspect-ratio: var(--wlcs-aspect-rail);
  position: relative;
  overflow: hidden;
}
.wlcs-facility-text {
  position: sticky;
  top: 120px;
  display: flex;
  flex-direction: column;
  gap: var(--wlcs-space-md);
}
.wlcs-spec-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 0;
  margin-top: var(--wlcs-space-md);
  border-top: 1px solid var(--wlcs-rule-soft);
}
.wlcs-spec-item {
  border-bottom: 1px solid var(--wlcs-rule-soft);
  padding: var(--wlcs-space-md) 0;
  display: flex;
  flex-direction: column;
  gap: 6px;
}
.wlcs-spec-item:nth-child(odd) {
  border-right: 1px solid var(--wlcs-rule-soft);
  padding-right: var(--wlcs-space-md);
}
.wlcs-spec-item:nth-child(even) {
  padding-left: var(--wlcs-space-md);
}
.wlcs-spec-value {
  font-family: var(--wlcs-font-display);
  font-size: 28px;
  color: var(--wlcs-text-primary);
}
.wlcs-spec-value-em { color: var(--wlcs-accent); }

/* ----- Showreel ----- */
.wlcs-showreel {
  background: var(--wlcs-ink);
  color: var(--wlcs-paper);
  padding: var(--wlcs-space-2xl) 0;
}
.wlcs-showreel-meta {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 14px;
  margin: 0 auto var(--wlcs-space-md);
  color: var(--wlcs-accent);
  width: 60%;
  max-width: 60%;
}
.wlcs-showreel-meta .wlcs-rule { background: var(--wlcs-accent); }
.wlcs-showreel-pull {
  font-family: var(--wlcs-font-display);
  font-style: italic;
  font-size: 32px;
  line-height: 1.32;
  color: rgba(245, 239, 225, 0.92);
  width: 60%;
  max-width: 60%;
  margin: 0 auto var(--wlcs-space-xl);
  text-align: center;
}
.wlcs-showreel-pull-em { color: var(--wlcs-accent); }
.wlcs-showreel-plate {
  aspect-ratio: var(--wlcs-aspect-video);
  position: relative;
  background:
    radial-gradient(120% 100% at 50% 50%, rgba(168, 127, 62, 0.22) 0%, transparent 55%),
    linear-gradient(135deg, #1a1410 0%, #0d0a06 50%, #050302 100%);
  overflow: hidden;
  cursor: pointer;
}
.wlcs-showreel-play {
  position: absolute;
  top: 50%; left: 50%;
  transform: translate(-50%, -50%);
  width: 96px;
  height: 96px;
  border: 1px solid var(--wlcs-paper);
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  background: rgba(13, 26, 47, 0.18);
  backdrop-filter: blur(6px);
  transition: transform var(--wlcs-dur-base) var(--wlcs-ease), background var(--wlcs-dur-base) var(--wlcs-ease);
}
.wlcs-showreel-plate:hover .wlcs-showreel-play { transform: translate(-50%, -50%) scale(1.08); background: rgba(168, 127, 62, 0.32); }
.wlcs-showreel-play-icon {
  font-family: var(--wlcs-font-display);
  font-size: 20px;
  margin-left: 6px;
  color: var(--wlcs-paper);
}
.wlcs-showreel-cap {
  position: absolute;
  bottom: 24px;
  left: 24px;
  font-family: var(--wlcs-font-mono);
  font-size: 13px;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: rgba(245, 239, 225, 0.62);
}
.wlcs-showreel-runtime {
  position: absolute;
  bottom: 24px;
  right: 24px;
  font-family: var(--wlcs-font-mono);
  font-size: 13px;
  letter-spacing: 0.22em;
  color: rgba(245, 239, 225, 0.62);
}

/* ----- Pricing ----- */
.wlcs-pricing {
  display: grid;
  grid-template-columns: 1fr 1fr;
  column-gap: var(--wlcs-space-2xl);
  align-items: center;
}
.wlcs-price-figure {
  display: flex;
  flex-direction: column;
  gap: var(--wlcs-space-sm);
}
.wlcs-price-value {
  font-family: var(--wlcs-font-display);
  font-size: 144px;
  line-height: 0.92;
  letter-spacing: -0.03em;
  color: var(--wlcs-text-primary);
}
.wlcs-price-em { color: var(--wlcs-accent); }
.wlcs-price-suffix {
  font-family: var(--wlcs-font-mono);
  font-size: 12px;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: var(--wlcs-text-secondary);
}
.wlcs-price-list { display: flex; flex-direction: column; }
.wlcs-price-row {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  padding: 16px 0;
  border-bottom: 1px dashed var(--wlcs-rule-soft);
}
.wlcs-price-row:first-child { border-top: 1px dashed var(--wlcs-rule-soft); }
.wlcs-price-row-label { font-size: 16px; color: var(--wlcs-text-primary); }
.wlcs-price-row-value {
  font-family: var(--wlcs-font-mono);
  font-size: 13px;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--wlcs-text-secondary);
}

/* ----- Journal teaser ----- */
.wlcs-journal {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: var(--wlcs-space-lg);
}
.wlcs-journal-card {
  display: flex;
  flex-direction: column;
  gap: var(--wlcs-space-sm);
  cursor: pointer;
}
.wlcs-journal-plate {
  aspect-ratio: var(--wlcs-aspect-portrait);
  position: relative;
  overflow: hidden;
  margin-bottom: var(--wlcs-space-xs);
}
.wlcs-journal-meta {
  display: flex;
  gap: 12px;
  align-items: center;
}
.wlcs-journal-cat {
  font-family: var(--wlcs-font-mono);
  font-size: 12px;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: var(--wlcs-accent);
}
.wlcs-journal-date {
  font-family: var(--wlcs-font-mono);
  font-size: 12px;
  letter-spacing: 0.18em;
  color: var(--wlcs-text-muted);
}
.wlcs-journal-title {
  font-family: var(--wlcs-font-display);
  font-style: italic;
  font-size: 22px;
  line-height: 1.28;
  color: var(--wlcs-text-primary);
  transition: color var(--wlcs-dur-fast) var(--wlcs-ease);
}
.wlcs-journal-card:hover .wlcs-journal-title { color: var(--wlcs-accent); }

/* ----- CTA ----- */
.wlcs-cta {
  display: grid;
  grid-template-columns: 5fr 7fr;
  column-gap: var(--wlcs-space-xl);
  align-items: end;
}
.wlcs-cta-plate {
  aspect-ratio: var(--wlcs-aspect-portrait);
  position: relative;
  overflow: hidden;
  cursor: pointer;
}
.wlcs-cta-text {
  display: flex;
  flex-direction: column;
  gap: var(--wlcs-space-md);
}
.wlcs-cta-headline { max-width: 16ch; }
.wlcs-cta-actions {
  display: flex;
  gap: var(--wlcs-space-sm);
  flex-wrap: wrap;
  margin-top: var(--wlcs-space-sm);
}

/* ----- Buttons (with arrow slide on hover) ----- */
.wlcs-button {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  padding: var(--wlcs-btn-pad-y) var(--wlcs-btn-pad-x);
  font-family: var(--wlcs-font-mono);
  font-size: var(--wlcs-btn-text);
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: var(--wlcs-paper);
  background: var(--wlcs-ink);
  border: 1px solid var(--wlcs-ink);
  border-radius: 999px;
  transition: background var(--wlcs-dur-fast) var(--wlcs-ease), color var(--wlcs-dur-fast) var(--wlcs-ease);
}
.wlcs-button:hover { background: var(--wlcs-brass-dk); border-color: var(--wlcs-brass-dk); }
.wlcs-button--ghost {
  background: transparent;
  color: var(--wlcs-text-primary);
  border-color: var(--wlcs-rule-hard);
}
.wlcs-button--ghost:hover { background: var(--wlcs-ink); color: var(--wlcs-paper); border-color: var(--wlcs-ink); }
.wlcs-button-arrow {
  font-family: var(--wlcs-font-display);
  font-size: 14px;
  line-height: 1;
  display: inline-block;
  transition: transform var(--wlcs-dur-fast) var(--wlcs-ease);
}
.wlcs-button:hover .wlcs-button-arrow { transform: translateX(4px); }

/* ----- Footer ----- */
.wlcs-footer {
  background: var(--wlcs-ink);
  color: var(--wlcs-paper);
  padding: var(--wlcs-space-2xl) 0 var(--wlcs-space-xl);
}
.wlcs-footer-grid {
  display: grid;
  grid-template-columns: 1.7fr 1fr 1fr 1.1fr;
  column-gap: var(--wlcs-space-lg);
  row-gap: var(--wlcs-space-lg);
}
.wlcs-footer-col h4 {
  font-family: var(--wlcs-font-mono);
  font-size: 13px;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: var(--wlcs-accent);
  margin-bottom: var(--wlcs-space-sm);
}
.wlcs-footer-col ul { display: flex; flex-direction: column; gap: 12px; }
.wlcs-footer-col a {
  font-size: 14px;
  color: rgba(245, 239, 225, 0.82);
  transition: color var(--wlcs-dur-fast) var(--wlcs-ease), transform var(--wlcs-dur-fast) var(--wlcs-ease);
  display: inline-block;
}
.wlcs-footer-col a:hover { color: var(--wlcs-accent); transform: translateX(3px); }
.wlcs-footer-wordmark {
  font-family: var(--wlcs-font-display);
  font-size: 28px;
  letter-spacing: 0.16em;
  text-transform: uppercase;
}
.wlcs-footer-tag {
  font-family: var(--wlcs-font-mono);
  font-size: 13px;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: var(--wlcs-accent);
  margin-top: 12px;
}
.wlcs-footer-meta {
  margin-top: var(--wlcs-space-xl);
  padding-top: var(--wlcs-space-md);
  border-top: 1px solid rgba(245, 239, 225, 0.12);
  display: flex;
  justify-content: space-between;
  font-family: var(--wlcs-font-mono);
  font-size: 13px;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: rgba(245, 239, 225, 0.42);
  flex-wrap: wrap;
  gap: var(--wlcs-space-md);
}

/* ----- Reveal (with stagger support via --wlcs-stagger) ----- */
/* Reveals hide themselves ONLY once the script has confirmed it can see
   them — wlcs-page.js puts .wlcs-js on <html> after it finds reveal targets.
   Without that gate, a script that loads but binds to nothing (pasted above
   the markup in a builder, blocked, or erroring) leaves every reveal at
   opacity 0 permanently and the page reads as blank. Fail visible. */
.wlcs-js .wlcs-reveal {
  opacity: 0;
  transform: translateY(28px);
  transition: opacity var(--wlcs-dur-slow) var(--wlcs-ease-quiet),
              transform var(--wlcs-dur-slow) var(--wlcs-ease-quiet);
  transition-delay: calc(var(--wlcs-stagger, 0) * 90ms);
}
.wlcs-js .wlcs-reveal.wlcs-is-active { opacity: 1; transform: translateY(0); }

/* Mask reveal — clip-path expanding from centre (used on plates) */
.wlcs-mask {
  clip-path: inset(0 50% 0 50%);
  transition: clip-path var(--wlcs-dur-slow) var(--wlcs-ease-quiet);
  transition-delay: calc(var(--wlcs-stagger, 0) * 90ms);
}
.wlcs-mask.wlcs-is-active { clip-path: inset(0 0 0 0); }

/* SplitText line wrapper — overflow-hidden so words can slide up from below */
.split-line {
  overflow: hidden;
  display: block;
  padding-bottom: 0.05em;
}
.split-word { display: inline-block; }

/* Facility active-step indicator (driven by ScrollTrigger) */
.wlcs-facility-step {
  display: inline-flex;
  align-items: center;
  gap: 12px;
  padding: 8px 14px;
  border: 1px solid var(--wlcs-rule-soft);
  border-radius: 999px;
  align-self: flex-start;
  margin-top: var(--wlcs-space-xs);
  margin-bottom: var(--wlcs-space-xs);
  background: var(--wlcs-paper);
}
.wlcs-facility-step-num {
  font-family: var(--wlcs-font-mono);
  font-size: 12px;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: var(--wlcs-accent);
  font-weight: 500;
}
.wlcs-facility-step-label {
  font-family: var(--wlcs-font-display);
  font-style: italic;
  font-size: 14px;
  color: var(--wlcs-ink);
  transition: opacity var(--wlcs-dur-base) var(--wlcs-ease);
}

/* Rail plate dim state when not active (driven by ScrollTrigger) */
.wlcs-rail-plate {
  transition: opacity var(--wlcs-dur-slow) var(--wlcs-ease-quiet),
              transform var(--wlcs-dur-slow) var(--wlcs-ease-quiet);
}
.wlcs-rail-plate.wlcs-is-dim { opacity: 0.42; }

/* Reduced motion */
@media (prefers-reduced-motion: reduce) {
  .wlcs-reveal, .wlcs-mask, .wlcs-spotlight, .wlcs-progress-fill, .wlcs-hero-plate { transition: none !important; animation: none !important; transform: none !important; }
  .wlcs-reveal { opacity: 1; }
  .wlcs-mask { clip-path: none; }
}

/* ----- Responsive ----- */
@media (max-width: 1024px) {
  .wlcs-megamenu-grid { grid-template-columns: 1fr 1fr; gap: var(--wlcs-space-lg); }
  .wlcs-section-grid { grid-template-columns: 1fr; row-gap: var(--wlcs-space-md); }
  .wlcs-section-serial { position: static; padding-top: 0; }
  .wlcs-services { grid-template-columns: 1fr 1fr; }
  .wlcs-facility { grid-template-columns: 1fr; row-gap: var(--wlcs-space-xl); }
  .wlcs-facility-text { position: static; }
  .wlcs-pricing { grid-template-columns: 1fr; row-gap: var(--wlcs-space-lg); }
  .wlcs-journal { grid-template-columns: 1fr 1fr; }
  .wlcs-cta { grid-template-columns: 1fr; row-gap: var(--wlcs-space-md); }
  .wlcs-footer-grid { grid-template-columns: 1fr 1fr; }
  .wlcs-positioning-text { font-size: 28px; }
  .wlcs-price-value { font-size: 96px; }
  .wlcs-showreel-pull { font-size: 24px; }
  .wlcs-spotlight { display: none; }
  .wlcs-page-header { height: auto; min-height: 0; padding-bottom: var(--wlcs-space-xl); }
  .wlcs-page-header-content { padding-top: 120px; }
  .wlcs-page-header-bottom { grid-template-columns: 1fr; row-gap: var(--wlcs-space-lg); }
  .wlcs-page-header-headline { max-width: 100%; }
  .wlcs-page-header-lede { max-width: 100%; }
}

@media (max-width: 768px) {
  .wlcs-services { grid-template-columns: 1fr; }
  .wlcs-journal { grid-template-columns: 1fr; }
  .wlcs-megamenu-grid { grid-template-columns: 1fr; }
  .wlcs-hero-bottom { flex-direction: column; align-items: flex-start; }
  .wlcs-hero-caption { text-align: left; max-width: 100%; }
  .wlcs-positioning-text { font-size: 24px; }
  .wlcs-price-value { font-size: 72px; }
  .wlcs-showreel-pull { font-size: 20px; width: 100%; max-width: 100%; }
  .wlcs-showreel-meta { width: 100%; max-width: 100%; }
  .wlcs-showreel-play { width: 72px; height: 72px; }
  .wlcs-hero-scroll-cue { display: none; }
  .wlcs-page-header-content { padding-top: 104px; padding-bottom: var(--wlcs-space-lg); }
}

@media (max-width: 478px) {
  .wlcs-footer-grid { grid-template-columns: 1fr; }
  .wlcs-spec-grid { grid-template-columns: 1fr; }
  .wlcs-spec-item:nth-child(odd) { border-right: 0; }
  .wlcs-price-value { font-size: 56px; }
  .wlcs-page-header { min-height: 460px; }
}

/* ============================================================
   PAGE PATTERNS (absorbed from per-page CSS)
   All multi-page patterns + page-scoped overrides live below.
   Page-scoped overrides use body[data-page="X"] selectors.
   ============================================================ */

/* ===== Section spacing tighten (services + location) ===== */
.wlcs-section--services {
  padding-top: var(--wlcs-space-2xl);
  padding-bottom: var(--wlcs-space-2xl);
}

/* ===== Service family block (services + location) =====
   2-col block: image + content. --reverse flips on desktop;
   source order restored at ≤1024 so image always leads on mobile. */
.wlcs-service-block {
  display: grid;
  grid-template-columns: 6fr 5fr;
  column-gap: var(--wlcs-space-xl);
  align-items: start;
}
.wlcs-service-block--reverse { grid-template-columns: 5fr 6fr; }
.wlcs-service-block--reverse .wlcs-service-block-image { order: 2; }
.wlcs-service-block--reverse .wlcs-service-block-content { order: 1; }
.wlcs-service-block-image {
  position: relative;
  display: flex;
  flex-direction: column;
  gap: var(--wlcs-space-sm);
}
.wlcs-service-block-plate {
  aspect-ratio: var(--wlcs-aspect-wide);
  position: relative;
  overflow: hidden;
}
.wlcs-service-block-caption {
  font-family: var(--wlcs-font-display);
  font-style: italic;
  font-size: 14px;
  color: var(--wlcs-text-muted);
  text-align: right;
  padding-right: 2px;
}
.wlcs-service-block-content {
  display: flex;
  flex-direction: column;
  gap: var(--wlcs-space-md);
  padding-top: 4px;
}
.wlcs-service-block-num {
  font-family: var(--wlcs-font-mono);
  font-size: var(--wlcs-text-mono);
  letter-spacing: var(--wlcs-tracking-wide);
  text-transform: uppercase;
  color: var(--wlcs-accent);
  font-weight: 500;
}
.wlcs-service-block-headline {
  font-family: var(--wlcs-font-display);
  font-size: var(--wlcs-text-h2);
  line-height: 1.16;
  letter-spacing: -0.006em;
  color: var(--wlcs-text-primary);
  font-weight: 400;
  max-width: 18ch;
}
.wlcs-service-block-lead {
  font-family: var(--wlcs-font-display);
  font-style: italic;
  font-size: 22px;
  line-height: 1.34;
  color: var(--wlcs-accent);
  max-width: 26ch;
  margin-top: var(--wlcs-space-xs);
}
.wlcs-service-block-body {
  font-size: var(--wlcs-text-body);
  line-height: var(--wlcs-leading-body);
  color: var(--wlcs-text-secondary);
  max-width: 42ch;
}
.wlcs-service-block-specs { margin-top: var(--wlcs-space-sm); }

/* ===== Pricing: supplementary monthly-equivalent line ===== */
.wlcs-price-note {
  font-family: var(--wlcs-font-display);
  font-style: italic;
  font-size: 15px;
  line-height: 1.5;
  color: var(--wlcs-text-muted);
  max-width: 32ch;
  margin-top: var(--wlcs-space-sm);
}

/* ===== Location: map placeholder + inline link ===== */
.wlcs-map-placeholder {
  aspect-ratio: var(--wlcs-aspect-video);
  position: relative;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: var(--wlcs-space-xs);
  margin-top: var(--wlcs-space-lg);
  padding: var(--wlcs-space-xl);
  text-align: center;
}
.wlcs-map-placeholder::before {
  content: "";
  position: absolute;
  inset: 24px;
  border: 1px dashed var(--wlcs-rule-soft);
  border-radius: calc(var(--wlcs-radius-img) - 6px);
  pointer-events: none;
}
.wlcs-map-placeholder-caption {
  position: relative;
  font-family: var(--wlcs-font-display);
  font-style: italic;
  font-size: clamp(28px, 4vw, 44px);
  line-height: 1.18;
  color: var(--wlcs-text-primary);
  letter-spacing: -0.005em;
  max-width: 22ch;
}
.wlcs-map-placeholder-meta {
  position: relative;
  font-family: var(--wlcs-font-mono);
  font-size: 12px;
  letter-spacing: var(--wlcs-tracking-wide);
  text-transform: uppercase;
  color: var(--wlcs-text-muted);
}
.wlcs-map-placeholder-note {
  font-family: var(--wlcs-font-display);
  font-style: italic;
  font-size: 15px;
  line-height: 1.5;
  color: var(--wlcs-text-muted);
  margin-top: var(--wlcs-space-sm);
  max-width: 56ch;
}
.wlcs-inline-link {
  font-family: var(--wlcs-font-mono);
  font-size: 13px;
  letter-spacing: var(--wlcs-tracking-wide);
  text-transform: uppercase;
  color: var(--wlcs-accent);
  text-decoration: none;
  border-bottom: 1px solid currentColor;
  padding-bottom: 2px;
  transition: color var(--wlcs-dur-base) var(--wlcs-ease);
}
.wlcs-inline-link:hover { color: var(--wlcs-brass-dk, var(--wlcs-accent)); }
.wlcs-inline-link .wlcs-button-arrow {
  display: inline-block;
  margin-left: 4px;
  transition: transform var(--wlcs-dur-base) var(--wlcs-ease);
}
.wlcs-inline-link:hover .wlcs-button-arrow { transform: translateX(4px); }

/* ===== Enquiry: 2-col wrapper + quiet underlined form + contact panel ===== */
.wlcs-enquiry {
  display: grid;
  grid-template-columns: 7fr 5fr;
  column-gap: var(--wlcs-space-xl);
  align-items: start;
}
.wlcs-form {
  display: flex;
  flex-direction: column;
  gap: var(--wlcs-space-lg);
}
.wlcs-form-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  column-gap: var(--wlcs-space-lg);
  row-gap: var(--wlcs-space-lg);
}
.wlcs-form-row { display: block; }
.wlcs-form-field {
  display: flex;
  flex-direction: column;
  gap: 6px;
}
.wlcs-form-label {
  font-family: var(--wlcs-font-mono);
  font-size: 13px;
  letter-spacing: var(--wlcs-tracking-wide);
  text-transform: uppercase;
  color: var(--wlcs-brass);
  font-weight: 500;
  display: inline-flex;
  align-items: baseline;
  gap: 6px;
}
.wlcs-form-required {
  font-family: var(--wlcs-font-display);
  font-size: 14px;
  color: var(--wlcs-accent);
  line-height: 1;
}
.wlcs-form-input,
.wlcs-form-textarea,
.wlcs-form-select {
  width: 100%;
  font-family: var(--wlcs-font-body);
  font-size: var(--wlcs-text-body);
  line-height: 1.5;
  color: var(--wlcs-text-primary);
  background: transparent;
  border: 0;
  border-bottom: 1px solid var(--wlcs-charcoal);
  border-radius: 0;
  padding: 10px 2px 12px;
  outline: 0;
  transition:
    border-color var(--wlcs-dur-fast) var(--wlcs-ease),
    background-color var(--wlcs-dur-fast) var(--wlcs-ease);
  -webkit-appearance: none;
  appearance: none;
}
.wlcs-form-input::placeholder,
.wlcs-form-textarea::placeholder {
  color: var(--wlcs-text-muted);
  font-style: italic;
}
.wlcs-form-textarea {
  min-height: 120px;
  resize: vertical;
  padding-top: 12px;
}
.wlcs-form-select-wrap { position: relative; }
.wlcs-form-select { padding-right: 32px; cursor: pointer; }
.wlcs-form-select-arrow {
  position: absolute;
  right: 6px;
  top: 50%;
  transform: translateY(-50%);
  font-family: var(--wlcs-font-display);
  font-size: 16px;
  color: var(--wlcs-accent);
  pointer-events: none;
  line-height: 1;
}
.wlcs-form-input:focus,
.wlcs-form-textarea:focus,
.wlcs-form-select:focus,
.wlcs-form-input:focus-visible,
.wlcs-form-textarea:focus-visible,
.wlcs-form-select:focus-visible {
  border-bottom-color: var(--wlcs-brass);
  background-color: rgba(168, 127, 62, 0.06);
}
.wlcs-form-input:-webkit-autofill,
.wlcs-form-textarea:-webkit-autofill,
.wlcs-form-select:-webkit-autofill {
  -webkit-text-fill-color: var(--wlcs-text-primary);
  box-shadow: 0 0 0 1000px var(--wlcs-paper) inset;
  caret-color: var(--wlcs-text-primary);
}
.wlcs-form-field--error .wlcs-form-input,
.wlcs-form-field--error .wlcs-form-textarea,
.wlcs-form-field--error .wlcs-form-select {
  border-bottom-color: var(--wlcs-brass-dk);
  background-color: rgba(92, 69, 32, 0.05);
}
.wlcs-form-field--error .wlcs-form-label { color: var(--wlcs-brass-dk); }
.wlcs-form-error {
  font-family: var(--wlcs-font-mono);
  font-size: 12px;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--wlcs-brass-dk);
  min-height: 14px;
  margin-top: 2px;
}
.wlcs-form-submit {
  display: flex;
  flex-direction: column;
  gap: var(--wlcs-space-sm);
  margin-top: var(--wlcs-space-xs);
  align-items: flex-start;
}
.wlcs-form-privacy { max-width: 48ch; line-height: 1.55; }
.wlcs-form-privacy a {
  color: var(--wlcs-accent);
  border-bottom: 1px solid var(--wlcs-rule-soft);
  transition: border-color var(--wlcs-dur-fast) var(--wlcs-ease);
}
.wlcs-form-privacy a:hover { border-bottom-color: var(--wlcs-accent); }
.wlcs-form-status {
  font-family: var(--wlcs-font-mono);
  font-size: 12px;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--wlcs-brass-dk);
  min-height: 14px;
}
.wlcs-form-status:empty { margin: 0; padding: 0; }
.wlcs-form-thanks {
  display: flex;
  flex-direction: column;
  gap: var(--wlcs-space-md);
  padding: var(--wlcs-space-xl) 0;
}
.wlcs-form-thanks-headline { max-width: 16ch; }
.wlcs-form-thanks-body { max-width: 42ch; }
.wlcs-form-thanks-meta {
  margin-top: var(--wlcs-space-sm);
  font-family: var(--wlcs-font-mono);
  font-size: 12px;
  letter-spacing: var(--wlcs-tracking-wide);
  text-transform: uppercase;
  color: var(--wlcs-text-muted);
}
.wlcs-contact-panel {
  display: flex;
  flex-direction: column;
  gap: var(--wlcs-space-md);
  padding: var(--wlcs-space-lg);
  background: var(--wlcs-surface-block);
  border-top: 1px solid var(--wlcs-rule-soft);
  border-bottom: 1px solid var(--wlcs-rule-soft);
  position: sticky;
  top: 120px;
}
.wlcs-contact-panel-heading {
  color: var(--wlcs-text-primary);
  font-style: normal;
}
.wlcs-contact-panel-phone {
  font-family: var(--wlcs-font-display);
  font-size: var(--wlcs-text-h2);
  line-height: 1.1;
  color: var(--wlcs-text-primary);
  letter-spacing: -0.004em;
  padding-bottom: 4px;
  border-bottom: 1px solid transparent;
  transition: color var(--wlcs-dur-fast) var(--wlcs-ease),
              border-color var(--wlcs-dur-fast) var(--wlcs-ease);
  align-self: flex-start;
}
.wlcs-contact-panel-phone:hover {
  color: var(--wlcs-accent);
  border-bottom-color: var(--wlcs-accent);
}
.wlcs-contact-panel-email {
  font-family: var(--wlcs-font-display);
  font-style: italic;
  font-size: var(--wlcs-text-h3);
  line-height: 1.32;
  color: var(--wlcs-text-secondary);
  word-break: break-word;
  transition: color var(--wlcs-dur-fast) var(--wlcs-ease);
}
.wlcs-contact-panel-email:hover { color: var(--wlcs-accent); }
.wlcs-contact-panel-block {
  display: flex;
  flex-direction: column;
  gap: 4px;
  padding-top: var(--wlcs-space-sm);
  border-top: 1px solid var(--wlcs-rule-soft);
}
.wlcs-contact-panel-steps {
  display: flex;
  flex-direction: column;
  gap: var(--wlcs-space-sm);
  margin-top: var(--wlcs-space-sm);
}
.wlcs-contact-panel-steps .wlcs-section-eyebrow { margin-bottom: 0; }
.wlcs-contact-panel-steps .wlcs-price-row-value { color: var(--wlcs-accent); }

/* ===== FAQs: serial-headed groups of native disclosures ===== */
.wlcs-faq-group {
  display: grid;
  grid-template-columns: 220px 1fr;
  column-gap: var(--wlcs-space-xl);
  padding: var(--wlcs-space-xl) 0;
  border-top: 1px solid var(--wlcs-rule-soft);
}
.wlcs-faq-group:last-child { border-bottom: 1px solid var(--wlcs-rule-soft); }
.wlcs-faq-group-head {
  display: flex;
  flex-direction: column;
  gap: var(--wlcs-space-sm);
  position: sticky;
  top: 96px;
  align-self: start;
  padding-top: 6px;
}
.wlcs-faq-group-head .wlcs-serial { font-size: var(--wlcs-text-mono-lg); }
.wlcs-faq-group-rule {
  width: 32px;
  height: 1px;
  background: var(--wlcs-accent);
}
.wlcs-faq-group-body {
  display: flex;
  flex-direction: column;
}
.wlcs-faq-item { border-bottom: 1px dashed var(--wlcs-rule-soft); }
.wlcs-faq-item:first-child { border-top: 1px dashed var(--wlcs-rule-soft); }
.wlcs-faq-item summary {
  list-style: none;
  cursor: pointer;
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: var(--wlcs-space-md);
  padding: var(--wlcs-space-md) 0;
  transition: color var(--wlcs-dur-fast) var(--wlcs-ease);
}
.wlcs-faq-item summary::-webkit-details-marker { display: none; }
.wlcs-faq-item summary::marker { display: none; content: ''; }
.wlcs-faq-q {
  font-family: var(--wlcs-font-display);
  font-size: 22px;
  line-height: 1.32;
  color: var(--wlcs-text-primary);
  letter-spacing: -0.004em;
  flex: 1;
}
.wlcs-faq-item summary:hover .wlcs-faq-q { color: var(--wlcs-accent); }
.wlcs-faq-mark {
  font-family: var(--wlcs-font-mono);
  font-size: 18px;
  line-height: 1;
  color: var(--wlcs-accent);
  width: 18px;
  text-align: center;
  flex-shrink: 0;
  transition: transform var(--wlcs-dur-fast) var(--wlcs-ease);
}
.wlcs-faq-item[open] .wlcs-faq-mark { transform: rotate(45deg); }
.wlcs-faq-item[open] .wlcs-faq-q { color: var(--wlcs-accent); }
.wlcs-faq-a {
  padding: 0 0 var(--wlcs-space-md) 0;
  max-width: 56ch;
}
.wlcs-faq-a p {
  font-size: var(--wlcs-text-body);
  line-height: var(--wlcs-leading-body);
  color: var(--wlcs-text-secondary);
}

/* ===== Journal index: dedicated-page title size lift ===== */
body[data-page="journal"] .wlcs-journal-card .wlcs-journal-title {
  font-size: 24px;
  line-height: 1.26;
}

/* ===== Journal article: editorial template ===== */
.wlcs-page-header--article { min-height: 64vh; }
.wlcs-page-header--article .wlcs-page-header-headline { max-width: 22ch; }
.wlcs-page-header--article .wlcs-page-header-lede {
  font-style: italic;
  font-family: var(--wlcs-font-display);
  font-size: 22px;
  line-height: 1.36;
}
.wlcs-article {
  max-width: 720px;
  margin: 0 auto;
  padding-top: var(--wlcs-space-xl);
  padding-bottom: var(--wlcs-space-xl);
}
.wlcs-article-byline {
  display: flex;
  align-items: center;
  gap: 12px;
  font-family: var(--wlcs-font-mono);
  font-size: 12px;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: var(--wlcs-accent);
  margin-bottom: var(--wlcs-space-lg);
}
.wlcs-article-byline::before {
  content: '';
  display: inline-block;
  width: 24px;
  height: 1px;
  background: var(--wlcs-accent);
}
.wlcs-article-body p {
  font-family: var(--wlcs-font-body);
  font-size: 17px;
  line-height: 1.72;
  color: var(--wlcs-text-secondary);
  margin-bottom: var(--wlcs-space-md);
}
.wlcs-article-body p:last-child { margin-bottom: 0; }
.wlcs-article-body > p:first-of-type::first-letter {
  font-family: var(--wlcs-font-display);
  font-size: 56px;
  line-height: 0.92;
  float: left;
  padding: 6px 12px 0 0;
  color: var(--wlcs-text-primary);
  font-weight: 400;
}
.wlcs-article-pull {
  border-left: 2px solid var(--wlcs-accent);
  padding: var(--wlcs-space-xs) 0 var(--wlcs-space-xs) var(--wlcs-space-md);
  margin: var(--wlcs-space-lg) 0;
  font-family: var(--wlcs-font-display);
  font-style: italic;
  font-size: 26px;
  line-height: 1.36;
  color: var(--wlcs-text-primary);
  max-width: 28ch;
}
.wlcs-article-image {
  margin: var(--wlcs-space-xl) 0;
  display: flex;
  flex-direction: column;
  gap: var(--wlcs-space-sm);
}
.wlcs-article-image-plate {
  aspect-ratio: var(--wlcs-aspect-wide);
  position: relative;
  overflow: hidden;
}
.wlcs-article-image-caption {
  font-family: var(--wlcs-font-display);
  font-style: italic;
  font-size: 14px;
  color: var(--wlcs-text-muted);
  text-align: right;
}
.wlcs-article-divider {
  width: 32px;
  height: 1px;
  background: var(--wlcs-accent);
  margin: var(--wlcs-space-lg) 0;
}
.wlcs-article-signoff {
  margin-top: var(--wlcs-space-lg);
  font-family: var(--wlcs-font-display);
  font-style: italic;
  font-size: 18px;
  color: var(--wlcs-text-muted);
}
.wlcs-article-related {
  border-top: 1px solid var(--wlcs-rule-soft);
  padding-top: var(--wlcs-space-xl);
}
.wlcs-article-related .wlcs-journal {
  grid-template-columns: 1fr 1fr;
  gap: var(--wlcs-space-xl);
  margin-top: var(--wlcs-space-lg);
}
.wlcs-article-related-back {
  margin-top: var(--wlcs-space-xl);
  display: inline-flex;
  align-items: center;
  gap: 8px;
  font-family: var(--wlcs-font-mono);
  font-size: 12px;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: var(--wlcs-accent);
  text-decoration: none;
  transition: transform var(--wlcs-dur-fast) var(--wlcs-ease);
}
.wlcs-article-related-back:hover { transform: translateX(-4px); }

/* ===== Legal: quieter header override + long-form document body ===== */
.wlcs-page-header--legal {
  height: auto;
  min-height: 360px;
}
.wlcs-page-header--legal .wlcs-page-header-content {
  padding-top: 140px;
  padding-bottom: var(--wlcs-space-xl);
  gap: var(--wlcs-space-xl);
}
.wlcs-page-header--legal .wlcs-page-header-headline {
  font-size: var(--wlcs-text-h1);
  max-width: 24ch;
}
.wlcs-page-header--legal .wlcs-page-header-bottom {
  align-items: end;
  column-gap: var(--wlcs-space-lg);
}
.wlcs-page-header--legal .wlcs-page-header-lede {
  max-width: 42ch;
  font-style: italic;
  font-family: var(--wlcs-font-display);
  font-size: 22px;
  line-height: 1.36;
  color: rgba(245, 239, 225, 0.92);
}
.wlcs-legal-toc {
  margin-top: var(--wlcs-space-md);
  display: flex;
  flex-direction: column;
  gap: 6px;
  border-top: 1px solid var(--wlcs-rule-soft);
  padding-top: var(--wlcs-space-sm);
}
.wlcs-legal-toc-title {
  font-family: var(--wlcs-font-mono);
  font-size: 11px;
  letter-spacing: var(--wlcs-tracking-wide);
  text-transform: uppercase;
  color: var(--wlcs-text-muted);
  margin-bottom: 4px;
}
.wlcs-legal-toc a {
  font-family: var(--wlcs-font-mono);
  font-size: 12px;
  letter-spacing: 0.06em;
  color: var(--wlcs-text-secondary);
  text-decoration: none;
  display: flex;
  align-items: baseline;
  gap: 8px;
  padding: 3px 0;
  border-bottom: 1px dotted transparent;
  transition: color var(--wlcs-dur-fast) var(--wlcs-ease),
              border-color var(--wlcs-dur-fast) var(--wlcs-ease);
}
.wlcs-legal-toc a:hover {
  color: var(--wlcs-accent);
  border-bottom-color: var(--wlcs-accent);
}
.wlcs-legal-toc-num {
  color: var(--wlcs-accent);
  font-weight: 500;
  flex-shrink: 0;
}
.wlcs-legal-body {
  display: flex;
  flex-direction: column;
  gap: var(--wlcs-space-xl);
  max-width: 64ch;
}
.wlcs-legal-section {
  display: flex;
  flex-direction: column;
  gap: var(--wlcs-space-md);
  scroll-margin-top: 120px;
}
.wlcs-legal-section-headline {
  font-family: var(--wlcs-font-display);
  font-size: 26px;
  line-height: 1.22;
  letter-spacing: -0.004em;
  font-weight: 400;
  color: var(--wlcs-text-primary);
  margin: 0;
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 14px;
}
.wlcs-legal-section-num {
  font-family: var(--wlcs-font-mono);
  font-size: 12px;
  letter-spacing: var(--wlcs-tracking-wide);
  text-transform: uppercase;
  color: var(--wlcs-accent);
  font-weight: 500;
  position: relative;
  top: -2px;
}
.wlcs-legal-body p {
  font-family: var(--wlcs-font-body);
  font-size: var(--wlcs-text-body);
  line-height: var(--wlcs-leading-body);
  color: var(--wlcs-text-secondary);
  margin: 0;
}
.wlcs-legal-body p + p { margin-top: var(--wlcs-space-sm); }
.wlcs-legal-body ul,
.wlcs-legal-body ol {
  font-family: var(--wlcs-font-body);
  font-size: var(--wlcs-text-body);
  line-height: var(--wlcs-leading-body);
  color: var(--wlcs-text-secondary);
  padding-left: 1.4em;
  margin: 0;
  display: flex;
  flex-direction: column;
  gap: 6px;
}
.wlcs-legal-body ul li::marker { color: var(--wlcs-accent); }
.wlcs-legal-body ol li::marker { color: var(--wlcs-accent); font-family: var(--wlcs-font-mono); font-size: 13px; }
.wlcs-legal-aside {
  font-family: var(--wlcs-font-display);
  font-style: italic;
  font-size: 15px;
  line-height: 1.6;
  color: var(--wlcs-text-muted);
  border-top: 1px solid var(--wlcs-rule-soft);
  padding-top: var(--wlcs-space-md);
}
.wlcs-legal-short {
  background: var(--wlcs-paper-50);
  border-left: 2px solid var(--wlcs-accent);
  padding: var(--wlcs-space-md) var(--wlcs-space-md);
}
.wlcs-legal-short p { color: var(--wlcs-text-primary); }
.wlcs-legal-body .wlcs-price-list { margin-top: 4px; }
.wlcs-legal-body .wlcs-price-row { align-items: baseline; }
.wlcs-legal-body .wlcs-price-row-value {
  max-width: 38ch;
  text-align: right;
}
.wlcs-legal-contact {
  border-top: 1px solid var(--wlcs-rule-hard);
  padding-top: var(--wlcs-space-lg);
  margin-top: var(--wlcs-space-xl);
  display: grid;
  grid-template-columns: auto 1fr;
  column-gap: var(--wlcs-space-lg);
  row-gap: var(--wlcs-space-sm);
  max-width: 64ch;
}
.wlcs-legal-contact dt {
  font-family: var(--wlcs-font-mono);
  font-size: 11px;
  letter-spacing: var(--wlcs-tracking-wide);
  text-transform: uppercase;
  color: var(--wlcs-text-muted);
  padding-top: 4px;
}
.wlcs-legal-contact dd {
  margin: 0;
  font-family: var(--wlcs-font-body);
  font-size: var(--wlcs-text-body);
  color: var(--wlcs-text-primary);
}
.wlcs-legal-contact a {
  color: var(--wlcs-text-primary);
  text-decoration: none;
  border-bottom: 1px solid var(--wlcs-rule-soft);
  transition: color var(--wlcs-dur-fast) var(--wlcs-ease),
              border-color var(--wlcs-dur-fast) var(--wlcs-ease);
}
.wlcs-legal-contact a:hover {
  color: var(--wlcs-accent);
  border-bottom-color: var(--wlcs-accent);
}

/* ============================================================
   RESPONSIVE OVERRIDES for absorbed page patterns
   ============================================================ */

@media (max-width: 1024px) {
  .wlcs-service-block,
  .wlcs-service-block--reverse {
    grid-template-columns: 1fr;
    row-gap: var(--wlcs-space-lg);
  }
  .wlcs-service-block--reverse .wlcs-service-block-image { order: 1; }
  .wlcs-service-block--reverse .wlcs-service-block-content { order: 2; }
  .wlcs-service-block-caption { text-align: left; }
  .wlcs-service-block-headline { max-width: 100%; }
  .wlcs-service-block-lead { max-width: 100%; }
  .wlcs-service-block-body { max-width: 100%; }

  .wlcs-map-placeholder { padding: var(--wlcs-space-lg); }
  .wlcs-map-placeholder::before { inset: 16px; }

  .wlcs-enquiry { grid-template-columns: 1fr; row-gap: var(--wlcs-space-xl); }
  .wlcs-contact-panel { position: static; }

  .wlcs-faq-group {
    grid-template-columns: 1fr;
    row-gap: var(--wlcs-space-md);
    padding: var(--wlcs-space-lg) 0;
  }
  .wlcs-faq-group-head {
    position: static;
    flex-direction: row;
    align-items: center;
    gap: var(--wlcs-space-sm);
  }
  .wlcs-faq-group-rule { flex: 1; max-width: 80px; }

  .wlcs-page-header--legal { min-height: 320px; }
  .wlcs-page-header--legal .wlcs-page-header-content { padding-top: 120px; }
  .wlcs-page-header--legal .wlcs-page-header-headline { font-size: var(--wlcs-text-h1); }
  .wlcs-legal-toc { border-top: none; padding-top: 0; }
  .wlcs-legal-body { max-width: 100%; }
  .wlcs-legal-body .wlcs-price-row-value { max-width: 100%; text-align: left; }
}

@media (max-width: 768px) {
  .wlcs-service-block-lead { font-size: 19px; }

  .wlcs-map-placeholder { aspect-ratio: 4 / 5; }
  .wlcs-map-placeholder-caption { font-size: 24px; }

  .wlcs-form-grid { grid-template-columns: 1fr; }
  .wlcs-contact-panel-phone { font-size: 28px; }
  .wlcs-contact-panel { padding: var(--wlcs-space-md); }

  .wlcs-faq-q { font-size: 19px; }
  .wlcs-faq-item summary { padding: var(--wlcs-space-sm) 0; }

  body[data-page="journal"] .wlcs-journal-card .wlcs-journal-title { font-size: 20px; }

  .wlcs-article { padding-top: var(--wlcs-space-lg); }
  .wlcs-article-body p { font-size: 16px; line-height: 1.7; }
  .wlcs-article-body > p:first-of-type::first-letter {
    font-size: 44px;
    padding: 4px 10px 0 0;
  }
  .wlcs-article-pull { font-size: 22px; }
  .wlcs-article-related .wlcs-journal { grid-template-columns: 1fr; }

  .wlcs-page-header--legal { min-height: 280px; }
  .wlcs-page-header--legal .wlcs-page-header-content { padding-top: 104px; padding-bottom: var(--wlcs-space-lg); }
  .wlcs-page-header--legal .wlcs-page-header-lede { font-size: 18px; }
  .wlcs-legal-section-headline { font-size: 22px; }
  .wlcs-legal-contact { grid-template-columns: 1fr; row-gap: 4px; }
  .wlcs-legal-contact dt { padding-top: var(--wlcs-space-sm); }
}

@media (max-width: 478px) {
  .wlcs-form { gap: var(--wlcs-space-md); }
  .wlcs-form-grid { row-gap: var(--wlcs-space-md); }
}

/* ============================================================
   BRICKS COMPATIBILITY LAYER
   ============================================================
   This system was written for normal block flow, where a div fills its
   parent for free. All four Bricks layout elements (Section / Container /
   Block / Div) are flex containers, and a Div has NO default width — it is
   content-sized. Every plate on this site is an EMPTY div sized by
   aspect-ratio alone, so a plate built as a Div collapses to 0 x 0 and the
   page loses its photography with no error reported anywhere.

   These rules are no-ops in the static pages: every element listed already
   sits in a grid cell or a flex-column parent, where it stretches by
   default. They only bite in a builder. Safe to keep everywhere.

   Deliberately NOT covered: .wlcs-hero-plate (width 110%) and
   .wlcs-page-header-plate (104%) carry intentional parallax overscan.
   Never fold them into a blanket width rule.
   ============================================================ */

/* Plates — empty divs whose only size is an aspect ratio */
.wlcs-service-plate,
.wlcs-rail-plate,
.wlcs-journal-plate,
.wlcs-cta-plate,
.wlcs-service-block-plate,
.wlcs-article-image-plate,
.wlcs-showreel-plate {
  width: 100%;
}

/* The wrappers those plates sit in — grid cells and flex-column parents
   today, all candidates to be rebuilt as content-sized Divs in Bricks */
.wlcs-service,
.wlcs-journal-card,
.wlcs-facility-rail,
.wlcs-service-block-image,
.wlcs-article-image {
  width: 100%;
}

/* Media safety — this design paints with background-image plates, but any
   Bricks Image element the dev drops in inherits sane behaviour from here */
img, svg, video {
  max-width: 100%;
  height: auto;
}

/* ---- Builder canvas: never hide anything ----
   Inside the Bricks editor the reveal and nav-entrance states must not apply.
   The observer that clears them cannot do its job there — the canvas scrolls
   inside an iframe and Bricks re-renders nodes after our script has run — so
   the editor fills up with elements sitting at opacity 0 and the page looks
   empty while you are trying to build it.

   !important is deliberate: this has to beat GSAP's inline styles as well as
   our own classes. Both selectors are scoped to the builder body, so the
   frontend is untouched either way. Bricks marks the frontend body
   `bricks-is-frontend`; the second selector catches the builder without
   depending on the exact builder class name. */
body.bricks-is-builder .wlcs-reveal,
body.bricks-is-builder .wlcs-nav,
body.bricks-is-builder .wlcs-mask,
body.brx-body:not(.bricks-is-frontend) .wlcs-reveal,
body.brx-body:not(.bricks-is-frontend) .wlcs-nav,
body.brx-body:not(.bricks-is-frontend) .wlcs-mask {
  opacity: 1 !important;
  transform: none !important;
  clip-path: none !important;
  /* Transitions outrank !important in the cascade, so a half-run transition
     would otherwise keep an element pinned at its start value. Nothing should
     be animating in the editor anyway. */
  transition: none !important;
  animation: none !important;
}

/* Overscan plates — Bricks caps its elements at max-width: 100%, which
   silently clips the hero plate's 110% (and the page header's 104%) back to
   the section width. The plate then sits offset by its own left: -5% and
   leaves a bare strip down the right-hand edge of the section. Measured on
   staging: computed width 1280px instead of 1408px, 38px of exposed section.
   The compound selector also keeps `position: absolute` ahead of the generic
   .wlcs-plate { position: relative }, which Bricks re-emits AFTER the
   specific rule when it converts these to Global Classes — same specificity,
   later in source, so it would otherwise win. */
.wlcs-plate.wlcs-hero-plate,
.wlcs-plate.wlcs-page-header-plate {
  position: absolute;
  max-width: none;
}

/* The hero headline's wrapper is an unclassed <div> in our own markup, so it
   becomes a plain Bricks Div — a content-sized flex item that shrinks to the
   longest word and caps the h1 far below its 648px max-width. Measured on
   staging: h1 rendered at 342px. Growing the wrapper costs nothing in the
   static pages, where the h1's own max-width already governs. */
.wlcs-hero-bottom > div {
  flex: 1 1 auto;
  min-width: 0;
}

/* Base page styles, re-homed onto the Bricks body.
   `.wlcs-page` carries the background, colour, font family, size and leading
   for the whole site, and it lives on <body> in the static pages. Bricks owns
   its own <body> and stamps it `brx-body`, so without this the entire base
   layer is missing: white background, 15px system font, Bricks' grey text.
   Scoped to .brx-body, so it is inert outside a Bricks install. */
body.brx-body {
  background: var(--wlcs-surface-page);
  color: var(--wlcs-text-primary);
  font-family: var(--wlcs-font-body);
  font-size: var(--wlcs-text-body);
  line-height: var(--wlcs-leading-body);
}

/* Bricks sets align-items: center on its layout elements. None of these
   wrappers declare their own cross-axis alignment, so that default leaks in
   and centres editorial content that should span the column — and, worse,
   shrinks empty aspect-ratio plates to nothing. Stretch is the block-flow
   behaviour these were written against, so this is a no-op in the static
   pages. Any wrapper that genuinely centres declares align-items itself
   earlier in this file and is untouched here. */
.wlcs-hero,
.wlcs-page-header,
.wlcs-section,
.wlcs-container,
.wlcs-service,
.wlcs-journal-card,
.wlcs-facility-rail,
.wlcs-service-block-image,
.wlcs-article-image {
  align-items: stretch;
}

/* ============================================================
   IMAGE HOOKS — every plate is painted from here
   ============================================================
   The JS no longer holds any image map. Each plate in the markup
   carries data-asset="KEY"; drop a URL into the matching rule below
   and the plate paints. Leave a rule empty and the plate keeps its
   gradient placeholder from .wlcs-plate — nothing breaks.

   Two plate shapes exist in the markup, so each key targets both:
     · flat plate    → <div class="wlcs-plate" data-asset="KEY">
     · zooming plate → <div data-asset="KEY"><div class="wlcs-plate-inner">
   The inner div is the one that scales on hover, so it must carry the
   image on hoverable plates. Painting both is safe either way.

   Keep this block LAST in the file — it must out-order the gradient
   placeholders in .wlcs-plate / --warm / --parchment.

   Bricks note: attribute selectors land in element Custom CSS on paste
   and render correctly. A dev who prefers native controls can instead
   set each plate's background image in the Bricks panel and delete the
   corresponding rule here.
   ============================================================ */

[data-asset],
[data-asset] > .wlcs-plate-inner {
  background-size: cover;
  background-position: center;
  background-repeat: no-repeat;
}

/* ----- Hero / page-opener plates ----- */

/* HERO_COUPE_A · location.html page-header */
[data-asset="HERO_COUPE_A"],
[data-asset="HERO_COUPE_A"] > .wlcs-plate-inner {
  /* background-image: url(''); */
}

/* HERO_COUPE_C · index journal card · journal.html · all 3 journal articles */
[data-asset="HERO_COUPE_C"],
[data-asset="HERO_COUPE_C"] > .wlcs-plate-inner {
  /* background-image: url(''); */
}

/* HERO_COUPE_D · index.html hero plate (parallax · #wlcs-hero-plate) */
[data-asset="HERO_COUPE_D"],
[data-asset="HERO_COUPE_D"] > .wlcs-plate-inner {
  /* background-image: url(''); */
}

/* ----- Facility ----- */

/* ENTRANCE · index services · the-facility rail 01 · location.html */
[data-asset="ENTRANCE"],
[data-asset="ENTRANCE"] > .wlcs-plate-inner {
  /* background-image: url(''); */
}

/* GATE_DAWN · CTA plate on every page (#wlcs-cta-plate) */
[data-asset="GATE_DAWN"],
[data-asset="GATE_DAWN"] > .wlcs-plate-inner {
  /* background-image: url(''); */
}

/* WIDE_FACILITY_1 · index services · services.html · the-facility page-header */
[data-asset="WIDE_FACILITY_1"],
[data-asset="WIDE_FACILITY_1"] > .wlcs-plate-inner {
  /* background-image: url(''); */
}

/* WIDE_FACILITY_2 · index rail 02 · services.html · the-facility rail 02 */
[data-asset="WIDE_FACILITY_2"],
[data-asset="WIDE_FACILITY_2"] > .wlcs-plate-inner {
  /* background-image: url(''); */
}

/* INTERIOR_VINTAGE_A · index services · the-facility security block */
[data-asset="INTERIOR_VINTAGE_A"],
[data-asset="INTERIOR_VINTAGE_A"] > .wlcs-plate-inner {
  /* background-image: url(''); */
}

/* INTERIOR_VINTAGE_B · index founder note · journal.html · journal articles */
[data-asset="INTERIOR_VINTAGE_B"],
[data-asset="INTERIOR_VINTAGE_B"] > .wlcs-plate-inner {
  /* background-image: url(''); */
}

/* ----- Care + detail stills ----- */

/* CINEMATIC · index care note · faqs · journal.html · 2 journal articles */
[data-asset="CINEMATIC"],
[data-asset="CINEMATIC"] > .wlcs-plate-inner {
  /* background-image: url(''); */
}

/* CREAM_STILL · index rail 03 · the-facility rail 03 · legal/privacy */
[data-asset="CREAM_STILL"],
[data-asset="CREAM_STILL"] > .wlcs-plate-inner {
  /* background-image: url(''); */
}

/* CLOTH · services.html valeting block */
[data-asset="CLOTH"],
[data-asset="CLOTH"] > .wlcs-plate-inner {
  /* background-image: url(''); */
}

/* ENGINE_BAY · index climate block · services.html · journal-battery-charging */
[data-asset="ENGINE_BAY"],
[data-asset="ENGINE_BAY"] > .wlcs-plate-inner {
  /* background-image: url(''); */
}

/* KEYS · index quick-access · journal.html · pricing · legal/terms */
[data-asset="KEYS"],
[data-asset="KEYS"] > .wlcs-plate-inner {
  /* background-image: url(''); */
}

/* TRANSPORT · index collection + delivery · services.html */
[data-asset="TRANSPORT"],
[data-asset="TRANSPORT"] > .wlcs-plate-inner {
  /* background-image: url(''); */
}