@import url("https://fonts.googleapis.com/css2?family=Barlow+Condensed:wght@700;800&family=Inter:opsz,wght@14..32,400;14..32,500;14..32,700&display=swap");

/* Stayful components, every colour, size and radius comes from tokens.css.
   Palette: Stayful Brand Guidelines v1.0. Patterns: the reference sites Martyn chose. */

/* ── Browser surfaces ─────────────────────────────── */
html { color-scheme: light; accent-color: var(--action); scrollbar-color: var(--warm-grey) var(--surface); }
[data-theme="dark"] { color-scheme: dark; }
body { margin: 0; background: var(--surface); color: var(--text); font: 400 17px/28px var(--font-sans); font-optical-sizing: auto; -webkit-font-smoothing: antialiased; caret-color: var(--brand-green); }
::selection { background: var(--mint); color: var(--deep-green); }
a { color: var(--action); text-decoration-thickness: 1px; text-underline-offset: .2em; }
a:hover { text-decoration-thickness: 2px; }
:focus-visible { outline: 2px solid var(--focus); outline-offset: 2px; }
.sf-band :focus-visible, .sf-footer :focus-visible, .sf-hero :focus-visible { outline-color: var(--focus-on-band); }
.sf-root { padding: 24px; display: flex; flex-wrap: wrap; gap: var(--space-4); align-items: center; }
.sf-num { font-variant-numeric: tabular-nums lining-nums; }
@media (prefers-reduced-motion: reduce) { * { transition: none !important; } }

/* ── Display type ─────────────────────────────────── */
.sf-display, .sf-h1, .sf-h2 { font-family: var(--font-display); font-weight: 800; text-transform: uppercase; text-wrap: balance; margin: 0; color: var(--heading); }
.sf-display { font-size: clamp(56px, 9vw, 104px); line-height: .9; letter-spacing: -.01em; }
.sf-h1 { font-size: clamp(44px, 6vw, 72px); line-height: .92; }
.sf-h2 { font-size: clamp(34px, 4vw, 48px); line-height: .96; }

/* ── Button ───────────────────────────────────────── */
.sf-btn { display: inline-flex; align-items: center; gap: 12px; min-height: 52px; padding: 0 8px 0 24px; border-radius: var(--radius-pill); border: 1.5px solid transparent; font: 700 16px/20px var(--font-sans); letter-spacing: -.005em; text-decoration: none; white-space: nowrap; cursor: pointer; transition: background-color .2s cubic-bezier(.2,.8,.2,1), color .2s, border-color .2s; }
.sf-btn__arrow { display: grid; place-items: center; width: 36px; height: 36px; border-radius: 50%; background: var(--on-action); color: var(--action); transition: transform .25s cubic-bezier(.2,.8,.2,1); }
.sf-btn__arrow svg { width: 16px; height: 16px; }
.sf-btn:hover .sf-btn__arrow { transform: translateX(3px); }
.sf-btn--primary { background: var(--action); color: var(--on-action); }
.sf-btn--primary:hover { background: var(--action-hover); }
.sf-btn--secondary { background: transparent; color: var(--action); border-color: var(--action); padding-right: 24px; }
.sf-btn--secondary:hover { background: var(--surface-tint); }
.sf-btn--mint { background: var(--band-accent); color: var(--on-mint); }
.sf-btn--mint .sf-btn__arrow { background: var(--deep-green); color: var(--mint); }
.sf-btn--mint:hover { background: var(--cream); }
.sf-btn--ghost-light { background: transparent; color: var(--cream); border-color: rgba(245,243,238,.5); padding-right: 24px; }
.sf-btn--ghost-light:hover { border-color: var(--cream); }
.sf-btn[disabled] { background: var(--surface-raised); color: var(--text-muted); border-color: var(--light-grey); cursor: not-allowed; padding-right: 24px; }

/* ── Tag ──────────────────────────────────────────── */
.sf-tag { display: inline-flex; align-items: center; gap: 6px; height: 30px; padding: 0 14px; border-radius: var(--radius-pill); font: 500 13px/1 var(--font-sans); letter-spacing: .01em; color: var(--on-mint); background: var(--mint); white-space: nowrap; }
.sf-tag--outline { background: transparent; color: var(--text); box-shadow: inset 0 0 0 1px var(--line-strong); }
.sf-tag--on-photo { background: rgba(245,243,238,.92); color: var(--deep-green); }

/* ── Hero ─────────────────────────────────────────── */
.sf-hero { position: relative; width: 100%; min-height: 560px; border-radius: var(--radius-lg); overflow: hidden; color: var(--cream); display: grid; align-content: end; isolation: isolate; }
.sf-hero__img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; z-index: -2; }
.sf-hero::after { content: ""; position: absolute; inset: 0; z-index: -1; background: linear-gradient(180deg, rgba(31,48,25,.10) 0%, rgba(31,48,25,.30) 35%, rgba(31,48,25,.82) 62%, rgba(31,48,25,.94) 100%); }
.sf-hero__body { display: grid; grid-template-columns: minmax(0, 1.5fr) minmax(0, 1fr); gap: var(--space-6); align-items: end; padding: var(--space-7); }
.sf-hero .sf-display { color: var(--cream); }
.sf-hero__side { display: grid; gap: var(--space-5); padding-bottom: 6px; }
.sf-hero__side p { margin: 0; font-size: 18px; line-height: 29px; color: rgba(245,243,238,.9); max-width: 38ch; }
.sf-hero__tags { position: absolute; top: var(--space-6); left: var(--space-7); display: flex; gap: 8px; }

/* ── Figures row ──────────────────────────────────── */
.sf-figures { display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); width: 100%; }
.sf-figure { padding: var(--space-5) var(--space-6); display: grid; gap: 8px; align-content: start; }
.sf-figure + .sf-figure { border-left: 1px solid var(--line); }
.sf-figure__num { font: 800 clamp(40px, 4.4vw, 56px)/1 var(--font-display); white-space: nowrap; color: var(--brand-green); font-variant-numeric: tabular-nums lining-nums; }
.sf-figure__label { font-size: 14px; line-height: 21px; color: var(--text-muted); max-width: 26ch; }
.sf-figure__label strong { display: block; color: var(--text); font-weight: 700; font-size: 15px; }

/* ── Callout ──────────────────────────────────────── */
.sf-callout { background: var(--surface-tint); border-radius: var(--radius-md); padding: var(--space-5) var(--space-6); max-width: 680px; display: grid; gap: 10px; }
.sf-callout__title { margin: 0; font: 700 18px/26px var(--font-sans); color: var(--text); display: flex; align-items: center; gap: 10px; }
.sf-callout__title svg { width: 20px; height: 20px; color: var(--brand-green); flex: none; }
.sf-callout p { margin: 0; }

/* ── Process steps ────────────────────────────────── */
.sf-steps { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); width: 100%; border-top: 1px solid var(--line); counter-reset: step; }
.sf-step { counter-increment: step; padding: var(--space-5) var(--space-5) var(--space-6); display: grid; gap: 12px; align-content: start; min-height: 220px; }
.sf-step + .sf-step { border-left: 1px solid var(--line); }
.sf-step::before { content: counter(step, decimal-leading-zero); font: 800 44px/1 var(--font-display); color: var(--brand-green); }
.sf-step h3 { margin: 0; font: 700 19px/26px var(--font-sans); color: var(--text); }
.sf-step p { margin: 0; font-size: 15px; line-height: 24px; color: var(--text-muted); }
.sf-step--now { background: var(--mint); border-radius: 0 0 var(--radius-md) var(--radius-md); }
.sf-step--now::before, .sf-step--now h3, .sf-step--now p { color: var(--on-mint); }
.sf-step--now + .sf-step { border-left-color: transparent; }

/* ── Feature grid (ruled, not boxed) ──────────────── */
.sf-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); width: 100%; border-top: 1px solid var(--line); border-left: 1px solid var(--line); }
.sf-grid__cell { padding: var(--space-6) var(--space-5); border-right: 1px solid var(--line); border-bottom: 1px solid var(--line); display: grid; gap: 10px; align-content: start; }
.sf-grid__cell svg { width: 28px; height: 28px; color: var(--brand-green); }
.sf-grid__cell h3 { margin: 4px 0 0; font: 700 19px/26px var(--font-sans); color: var(--text); }
.sf-grid__cell p { margin: 0; font-size: 15px; line-height: 24px; color: var(--text-muted); }
.sf-grid__cell a { font: 700 14px/20px var(--font-sans); margin-top: 6px; }

/* ── Location card ────────────────────────────────── */
.sf-place { position: relative; width: 280px; aspect-ratio: 4 / 5; border-radius: var(--radius-md); overflow: hidden; display: grid; align-content: end; text-decoration: none; color: var(--cream); isolation: isolate; }
.sf-place img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; z-index: -2; transition: transform .6s cubic-bezier(.2,.8,.2,1); }
.sf-place::after { content: ""; position: absolute; inset: 0; z-index: -1; background: linear-gradient(180deg, rgba(31,48,25,0) 30%, rgba(31,48,25,.72) 58%, rgba(31,48,25,.94) 100%); }
.sf-place:hover img { transform: scale(1.04); }
.sf-place .sf-tag { position: absolute; top: 14px; left: 14px; }
.sf-place__body { padding: var(--space-5); display: grid; gap: 6px; }
.sf-place__title { margin: 0; font: 800 34px/32px var(--font-display); text-transform: uppercase; }
.sf-place__text { margin: 0; font-size: 14px; line-height: 21px; color: rgba(245,243,238,.88); }

/* ── Testimonial ──────────────────────────────────── */
.sf-quote { max-width: 640px; margin: 0; padding: var(--space-6) 0; border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); display: grid; gap: var(--space-4); }
.sf-quote__stars { display: flex; gap: 3px; color: var(--brand-green); }
.sf-quote__stars svg { width: 18px; height: 18px; }
.sf-quote blockquote { margin: 0; font: 400 26px/36px var(--font-sans); letter-spacing: -.02em; color: var(--text); text-wrap: pretty; }
.sf-quote figcaption { display: flex; align-items: center; gap: 12px; font-size: 14px; line-height: 20px; color: var(--text-muted); }
.sf-quote figcaption img { width: 44px; height: 44px; border-radius: 50%; object-fit: cover; }
.sf-quote figcaption strong { display: block; color: var(--text); font-size: 15px; }

/* ── Feature band (dark, with cream cards) ───────── */
.sf-band { background: var(--band); color: var(--on-band); border-radius: var(--radius-lg); padding: var(--space-8) var(--space-7); width: 100%; box-sizing: border-box; display: grid; grid-template-columns: minmax(0, 1.1fr) minmax(0, 1fr); gap: var(--space-7); align-items: end; }
.sf-band .sf-h2 { color: var(--cream); }
.sf-band .sf-h2 em { font-style: normal; color: var(--band-accent); }
.sf-band__copy { display: grid; gap: var(--space-5); }
.sf-band__copy p { margin: 0; color: var(--on-band-muted); max-width: 44ch; }
.sf-band__actions { display: flex; flex-wrap: wrap; gap: 12px; }
.sf-band__card { background: var(--cream); color: var(--deep-green); border-radius: var(--radius-md); padding: var(--space-5) var(--space-6); display: grid; gap: 4px; }
.sf-band__card .sf-figure__num { color: var(--deep-green); }
.sf-band__card-label { font-size: 14px; line-height: 21px; color: var(--dark-green); }

/* ── FAQ ──────────────────────────────────────────── */
.sf-faq { max-width: 680px; width: 100%; border-top: 1px solid var(--line); }
.sf-faq details { border-bottom: 1px solid var(--line); }
.sf-faq summary { list-style: none; cursor: pointer; display: grid; grid-template-columns: 1fr 32px; gap: 16px; align-items: center; padding: 20px 0; font: 700 18px/26px var(--font-sans); letter-spacing: -.01em; color: var(--text); }
.sf-faq summary::-webkit-details-marker { display: none; }
.sf-faq__icon { position: relative; width: 32px; height: 32px; border-radius: 50%; box-shadow: inset 0 0 0 1px var(--line-strong); transition: background-color .2s; }
.sf-faq__icon::before, .sf-faq__icon::after { content: ""; position: absolute; left: 50%; top: 50%; width: 12px; height: 1.5px; margin: -.75px 0 0 -6px; background: var(--text); transition: transform .25s cubic-bezier(.2,.8,.2,1); }
.sf-faq__icon::after { transform: rotate(90deg); }
.sf-faq details[open] .sf-faq__icon { background: var(--mint); box-shadow: none; }
.sf-faq details[open] .sf-faq__icon::after { transform: rotate(0deg); }
.sf-faq details > div { padding: 0 48px 22px 0; color: var(--text); }

/* ── Form field ───────────────────────────────────── */
.sf-field { display: grid; gap: 6px; width: 320px; }
.sf-field label { font: 700 15px/20px var(--font-sans); color: var(--text); }
.sf-field__help { font-size: 14px; line-height: 20px; color: var(--text-muted); }
.sf-input { height: 50px; padding: 0 16px; border: 1px solid var(--line-strong); border-radius: var(--radius-sm); background: var(--surface-raised); color: var(--text); font: 400 17px var(--font-sans); transition: border-color .15s; }
.sf-input:hover { border-color: var(--text); }
.sf-input::placeholder { color: var(--text-muted); }
.sf-field--error .sf-input { border: 2px solid var(--danger); }
.sf-field__error { display: flex; align-items: center; gap: 6px; font: 700 14px/20px var(--font-sans); color: var(--danger); }
.sf-field__error svg { width: 16px; height: 16px; flex: none; }

/* ── Site header ──────────────────────────────────── */
.sf-header { width: 100%; box-sizing: border-box; display: flex; align-items: center; gap: var(--space-6); padding: 14px 24px; background: var(--surface); }
.sf-header__logo img { height: 52px; width: auto; display: block; }
.sf-header nav { display: flex; gap: 2px; flex-wrap: wrap; margin-left: auto; }
.sf-header nav a { padding: 8px 14px; border-radius: var(--radius-pill); color: var(--text); text-decoration: none; font: 500 15px/20px var(--font-sans); }
.sf-header nav a:hover { background: var(--surface-tint); }
.sf-header nav a[aria-current] { box-shadow: inset 0 0 0 1px var(--line-strong); }

/* ── Site footer ──────────────────────────────────── */
.sf-footer { width: 100%; box-sizing: border-box; background: var(--footer); color: var(--on-band); padding: var(--space-7) var(--space-7) var(--space-5); display: grid; gap: var(--space-7); }
.sf-footer__top { display: grid; grid-template-columns: minmax(0, 1.2fr) repeat(3, minmax(0, 1fr)); gap: var(--space-6); }
.sf-footer__brand { display: grid; gap: var(--space-4); align-content: start; }
.sf-footer__brand img { width: 180px; height: auto; }
.sf-footer__brand p { margin: 0; color: var(--on-band-muted); font-size: 15px; line-height: 24px; max-width: 30ch; }
.sf-footer h3 { margin: 0 0 12px; font: 700 13px/18px var(--font-sans); letter-spacing: .02em; color: var(--sage); }
.sf-footer ul { list-style: none; margin: 0; padding: 0; display: grid; gap: 8px; }
.sf-footer a { color: var(--on-band); text-decoration: none; font-size: 15px; }
.sf-footer a:hover { text-decoration: underline; }
.sf-footer__base { display: flex; justify-content: space-between; gap: 16px; flex-wrap: wrap; padding-top: var(--space-5); border-top: 1px solid rgba(165,183,154,.25); font-size: 13px; color: var(--on-band-muted); }

/* ── Logo usage ───────────────────────────────────── */
.sf-logos { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 12px; width: 100%; }
.sf-logo-tile { border-radius: var(--radius-md); aspect-ratio: 4 / 3; display: grid; place-items: center; padding: 28px; box-sizing: border-box; }
.sf-logo-tile img { max-width: 100%; max-height: 100%; }
.sf-logo-tile--cream { background: var(--cream); box-shadow: inset 0 0 0 1px var(--cream-300); }
.sf-logo-tile--deep { background: var(--deep-green); }
.sf-logo-tile--darkest { background: var(--darkest-green); }
.sf-logo-tile--mint { background: var(--mint); }
.sf-logo-note { grid-column: 1 / -1; font-size: 13px; color: var(--text-muted); margin: 0; }

@media (max-width: 760px) {
  .sf-hero__body, .sf-band, .sf-footer__top { grid-template-columns: 1fr; }
  .sf-hero { min-height: 0; align-content: stretch; }
  .sf-hero__tags { position: static; flex-wrap: wrap; padding: var(--space-5) var(--space-5) 0; }
  .sf-hero__body { padding: var(--space-8) var(--space-5) var(--space-5); gap: var(--space-5); }
  .sf-band { padding: var(--space-7) var(--space-5); }
  .sf-steps, .sf-grid { grid-template-columns: 1fr 1fr; }
  .sf-logos { grid-template-columns: 1fr 1fr; }
}
