/* ─────────────────────────────────────────
   CUSTOM FONTS
───────────────────────────────────────── */
@font-face {
  font-family: 'The Roletta';
  src: url('../fonts/the-roletta.woff2') format('woff2');
  font-weight: normal;
  font-style: normal;
  font-display: swap;
}

/*
 * Wed & Prosper — Base Design System
 * ====================================
 * Include this file on every page:
 *   <link rel="stylesheet" href="../css/base.css">  (from sub-pages)
 *   <link rel="stylesheet" href="css/base.css">     (from root)
 *
 * TYPOGRAPHY SCALE
 * ─────────────────────────────────────────
 *   Display / headings : Cormorant Garamond, weight 300 (italic variant available)
 *   Body / UI          : Lato, weight 300–400
 *
 *   .sz1  clamp(44px, 4.8vw, 76px)  — hero / section hero headings
 *   .sz2  clamp(34px, 3.6vw, 58px)  — section headings
 *   .sz3  clamp(24px, 2.6vw, 40px)  — sub-headings
 *   .philo h2 / .cta h2  clamp(26px, 3.6vw, 50px)  — editorial statements
 *   .body p / .sect-p    17px        — primary body copy, section intros
 *   .card-body           16px        — service/card/column body text
 *   .supp-body           15px        — compact grid cells, supporting copy
 *   .eyebrow             11px        — section labels (all-caps, tracked)
 *   .btn-d / .btn-l      10px        — CTA buttons / text links
 *   .ft-email (footer)   13px
 *
 * SPACING TOKENS — GOSPEL, do not deviate
 * ─────────────────────────────────────────
 *   Section vertical padding : 96–128px desktop
 *   Inner content padding    : 5vw horizontal
 *   Rule line                : .5px solid var(--rule)
 *   Blush accent rule        : 32px × 1px, var(--blush)
 *
 * EYEBROW → RULE → HEADING PATTERN (canonical):
 *   eyebrow mb:28px → .rule-b or .philo-line (mt:0, mb:28px) → heading
 *   Secondary sections may use smaller eyebrow mb (12–18px); rule mb stays 28px
 *
 * COLOUR PALETTE
 * ─────────────────────────────────────────
 *   --teal   #205056  Deep Teal    (primary brand, nav overlay, footer, headings)
 *   --teal-m #2D7A83  Mid Teal     (eyebrows, interactive states)
 *   --blush  #D4A89A  Dusty Blush  (accent rules, ornaments)
 *   --petal  #F5E8E4  Petal        (alternate section backgrounds)
 *   --cream  #FAF8F5  Warm White   (default page background)
 *   --ink    #1A1A18  Near-black   (primary text)
 *   --ink-m  #4A4A46  Mid ink      (body copy)
 *   --ink-l  #8A8A84  Light ink    (metadata, captions)
 *   --rule   rgba(32,80,86,0.10)   (divider lines)
 */

/* ─────────────────────────────────────────
   DESIGN TOKENS
───────────────────────────────────────── */
:root {
  --teal:    #205056;
  --teal-m:  #2D7A83;
  --blush:   #D4A89A;
  --petal:   #F5E8E4;
  --cream:   #FAF8F5;
  --ink:     #1A1A18;
  --ink-m:   #4A4A46;
  --ink-l:   #8A8A84;
  --rule:    rgba(32,80,86,0.10);
}

/* ─────────────────────────────────────────
   RESET & BASE
───────────────────────────────────────── */
*,*::before,*::after { box-sizing:border-box; margin:0; padding:0 }
html { scroll-behavior:smooth; overflow-x:hidden }
img { height:auto } /* prevent HTML width/height attrs from stretching when CSS overrides only width — applies aspect-ratio from attrs without forcing literal pixel height */
body {
  font-family:'Lato',sans-serif;
  background:var(--cream);
  color:var(--ink);
  overflow-x:hidden
}

/* Grain texture overlay */
body::before {
  content:''; position:fixed; inset:0; pointer-events:none; z-index:9999; opacity:.025;
  background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
  background-size:180px
}

/* ─────────────────────────────────────────
   SCROLL REVEAL — progressive enhancement
   JS adds .js to <body>; elements start
   visible, fade-up only when JS runs.
───────────────────────────────────────── */
.js .r { opacity:0; transform:translateY(20px); transition:opacity .8s ease, transform .8s ease }
.js .r.in { opacity:1; transform:none }
.js .d1 { transition-delay:.1s } .js .d2 { transition-delay:.2s }
.js .d3 { transition-delay:.3s } .js .d4 { transition-delay:.4s }

/* ─────────────────────────────────────────
   TYPOGRAPHY UTILITIES
───────────────────────────────────────── */

/* Eyebrow labels — "WELCOME", "OUR SERVICES" etc. */
.eyebrow {
  display:block; font-size:11px; letter-spacing:.26em;
  text-transform:uppercase; color:var(--teal-m)
}

/* ─────────────────────────────────────────
   CANONICAL EYEBROW → RULE → HEADING PATTERN
   Always: eyebrow (mb:28px) → rule (mt:0, mb:28px) → heading
   For secondary contexts use smaller eyebrow mb (12–18px) — rule mb stays 28px
───────────────────────────────────────── */

/* Blush accent rules — draw in on scroll via IntersectionObserver (.in class) */
/* Base: visible at 32px. Page CSS sets width:0 as animation start state. */
.rule-b  { display:block; width:32px; height:1px; background:var(--blush); margin:0 0 28px }
.philo-line { display:block; width:32px; height:1px; background:var(--blush); margin:0 0 28px }
/* Guarantee: nothing immediately following a rule line can add extra top space */
.rule-b + *, .philo-line + * { margin-top:0 }

/* Display headings — Cormorant Garamond */
.dh { font-family:'Cormorant Garamond',serif; font-weight:300; color:var(--teal); line-height:1.0; letter-spacing:-.01em }
.dh em { font-style:italic }
.sz1 { font-size:clamp(52px,4.8vw,76px) }
.sz2 { font-size:clamp(40px,3.6vw,58px) }
.sz3 { font-size:clamp(24px,2.6vw,40px) }

/* Body copy block */
.body { margin-top:28px }
.body p { font-size:17px; font-weight:300; color:var(--ink-m); line-height:1.9; margin-bottom:18px }

/* ─────────────────────────────────────────
   SHARED BODY TEXT SCALE — use these on all inner pages
   .sect-p  : 17px — section intro paragraphs, primary editorial body
   .card-body: 16px — service/card/column body text
   .supp-body: 15px — compact grid cells, captions, supporting copy
───────────────────────────────────────── */
.sect-p   { font-size:17px; font-weight:300; color:var(--ink-m); line-height:1.85 }
.card-body { font-size:16px; font-weight:300; color:var(--ink-m); line-height:1.85 }
.supp-body { font-size:15px; font-weight:300; color:var(--ink-m); line-height:1.8 }

/* CTA buttons */
.btn-d {
  display:inline-block; background:var(--teal); color:#fff;
  font-size:10px; letter-spacing:.2em; text-transform:uppercase;
  padding:14px 30px; text-decoration:none; transition:background .2s
}
.btn-d:hover { background:var(--teal-m) }
.btn-l {
  display:inline-block; color:var(--ink-l); font-size:10px; letter-spacing:.2em;
  text-transform:uppercase; text-decoration:none;
  border-bottom:.5px solid currentColor; padding-bottom:2px; transition:color .2s
}
.btn-l:hover { color:var(--teal) }
.brow { display:flex; gap:24px; align-items:center; flex-wrap:wrap; margin-top:32px }

/* ─────────────────────────────────────────
   NAVIGATION
───────────────────────────────────────── */
#nav {
  position:fixed; top:0; left:0; right:0; z-index:200;
  padding:0 6px 0 5vw;
  transition:background .5s ease, box-shadow .5s ease
}
#nav.s {
  background:rgba(250,248,245,.96);
  backdrop-filter:blur(12px);
  box-shadow:0 1px 0 var(--rule)
}
#nav.mob-open {
  background:transparent !important;
  backdrop-filter:none !important;
  box-shadow:none !important;
  z-index:400
}
.ni {
  display:flex; align-items:center; justify-content:flex-end;
  height:72px; max-width:1400px; margin:0 auto
}

/* Nav scroll-state logo — appears only when nav goes cream */
.nav-logo-link {
  margin-right:auto; margin-left:-73px;
  display:flex; align-items:center;
  opacity:0; visibility:hidden;
  transform:translateY(-4px);
  transition:opacity .45s ease, transform .45s ease, visibility 0s linear .45s
}
#nav.s .nav-logo-link {
  opacity:1; visibility:visible;
  transform:translateY(0);
  transition:opacity .45s ease, transform .45s ease, visibility 0s linear 0s
}
.nav-logo { height:45px; width:auto; display:block }

/* Nav trigger — word "MENU" (replaces the 2 burger lines). Per-page colour
   overrides live in each page's inline <style> as `.ham::before { color: … }`. */
.ham { display:flex; flex-direction:row; align-items:center; gap:0; cursor:pointer; background:none; border:none; padding:8px 2px }
.ham span { display:none }
.ham::before {
  content:"Menu";
  font-family:'Lato',sans-serif;
  font-size:13px; font-weight:400;
  letter-spacing:.26em; text-transform:uppercase;
  color:rgba(255,255,255,.94); line-height:1;
  text-shadow:0 1px 14px rgba(20,18,16,.45);
  transition:color .3s ease;
}
#nav.s .ham::before { color:var(--teal); text-shadow:none }
#nav.mob-open .ham::before { color:rgba(255,255,255,.94) !important; text-shadow:0 1px 14px rgba(20,18,16,.45) }
.ham.o::before { content:"Close" }

/* Full-screen menu overlay — fade in/out */
.mob {
  display:flex; align-items:center; justify-content:center;
  position:fixed; inset:0; z-index:300; background:rgba(20,18,16,.55);
  visibility:hidden; opacity:0;
  transition:opacity .4s ease, visibility 0s linear .4s
}
.mob.o {
  visibility:visible; opacity:1;
  transition:opacity .4s ease, visibility 0s linear 0s
}
/* Logo monogram — floats behind menu items, no layout impact */
.mob-nav-logo {
  position:absolute;
  top:320px; left:330px;
  width:clamp(287px,36.9vw,534px);
  filter:brightness(0);
  opacity:.06;
  transform:rotate(-10deg);
  transform-origin:top left;
  pointer-events:none;
  z-index:0
}

.mob-inner {
  display:grid; grid-template-columns:auto auto;
  justify-content:center;
  gap:96px; padding:72px 80px 80px 80px;
  background:var(--cream);
  border-radius:3px;
  box-shadow:0 24px 80px rgba(0,0,0,.22), 0 6px 20px rgba(0,0,0,.1);
  max-width:1080px; width:92vw;
  max-height:90vh; overflow:hidden;
  align-items:start;
  position:relative; z-index:1
}

.mob-lbl {
  display:block; font-size:9px; letter-spacing:.26em; text-transform:uppercase;
  color:var(--teal-m); margin-bottom:28px;
  padding-bottom:18px; border-bottom:.5px solid var(--rule)
}

/* Numbered counter */
.mob-nav { display:flex; flex-direction:column; counter-reset:nav-counter }
.mob-nav a {
  font-family:'Cormorant Garamond',serif; font-style:italic; font-weight:300;
  font-size:clamp(38px,3.6vw,50px); line-height:1.35;
  color:var(--teal); text-decoration:none; letter-spacing:-.01em;
  display:inline-flex; align-items:center; white-space:nowrap;
  counter-increment:nav-counter;
  opacity:0; transform:translateY(18px);
  transition:opacity .2s, transform .2s, color .25s, letter-spacing .25s
}
.mob-nav a::before {
  content:counter(nav-counter, decimal-leading-zero);
  font-family:'Lato',sans-serif; font-size:13px; font-weight:300;
  letter-spacing:.14em; color:var(--blush);
  margin-right:24px; flex-shrink:0; position:relative; top:-2px
}
/* staggered entry */
.mob.o .mob-nav a {
  opacity:1; transform:translateY(0);
  transition:
    opacity .5s ease calc(var(--i,0) * 65ms + 180ms),
    transform .5s ease calc(var(--i,0) * 65ms + 180ms),
    color .25s, letter-spacing .25s
}
.mob-nav a:hover { color:var(--teal-m); transform:translateX(10px); letter-spacing:.01em }
@media(min-width:769px) { .mob-nav .mob-svc-link { display:none } }
.mob-svc-back { display:none }

.mob-col-main { position:relative; left:-50px }
.mob-col-sub { display:flex; flex-direction:column; gap:52px }

.mob-sub-nav { display:flex; flex-direction:column }
.mob-sub-nav a {
  font-family:'Cormorant Garamond',serif; font-style:italic; font-weight:300;
  font-size:clamp(15px,1.6vw,22px); color:var(--ink-m);
  text-decoration:none; line-height:1.85; transition:color .2s
}
.mob-sub-nav a:hover { color:var(--teal) }

/* Sister company row — spans both columns at the bottom of the nav overlay */
.mob-sister {
  grid-column: 1 / -1;
  display:block;
  margin-top:-14px; padding-top:32px;
  border-top:.5px solid var(--rule);
  text-decoration:none; color:inherit;
  position:relative; z-index:1;
}
.mob-sister-lbl {
  display:block;
  font-family:'Lato',sans-serif; font-size:9px; font-weight:300;
  letter-spacing:.26em; text-transform:uppercase;
  color:var(--teal-m);
  margin-bottom:22px;
}
.mob-sister-row {
  display:flex; align-items:center; gap:28px;
  transition: opacity .25s ease;
}
.mob-sister:hover .mob-sister-row { opacity:.78 }
.mob-sister:focus-visible { outline:2px solid var(--teal-m); outline-offset:6px; border-radius:3px }
.mob-sister-logo {
  height:42px; width:auto; display:block;
  opacity:.88;
  transition: opacity .25s ease;
}
.mob-sister:hover .mob-sister-logo { opacity:1 }
.mob-sister-desc {
  font-family:'Cormorant Garamond',serif; font-style:italic; font-weight:300;
  font-size:19px; color:var(--ink-m); line-height:1;
}
.mob-sister-arrow {
  margin-left:auto;
  font-family:'Lato',sans-serif; font-size:18px; font-weight:300;
  color:var(--teal-m);
  transition: transform .3s ease;
}
.mob-sister:hover .mob-sister-arrow { transform:translateX(8px) }
.mob.mob-events-open .mob-sister {
  opacity:0; pointer-events:none; transform:translateY(-14px);
  transition: opacity .3s ease, transform .3s ease;
}

/* Events coming-soon panel */
.mob-events-panel {
  position:absolute; inset:0; border-radius:3px;
  display:flex; flex-direction:column; align-items:center; justify-content:center;
  text-align:center; padding:clamp(32px,5vw,64px);
  opacity:0; pointer-events:none;
  transition:opacity .35s ease;
}
.mob.mob-events-open .mob-col-main,
.mob.mob-events-open .mob-col-sub {
  opacity:0; pointer-events:none; transform:translateY(-14px);
  transition:opacity .3s ease, transform .3s ease;
}
.mob.mob-events-open .mob-events-panel {
  opacity:1; pointer-events:auto;
  transition:opacity .4s ease .25s;
}
.mob-events-close {
  position:absolute; top:28px; right:32px;
  background:none; border:none; cursor:pointer;
  font-family:'Lato',sans-serif; font-size:20px; line-height:1;
  color:var(--teal-m); opacity:.7;
  transition:opacity .2s, transform .2s;
}
.mob-events-close:hover { opacity:1; transform:scale(1.2) rotate(90deg) }
.mob-events-heading {
  font-family:'Cormorant Garamond',serif; font-style:italic; font-weight:300;
  font-size:clamp(38px,3.8vw,58px); color:var(--teal); letter-spacing:-.01em;
  margin-bottom:18px; opacity:0; transform:translateY(16px);
  transition:opacity .5s ease .4s, transform .5s ease .4s;
}
.mob-events-sub {
  font-family:'Cormorant Garamond',serif; font-style:italic; font-weight:300;
  font-size:clamp(16px,1.6vw,22px); color:var(--ink-m); letter-spacing:.02em;
  margin-bottom:20px; opacity:0; transform:translateY(12px);
  transition:opacity .5s ease .5s, transform .5s ease .5s;
}
.mob-events-body {
  font-family:'Lato',sans-serif; font-weight:300; font-size:14px;
  color:var(--ink-m); max-width:340px; line-height:1.75;
  margin-bottom:36px; opacity:0; transform:translateY(10px);
  transition:opacity .5s ease .58s, transform .5s ease .58s;
}
.mob-events-cta {
  display:inline-block; padding:14px 40px;
  background:var(--petal); color:var(--teal);
  font-family:'Lato',sans-serif; font-size:10px; font-weight:400;
  letter-spacing:.22em; text-transform:uppercase; text-decoration:none;
  border:1px solid var(--blush); border-radius:1px;
  opacity:0; transform:translateY(8px);
  transition:opacity .5s ease .65s, transform .5s ease .65s,
             background .25s, color .25s;
}
.mob-events-cta:hover { background:var(--blush); color:#fff }
.mob.mob-events-open .mob-events-heading,
.mob.mob-events-open .mob-events-sub,
.mob.mob-events-open .mob-events-body,
.mob.mob-events-open .mob-events-cta {
  opacity:1; transform:translateY(0);
}
@media(max-width:768px) {
  .mob-events-close { top:20px; right:20px }
  .mob-events-panel { padding:clamp(24px,6vw,48px) }
}

/* Mobile menu overrides */
@media(max-width:768px) {
  .mob { background:rgba(20,18,16,.55) }
  .mob-inner { display:flex; flex-direction:column; align-items:center; justify-content:center; gap:8px; padding:48px clamp(32px,6vw,72px); min-height:80vh; max-height:none; background:var(--cream); border-radius:3px; width:88vw; box-shadow:0 24px 60px rgba(0,0,0,.35) }
  .mob-col-main { left:0; display:flex; flex-direction:column; align-items:center }
  .mob-col-sub {
    display:none; flex-direction:column; align-items:center; gap:20px;
    position:static; inset:auto; opacity:1; transform:none; pointer-events:auto;
  }
  .mob.mob-svc-open .mob-col-main { display:none }
  .mob.mob-svc-open .mob-col-sub { display:flex }

  .mob-svc-back {
    display:block;
    background:none; border:none; cursor:pointer;
    font-family:'Lato',sans-serif; font-size:11px; letter-spacing:.2em;
    text-transform:uppercase; color:var(--teal); opacity:.6;
    padding:0; margin-top:28px;
    text-decoration:underline; text-underline-offset:4px;
    order:99
  }
  .mob-col-sub .mob-lbl { display:block; text-align:center; color:var(--teal-m) }
  .mob-col-sub .mob-sub-nav { align-items:center }
  .mob-col-sub .mob-sub-nav a { font-size:26px; color:var(--teal); opacity:1; text-align:center; line-height:1.7 }

  .mob-lbl { display:none }
  .mob-nav-logo { display:none }
  .mob-nav { align-items:center; gap:16px }
  .mob-nav a { font-style:italic; font-size:32px; color:var(--teal) !important; letter-spacing:0 !important }
  .mob.o .mob-nav a { animation:fup .5s ease forwards; animation-delay:calc(var(--i,0) * 65ms + 180ms) }
  .mob-nav a::before { display:none }
  .mob-nav .mob-svc-link { display:inline-block }

  /* Sister row — last in-flow flex child, centered together with the active group */
  .mob-sister {
    position:static;
    align-self:stretch; order:99;
    margin-top:32px; padding-top:20px;
    text-align:center;
    border-top:.5px solid var(--rule);
  }
  .mob-sister-lbl { margin-bottom:8px; font-size:8px }
  .mob-sister-row { flex-direction:column; gap:6px }
  .mob-sister-logo { height:22px; margin:0 auto }
  .mob-sister-desc { font-size:12px }
  .mob-sister-arrow { display:none }
  .mob.mob-events-open .mob-sister {
    opacity:0; pointer-events:none;
    transition: opacity .3s ease;
  }
}

/* iPhone SE-class: services drilldown content makes the popup tall enough to sit under
   the trigger. Switch the word to teal so it stays visible against the cream. */
@media(max-height:680px) {
  .mob.mob-svc-open ~ #nav.mob-open .ham::before { color:var(--teal) !important; text-shadow:none }
}

/* ─────────────────────────────────────────
   FOOTER
───────────────────────────────────────── */
footer {
  background:var(--teal);
  padding:60px 5vw 36px;
  text-align:center;
  position:relative
}
.ft-logo {
  width:148px; filter:brightness(0) invert(1); opacity:.88;
  display:block; margin:0 auto 22px
}
.ft-tag {
  font-family:'Cormorant Garamond',serif; font-style:italic; font-weight:300;
  font-size:19px; color:rgba(255,255,255,.48); line-height:1.7;
  max-width:380px; margin:0 auto 22px
}
.ft-orn {
  display:block; width:28px; height:1px; background:#D4A89A;
  opacity:.35; margin:0 auto 22px
}
.ft-email {
  display:block; font-size:13px; font-weight:300; letter-spacing:.06em;
  color:rgba(255,255,255,.52); text-decoration:none;
  margin-bottom:28px; transition:color .25s
}
.ft-email:hover { color:#fff }
.ft-soc {
  display:flex; gap:32px; justify-content:center;
  flex-wrap:wrap; margin-bottom:36px
}
.ft-soc a {
  font-size:9px; letter-spacing:.24em; text-transform:uppercase;
  color:rgba(255,255,255,.28); text-decoration:none; transition:color .25s
}
.ft-soc a:hover { color:rgba(255,255,255,.75) }
.ft-legal {
  font-size:10px; letter-spacing:.04em; color:rgba(255,255,255,.15);
  border-top:.5px solid rgba(255,255,255,.07); padding-top:24px
}
.ft-ll {
  position:absolute; right:40px; top:50%;
  transform:translateY(-50%) rotate(90deg);
  display:flex; gap:22px
}
.ft-ll a {
  font-size:9px; letter-spacing:.18em; text-transform:uppercase;
  color:rgba(255,255,255,.22); text-decoration:none;
  transition:color .2s; white-space:nowrap
}
.ft-ll a:hover { color:rgba(255,255,255,.6) }

/* Footer sister-company line — sits between social icons and legal text */
.ft-sister {
  display:inline-flex; align-items:baseline; gap:12px;
  margin:0 auto 32px;
  text-decoration:none;
  transition: opacity .25s ease;
}
.ft-sister:focus-visible { outline:2px solid rgba(255,255,255,.5); outline-offset:6px; border-radius:3px }
.ft-sister-lbl {
  font-family:'Lato',sans-serif; font-size:9px; font-weight:300;
  letter-spacing:.24em; text-transform:uppercase;
  color:rgba(255,255,255,.4);
  transition: color .25s ease;
}
.ft-sister-name {
  font-family:'Cormorant Garamond',serif; font-style:italic; font-weight:300;
  font-size:16px; color:rgba(255,255,255,.7);
  transition: color .25s ease;
}
.ft-sister-arrow {
  font-family:'Lato',sans-serif; font-size:12px; font-weight:300;
  color:rgba(255,255,255,.4);
  transition: transform .3s ease, color .25s ease;
}
.ft-sister:hover .ft-sister-name { color:#fff }
.ft-sister:hover .ft-sister-lbl { color:rgba(255,255,255,.6) }
.ft-sister:hover .ft-sister-arrow { transform:translateX(4px); color:rgba(255,255,255,.7) }

/* ─────────────────────────────────────────
   INNER HERO — shared by policy/inner pages
   (full-bleed hero, shorter than homepage)
───────────────────────────────────────── */
.inner-hero {
  position:relative; height:55vh; min-height:380px;
  overflow:hidden; display:flex; align-items:center; justify-content:center;
}
.inner-hero-photo { position:absolute; inset:0 }
.inner-hero-photo img {
  width:100%; height:100%; object-fit:cover; object-position:center 40%; display:block;
}
.inner-hero-veil {
  position:absolute; inset:0;
  background:rgba(22,14,10,.48);
}
.inner-hero-title {
  position:relative; z-index:2; text-align:center; padding:0 5vw;
}
.inner-hero-title h1 {
  font-family:'The Roletta',serif; font-weight:normal; font-style:normal;
  font-size:clamp(78px,9vw,117px); color:#fff; line-height:0.92;
  letter-spacing:-.025em; padding-top:0.2em;
}

/* ─────────────────────────────────────────
   WRITE-ON REVEAL — shared animation class
───────────────────────────────────────── */
.write-on {
  -webkit-mask-image: linear-gradient(to right, black 50%, transparent 58%);
  mask-image: linear-gradient(to right, black 50%, transparent 58%);
  -webkit-mask-size: 200% 120%;
  mask-size: 200% 120%;
  -webkit-mask-position: 100% 0;
  mask-position: 100% 0;
  opacity: 0;
  padding-bottom: 12px;
}
.write-on.triggered {
  animation: fup 1.4s ease .2s both, write 4s ease .4s both;
}

/* ─────────────────────────────────────────
   KEYFRAMES
───────────────────────────────────────── */
@keyframes fup { from { opacity:0; transform:translateY(18px) } to { opacity:1; transform:none } }
@keyframes pulse { 0%,100% { opacity:.35 } 50% { opacity:.85 } }
@keyframes write {
  from { -webkit-mask-position:100% 0; mask-position:100% 0 }
  to   { -webkit-mask-position:0% 0;   mask-position:0% 0 }
}

/* ─────────────────────────────────────────
   RESPONSIVE — shared breakpoints
───────────────────────────────────────── */
@media(max-width:1459px) {
  .nav-logo-link { margin-left:0 }
}
@media(max-width:1024px) and (min-width:769px) {
  #nav { padding:0 52px 0 5vw }
}
@media(max-width:768px) {
  #nav { padding:0 24px 0 5vw }
  .nav-logo-link { margin-left:0 }
  .nav-logo { height:38px }
  .ft-ll { position:static; transform:none; justify-content:center; margin-top:16px }
}

/* ─────────────────────────────────────────
   COOKIE BANNER — custom skin over Silktide Consent Manager
   Silktide handles consent state + tracking script gating;
   we render our own pill (#wp-cookie) and hide Silktide's UI.
   Silktide's preferences modal (#stcm-modal) is left visible
   because the pill's "Customise" button opens it.
───────────────────────────────────────── */
#stcm-banner,
#stcm-icon { display:none !important; }

/* Silktide preferences modal — restyled to brand palette via the
   custom properties Silktide exposes on #stcm-wrapper. No JS changes. */
#stcm-wrapper {
  --fontFamily: 'Lato', sans-serif;
  --primaryColor: var(--teal, #205056);
  --backgroundColor: var(--cream, #FAF8F5);
  --textColor: var(--ink, #1A1A18);
  --backdropBackgroundColor: rgba(32,80,86,0.35);
  --backdropBackgroundBlur: 4px;
}
#stcm-modal {
  border-radius:18px;
  padding:36px 36px 28px;
  box-shadow:
    0 1px 2px rgba(32,80,86,0.06),
    0 24px 64px -12px rgba(32,80,86,0.28);
  border:1px solid rgba(32,80,86,0.08);
}
#stcm-modal h1 {
  font-family:'Cormorant Garamond', serif;
  font-weight:300;
  font-size:clamp(26px, 3vw, 34px);
  letter-spacing:.01em;
  color:var(--ink, #1A1A18);
}
#stcm-modal p,
#stcm-modal legend,
#stcm-modal .stcm-consent-description {
  font-family:'Lato', sans-serif;
  font-weight:300;
}
#stcm-modal legend {
  font-weight:400;
  letter-spacing:.04em;
  text-transform:uppercase;
  font-size:11px;
  color:var(--teal, #205056);
  margin-bottom:8px;
}
#stcm-modal p { opacity:.85; }
#stcm-modal fieldset { border-top:1px solid var(--rule, rgba(32,80,86,0.10)); padding-top:18px; }
#stcm-modal fieldset:first-of-type { border-top:none; padding-top:0; }
#stcm-modal .stcm-modal-close { background:transparent; }
#stcm-modal .stcm-modal-close:hover { background:rgba(32,80,86,0.06); border-radius:6px; }
#stcm-wrapper .stcm-button {
  font-family:'Lato', sans-serif;
  font-size:11px;
  letter-spacing:.16em;
  text-transform:uppercase;
  font-weight:400;
  padding:13px 24px;
  border-radius:999px;
  border:1px solid var(--teal, #205056);
}
#stcm-wrapper .stcm-button-primary:hover {
  background-color:var(--cream, #FAF8F5);
  color:var(--teal, #205056);
}
#stcm-modal .stcm-modal-reject-all {
  background:transparent;
  color:var(--teal, #205056);
}
#stcm-modal .stcm-modal-reject-all:hover {
  background:var(--teal, #205056);
  color:var(--cream, #FAF8F5);
}
#stcm-modal footer a.stcm-credit-link {
  font-size:11px;
  opacity:.5;
  color:var(--ink-l, #8A8A84);
}
#stcm-modal .stcm-toggle-off,
#stcm-modal .stcm-toggle-on {
  font-family:'Lato', sans-serif;
  font-size:11px;
  letter-spacing:.08em;
  font-weight:400;
}

#wp-cookie {
  position:fixed;
  left:50%;
  bottom:24px;
  transform:translate(-50%, 140%);
  width:clamp(420px, 33vw, 560px);
  max-width:calc(100vw - 32px);
  background:var(--cream, #FAF8F5);
  border:1px solid rgba(32,80,86,0.08);
  border-radius:999px;
  padding:14px 14px 14px 26px;
  display:flex;
  align-items:center;
  gap:18px;
  box-shadow:
    0 1px 2px rgba(32,80,86,0.06),
    0 12px 32px -8px rgba(32,80,86,0.18),
    0 24px 64px -12px rgba(32,80,86,0.22);
  font-family:'Lato', sans-serif;
  z-index:9999;
  opacity:0;
  pointer-events:none;
  transition:transform .6s cubic-bezier(.2,.7,.2,1), opacity .4s ease;
}
#wp-cookie.is-visible {
  transform:translate(-50%, 0);
  opacity:1;
  pointer-events:auto;
}
/* Desktop: anchor cookie pill to left of viewport instead of centre.
   Placed AFTER the .is-visible rule above so the transform wins. */
@media (min-width:769px) {
  #wp-cookie { left:5vw; transform:translate(0, 140%); }
  #wp-cookie.is-visible { transform:translate(0, 0); }
}
#wp-cookie .wp-ck-copy {
  font-size:13px;
  line-height:1.4;
  color:var(--ink-m, #4A4A46);
  font-weight:300;
  flex:1;
  min-width:0;
}
#wp-cookie .wp-ck-copy a {
  color:var(--teal, #205056);
  text-decoration:underline;
  text-underline-offset:2px;
  text-decoration-thickness:.5px;
}
#wp-cookie .wp-ck-actions {
  display:flex;
  align-items:center;
  gap:6px;
  flex-shrink:0;
}
#wp-cookie button {
  font-family:'Lato', sans-serif;
  font-size:10px;
  letter-spacing:.14em;
  text-transform:uppercase;
  font-weight:400;
  cursor:pointer;
  border-radius:999px;
  transition:background .25s ease, color .25s ease, border-color .25s ease;
  white-space:nowrap;
}
#wp-cookie .wp-ck-accept {
  background:var(--teal, #205056);
  color:var(--cream, #FAF8F5);
  border:1px solid var(--teal, #205056);
  padding:11px 20px;
}
#wp-cookie .wp-ck-accept:hover,
#wp-cookie .wp-ck-accept:focus-visible {
  background:var(--teal-m, #2D7A83);
  border-color:var(--teal-m, #2D7A83);
  outline:none;
}
#wp-cookie .wp-ck-decline {
  background:transparent;
  color:var(--teal, #205056);
  border:1px solid rgba(32,80,86,0.25);
  padding:11px 16px;
}
#wp-cookie .wp-ck-decline:hover,
#wp-cookie .wp-ck-decline:focus-visible {
  border-color:var(--teal, #205056);
  background:rgba(32,80,86,0.04);
  outline:none;
}
#wp-cookie .wp-ck-custom {
  background:transparent;
  color:var(--ink-l, #8A8A84);
  border:1px solid transparent;
  padding:11px 10px;
  text-decoration:underline;
  text-underline-offset:3px;
  text-decoration-thickness:.5px;
}
#wp-cookie .wp-ck-custom:hover,
#wp-cookie .wp-ck-custom:focus-visible {
  color:var(--teal, #205056);
  outline:none;
}

/* Mobile: full-width rounded card, stacked layout */
@media (max-width: 720px) {
  #wp-cookie {
    left:0;
    right:0;
    bottom:0;
    transform:translateY(110%);
    width:100%;
    max-width:100%;
    border-radius:22px 22px 0 0;
    padding:18px 20px 22px;
    flex-direction:column;
    align-items:stretch;
    gap:14px;
    box-shadow:0 -8px 32px -8px rgba(32,80,86,0.22);
  }
  #wp-cookie.is-visible { transform:translateY(0); }
  #wp-cookie .wp-ck-copy { font-size:13px; }
  #wp-cookie .wp-ck-actions {
    display:grid;
    grid-template-columns:1fr 1fr;
    gap:8px;
  }
  #wp-cookie .wp-ck-custom {
    grid-column:1 / -1;
    padding:8px 0 0;
    text-align:center;
    font-size:10px;
  }
  #wp-cookie .wp-ck-accept,
  #wp-cookie .wp-ck-decline {
    padding:13px 18px;
    text-align:center;
  }
}

@media (prefers-reduced-motion: reduce) {
  #wp-cookie { transition:opacity .2s ease; transform:translate(-50%, 0); }
  @media (max-width:720px) { #wp-cookie { transform:translateY(0); } }
}
