/* =========================================================
   SPRINGWOOD design, adapted from the live Springwood Care site ("Open Door").
   Brand colours come from the logo kit: navy, forest, leaf and cream. Navy and leaf follow the
   main and accent colours chosen under Design. Layout responds to the width of the page itself
   (container queries), so the editor's phone preview behaves like a real phone.
   Every rule starts with .d-springwood so it never clashes with the shared blocks' styles.
   ========================================================= */

.site.d-springwood, .sw-extras {
  --navy: var(--c-main, #0B2E44);
  --navy-2: color-mix(in srgb, var(--navy) 86%, #fff);
  --forest: var(--c-support, #1B894A);
  --forest-ink: var(--c-support, #16703D);
  --leaf: var(--c-accent, #9AC767);
  --leaf-soft: color-mix(in srgb, var(--leaf) 42%, #fff);
  --cream: #F7F4E7;
  --mist: #EEF2E8;
  --ink: var(--navy);
  --soft: #4F616C;
  --muted: #8A96A1;
  --line: #E1E6E8;
  --wrap: 1160px;
  --gutter: clamp(16px, 4cqi, 48px);
  --sans: var(--f-body, "Schibsted Grotesk", "Segoe UI", system-ui, sans-serif);
  --serif: "Source Serif 4", Georgia, serif;
}
.site.d-springwood { position: relative; font-family: var(--sans); color: var(--ink); font-size: 17px; line-height: 1.6; background: #fff; }

/* Resets for Springwood's own parts only. They carry no weight, so the rules below always win. */
:where(.d-springwood .sw) :is(p, h1, h2, h3, h4, ul, ol, dl, dd, blockquote, figure) { margin: 0; }
:where(.d-springwood .sw) :is(ul, ol) { padding: 0; }
:where(.d-springwood .sw) :is(h1, h2, h3, h4) { font-family: var(--f-head, var(--sans)); font-weight: 500; letter-spacing: normal; line-height: 1.2; text-wrap: balance; color: inherit; }
:where(.d-springwood .sw) a { color: inherit; text-decoration: none; }
:where(.d-springwood .sw) img { display: block; max-width: 100%; }

.d-springwood .sw-wrap { width: 100%; max-width: var(--wrap); margin: 0 auto; padding-inline: var(--gutter); box-sizing: border-box; }
.d-springwood .sw-ph { overflow: hidden; }
.d-springwood .sw-ph img { width: 100%; height: 100%; object-fit: cover; }
.d-springwood .sw-ph > .ed-img-ph { width: 100%; height: 100%; min-height: 120px; aspect-ratio: auto; border-radius: inherit; }
.d-springwood .sw-q { font-family: var(--serif); font-style: italic; }
.d-springwood .sw-gap-14 { margin-top: 14px; }
.d-springwood .sw-gap-18 { margin-top: 18px; }
.d-springwood .sw-gap-20 { margin-top: 20px; }
.d-springwood .sw-gap-24 { margin-top: 24px; }
.d-springwood .sw-gap-56 { margin-top: 56px; }
.d-springwood .sw-mb-12 { margin-bottom: 12px; }
.d-springwood .sw-mb-28 { margin-bottom: 28px; }
.d-springwood .sw-small { font-size: 15px; margin-top: 14px; }

/* ---------- Buttons (these also restyle the shared blocks' buttons) ---------- */
.d-springwood .btn, .sw-extras .btn {
  display: inline-block; font: 600 15px/1.2 var(--sans); padding: 13px 20px; border-radius: 8px; border: 0; cursor: pointer;
  white-space: nowrap; text-align: center; text-decoration: none; transform: none; transition: background-color .2s, color .2s, box-shadow .2s;
}
.d-springwood .btn:hover, .sw-extras .btn:hover { transform: none; }
.d-springwood .btn.sw-white, .sw-extras .btn.sw-white { background: #fff; color: var(--navy); box-shadow: none; }
.d-springwood .btn.sw-white:hover, .sw-extras .btn.sw-white:hover { background: var(--mist); }
.d-springwood .btn.sw-ghost { background: transparent; color: #fff; box-shadow: inset 0 0 0 1.5px rgba(255, 255, 255, .6); }
.d-springwood .btn.sw-ghost:hover { box-shadow: inset 0 0 0 1.5px #fff; background: rgba(255, 255, 255, .08); }
.d-springwood .btn.sw-navy, .sw-extras .btn.sw-navy { background: var(--navy); color: #fff; box-shadow: none; }
.d-springwood .btn.sw-navy:hover, .sw-extras .btn.sw-navy:hover { background: var(--navy-2); }
.d-springwood .btn.sw-line { background: transparent; color: var(--navy); box-shadow: inset 0 0 0 1.5px var(--navy); }
.d-springwood .btn.sw-line:hover { background: var(--mist); }
.d-springwood .sw-ctas { display: flex; flex-wrap: wrap; gap: 12px; }
.d-springwood .sw-ctas:empty { display: none; }

/* ---------- Logo (five leaves unfold on the public site) ---------- */
.d-springwood .sw-blogo { position: relative; display: inline-block; aspect-ratio: 1654 / 709; height: 78px; margin-block: -12px; flex: none; }
.d-springwood .sw-blogo img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: contain; }
.d-springwood .sw-logo-img { height: 54px; width: auto; }
/* The stand-in logo of a site with none of its own: a small sapling and the short name. */
.d-springwood .sw-holding { display: inline-flex; align-items: center; gap: 10px; font: 700 1.35rem/1 var(--f-head, inherit); }
.d-springwood .sw-holding svg { height: 48px; width: auto; margin: 0; flex: none; }
.d-springwood .sw-foot .sw-holding { margin-bottom: 14px; color: var(--navy); }
.js .d-springwood .sw-blogo .leaf { transition: transform 1s cubic-bezier(.3, 1.4, .5, 1), opacity .5s ease; transition-delay: calc(var(--i) * 150ms + 200ms); }
.js .d-springwood .sw-blogo:not(.in) .leaf { transform: scale(.15) rotate(-20deg); opacity: 0; }
@media (prefers-reduced-motion: reduce) {
  .js .d-springwood .sw-blogo .leaf { transition: opacity .7s ease !important; }
  .js .d-springwood .sw-blogo:not(.in) .leaf { transform: none; }
}

/* ---------- The header's accessibility and search buttons: the shared tools (shared/tools.css) in this design's colours ---------- */
.site.d-springwood {
  --tl-main: var(--navy); --tl-accent: var(--navy); --tl-ink: var(--ink); --tl-soft: var(--soft); --tl-line: var(--line); --tl-grey: var(--mist);
  --tl-font: var(--sans); --tl-wrap: var(--wrap); --tl-gutter: var(--gutter); --tl-corner: 14px; --tl-button: 8px; --tl-tool-fill: #fff; --tl-tool-on: var(--navy);
}
.d-springwood .sw-head-row:has(.tl-tool) { gap: 14px; }
.d-springwood .sw-head-row:has(.tl-tool) > .sw-brand { margin-inline-end: 14px; }
/* The menu is pushed to the right, so it needs room before the round buttons, or it looks squeezed against them. */
.d-springwood .sw-head-row:has(.tl-tool) > .sw-nav-links { margin-inline-end: 26px; }
.d-springwood .sw-head-row:has(.tl-tool) { gap: 16px; }
.d-springwood .sw-head.is-pale .tl-tool:hover, .d-springwood .sw-head.is-pale .tl-tool[aria-expanded="true"] { background: var(--navy); color: #fff; }
@container site (max-width: 980px) { .d-springwood .sw-head-row :is(.tl-tool-lang, .tl-tool-a11y:not(.tl-tool-lang ~ *)) { margin-inline-start: auto; } .d-springwood .sw-head-row:has(.tl-tool) .sw-nav-toggle { margin-inline-start: 0; } }
.d-springwood.sw-fold .sw-head-row :is(.tl-tool-lang, .tl-tool-a11y:not(.tl-tool-lang ~ *)) { margin-inline-start: auto; }
.d-springwood.sw-fold .sw-head-row:has(.tl-tool) .sw-nav-toggle { margin-inline-start: 0; }

/* High contrast, chosen in the header panel */
html.a11y-contrast .site.d-springwood {
  --navy: #000; --ink: #000; --soft: #1b1b1b; --line: #000; --cream: #fff; --mist: #fff; --leaf-soft: #fff;
  --leaf: color-mix(in srgb, var(--c-accent, #9AC767) 50%, #000);
  --forest: color-mix(in srgb, var(--c-support, #1B894A) 50%, #000); --forest-ink: color-mix(in srgb, var(--c-support, #16703D) 50%, #000);
}
html.a11y-contrast .site.d-springwood a:not(.btn) { text-decoration: underline; text-underline-offset: 3px; }
/* A whole card that is one link underlines only its heading, not every line of its words. */
html.a11y-contrast .site.d-springwood a:not(.btn):has(:is(h2, h3, h4)) { text-decoration: none; }
html.a11y-contrast .site.d-springwood a:not(.btn) :is(h2, h3, h4) { text-decoration: underline; text-underline-offset: 4px; }
html.a11y-contrast .site.d-springwood .sw-hero .sw-bg::after { background: rgba(0, 0, 0, .72) !important; }
html.a11y-contrast .site.d-springwood :focus-visible { outline: 3px solid #ffd800; outline-offset: 3px; }

/* ---------- Header ---------- */
.d-springwood .sw-head { position: absolute; top: 0; inset-inline-start: 0; inset-inline-end: 0; z-index: 20; color: #fff; }
.d-springwood .sw-head.is-solid { position: relative; background: var(--navy); }
.d-springwood .sw-head-row { display: flex; align-items: center; gap: 28px; padding-block: 22px; }
.d-springwood .sw-brand { display: inline-flex; flex-shrink: 0; }
.d-springwood .sw-nav-links { display: flex; flex-shrink: 0; gap: 24px; margin-block: 0 0; margin-inline: auto 0; padding: 0; list-style: none; font-size: 15px; }
.d-springwood .sw-nav-links a { white-space: nowrap; opacity: .88; padding-block: 6px; border-bottom: 1.5px solid transparent; transition: opacity .2s, border-color .2s; }
.d-springwood .sw-nav-links a:hover { opacity: 1; border-bottom-color: var(--leaf); }
.d-springwood .sw-nav-refer { display: none; }
.d-springwood .sw-nav-toggle { display: none; margin-inline-start: auto; width: 46px; height: 46px; border-radius: 8px; border: 0; background: color-mix(in srgb, var(--navy) 92%, transparent); color: #fff; cursor: pointer; position: relative; z-index: 31; box-shadow: inset 0 0 0 1px rgba(255, 255, 255, .18); }
.d-springwood .sw-nav-toggle span { position: absolute; inset-inline-start: 13px; inset-inline-end: 13px; height: 2px; background: currentColor; border-radius: 2px; transition: transform .25s, opacity .2s; }
.d-springwood .sw-nav-toggle span:nth-child(1) { top: 16px; }
.d-springwood .sw-nav-toggle span:nth-child(2) { top: 22px; }
.d-springwood .sw-nav-toggle span:nth-child(3) { top: 28px; }
.d-springwood.menu-open .sw-nav-toggle span:nth-child(1) { transform: translateY(6px) rotate(45deg); }
.d-springwood.menu-open .sw-nav-toggle span:nth-child(2) { opacity: 0; }
.d-springwood.menu-open .sw-nav-toggle span:nth-child(3) { transform: translateY(-6px) rotate(-45deg); }
/* On the public site the header stays at the top of the window (pinHeader in springwood.js). Laid
   over a banner it takes no room of its own, and once the page moves under it, it turns solid. */
.d-springwood .sw-head.sw-pinned { position: sticky; top: 0; transition: background-color .25s, box-shadow .25s; }
.d-springwood .sw-head.is-over.sw-pinned { margin-bottom: calc(-1 * var(--head-h, 0px)); }
.d-springwood .sw-head.is-stuck { background: var(--navy); box-shadow: 0 6px 24px rgba(0, 0, 0, .18); }
.d-springwood .sw-head.is-pale.is-stuck { background: var(--cream); }

/* The menu folds behind a button on narrow screens, and also whenever its links would not fit on
   one line (fitMenu in springwood.js adds sw-fold). The width rule covers the moment before that runs. */
@container site (max-width: 980px) {
  .d-springwood .sw-nav-toggle { display: block; }
  .d-springwood .sw-head-row > .btn { display: none; }
  .d-springwood .sw-nav-links { display: none; }
}
.d-springwood.sw-fold .sw-nav-toggle { display: block; }
.d-springwood.sw-fold .sw-head-row > .btn { display: none; }
.d-springwood.sw-fold .sw-nav-links { display: none; }
/* The folded menu opens as a panel under the header (tools.css draws it). Its button for the
   header goes at the bottom, in the design's own colour. */
.d-springwood.sw-fold.menu-open .sw-nav-refer .btn { background: var(--navy); color: #fff; box-shadow: none; }

/* ---------- The folded menu, full width ----------
   Instead of the small card from shared/tools.css, the menu opens as a solid band of the main colour
   across the whole page, joined to the header, which turns the same colour while it is open. The
   links are large, and rise into place one after another. On a phone it fills the screen; on a wide
   one a picture (site.menuImage) appears beside the links. */
.site.d-springwood.sw-fold.menu-open .sw-head { background: var(--navy); color: #fff; box-shadow: none; }
.site.d-springwood.sw-fold.menu-open .sw-head.is-pale .sw-logo-img { filter: brightness(0) invert(1); }
.site.d-springwood.sw-fold.menu-open .sw-head.is-pale .tl-tool:hover, .site.d-springwood.sw-fold.menu-open .sw-head.is-pale .tl-tool[aria-expanded="true"] { background: #fff; color: var(--navy); }
.site.d-springwood.sw-fold.menu-open .tl-menu {
  inset-inline: 0; width: auto; top: 100%; box-sizing: border-box; min-height: 300px;
  padding: 8px max(var(--gutter), calc((100% - var(--wrap)) / 2 + var(--gutter))) 44px;
  background: var(--navy); color: #fff; border: 0; border-radius: 0; box-shadow: 0 26px 40px rgba(0, 0, 0, .22);
  font: 600 clamp(26px, 5.4cqi, 42px)/1.15 var(--f-head, var(--sans));
}
.site.d-springwood.sw-fold.menu-open .tl-menu > li:not(.sw-nav-refer) { position: relative; overflow: hidden; max-width: 520px; }
.site.d-springwood.sw-fold.menu-open .tl-menu > li:not(.sw-nav-refer) > a { padding: 17px 2px; border: 0; color: #fff; opacity: 1; outline-offset: -3px; }
.site.d-springwood.sw-fold.menu-open .tl-menu > li:not(.sw-nav-refer) > a:hover { color: var(--leaf); border: 0; }
.site.d-springwood.sw-fold.menu-open .tl-menu > li:not(.sw-nav-refer):not(:nth-last-child(1 of :not(.sw-nav-refer)))::after {
  content: ''; position: absolute; inset-inline: 0; bottom: 0; height: 1px; background: rgba(255, 255, 255, .24); transform-origin: left;
}
[dir="rtl"] .site.d-springwood.sw-fold.menu-open .tl-menu > li::after { transform-origin: right; }
/* The button is the same size as the buttons on the page. */
.site.d-springwood.sw-fold.menu-open .tl-menu > li.sw-nav-refer { margin-top: 30px; }
.site.d-springwood.sw-fold.menu-open .tl-menu > li.sw-nav-refer .btn {
  display: inline-block; width: auto; padding: 13px 20px; opacity: 1; border: 0; background: #fff; color: var(--navy); box-shadow: none;
  font: 600 15px/1.2 var(--sans);
}
.site.d-springwood.sw-fold.menu-open .tl-menu > li.sw-nav-refer .btn:hover { background: var(--mist); }
.site.d-springwood.sw-fold.menu-open .tl-menu.sw-has-pic::after {
  content: ''; position: absolute; inset-block: 24px 44px; inset-inline-end: max(var(--gutter), calc((100% - var(--wrap)) / 2 + var(--gutter)));
  width: min(42%, 520px); border-radius: 14px; background: var(--menu-img) center / cover no-repeat, var(--navy-2);
}
.site.d-springwood.sw-fold.menu-open .tl-menu.sw-has-pic > li:not(.sw-nav-refer) { max-width: min(520px, 50%); }
@container site (max-width: 760px) {
  .site.d-springwood.sw-fold.menu-open .tl-menu.sw-has-pic::after { display: none; }
}
@container site (min-width: 761px) {
  .site.d-springwood.sw-fold.menu-open .tl-menu.sw-has-pic { min-height: 460px; }
}
@container site (max-width: 600px) {
  .site.d-springwood.sw-fold.menu-open .tl-menu { height: calc(100dvh - var(--head-h, 88px)); max-height: none !important; padding-bottom: 32px; }
  .site.d-springwood.sw-fold.menu-open .tl-menu > li:not(.sw-nav-refer) { max-width: none; }
  .site.d-springwood.sw-fold.menu-open .tl-menu > li.sw-nav-refer .btn { display: flex; justify-content: center; width: 100%; box-sizing: border-box; }
}
@media (prefers-reduced-motion: no-preference) {
  html:not(.a11y-calm) .site.d-springwood.sw-fold.menu-open .tl-menu { animation: sw-menu-wipe .5s cubic-bezier(.65, 0, .25, 1) both; }
  html:not(.a11y-calm) .site.d-springwood.sw-fold.menu-open .tl-menu > li:not(.sw-nav-refer) > a { animation: sw-menu-rise .7s cubic-bezier(.2, .7, .2, 1) both; }
  html:not(.a11y-calm) .site.d-springwood.sw-fold.menu-open .tl-menu > li::after { animation: sw-menu-draw .8s cubic-bezier(.2, .7, .2, 1) both; }
  html:not(.a11y-calm) .site.d-springwood.sw-fold.menu-open .tl-menu > li.sw-nav-refer { animation: sw-menu-fade .6s ease-out .75s both; }
  html:not(.a11y-calm) .site.d-springwood.sw-fold.menu-open .tl-menu.sw-has-pic::after { animation: sw-menu-photo .9s cubic-bezier(.65, 0, .25, 1) .25s both; }
  .site.d-springwood.sw-fold.menu-open .tl-menu > li:nth-child(1) > a { animation-delay: .2s; } .site.d-springwood.sw-fold.menu-open .tl-menu > li:nth-child(1)::after { animation-delay: .35s; }
  .site.d-springwood.sw-fold.menu-open .tl-menu > li:nth-child(2) > a { animation-delay: .27s; } .site.d-springwood.sw-fold.menu-open .tl-menu > li:nth-child(2)::after { animation-delay: .42s; }
  .site.d-springwood.sw-fold.menu-open .tl-menu > li:nth-child(3) > a { animation-delay: .34s; } .site.d-springwood.sw-fold.menu-open .tl-menu > li:nth-child(3)::after { animation-delay: .49s; }
  .site.d-springwood.sw-fold.menu-open .tl-menu > li:nth-child(4) > a { animation-delay: .41s; } .site.d-springwood.sw-fold.menu-open .tl-menu > li:nth-child(4)::after { animation-delay: .56s; }
  .site.d-springwood.sw-fold.menu-open .tl-menu > li:nth-child(5) > a { animation-delay: .48s; } .site.d-springwood.sw-fold.menu-open .tl-menu > li:nth-child(5)::after { animation-delay: .63s; }
  .site.d-springwood.sw-fold.menu-open .tl-menu > li:nth-child(6) > a { animation-delay: .55s; } .site.d-springwood.sw-fold.menu-open .tl-menu > li:nth-child(6)::after { animation-delay: .7s; }
  .site.d-springwood.sw-fold.menu-open .tl-menu > li:nth-child(n+7) > a { animation-delay: .62s; } .site.d-springwood.sw-fold.menu-open .tl-menu > li:nth-child(n+7)::after { animation-delay: .77s; }
}
@keyframes sw-menu-wipe { from { clip-path: inset(0 0 100% 0); } to { clip-path: inset(0 0 -60px 0); } }
@keyframes sw-menu-rise { from { transform: translateY(105%); opacity: 0; } to { transform: none; opacity: 1; } }
@keyframes sw-menu-draw { from { transform: scaleX(0); } to { transform: none; } }
@keyframes sw-menu-fade { from { opacity: 0; transform: translateY(12px); } to { opacity: 1; transform: none; } }
@keyframes sw-menu-photo { from { clip-path: inset(0 0 0 100%); opacity: 0; } to { clip-path: inset(0); opacity: 1; } }

/* ---------- Photo hero ---------- */
.d-springwood section.sw-hero { position: relative; background: var(--navy); color: #fff; display: flex; flex-direction: column; overflow: hidden; padding: 0; }
.d-springwood .sw-hero > .sw-wrap { position: relative; z-index: 1; }
.d-springwood .sw-hero .sw-bg { position: absolute; inset: 0; }
.d-springwood .sw-hero .sw-bg img { width: 100%; height: 100%; object-fit: cover; filter: saturate(.94) brightness(.92); }
.d-springwood .sw-hero .sw-bg::after { content: ""; position: absolute; inset: 0; pointer-events: none; }
.d-springwood .sw-hero .sw-bg > .ed-img-ph { position: absolute; inset-inline-end: 18px; bottom: 18px; z-index: 2; width: auto; min-height: 0; aspect-ratio: auto; flex-direction: row; padding: 10px 14px; border-style: solid; background: rgba(255, 255, 255, .92); }
.d-springwood .sw-hero h1 { font-size: clamp(40px, 5.8cqi, 72px); line-height: 1.02; letter-spacing: -0.03em; font-weight: 500; }
.d-springwood .sw-hero .sw-lead { font-size: 17.5px; opacity: .9; max-width: 46ch; }
.d-springwood .sw-hero .sw-ctas { margin-top: 22px; }
.d-springwood .sw-facts { border-top: 1px solid rgba(255, 255, 255, .24); display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 0 28px; }
.d-springwood .sw-facts > div { padding: 18px 0 22px; font-size: 14px; color: rgba(255, 255, 255, .85); }
.d-springwood .sw-facts b { display: block; font-size: 17px; font-weight: 600; color: #fff; }
.d-springwood .sw-hero-home { min-height: 820px; }
.d-springwood .sw-hero-home .sw-bg img { object-position: 50% 48%; }
/* The big home headline fills each line before wrapping; balancing it left a short middle line. */
.d-springwood .sw-hero-home h1 { text-wrap: pretty; }
.d-springwood .sw-hero-home .sw-bg::after { background: linear-gradient(180deg, color-mix(in srgb, var(--navy) 90%, transparent) 0%, color-mix(in srgb, var(--navy) 72%, transparent) 34%, color-mix(in srgb, var(--navy) 0%, transparent) 54%, color-mix(in srgb, var(--navy) 0%, transparent) 80%, color-mix(in srgb, var(--navy) 90%, transparent) 100%); }
.d-springwood .sw-hero-home .sw-body { padding-top: 180px; margin-bottom: auto; display: grid; grid-template-columns: minmax(0, 1.1fr) minmax(0, .9fr); gap: 18px 32px; align-items: end; }
.d-springwood .sw-hero-page { min-height: 640px; }
.d-springwood .sw-hero-page .sw-bg::after { background: linear-gradient(180deg, color-mix(in srgb, var(--navy) 62%, transparent) 0%, color-mix(in srgb, var(--navy) 0%, transparent) 24%, color-mix(in srgb, var(--navy) 5%, transparent) 44%, color-mix(in srgb, var(--navy) 90%, transparent) 88%), linear-gradient(90deg, color-mix(in srgb, var(--navy) 55%, transparent) 0%, color-mix(in srgb, var(--navy) 0%, transparent) 60%); }
.d-springwood .sw-hero-page .sw-body { margin-top: auto; padding-top: 150px; padding-bottom: 30px; }
.d-springwood .sw-crumb { font-size: 14px; opacity: .85; margin-bottom: 14px; }
.d-springwood .sw-crumb .link-crumb { border-bottom: 1px solid rgba(255, 255, 255, .5); color: #fff; }
.d-springwood .sw-hero-page h1 { font-size: clamp(46px, 7cqi, 92px); }
.d-springwood .sw-hero-page .sw-lead { margin-top: 16px; font-size: 19px; max-width: 42ch; }
/* On tablet-width screens the home headline and its words stack in one column. */
@container site (max-width: 980px) {
  .d-springwood .sw-hero-home .sw-body { grid-template-columns: 1fr; padding-top: 150px; }
  .d-springwood .sw-hero-home .sw-bg::after { background: linear-gradient(180deg, color-mix(in srgb, var(--navy) 92%, transparent) 0%, color-mix(in srgb, var(--navy) 80%, transparent) 40%, color-mix(in srgb, var(--navy) 0%, transparent) 58%, color-mix(in srgb, var(--navy) 0%, transparent) 76%, color-mix(in srgb, var(--navy) 92%, transparent) 100%); }
}

/* ---------- Sections ---------- */
.d-springwood section.sw-section { padding-block: clamp(64px, 9cqi, 120px); }
.d-springwood section.sw-tight { padding-block: clamp(48px, 6cqi, 80px); }
.d-springwood .sw-main > section:not(.sw) { padding: 72px 0; }
.d-springwood .sw-bg-mist { background: var(--mist); }
.d-springwood .sw-bg-cream { background: var(--cream); }
.d-springwood .sw-bg-white { background: #fff; }
.d-springwood .sw-bg-navy { background: var(--navy); color: #fff; }
.d-springwood .sw-label { font-size: 13px; font-weight: 600; letter-spacing: .12em; text-transform: uppercase; color: var(--forest-ink); margin-bottom: 12px; }
.d-springwood .sw-bg-navy .sw-label { color: var(--leaf); }
.d-springwood .sw .sw-h2 { font-size: clamp(30px, 3.8cqi, 48px); line-height: 1.08; letter-spacing: -0.02em; font-weight: 500; }
.d-springwood .sw .sw-h3 { font-size: 21px; line-height: 1.25; font-weight: 600; letter-spacing: -0.01em; }
.d-springwood .sw-intro { color: var(--soft); margin-top: 16px; max-width: 58ch; font-size: 18px; }
.d-springwood .sw-bg-navy .sw-intro { color: #B9C8D2; }
.d-springwood .sw-prose p + p { margin-top: 14px; }
.d-springwood .sw-prose p, .d-springwood .sw-prose .ed-text { max-width: 62ch; }
.d-springwood .sw-muted { color: var(--soft); }
.d-springwood .sw-bg-navy .sw-muted { color: #B9C8D2; }
.d-springwood .sw-head-center { text-align: center; max-width: 660px; margin: 0 auto 48px; }
.d-springwood .sw-head-center .sw-intro { margin-inline: auto; }
.d-springwood .sw-head-split { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 20px 48px; align-items: end; margin-bottom: 44px; }
.d-springwood .sw-head-split .sw-intro { margin-top: 0; }

/* Big statement: one sentence, second half softer */
.d-springwood .sw-mission p { font-size: clamp(24px, 2.9cqi, 36px); line-height: 1.28; letter-spacing: -0.015em; max-width: 34ch; }
.d-springwood .sw-mission .sw-soft { color: var(--muted); }

/* Half-circle photo pairs */
.d-springwood section.sw-pair-sec { padding-block: 28px; }
.d-springwood .sw-pair { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: clamp(28px, 6cqi, 80px); align-items: center; }
.d-springwood .sw-halves { display: grid; grid-template-columns: 1fr 1fr; max-width: 500px; width: 100%; }
.d-springwood .sw-halves > div { aspect-ratio: 1 / 2; overflow: hidden; border-start-start-radius: 0; border-start-end-radius: 999px; border-end-end-radius: 999px; border-end-start-radius: 0; }
.d-springwood .sw-halves .sw-ph img { object-position: 30% 50%; }
.d-springwood .sw-pair h2 { font-size: clamp(28px, 3.4cqi, 42px); line-height: 1.1; letter-spacing: -0.02em; }
.d-springwood .sw-pair p { color: var(--soft); margin-top: 14px; max-width: 46ch; }
.d-springwood .sw-pair .sw-label { color: var(--soft); letter-spacing: .02em; text-transform: none; font-weight: 500; font-size: 14px; }
.d-springwood .sw-pair.flip .sw-halves { order: 2; justify-self: end; }

/* Numbered points */
.d-springwood .sw-commit { list-style: none; display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: 0 40px; counter-reset: c; }
.d-springwood .sw-commit li { counter-increment: c; display: grid; grid-template-columns: 44px 1fr; gap: 4px 12px; padding-block: 22px; border-top: 1px solid var(--line); }
.d-springwood .sw-commit li::before { content: counter(c, decimal-leading-zero); grid-row: span 2; font-size: 15px; font-weight: 600; color: var(--forest-ink); padding-top: 3px; }
.d-springwood .sw-commit h3 { font-size: 19px; font-weight: 600; }
.d-springwood .sw-commit p { color: var(--soft); font-size: 16px; }
.d-springwood .sw-bg-navy .sw-commit li { border-color: rgba(255, 255, 255, .14); }
.d-springwood .sw-bg-navy .sw-commit li::before { color: var(--leaf); }
.d-springwood .sw-bg-navy .sw-commit p { color: #B9C8D2; }
.d-springwood .sw-note { border-inline-start: 3px solid var(--leaf); background: var(--mist); padding: 18px 22px; border-start-start-radius: 0; border-start-end-radius: 12px; border-end-end-radius: 12px; border-end-start-radius: 0; color: var(--soft); max-width: 70ch; }
.d-springwood .sw-bg-mist .sw-note { background: #fff; }
.d-springwood .sw-note b { color: var(--ink); }
.d-springwood .sw-note-gap { margin-top: 36px; }

/* Text cards */
.d-springwood .sw-cards { display: grid; grid-template-columns: repeat(auto-fill, minmax(290px, 1fr)); gap: 16px; }
.d-springwood .sw-card { background: #fff; border-radius: 16px; padding: 26px 26px 28px; border: 1px solid var(--line); color: var(--ink); }
.d-springwood .sw-bg-mist .sw-card, .d-springwood .sw-bg-cream .sw-card { border-color: transparent; }
.d-springwood .sw-card::before { content: ""; display: block; width: 36px; height: 18px; border-radius: 999px 999px 0 0; background: var(--leaf); margin-bottom: 18px; }
.d-springwood .sw-card:nth-child(3n+2)::before { background: var(--forest); }
.d-springwood .sw-card:nth-child(3n)::before { background: var(--navy); }
.d-springwood .sw-card h3 { font-size: 19px; font-weight: 600; }
.d-springwood .sw-card p { color: var(--soft); font-size: 16px; margin-top: 8px; }

/* Photo steps */
.d-springwood .sw-steps { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 20px; }
.d-springwood .sw-steps.n-1 { grid-template-columns: minmax(0, 420px); }
.d-springwood .sw-steps.n-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.d-springwood .sw-steps.n-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.d-springwood .sw-steps .sw-ph { aspect-ratio: 4 / 5; border-radius: 14px; }
.d-springwood .sw-steps h3 { font-size: 18px; font-weight: 600; margin-top: 14px; }
.d-springwood .sw-steps p { font-size: 16px; color: var(--soft); margin-top: 4px; }

/* Tick lists */
.d-springwood .sw-ticks { list-style: none; display: grid; gap: 0; }
.d-springwood .sw-ticks li { position: relative; padding-block: 13px 13px; padding-inline: 32px 0; border-top: 1px solid var(--line); }
.d-springwood .sw-ticks li::before { content: ""; position: absolute; inset-inline-start: 2px; top: 20px; width: 14px; height: 8px; border-left: 2.5px solid var(--forest); border-bottom: 2.5px solid var(--forest); transform: rotate(-45deg); }
.d-springwood .sw-ticks.two { grid-template-columns: 1fr 1fr; column-gap: 32px; }
.d-springwood .sw-bg-navy .sw-ticks li { border-color: rgba(255, 255, 255, .14); }
.d-springwood .sw-bg-navy .sw-ticks li::before { border-color: var(--leaf); }

/* Step-by-step timeline */
.d-springwood .sw-process { list-style: none; display: grid; grid-template-columns: repeat(var(--n, 5), minmax(0, 1fr)); gap: 20px; position: relative; }
.d-springwood .sw-process::before { content: ""; position: absolute; inset-inline-start: 0; inset-inline-end: 0; top: 19px; height: 2px; background: #D5DECD; }
.d-springwood .sw-process::after { content: ""; position: absolute; inset-inline: 0; top: 19px; height: 2px; background: var(--forest); transform-origin: left; transform: scaleX(var(--p, 1)); }
.d-springwood .sw-process li { position: relative; }
.d-springwood .sw-dot { width: 40px; height: 40px; border-radius: 50%; background: var(--navy); color: var(--leaf); display: grid; place-items: center; font-weight: 700; position: relative; z-index: 1; transition: background-color .5s ease, color .5s ease; }
.d-springwood .sw-process h3 { font-size: 17px; font-weight: 600; margin-top: 14px; }
.d-springwood .sw-process p { font-size: 15px; color: var(--soft); margin-top: 4px; }

/* Homes list */
.d-springwood .sw-home-row { display: grid; grid-template-columns: 84px minmax(0, 1.1fr) minmax(0, 1.4fr) auto 20px; gap: 22px; align-items: center; padding-block: 16px; border-top: 1px solid var(--line); transition: background-color .2s; color: var(--ink); }
.d-springwood .sw-home-row:last-child { border-bottom: 1px solid var(--line); }
.d-springwood a.sw-home-row:hover { background: var(--mist); }
.d-springwood .sw-home-row .sw-ph { width: 84px; height: 84px; border-radius: 50%; }
.d-springwood .sw-home-row .ed-img-ph { min-height: 0; padding: 0; }
.d-springwood .sw-home-row .ed-img-ph span { display: none; }
.d-springwood .sw-home-row h3 { font-size: 23px; font-weight: 500; letter-spacing: -0.01em; }
.d-springwood .sw-spec { color: var(--soft); font-size: 16px; }
.d-springwood .sw-age { font-size: 14px; background: var(--mist); border-radius: 999px; padding: 5px 12px; white-space: nowrap; }
.d-springwood .sw-age:empty { visibility: hidden; }
.d-springwood a.sw-home-row:hover .sw-age { background: #fff; }
.d-springwood .sw-arrow { width: 12px; height: 12px; border-top: 2px solid var(--navy); border-right: 2px solid var(--navy); transform: rotate(45deg); transition: transform .2s; }
.d-springwood a.sw-home-row:hover .sw-arrow { transform: translateX(4px) rotate(45deg); }
/* In a right-to-left language arrows point the way the page reads, and the line of steps fills from
   the right. */
[dir="rtl"] .d-springwood .sw-arrow, [dir="rtl"] .d-springwood .sw-process::after { scale: -1 1; }

/* Photo and text */
.d-springwood .sw-split { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: clamp(28px, 6cqi, 80px); align-items: center; }
.d-springwood .sw-split > .sw-ph { border-radius: 20px; aspect-ratio: 4 / 5; }
.d-springwood .sw-split > .sw-ph.wide { aspect-ratio: 4 / 3; }
.d-springwood .sw-split.flip > :first-child { order: 2; }
.d-springwood .sw-twocol { display: grid; grid-template-columns: minmax(0, 1.25fr) minmax(0, 1fr); gap: clamp(28px, 6cqi, 80px); align-items: start; }

/* At-a-glance panel */
.d-springwood .sw-glance { background: var(--mist); border-radius: 18px; padding: 26px 26px 12px; }
.d-springwood .sw-bg-mist .sw-glance { background: #fff; }
.d-springwood .sw .sw-glance h2 { font-size: 13px; font-weight: 600; letter-spacing: .12em; text-transform: uppercase; color: var(--forest-ink); margin-bottom: 6px; line-height: 1.4; }
.d-springwood .sw-glance dl > div { display: grid; grid-template-columns: 116px 1fr; gap: 12px; padding-block: 12px; border-top: 1px solid #D3DBCB; font-size: 15.5px; }
.d-springwood .sw-glance dl > div:first-child { border-top: 0; }
.d-springwood .sw-glance dt { color: var(--soft); }
.d-springwood .sw-glance dd { font-weight: 500; }

/* Quote band */
.d-springwood .sw-quote-band .sw-cols { display: grid; grid-template-columns: minmax(0, 1.4fr) minmax(0, 1fr); gap: clamp(28px, 6cqi, 80px); align-items: center; }
.d-springwood .sw-quote-band blockquote { font-size: clamp(24px, 3cqi, 36px); line-height: 1.3; }
.d-springwood .sw-quote-band cite { display: block; font-style: normal; font-family: var(--sans); font-size: 14px; opacity: .7; margin-top: 18px; }
.d-springwood .sw-quote-band .sw-ph { aspect-ratio: 1 / 1; border-radius: 50%; max-width: 340px; width: 100%; justify-self: end; }

/* Daily routine */
.d-springwood .sw-day { list-style: none; }
.d-springwood .sw-day li { display: grid; grid-template-columns: 150px 1fr; gap: 16px; padding-block: 18px; border-top: 1px solid var(--line); }
.d-springwood .sw-day li:last-child { border-bottom: 1px solid var(--line); }
.d-springwood .sw-t { font-family: var(--serif); font-style: italic; font-size: 20px; color: var(--forest-ink); }
.d-springwood .sw-day p { color: var(--soft); }

/* Figures */
.d-springwood .sw-figs { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 16px; margin-top: 48px; }
.d-springwood .sw-figs > div { border-top: 2px solid var(--leaf); padding-top: 14px; }
.d-springwood .sw-figs b { display: block; font-size: clamp(32px, 4cqi, 48px); line-height: 1; font-weight: 500; letter-spacing: -0.02em; }
.d-springwood .sw-figs span { display: block; color: var(--soft); font-size: 15px; margin-top: 8px; }

/* Contact cards */
.d-springwood .sw-contacts { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 16px; }
.d-springwood .sw-contacts.n-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.d-springwood .sw-contacts.n-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.d-springwood .sw-contact { border-radius: 16px; padding: 26px; background: #fff; color: var(--ink); }
.d-springwood .sw-bg-white .sw-contact { background: var(--mist); }
.d-springwood .sw-contact h3 { font-size: 19px; font-weight: 600; }
.d-springwood .sw-contact p { color: var(--soft); margin-top: 8px; font-size: 16px; }
.d-springwood .sw-num { display: inline-block; margin-top: 14px; font-size: 22px; font-weight: 600; color: var(--navy); letter-spacing: -0.01em; }

/* Call-to-action band */
.d-springwood section.sw-cta-band { background: var(--forest-ink); color: #fff; padding-block: 60px; }
.d-springwood .sw-cta-band .sw-row { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 24px; }
.d-springwood .sw-cta-band h2 { font-size: clamp(26px, 3cqi, 38px); line-height: 1.15; letter-spacing: -0.02em; max-width: 24ch; }
.d-springwood .sw-cta-band p { color: #D9EBDD; margin-top: 10px; max-width: 54ch; }

/* ---------- Footer ---------- */
.d-springwood .sw-foot { background: var(--mist); color: var(--soft); padding-block: 56px 32px; font-size: 15px; }
.d-springwood .sw-foot-grid { display: grid; grid-template-columns: minmax(0, 1.4fr) repeat(3, minmax(0, 1fr)); gap: 32px; }
.d-springwood .sw-foot-logo { height: 72px; width: auto; margin: -12px 0 10px; }
.d-springwood .sw-foot p + p { margin-top: 12px; }
.d-springwood .sw .sw-foot h2, .d-springwood .sw-foot h2 { font-family: var(--sans); font-size: 13px; font-weight: 600; letter-spacing: .12em; text-transform: uppercase; color: var(--ink); margin-bottom: 12px; line-height: 1.4; }
.d-springwood .sw-foot ul { list-style: none; display: grid; gap: 8px; }
.d-springwood .sw-foot a:hover { color: var(--ink); text-decoration: underline; }
.d-springwood .sw-foot-base { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 12px; border-top: 1px solid #D3DBCB; margin-top: 40px; padding-top: 20px; font-size: 14px; }

/* ---------- Narrower screens ---------- */
@container site (max-width: 860px) {
  .d-springwood .sw-process { grid-template-columns: 1fr; gap: 18px; }
  .d-springwood .sw-process::before, .d-springwood .sw-process::after { inset-inline-start: 19px; inset-inline-end: auto; top: 0; bottom: 0; width: 2px; height: auto; transform-origin: top; transform: scaleY(var(--p, 1)); }
  .d-springwood .sw-process li { display: grid; grid-template-columns: 40px 1fr; gap: 0 16px; }
  .d-springwood .sw-process h3 { margin-top: 8px; }
  .d-springwood .sw-process p { grid-column: 2; }
  .d-springwood .sw-contacts, .d-springwood .sw-contacts.n-2, .d-springwood .sw-contacts.n-4 { grid-template-columns: 1fr; }
  .d-springwood .sw-twocol { grid-template-columns: 1fr; }
  .d-springwood .sw-foot-grid { grid-template-columns: 1fr 1fr; }
  .d-springwood .sw-foot-grid > :first-child { grid-column: 1 / -1; }
}
@container site (max-width: 820px) {
  .d-springwood .sw-head-split { grid-template-columns: 1fr; }
  .d-springwood .sw-split { grid-template-columns: 1fr; }
  .d-springwood .sw-split.flip > :first-child { order: 0; }
  .d-springwood .sw-split > .sw-ph, .d-springwood .sw-split > .sw-ph.wide { aspect-ratio: 4 / 3; }
}
@container site (max-width: 760px) {
  .d-springwood .sw-facts { grid-template-columns: 1fr; }
  .d-springwood .sw-facts > div { padding: 10px 0; }
  .d-springwood .sw-facts > div:first-child { padding-top: 16px; }
  .d-springwood .sw-hero-home { min-height: 900px; }
  .d-springwood .sw-hero-home .sw-body { grid-template-columns: 1fr; padding-top: 104px; }
  .d-springwood .sw-hero-home .sw-bg img { object-position: 34% 80%; }
  .d-springwood .sw-hero-home .sw-bg::after { background: linear-gradient(180deg, color-mix(in srgb, var(--navy) 92%, transparent) 0%, color-mix(in srgb, var(--navy) 82%, transparent) 50%, color-mix(in srgb, var(--navy) 0%, transparent) 64%, color-mix(in srgb, var(--navy) 0%, transparent) 70%, color-mix(in srgb, var(--navy) 92%, transparent) 100%); }
  .d-springwood .sw-hero-page { min-height: 620px; }
  .d-springwood .sw-pair { grid-template-columns: 1fr; }
  .d-springwood .sw-pair.flip .sw-halves { order: 0; justify-self: start; }
  .d-springwood .sw-halves { max-width: 340px; }
  .d-springwood .sw-steps, .d-springwood .sw-steps.n-2, .d-springwood .sw-steps.n-4 { grid-template-columns: 1fr; }
  .d-springwood .sw-steps .sw-ph { aspect-ratio: 16 / 10; }
  .d-springwood .sw-ticks.two { grid-template-columns: 1fr; }
  .d-springwood .sw-home-row { grid-template-columns: 60px 1fr; gap: 4px 16px; }
  .d-springwood .sw-home-row .sw-ph { width: 60px; height: 60px; grid-row: span 3; }
  .d-springwood .sw-home-row .sw-spec, .d-springwood .sw-home-row .sw-age { grid-column: 2; }
  .d-springwood .sw-home-row .sw-age { justify-self: start; margin-top: 4px; }
  .d-springwood .sw-home-row .sw-arrow { display: none; }
  .d-springwood .sw-quote-band .sw-cols { grid-template-columns: 1fr; }
  .d-springwood .sw-quote-band .sw-ph { justify-self: start; max-width: 260px; }
  .d-springwood .sw-figs { grid-template-columns: 1fr 1fr; }
}
@container site (max-width: 700px) {
  .d-springwood .sw-day li { grid-template-columns: 1fr; gap: 2px; }
}
@container site (max-width: 420px) {
  .d-springwood .sw-glance dl > div { grid-template-columns: 1fr; gap: 2px; }
}

/* ---------- Motion on the public site only (the editor never adds .motion) ---------- */
@media (prefers-reduced-motion: no-preference) {
  .motion .d-springwood .sw-ph img, .motion .d-springwood .sw-hero .sw-bg img { transition: transform 1.9s cubic-bezier(.2, .7, .2, 1); }
  .motion .d-springwood .sw-ph:not(.in) img, .motion .d-springwood .sw-hero .sw-bg:not(.in) img { transform: scale(1.08); }
  .motion .d-springwood .sw-hero-home .sw-bg { animation: sw-drift 28s ease-in-out 2s infinite alternate; }
  @keyframes sw-drift { from { transform: scale(1); } to { transform: scale(1.08) translate(-1%, -1%); } }
  .motion .d-springwood .sw-rise { transition: opacity .8s ease, transform 1s cubic-bezier(.2, .7, .2, 1); transition-delay: var(--d, 0ms); }
  .motion .d-springwood .sw-rise:not(.in) { opacity: 0; transform: translateY(24px); }
  .motion .d-springwood [data-words] .w { display: inline-block; overflow: hidden; vertical-align: top; padding-block: 0 .16em; padding-inline: 0 .08em; margin-block: 0 -.16em; margin-inline: 0 -.08em; }
  .motion .d-springwood [data-words] .w > span { display: inline-block; transition: transform .9s cubic-bezier(.2, .75, .2, 1); transition-delay: calc(var(--d, 0ms) + var(--wi) * 55ms); }
  .motion .d-springwood [data-words]:not(.in) .w > span { transform: translateY(115%); }
  .motion .d-springwood [data-fill] .fw { opacity: .22; transition: opacity .35s ease; }
  .motion .d-springwood [data-fill] .fw.on { opacity: 1; }
  .motion .d-springwood .sw-process li:not(.lit) .sw-dot { background: #fff; color: var(--soft); box-shadow: inset 0 0 0 2px #D5DECD; }
}

/* ---------- Public-site extras: back to top, the forms' windows ---------- */
.sw-extras { font-family: var(--sans); color: var(--ink); }
/* While a form's window is open, the page behind it stays still. */
body.sw-nav-open { overflow: hidden; }
/* A link to a section of the same page outlines that section for a moment (flash in springwood.js). */
.sw-live .sw-flash { animation: sw-flash 2.4s ease-out; }
@keyframes sw-flash { 0%, 40% { box-shadow: inset 0 0 0 5px var(--tl-accent, #c00); } 100% { box-shadow: inset 0 0 0 5px transparent; } }
@media (prefers-reduced-motion: reduce) { .sw-live .sw-flash { animation: none; box-shadow: inset 0 0 0 5px var(--tl-accent, #c00); } }
html.a11y-calm .sw-live .sw-flash { box-shadow: inset 0 0 0 5px var(--tl-accent, #c00); }
.sw-to-top { position: fixed; z-index: 25; right: calc(16px + env(safe-area-inset-right, 0px)); bottom: calc(16px + env(safe-area-inset-bottom, 0px)); width: 48px; height: 48px; border-radius: 50%; border: 0; cursor: pointer; background: var(--navy); color: #fff; box-shadow: 0 8px 22px color-mix(in srgb, var(--navy) 30%, transparent), inset 0 0 0 1px rgba(255, 255, 255, .16); opacity: 0; transform: translateY(14px); pointer-events: none; transition: opacity .25s ease, transform .25s ease, background-color .2s; }
.sw-to-top.show { opacity: 1; transform: none; pointer-events: auto; }
.sw-to-top:hover { background: var(--forest-ink); }
.sw-to-top span { position: absolute; left: 50%; top: 53%; width: 12px; height: 12px; border-top: 2.5px solid currentColor; border-left: 2.5px solid currentColor; transform: translate(-50%, -30%) rotate(45deg); }
body.sw-nav-open .sw-to-top { display: none; }
@media (min-width: 981px) { .sw-to-top { inset-inline-end: 24px; bottom: 24px; } }

.sw-modal { position: fixed; inset: 0; z-index: 1000; background: color-mix(in srgb, var(--navy) 72%, transparent); display: flex; align-items: flex-start; justify-content: center; padding: 32px 16px; overflow-y: auto; }
.sw-modal[hidden] { display: none; }
.sw-modal-panel { position: relative; width: 100%; max-width: 700px; margin: auto; background: #fff; color: var(--ink); border-radius: 20px; padding: clamp(24px, 5vw, 44px); box-shadow: 0 30px 80px color-mix(in srgb, var(--navy) 35%, transparent); box-sizing: border-box; }
.sw-modal-panel:focus { outline: none; }
.sw-modal-close { position: absolute; top: 14px; inset-inline-end: 14px; width: 42px; height: 42px; border: 0; border-radius: 50%; background: var(--mist); color: var(--navy); font-size: 26px; line-height: 1; cursor: pointer; }
.sw-modal-head { margin-bottom: 24px; padding-inline-end: 40px; }
.sw-modal-head .sw-label { font-size: 13px; font-weight: 600; letter-spacing: .12em; text-transform: uppercase; color: var(--forest-ink); margin-bottom: 8px; }
.sw-modal-head h2 { font-size: clamp(28px, 4vw, 38px); letter-spacing: -0.02em; font-weight: 500; margin: 0 0 10px; }
.sw-modal-head p { color: var(--soft); margin: 0; }
.sw-rf fieldset { border: 0; padding: 0; margin: 0 0 18px; }
.sw-rf legend { font-size: 13px; font-weight: 600; letter-spacing: .12em; text-transform: uppercase; color: var(--forest-ink); margin-bottom: 14px; }
.sw-row2 { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
@media (max-width: 560px) { .sw-row2 { grid-template-columns: 1fr; } }
.sw-fg { display: flex; flex-direction: column; gap: 5px; margin-bottom: 14px; }
.sw-fg label { font-size: 15px; font-weight: 600; }
.sw-req { color: var(--forest-ink); }
.sw-fg input, .sw-fg select, .sw-fg textarea { font: 16px/1.4 var(--sans); color: var(--ink); background: #fff; border: 1.5px solid #C9D2D6; border-radius: 10px; padding: 11px 13px; }
.sw-fg input:focus, .sw-fg select:focus, .sw-fg textarea:focus { outline: none; border-color: var(--forest); box-shadow: 0 0 0 3px color-mix(in srgb, var(--forest) 18%, transparent); }
.sw-check { display: flex; gap: 11px; align-items: flex-start; font-size: 15px; line-height: 1.5; cursor: pointer; }
.sw-check input { width: 18px; height: 18px; margin-top: 3px; flex-shrink: 0; accent-color: var(--forest-ink); }
.sw-rf-actions { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 14px; margin-top: 22px; }
.sw-rf-actions p { margin: 0; }
.sw-extras .sw-small { font-size: 14px; }
.sw-extras .sw-muted { color: var(--soft); }
.sw-rf-done { text-align: center; padding: 40px 16px; }
.sw-rf-tick { display: inline-grid; place-items: center; width: 60px; height: 60px; border-radius: 50%; background: var(--forest-ink); color: #fff; font-size: 28px; margin-bottom: 18px; }
.sw-rf-done h3 { font-size: 26px; font-weight: 500; margin: 0 0 10px; }
.sw-rf-done p { color: var(--soft); margin: 0 0 8px; }
.sw-err { font-size: 13.5px; color: #B42318; min-height: 1em; }
.sw-err:empty { min-height: 0; }
.sw-fg .sw-invalid { border-color: #B42318; }
.sw-rf-failed { width: 100%; margin: 0; }
.sw-trap { position: absolute; inset-inline-start: -9999px; width: 1px; height: 1px; overflow: hidden; }

/* =========================================================
   Added for the GM Hazards site (22 October 2026), and open to every site in this design:
   heroes without a photo, news posts, events, fact sheets, a news post's own page and a site's
   own form with its own questions.
   ========================================================= */

/* A hero without a photo is a band of colour, only as tall as its words: the main colour, the second
   colour or a pale one (sw-tone-*), set on each hero so the pages need not all look the same. */
.d-springwood section.sw-hero-plain { min-height: 0; }
.d-springwood .sw-hero-page.sw-hero-plain .sw-body { padding-top: 150px; padding-bottom: 64px; }
.d-springwood .sw-hero-home.sw-hero-plain .sw-body { padding-top: 170px; padding-bottom: 56px; }
.d-springwood .sw-hero-plain .sw-facts { margin-bottom: 6px; }
.d-springwood .sw-hero-page.sw-hero-plain h1 { font-size: clamp(42px, 6cqi, 76px); }

/* "Read more" with a small arrow, on cards */
.d-springwood .sw-more { display: inline-flex; align-items: center; gap: 10px; margin-top: auto; padding-top: 16px; font-size: 15px; font-weight: 600; color: var(--ink); }
.d-springwood .sw-more .sw-arrow { width: 8px; height: 8px; border-width: 2px; }
.d-springwood a:hover .sw-more .sw-arrow { transform: translateX(4px) rotate(45deg); }

/* News posts */
.d-springwood .sw-posts { display: grid; grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); gap: 16px; }
.d-springwood .sw-post-card { display: flex; flex-direction: column; background: #fff; border: 1px solid var(--line); border-radius: 16px; overflow: hidden; color: var(--ink); transition: border-color .2s, box-shadow .2s; }
.d-springwood .sw-bg-mist .sw-post-card, .d-springwood .sw-bg-cream .sw-post-card { border-color: transparent; }
.d-springwood a.sw-post-card:hover { border-color: var(--navy); box-shadow: 0 10px 28px color-mix(in srgb, var(--navy) 12%, transparent); }
.d-springwood .sw-post-card .sw-ph { aspect-ratio: 16 / 9; }
.d-springwood .sw-post-card-body { display: flex; flex-direction: column; flex: 1; padding: 24px 26px 26px; }
.d-springwood .sw-post-card time { font-size: 14px; color: var(--soft); }
.d-springwood .sw-post-card h3 { font-size: 21px; font-weight: 500; line-height: 1.25; letter-spacing: -0.01em; margin-top: 6px; }
.d-springwood .sw-post-card p { color: var(--soft); font-size: 16px; margin-top: 10px; display: -webkit-box; -webkit-line-clamp: 4; -webkit-box-orient: vertical; overflow: hidden; }

/* Events, with a date tile. Past events are greyed and listed below. */
.d-springwood .sw-events { display: grid; gap: 14px; }
.d-springwood .sw-event { display: grid; grid-template-columns: 112px minmax(0, 1fr); gap: 26px; align-items: start; padding: 22px; background: #fff; border: 1px solid var(--line); border-radius: 16px; color: var(--ink); }
.d-springwood .sw-bg-mist .sw-event, .d-springwood .sw-bg-cream .sw-event { border-color: transparent; }
.d-springwood .sw-event-date { display: flex; flex-direction: column; align-items: center; justify-content: center; min-height: 112px; padding: 10px; border-radius: 12px; background: var(--navy); color: #fff; text-align: center; line-height: 1; box-sizing: border-box; }
.d-springwood .sw-event-date .d { font-size: 38px; font-weight: 600; letter-spacing: -0.02em; }
.d-springwood .sw-event-date .m { margin-top: 6px; font-size: 13px; font-weight: 600; letter-spacing: .14em; text-transform: uppercase; color: var(--leaf); }
.d-springwood .sw-event-date .y { margin-top: 5px; font-size: 13px; opacity: .75; }
.d-springwood .sw-event-date .tba { font-size: 14px; font-weight: 600; line-height: 1.3; }
.d-springwood .sw-event .sw-label { margin-bottom: 6px; }
.d-springwood .sw-event h3 { font-size: 22px; font-weight: 600; letter-spacing: -0.01em; }
.d-springwood .sw-event-meta { margin-top: 6px; color: var(--soft); font-size: 15.5px; }
.d-springwood .sw-event-meta > span + span::before { content: "·"; margin: 0 8px; }
.d-springwood .sw-event-text { margin-top: 10px; color: var(--soft); font-size: 16px; max-width: 72ch; }
.d-springwood .sw-event .sw-ctas { margin-top: 16px; }
.d-springwood .sw-event .btn { white-space: normal; }
.d-springwood .sw-event.is-past .sw-event-date { background: var(--mist); color: var(--soft); }
.d-springwood .sw-event.is-past .sw-event-date .m { color: var(--soft); }
.d-springwood .sw-bg-mist .sw-event.is-past .sw-event-date { background: #F6F8F3; }
.d-springwood .sw-past { margin-top: 64px; }
.d-springwood .sw-past > h3 { margin-bottom: 18px; }

/* Fact sheets */
.d-springwood .sw-docs { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 16px; }
.d-springwood .sw-doc { display: flex; flex-direction: column; align-items: flex-start; padding: 24px 24px 26px; background: #fff; border: 1px solid var(--line); border-radius: 16px; color: var(--ink); transition: border-color .2s, box-shadow .2s; }
.d-springwood .sw-bg-mist .sw-doc, .d-springwood .sw-bg-cream .sw-doc { border-color: transparent; }
.d-springwood a.sw-doc:hover { border-color: var(--navy); box-shadow: 0 10px 28px color-mix(in srgb, var(--navy) 12%, transparent); }
.d-springwood .sw-doc-badge { display: inline-grid; place-items: center; width: 46px; height: 54px; border-start-start-radius: 6px; border-start-end-radius: 14px; border-end-end-radius: 6px; border-end-start-radius: 6px; background: var(--navy); color: #fff; font-size: 12px; font-weight: 700; letter-spacing: .08em; }
.d-springwood .sw-doc h3 { font-size: 20px; font-weight: 600; line-height: 1.25; margin-top: 18px; }
.d-springwood .sw-doc p { color: var(--soft); font-size: 15.5px; margin-top: 8px; }
.d-springwood .sw-doc-meta { margin-top: 14px; font-size: 13.5px; color: var(--muted); }

/* A news post's own page */
.d-springwood .sw-post-hero .sw-body { padding-top: 150px; padding-bottom: 60px; }
.d-springwood .sw-post-hero h1 { font-size: clamp(34px, 4.8cqi, 60px); line-height: 1.06; max-width: 22ch; }
.d-springwood .sw-post-date { margin-bottom: 14px; font-size: 13px; font-weight: 600; letter-spacing: .12em; text-transform: uppercase; color: var(--leaf); }
.d-springwood .sw-post-hero .sw-lead { margin-top: 18px; max-width: 58ch; font-size: 19px; }
.d-springwood article.sw-post { padding-block: clamp(56px, 7cqi, 96px); }
.d-springwood .sw-post-more { border-top: 1px solid var(--line); }
.d-springwood .sw-post .sw-prose { font-size: 18px; line-height: 1.7; }
.d-springwood .sw-post .sw-prose > * { max-width: 68ch; }
.d-springwood .sw-post .sw-prose > * + * { margin-top: 18px; }
.d-springwood .sw-post .sw-prose ul { padding-inline-start: 1.3em; }
.d-springwood .sw-post .sw-prose li + li { margin-top: 6px; }
.d-springwood .sw-post .sw-prose li::marker { color: var(--forest); }
.d-springwood .sw-post .sw-prose a { color: var(--forest-ink); text-decoration: underline; text-underline-offset: 3px; overflow-wrap: anywhere; }
.d-springwood .sw-post-pic { max-width: 900px; aspect-ratio: 16 / 9; border-radius: 20px; margin-bottom: 44px; }
.d-springwood .sw-post-back { margin-top: 44px; }

@container site (max-width: 640px) {
  .d-springwood .sw-event { grid-template-columns: 78px minmax(0, 1fr); gap: 16px; padding: 16px; }
  .d-springwood .sw-event-date { min-height: 84px; }
  .d-springwood .sw-event-date .d { font-size: 28px; }
  .d-springwood .sw-event-date .tba { font-size: 12.5px; }
  .d-springwood .sw-event h3 { font-size: 19px; }
  .d-springwood .sw-hero-page.sw-hero-plain .sw-body, .d-springwood .sw-post-hero .sw-body { padding-top: 110px; padding-bottom: 48px; }
  .d-springwood .sw-hero-home.sw-hero-plain .sw-body { padding-top: 110px; }
}
/* On a phone the date runs across the top of each event, leaving the words the full width. */
@container site (max-width: 480px) {
  .d-springwood .sw-event { grid-template-columns: minmax(0, 1fr); gap: 14px; }
  .d-springwood .sw-event-date { flex-direction: row; justify-content: flex-start; align-items: baseline; gap: 8px; min-height: 0; padding: 10px 14px; }
  .d-springwood .sw-event-date .d { font-size: 22px; }
  .d-springwood .sw-event-date .m, .d-springwood .sw-event-date .y { margin-top: 0; }
  .d-springwood .sw-event-date .tba { font-size: 14px; }
}

/* A site's own form: questions with a line of help, and choices shown as cards */
.sw-help { font-size: 14px; color: var(--soft); margin-top: -2px; }
.sw-fg-label { font-size: 15px; font-weight: 600; }
.sw-form-info { color: var(--soft); font-size: 15px; margin: -4px 0 16px; }
.sw-choices { display: grid; gap: 8px; margin-top: 4px; }
.sw-choice { display: flex; gap: 11px; align-items: flex-start; padding: 12px 14px; border: 1.5px solid #C9D2D6; border-radius: 10px; cursor: pointer; font-size: 15.5px; line-height: 1.4; }
.sw-choice:has(input:checked) { border-color: var(--forest); background: color-mix(in srgb, var(--forest) 6%, #fff); }
.sw-choice input { width: 18px; height: 18px; margin: 1px 0 0; flex-shrink: 0; accent-color: var(--forest-ink); }
.sw-choice small { display: block; margin-top: 2px; font-size: 14px; color: var(--soft); }
.sw-fg[role="radiogroup"].sw-invalid .sw-choice { border-color: #B42318; }

/* The form as the editor's Form panel shows it: open on its dark backdrop, with the thank-you
   message visitors see after sending drawn below it. */
.sw-form-preview { min-height: 100%; padding: 48px 16px 72px; box-sizing: border-box; background: color-mix(in srgb, var(--navy) 78%, #fff); }
.sw-form-preview .sw-modal-panel { margin: 0 auto; }
.sw-form-preview .sw-rf-done { margin-top: 36px; padding: 28px 16px 8px; border-top: 2px dashed var(--line); }
.sw-form-preview .sw-rf-done::before { content: "After sending, visitors see this instead"; display: block; margin-bottom: 20px; font-size: 12px; font-weight: 600; letter-spacing: .12em; text-transform: uppercase; color: var(--soft); }

/* Hero colours without a photo: the second colour, or a pale one with dark words. */
.d-springwood section.sw-tone-support { background: var(--forest-ink); }
.d-springwood section.sw-tone-tint { background: var(--c-tint, var(--cream)); color: var(--ink); }
.d-springwood .sw-tone-tint .sw-crumb .link-crumb { color: var(--ink); border-bottom-color: color-mix(in srgb, var(--ink) 40%, transparent); }
.d-springwood .sw-tone-tint .sw-facts { border-top-color: color-mix(in srgb, var(--ink) 18%, transparent); }
.d-springwood .sw-tone-tint .sw-facts > div { color: var(--soft); }
.d-springwood .sw-tone-tint .sw-facts b { color: var(--ink); }
.d-springwood .sw-tone-tint .sw-post-date { color: var(--forest-ink); }
.d-springwood .sw-tone-support .sw-post-date { color: rgba(255, 255, 255, .78); }
/* The header over a pale hero has dark words. */
.d-springwood .sw-head.is-pale { color: var(--ink); }

/* A hero photo set to drift keeps moving: after it settles in on arrival, it zooms slowly in and
   out for as long as the page is open, enough to see without being distracting. */
@media (prefers-reduced-motion: no-preference) {
  .motion .d-springwood .sw-hero.sw-drift .sw-bg { animation: sw-breathe 18s ease-in-out 1.8s infinite alternate; }
  @keyframes sw-breathe { from { transform: scale(1); } to { transform: scale(1.12) translate(-1.2%, -0.8%); } }
}

/* A news card's photo settles in as it appears, and leans in a little under the pointer. */
.d-springwood .sw-post-card .sw-ph img { transition: transform .6s cubic-bezier(.2, .7, .2, 1); }
.d-springwood a.sw-post-card:hover .sw-ph img { transform: scale(1.04); }
/* A news card without a photo: the site's logo, small and quiet, on its pale colour. */
.d-springwood .sw-post-card .sw-ph-mark { display: grid; place-items: center; background: var(--c-tint, var(--mist)); }
.d-springwood .sw-post-card .sw-ph-mark img { width: 52%; height: auto; object-fit: contain; }
/* A site's own footer logo, such as one with words beneath it, is set by its width so the words stay readable. */
.d-springwood .sw-foot-logo.sw-foot-logo--own { width: 210px; max-width: 100%; height: auto; margin: 0 0 16px; }
/* Social media links in the footer: the network's mark in a small round button. */
.d-springwood .sw-foot .sw-social { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 18px; }
.d-springwood .sw-social a { display: grid; place-items: center; width: 40px; height: 40px; border-radius: 50%; background: #fff; color: var(--ink); transition: background-color .2s, color .2s; }
.d-springwood .sw-social a:hover { background: var(--navy); color: #fff; text-decoration: none; }
.d-springwood .sw-social svg { width: 18px; height: 18px; display: block; }
