/* NovaNode Web — base.css
   Structure only. Every colour, typeface and shape comes from a theme file
   via custom properties. Blocks never use literal colours.

   A theme MUST define:
     --ground --surface --ink --muted --line --accent --on-accent
     --font-display --font-body --radius --radius-button --measure
   Optional (fall back to sensible values):
     --border-w --link-underline --card-gap
*/

/* ---------- reset ---------- */
*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; }
body { margin: 0; min-height: 100vh; }
img, svg, video { display: block; max-width: 100%; height: auto; }
h1, h2, h3, h4, p, figure, ul, ol, dl, dd, table { margin: 0; }
ul, ol { padding: 0; list-style: none; }
button, input, select, textarea { font: inherit; color: inherit; }
button { background: none; border: 0; padding: 0; cursor: pointer; }
a { color: inherit; }
table { border-collapse: collapse; width: 100%; }
:focus-visible { outline: 3px solid var(--accent); outline-offset: 3px; }
@media (prefers-reduced-motion: reduce) { *, *::before, *::after { transition: none !important; animation: none !important; } }

/* ---------- structural tokens ---------- */
:root {
  --space-1: 0.25rem; --space-2: 0.5rem; --space-3: 0.75rem; --space-4: 1rem;
  --space-5: 1.5rem;  --space-6: 2rem;   --space-7: 3rem;    --space-8: 4.5rem; --space-9: 7rem;
  --border-w: 1px;
  --card-gap: var(--space-5);
  --page-narrow: 30rem;   /* link pages */
  --page-wide: 72rem;     /* sites */
  --gutter: clamp(1.25rem, 5vw, 3.5rem);
  --tap: 2.75rem;         /* 44px minimum target */
}

/* ---------- page frame ---------- */
body {
  background: var(--ground);
  color: var(--ink);
  font-family: var(--font-body);
  font-size: 1.0625rem;
  line-height: 1.55;
  -webkit-font-smoothing: antialiased;
}
.w-page { display: flex; flex-direction: column; min-height: 100vh; }
.w-main { flex: 1 0 auto; width: 100%; margin: 0 auto; padding: 0 var(--gutter); }
.w-layout-narrow .w-main { max-width: calc(var(--page-narrow) + 2 * var(--gutter)); }
.w-layout-wide   .w-main { max-width: calc(var(--page-wide)   + 2 * var(--gutter)); }

.w-block { padding-block: var(--space-7); }
.w-block + .w-block { padding-top: 0; }
.w-block-tight { padding-block: var(--space-5); }
.w-block-spacious { padding-block: var(--space-8); }
/* full-bleed sections carry their own background and break out of the gutter */
.w-block-band { margin-inline: calc(-1 * var(--gutter)); padding-inline: var(--gutter); background: var(--surface); }
.w-block + .w-block-band, .w-block-band + .w-block { padding-top: var(--space-7); }

/* ---------- type scale (Elements of Typographic Style, ~1.25 ratio, fluid) ---------- */
.w-h1, h1 { font-family: var(--font-display); font-weight: var(--weight-display, 500); font-size: clamp(2.25rem, 1.4rem + 3.6vw, 4rem); line-height: 1.02; letter-spacing: var(--tracking-display, -0.02em); max-width: 22ch; text-wrap: balance; }
.w-h2, h2 { font-family: var(--font-display); font-weight: var(--weight-display, 500); font-size: clamp(1.5rem, 1.1rem + 1.6vw, 2.25rem); line-height: 1.12; letter-spacing: var(--tracking-display, -0.015em); max-width: 28ch; text-wrap: balance; }
.w-h3, h3 { font-family: var(--font-display); font-weight: var(--weight-display, 500); font-size: 1.25rem; line-height: 1.25; }
p, li, dd, td, th, label { max-width: var(--measure); }
.w-lede { font-size: 1.25rem; line-height: 1.45; color: var(--ink); }
.w-muted { color: var(--muted); }
.w-small { font-size: 0.9375rem; }
.w-prose > * + * { margin-top: var(--space-4); }
.w-prose h2 { margin-top: var(--space-6); }
.w-prose h3 { margin-top: var(--space-5); }
.w-prose a { text-decoration: underline; text-decoration-thickness: var(--link-underline, 1px); text-underline-offset: 0.15em; }
.w-prose a:hover { color: var(--accent); }
.w-prose ul { list-style: disc; padding-left: 1.25em; }
.w-prose ol { list-style: decimal; padding-left: 1.25em; }
.w-prose strong { font-weight: 600; }

/* ---------- nav ---------- */
.w-nav { width: 100%; margin: 0 auto; padding: var(--space-4) var(--gutter); display: flex; align-items: center; justify-content: space-between; gap: var(--space-5); flex-wrap: wrap; }
.w-layout-narrow .w-nav { max-width: calc(var(--page-narrow) + 2 * var(--gutter)); }
.w-layout-wide   .w-nav { max-width: calc(var(--page-wide)   + 2 * var(--gutter)); }
.w-brand { font-family: var(--font-display); font-weight: var(--weight-display, 500); font-size: 1.25rem; text-decoration: none; min-height: var(--tap); display: inline-flex; align-items: center; }
.w-menu { display: flex; gap: var(--space-2); flex-wrap: wrap; }
@media (max-width: 52rem) { .w-nav { flex-wrap: nowrap; align-items: center; } .w-menu { flex: 1 1 auto; flex-wrap: nowrap; overflow-x: auto; -webkit-overflow-scrolling: touch; scrollbar-width: none; margin-inline: var(--space-2); } .w-menu::-webkit-scrollbar { display: none; } .w-menu a { white-space: nowrap; } .w-brand { flex: none; } .w-lang { flex: none; } }
.w-menu a { display: inline-flex; align-items: center; min-height: var(--tap); padding: 0 var(--space-3); text-decoration: none; border-radius: var(--radius-button); }
.w-menu a:hover { background: var(--surface); }
.w-menu a[aria-current="page"] { text-decoration: underline; text-decoration-thickness: var(--link-underline, 1.5px); text-underline-offset: 0.3em; }
.w-lang { display: flex; gap: var(--space-1); }
.w-lang a { display: inline-flex; align-items: center; justify-content: center; min-width: var(--tap); min-height: var(--tap); text-decoration: none; border-radius: var(--radius-button); font-size: 0.9375rem; color: var(--muted); }
.w-lang a:hover { background: var(--surface); }
.w-lang a[aria-current="true"] { color: var(--ink); font-weight: 600; }

/* ---------- identity (link pages) ---------- */
.w-identity { display: flex; flex-direction: column; gap: var(--space-4); align-items: flex-start; }
.w-avatar { width: 6rem; height: 6rem; border-radius: var(--radius-avatar, 50%); object-fit: cover; background: var(--surface); }
.w-avatar-initials { display: grid; place-items: center; font-family: var(--font-display); font-size: 2rem; color: var(--muted); }
.w-tagline { font-size: 1.125rem; color: var(--muted); }
.w-credit { font-size: 0.875rem; color: var(--muted); }
.w-credit a { text-decoration: underline; text-underline-offset: 0.15em; }

/* ---------- links (the linktree block) ---------- */
.w-links { display: flex; flex-direction: column; gap: var(--space-3); }
.w-layout-wide .w-links { max-width: 36rem; }
.w-link { display: grid; grid-template-columns: 1fr auto; align-items: center; column-gap: var(--space-4); min-height: 3.5rem; padding: var(--space-3) var(--space-5); text-decoration: none; border: var(--border-w) solid var(--line-strong, var(--ink)); border-radius: var(--radius-button); background: var(--surface); transition: background .12s, border-color .12s; }
.w-link:hover { background: var(--ground); border-color: var(--accent); }
.w-link-label { font-weight: 600; }
.w-link-kicker { display: block; font-size: 0.875rem; color: var(--muted); margin-bottom: 1px; }
.w-link-meta { font-size: 0.9375rem; color: var(--muted); text-align: right; }
.w-link-primary { background: var(--accent); color: var(--on-accent); border-color: var(--accent); }
.w-link-primary:hover { background: var(--accent-hover, var(--accent)); color: var(--on-accent); }
.w-link-primary .w-link-kicker, .w-link-primary .w-link-meta { color: var(--on-accent); opacity: .8; }
.w-link-featured { min-height: 5rem; }
/* links with a picture (own photo) or the service's icon on the left; a heading above a group of links */
.w-link-text { display: block; }
.w-links-h { font-size: 1rem; font-weight: 700; text-align: center; margin: var(--space-2) 0 calc(var(--space-1) * -1); }
.w-link.w-link-hasmedia { grid-template-columns: 2.5rem 1fr auto; }
.w-link-media { display: grid; place-items: center; width: 2.5rem; height: 2.5rem; margin-left: calc(var(--space-2) * -1); }
.w-link-icon { width: 1.375rem; height: 1.375rem; fill: currentColor; }
.w-link-thumb { width: 2.5rem; height: 2.5rem; border-radius: calc(var(--radius-button, 12px) * .6); object-fit: cover; display: block; }
/* Cards: white cards on the page, title centred, picture left (link-in-bio style) */
.w-links-cards .w-link { grid-template-columns: 2.75rem 1fr 2.75rem; text-align: center; background: var(--surface); border: 1px solid var(--line); box-shadow: 0 1px 2px rgba(0, 0, 0, .06), 0 2px 8px rgba(0, 0, 0, .04); padding: var(--space-2) var(--space-3); min-height: 4rem; transition: transform .12s ease, box-shadow .12s ease; }
.w-links-cards .w-link:hover { transform: translateY(-1px); box-shadow: 0 2px 4px rgba(0, 0, 0, .08), 0 6px 16px rgba(0, 0, 0, .06); border-color: var(--line); background: var(--surface); }
.w-links-cards .w-link-media { grid-column: 1; margin: 0; width: 2.75rem; height: 2.75rem; }
.w-links-cards .w-link-thumb { width: 2.75rem; height: 2.75rem; }
.w-links-cards .w-link-label, .w-links-cards .w-link-text { grid-column: 2; }
.w-links-cards .w-link-meta { grid-column: 3; font-size: .8125rem; text-align: center; }
.w-links-cards .w-link-primary { background: var(--accent); color: var(--on-accent); border-color: var(--accent); }
@media (prefers-reduced-motion: reduce) { .w-links-cards .w-link, .w-links-cards .w-link:hover { transition: none; transform: none; } }
.w-links-pills .w-link.w-link-hasmedia { gap: var(--space-2); padding-left: var(--space-3); }
.w-links-pills .w-link-media { margin: 0; width: 1.5rem; height: 1.5rem; } .w-links-pills .w-link-icon, .w-links-pills .w-link-thumb { width: 1.25rem; height: 1.25rem; }
/* the photo corners (Look → Photos) reach the avatar of the name block too; Circle makes it round */
[class*="w-corners-"] .w-avatar { border-radius: var(--radius-img); }

/* ---------- actions & buttons ---------- */
.w-actions { display: flex; flex-wrap: wrap; gap: var(--space-3); align-items: center; }
.w-button { display: inline-flex; align-items: center; justify-content: center; min-height: 3rem; padding: 0 var(--space-5); border-radius: var(--radius-button); text-decoration: none; font-weight: 600; border: var(--border-w) solid var(--accent); background: var(--accent); color: var(--on-accent); transition: background .12s; }
.w-button:hover { background: var(--accent-hover, var(--accent)); border-color: var(--accent-hover, var(--accent)); }
.w-button-secondary { background: transparent; color: var(--ink); border-color: var(--line-strong, var(--ink)); }
.w-button-secondary:hover { background: var(--surface); border-color: var(--accent); }
.w-textlink { text-decoration: underline; text-decoration-thickness: var(--link-underline, 1px); text-underline-offset: 0.2em; font-weight: 600; }
.w-textlink:hover { color: var(--accent); }

/* ---------- hero ---------- */
.w-hero { display: grid; gap: var(--space-5); align-content: start; }
.w-hero-copy { display: grid; gap: var(--space-5); }
.w-hero .w-lede { max-width: var(--measure); }
@media (min-width: 52rem) {
  .w-hero-split { grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); column-gap: var(--space-7); align-items: end; }
}

/* ---------- text with heading, optional two-column ---------- */
.w-text { display: grid; gap: var(--space-4); }
@media (min-width: 52rem) {
  .w-text-columns { grid-template-columns: minmax(0, 4fr) minmax(0, 8fr); column-gap: var(--space-7); }
  .w-text-columns > h2 { max-width: 16ch; }
}

/* ---------- cards / publications / services ---------- */
.w-section-head { display: flex; justify-content: space-between; align-items: baseline; gap: var(--space-4); margin-bottom: var(--space-5); }
.w-cards { display: grid; gap: var(--card-gap); grid-template-columns: repeat(auto-fit, minmax(16rem, 1fr)); }
.w-card { display: flex; flex-direction: column; gap: var(--space-3); text-decoration: none; }
.w-card figure { aspect-ratio: 4 / 3; overflow: hidden; border-radius: var(--radius-img, var(--radius)); background: var(--surface); }
.w-card img { width: 100%; height: 100%; object-fit: cover; }
.w-card h3 { text-wrap: balance; }
.w-card p { color: var(--muted); font-size: 0.9375rem; }
.w-card-source { font-size: 0.875rem; color: var(--muted); }
a.w-card:hover h3 { text-decoration: underline; text-decoration-thickness: var(--link-underline, 1px); text-underline-offset: 0.15em; }

/* ---------- gallery ---------- */
.w-gallery { display: grid; gap: var(--space-2); grid-template-columns: repeat(3, minmax(0, 1fr)); }
.w-gallery figure { aspect-ratio: 1; overflow: hidden; border-radius: var(--radius-img, var(--radius)); background: var(--surface); }
.w-gallery img { width: 100%; height: 100%; object-fit: cover; }
.w-gallery-wide { grid-template-columns: repeat(4, minmax(0, 1fr)); }
@media (max-width: 40rem) { .w-gallery-wide { grid-template-columns: repeat(2, minmax(0, 1fr)); } }

/* ---------- placeholder image (editor + samples only; renderer emits real <img>) ---------- */
.w-img-placeholder { width: 100%; height: 100%; background: var(--surface); display: grid; place-items: end start; padding: var(--space-3); color: var(--muted); font-size: 0.875rem; }

/* ---------- hours ---------- */
.w-hours { max-width: 28rem; }
.w-hours th, .w-hours td { padding: var(--space-3) 0; border-bottom: var(--border-w) solid var(--line); text-align: left; font-weight: 400; vertical-align: top; }
.w-hours th { color: var(--muted); width: 40%; }
.w-hours td { text-align: right; }
.w-hours tr[data-today] th, .w-hours tr[data-today] td { font-weight: 600; color: var(--ink); }
.w-hours-note { margin-top: var(--space-3); color: var(--muted); font-size: 0.9375rem; }

/* ---------- map + address ---------- */
.w-map { display: grid; gap: var(--space-4); grid-template-columns: minmax(0, 1fr); }
@media (min-width: 40rem) { .w-map { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); align-items: center; } }
.w-map figure { aspect-ratio: 16 / 10; overflow: hidden; border-radius: var(--radius-img, var(--radius)); background: var(--surface); }
.w-map address { font-style: normal; line-height: 1.6; display: grid; gap: var(--space-3); justify-items: start; }

/* ---------- contact form ---------- */
.w-form { display: grid; gap: var(--space-4); max-width: 34rem; }
h2 + .w-form, .w-lede + .w-form { margin-top: var(--space-5); }
.w-field { display: grid; gap: var(--space-2); }
.w-field label { font-weight: 600; font-size: 0.9375rem; }
.w-field input, .w-field textarea, .w-field select { width: 100%; min-height: 3rem; padding: var(--space-3) var(--space-4); border: var(--border-w) solid var(--line-strong, var(--ink)); border-radius: var(--radius); background: var(--surface); }
.w-field textarea { min-height: 9rem; resize: vertical; }
.w-field input:focus, .w-field textarea:focus { outline: 3px solid var(--accent); outline-offset: 0; border-color: var(--accent); }
.w-form-note { color: var(--muted); font-size: 0.9375rem; }
.w-form-row { display: grid; gap: var(--space-4); }
.w-field-check label { display: flex; gap: var(--space-3); align-items: flex-start; font-weight: 400; max-width: var(--measure); }
.w-field-check input { width: 1.25rem; height: 1.25rem; margin-top: .2rem; flex: none; accent-color: var(--accent); }
@media (min-width: 40rem) { .w-form-row { grid-template-columns: 1fr 1fr; } }

/* ---------- legal notice ---------- */
.w-legal { font-size: 0.9375rem; line-height: 1.6; color: var(--muted); }
.w-legal dl { display: grid; grid-template-columns: max-content 1fr; column-gap: var(--space-5); row-gap: var(--space-2); }
.w-legal dt { font-weight: 600; color: var(--ink); }

/* ---------- notice / statement box ---------- */
.w-notice { padding: var(--space-5); border: var(--border-w) solid var(--line-strong, var(--ink)); border-radius: var(--radius); max-width: 34rem; display: grid; gap: var(--space-2); }
.w-notice h3 { font-size: 1.0625rem; }

/* ---------- list (queue, price tiers, facts) ---------- */
.w-list { display: grid; }
.w-list > li { display: grid; grid-template-columns: 1fr auto; gap: var(--space-4); padding: var(--space-4) 0; border-bottom: var(--border-w) solid var(--line); align-items: baseline; max-width: none; }
.w-list > li:first-child { border-top: var(--border-w) solid var(--line); }
.w-list-title { font-weight: 600; }
.w-list-desc { color: var(--muted); font-size: 0.9375rem; }
.w-list-value { text-align: right; font-variant-numeric: tabular-nums; }

/* ---------- status pill ---------- */
.w-status { display: inline-flex; align-items: center; gap: var(--space-2); font-size: 0.9375rem; }
.w-status::before { content: ""; width: .6em; height: .6em; border-radius: 50%; background: var(--status, var(--accent)); }
.w-status-open { --status: var(--ok, #2e7d4f); }
.w-status-closed { --status: var(--muted); }

/* ---------- footer ---------- */
.w-footer { width: 100%; margin: 0 auto; padding: var(--space-5) var(--gutter) var(--space-6); display: flex; justify-content: space-between; gap: var(--space-4); flex-wrap: wrap; font-size: 0.9375rem; color: var(--muted); border-top: var(--border-w) solid var(--line); }
.w-layout-narrow .w-footer { max-width: calc(var(--page-narrow) + 2 * var(--gutter)); }
.w-layout-wide   .w-footer { max-width: calc(var(--page-wide)   + 2 * var(--gutter)); }
.w-footer ul { display: flex; gap: var(--space-4); flex-wrap: wrap; }
.w-footer a { text-decoration: none; }
.w-footer a:hover { text-decoration: underline; }

/* ======================================================================
   v2 additions: the blocks a business page actually needs
   ====================================================================== */

/* kicker: small line above a heading (no caps, no mono; just size + colour) */
.w-kicker { font-weight: 600; color: var(--accent); font-size: 0.9375rem; margin-bottom: var(--space-2); }

/* cover hero: photo behind text, gradient scrim from the theme's ink */
.w-hero-cover { position: relative; margin-inline: calc(-1 * var(--gutter)); min-height: min(78vh, 46rem); display: grid; align-items: end; overflow: hidden; border-radius: 0; padding: 0; }
.w-hero-cover-img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.w-hero-cover::after { content: ""; position: absolute; inset: 0; background: linear-gradient(to top, color-mix(in srgb, var(--cover-scrim, var(--ink)) 82%, transparent) 0%, color-mix(in srgb, var(--cover-scrim, var(--ink)) 35%, transparent) 55%, transparent 100%); }
.w-hero-cover-copy { position: relative; z-index: 1; padding: var(--space-8) var(--gutter) var(--space-7); display: grid; gap: var(--space-4); color: var(--on-cover, #fff); max-width: 44rem; }
.w-hero-cover-copy h1, .w-hero-cover-copy .w-h1 { color: var(--on-cover, #fff); font-size: clamp(2.5rem, 1.6rem + 4vw, 4.5rem); }
.w-hero-cover-copy .w-lede { color: var(--on-cover, #fff); opacity: .92; }
.w-hero-cover-copy .w-kicker { color: var(--on-cover, #fff); opacity: .85; }
.w-hero-cover-copy .w-button-secondary { color: var(--on-cover, #fff); border-color: var(--on-cover, #fff); }
.w-hero-cover-copy .w-button-secondary:hover { background: rgba(255,255,255,.12); }
.w-hero-cover + .w-block { padding-top: var(--space-8); }
@media (max-width: 40rem) { .w-hero-cover { min-height: 70vh; } }

/* feature: image beside copy, alternating */
.w-feature { display: grid; gap: var(--space-6); align-items: center; }
.w-feature-copy { display: grid; gap: var(--space-4); }
.w-feature-copy h2 { max-width: 20ch; }
.w-feature-img { overflow: hidden; border-radius: var(--radius-img, var(--radius)); background: var(--surface); }
.w-feature-img img { width: 100%; height: 100%; object-fit: cover; }
@media (min-width: 52rem) {
  .w-feature { grid-template-columns: minmax(0, 6fr) minmax(0, 6fr); column-gap: var(--space-8); }
  .w-feature-left .w-feature-copy { order: 2; }
  .w-feature-left .w-feature-img { order: 1; }
}

/* stats strip */
.w-stats { display: grid; grid-template-columns: repeat(auto-fit, minmax(10rem, 1fr)); gap: var(--space-5); padding: var(--space-6) 0; border-top: var(--border-w) solid var(--line); border-bottom: var(--border-w) solid var(--line); }
.w-stats li { display: grid; gap: var(--space-1); }
.w-stats strong { font-family: var(--font-display); font-weight: var(--weight-display, 600); font-size: clamp(2rem, 1.5rem + 2vw, 3rem); line-height: 1; letter-spacing: var(--tracking-display, -0.02em); color: var(--accent); }
.w-stats span { color: var(--muted); }

/* quote */
.w-quote { display: grid; gap: var(--space-4); max-width: 44rem; padding-left: var(--space-5); border-left: 4px solid var(--accent); }
.w-quote blockquote { margin: 0; font-family: var(--font-display); font-size: clamp(1.375rem, 1rem + 1.4vw, 1.875rem); line-height: 1.3; font-weight: var(--weight-display, 500); }
.w-quote figcaption { color: var(--muted); display: flex; gap: var(--space-2); flex-wrap: wrap; }
.w-quote figcaption span::before { content: "— "; }

/* files */
.w-files { display: grid; gap: var(--space-3); max-width: 40rem; }
.w-files a { display: grid; grid-template-columns: 1fr auto; gap: var(--space-1) var(--space-4); padding: var(--space-4) var(--space-5); border: var(--border-w) solid var(--line-strong, var(--ink)); border-radius: var(--radius-button); text-decoration: none; background: var(--surface); }
.w-files a:hover { border-color: var(--accent); }
.w-files-title { font-weight: 600; }
.w-files-desc { grid-column: 1; color: var(--muted); font-size: 0.9375rem; }
.w-files-meta { grid-row: 1 / span 2; align-self: center; color: var(--muted); font-size: 0.875rem; white-space: nowrap; }

/* band tones + image */
.w-block-band { border-radius: var(--radius-band, 0); }
.w-band-accent { background: var(--accent); color: var(--on-accent); }
.w-band-accent h2, .w-band-accent p, .w-band-accent .w-muted, .w-band-accent .w-status { color: var(--on-accent); }
.w-band-accent .w-button { background: var(--on-accent); color: var(--accent); border-color: var(--on-accent); }
.w-band-accent .w-textlink { color: var(--on-accent); }
.w-band-ink { background: var(--ink); color: var(--ground); }
.w-band-ink h2, .w-band-ink p, .w-band-ink .w-status { color: var(--ground); }
.w-band-ink .w-button { background: var(--ground); color: var(--ink); border-color: var(--ground); }
.w-band-ink .w-textlink { color: var(--ground); }
.w-band-surface { background: var(--surface); }
.w-band-with-img { display: grid; gap: var(--space-6); align-items: center; }
.w-band-img { overflow: hidden; border-radius: var(--radius-img, var(--radius)); }
.w-band-img img { width: 100%; height: 100%; object-fit: cover; aspect-ratio: 4 / 3; }
@media (min-width: 52rem) { .w-band-with-img { grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); column-gap: var(--space-8); } }

/* surface-toned text section */
.w-block-surface { margin-inline: calc(-1 * var(--gutter)); padding-inline: var(--gutter); background: var(--surface); padding-block: var(--space-7); }
.w-block + .w-block-surface { padding-top: var(--space-7); }
.w-block-surface + .w-block { padding-top: var(--space-7); }

/* cards: styles and column counts */
.w-cards.w-cols-2 { grid-template-columns: repeat(auto-fit, minmax(20rem, 1fr)); }
@media (min-width: 52rem) { .w-cards.w-cols-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); } .w-cards.w-cols-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
.w-cards.w-cols-4 { grid-template-columns: repeat(auto-fit, minmax(13rem, 1fr)); }
.w-cards-numbered .w-card { padding: var(--space-5); border: var(--border-w) solid var(--line); border-radius: var(--radius); background: var(--surface); }
.w-card-num { font-family: var(--font-display); font-weight: var(--weight-display, 600); font-size: 1.75rem; color: var(--accent); line-height: 1; }
.w-cards-tiles .w-card { position: relative; overflow: hidden; border-radius: var(--radius-img, var(--radius)); background: var(--ink); color: #fff; min-height: 18rem; justify-content: flex-end; padding: var(--space-5); gap: var(--space-2); }
.w-cards-tiles .w-card figure { position: absolute; inset: 0; margin: 0; border-radius: 0; aspect-ratio: auto; }
.w-cards-tiles .w-card figure::after { content: ""; position: absolute; inset: 0; background: linear-gradient(to top, rgba(0,0,0,.72), rgba(0,0,0,.05) 60%); }
.w-cards-tiles .w-card h3, .w-cards-tiles .w-card p, .w-cards-tiles .w-card .w-card-source { position: relative; color: #fff; }
.w-cards-tiles .w-card p { opacity: .9; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; }
.w-cards-tiles .w-card h3 { font-size: 1.5rem; }
a.w-cards-tiles .w-card:hover h3 { text-decoration: none; }
.w-cards-tiles a.w-card:hover figure img { transform: scale(1.03); }
.w-cards-tiles figure img { transition: transform .3s; }

/* image radius token per theme; fall back to radius */
:root { --radius-img: var(--radius); }

/* ======================================================================
   v3: blocks that do a job — info bar, price tables, index lists,
   mosaic photos, stacked hero, call bar. No overlays, no gradients.
   ====================================================================== */

body { font-size: clamp(1.0625rem, 1rem + 0.2vw, 1.125rem); }
.w-prose { line-height: 1.65; }
.w-prose > * + * { margin-top: 0.9em; }
.w-section-title { margin-bottom: var(--space-5); }

/* logo in the nav */
.w-brand { gap: var(--space-3); }
.w-logo { height: 2.75rem; width: auto; border-radius: var(--radius-logo, 0); }

/* stacked hero: text, then one wide photo */
.w-hero-stacked { padding-bottom: 0; }
.w-hero-stacked .w-hero-copy { max-width: 48rem; }
.w-hero-wide { margin-top: var(--space-6); aspect-ratio: 16 / 7; overflow: hidden; border-radius: var(--radius-img, var(--radius)); background: var(--surface); }
.w-hero-wide img { width: 100%; height: 100%; object-fit: cover; }
@media (max-width: 40rem) { .w-hero-wide { aspect-ratio: 4 / 3; margin-inline: calc(-1 * var(--gutter)); border-radius: 0; } }

/* info bar: the four things people came for */
.w-infobar { display: grid; grid-template-columns: repeat(auto-fit, minmax(13rem, 1fr)); border-top: var(--border-w) solid var(--line-strong, var(--ink)); border-bottom: var(--border-w) solid var(--line); }
.w-infobar > div { padding: var(--space-4) var(--space-5) var(--space-4) 0; }
.w-infobar > div + div { border-left: var(--border-w) solid var(--line); padding-left: var(--space-5); }
.w-infobar dt { font-size: 0.875rem; color: var(--muted); margin-bottom: 2px; }
.w-infobar dd { margin: 0; font-weight: 600; line-height: 1.35; }
.w-infobar a { text-decoration: none; }
.w-infobar a:hover { text-decoration: underline; }
@media (max-width: 40rem) { .w-infobar > div + div { border-left: 0; padding-left: 0; border-top: var(--border-w) solid var(--line); } }

/* price tables */
.w-table-wrap { overflow-x: auto; -webkit-overflow-scrolling: touch; }
.w-table { min-width: 26rem; max-width: 46rem; font-variant-numeric: tabular-nums; }
.w-table th, .w-table td { padding: var(--space-3) var(--space-4) var(--space-3) 0; border-bottom: var(--border-w) solid var(--line); text-align: left; vertical-align: baseline; max-width: none; }
.w-table thead th { font-size: 0.875rem; font-weight: 600; color: var(--muted); border-bottom-color: var(--line-strong, var(--ink)); }
.w-table tbody th { font-weight: 400; }
.w-table td { font-weight: 600; white-space: nowrap; }
.w-table-intro { color: var(--muted); margin: calc(-1 * var(--space-3)) 0 var(--space-4); }
.w-table-note { color: var(--muted); font-size: 0.9375rem; margin-top: var(--space-3); }

/* index list: services, practical pages */
.w-cards-index { display: block; border-top: var(--border-w) solid var(--line-strong, var(--ink)); }
.w-cards-index > li { border-bottom: var(--border-w) solid var(--line); }
.w-cards-index .w-card { display: grid; grid-template-columns: 3rem minmax(0, 1fr) 9rem; column-gap: var(--space-5); align-items: center; padding: var(--space-5) 0; }
.w-cards-index .w-card-num { font-family: var(--font-body); font-size: 0.9375rem; color: var(--muted); font-weight: 600; align-self: start; padding-top: .35rem; }
.w-cards-index .w-card-body { display: grid; gap: var(--space-1); }
.w-cards-index h3 { font-size: clamp(1.25rem, 1.05rem + 0.8vw, 1.625rem); }
.w-cards-index p { max-width: 60ch; }
.w-cards-index figure { aspect-ratio: 4 / 3; border-radius: var(--radius-img, var(--radius)); overflow: hidden; margin: 0; }
.w-cards-index figure img { width: 100%; height: 100%; object-fit: cover; }
.w-cards-index a.w-card:hover h3 { color: var(--accent); text-decoration: none; }
.w-cards-index > li:not(:has(figure)) .w-card { grid-template-columns: 3rem minmax(0, 1fr); }
@media (max-width: 40rem) { .w-cards-index .w-card { grid-template-columns: 2rem minmax(0, 1fr) 5.5rem; column-gap: var(--space-3); } .w-cards-index > li:has(figure) p { display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; font-size: .9375rem; } .w-cards-index > li:not(:has(figure)) .w-card { grid-template-columns: 2rem minmax(0, 1fr); } }

/* mosaic: one big photo, then smaller ones, no uniform grid */
.w-gallery-mosaic { grid-template-columns: repeat(4, minmax(0, 1fr)); grid-auto-rows: clamp(8rem, 14vw, 13rem); grid-auto-flow: dense; gap: var(--space-2); }
.w-gallery-mosaic figure { aspect-ratio: auto; height: 100%; }
.w-gallery-mosaic > li:nth-child(5n+1) { grid-column: span 2; grid-row: span 2; }
.w-gallery-mosaic > li:nth-child(10n+6) { grid-column: 3 / span 2; }
@media (max-width: 40rem) { .w-gallery-mosaic { grid-template-columns: repeat(2, minmax(0, 1fr)); grid-auto-rows: 9rem; } .w-gallery-mosaic > li:nth-child(10n+6) { grid-column: span 2; } }

/* table of contents for long pages */
.w-toc { margin-bottom: var(--space-6); padding: var(--space-4) 0; border-top: var(--border-w) solid var(--line); border-bottom: var(--border-w) solid var(--line); }
.w-toc ul { display: flex; flex-wrap: wrap; gap: var(--space-2) var(--space-5); }
.w-toc a { text-decoration: none; font-weight: 600; }
.w-toc a:hover { color: var(--accent); }
.w-prose h2[id], .w-prose h3[id] { scroll-margin-top: var(--space-6); }

/* form: wider, two fields per row where marked */
.w-form { max-width: 44rem; }
.w-form-row { display: grid; gap: var(--space-4); grid-template-columns: 1fr; }
@media (min-width: 36rem) { .w-form-row { grid-template-columns: 1fr 1fr; } }

/* call bar on phones */
.w-callbar { display: none; }
@media (max-width: 52rem) {
  .w-callbar { position: fixed; left: 0; right: 0; bottom: 0; z-index: 20; display: grid; grid-auto-flow: column; grid-auto-columns: 1fr; padding-bottom: env(safe-area-inset-bottom, 0px); background: var(--ink); }
  .w-callbar a { min-height: 3.25rem; display: flex; align-items: center; justify-content: center; font-weight: 600; text-decoration: none; color: var(--ground); }
  .w-callbar a:first-child { background: var(--accent); color: var(--on-accent); }
  body:has(.w-callbar) { padding-bottom: 3.25rem; }
}

/* list containers: items are layout, not reading text */
.w-cards > li, .w-gallery > li, .w-links > *, .w-list > li, .w-stats > li, .w-files > li, .w-toc li { max-width: none; }

/* ratio classes (published pages have a CSP without inline styles) */
.w-r-4-5 { aspect-ratio: 4 / 5; } .w-r-1-1 { aspect-ratio: 1 / 1; } .w-r-4-3 { aspect-ratio: 4 / 3; } .w-r-3-2 { aspect-ratio: 3 / 2; } .w-r-16-10 { aspect-ratio: 16 / 10; }
.w-hero-split > figure { overflow: hidden; border-radius: var(--radius-img, var(--radius)); }
.w-hero-split > figure img { width: 100%; height: 100%; object-fit: cover; }
.w-actions-spaced { margin-top: var(--space-5); }

/* ======================================================================
   v4: the SiteBuilder-era blocks, done properly
   ====================================================================== */
.w-icon { width: 1.5rem; height: 1.5rem; flex: none; }
.w-section-intro { color: var(--muted); max-width: 60ch; margin: calc(-1 * var(--space-3)) 0 var(--space-5); }

/* features: icon + title + text, as grid, numbered steps, or boxes */
.w-features { display: grid; gap: var(--space-6) var(--space-5); grid-template-columns: repeat(auto-fit, minmax(15rem, 1fr)); }
@media (min-width: 52rem) { .w-features.w-cols-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); } .w-features.w-cols-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); } .w-features.w-cols-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); } }
.w-features > li { max-width: none; }
.w-feature-item { display: grid; gap: var(--space-2); align-content: start; text-decoration: none; height: 100%; }
.w-feature-icon { width: 2rem; height: 2rem; color: var(--accent); margin-bottom: var(--space-2); }
.w-feature-item h3 { font-size: 1.1875rem; }
.w-feature-sub { font-weight: 600; color: var(--ink); }
.w-feature-item p { color: var(--muted); }
a.w-feature-item:hover h3 { color: var(--accent); }
.w-features-boxed .w-feature-item { padding: var(--space-5); border: var(--border-w) solid var(--line); border-radius: var(--radius); background: var(--surface); }
.w-features-steps { counter-reset: none; }
.w-features-steps .w-feature-item { grid-template-columns: 2.5rem minmax(0, 1fr); column-gap: var(--space-4); }
.w-features-steps .w-feature-item > * { grid-column: 2; }
.w-features-steps .w-step { grid-column: 1; grid-row: 1 / span 4; width: 2.5rem; height: 2.5rem; border-radius: 50%; display: grid; place-items: center; background: var(--accent); color: var(--on-accent); font-weight: 700; font-family: var(--font-display); }
.w-features-steps .w-feature-icon { display: none; }

/* cards: icon and button */
.w-card-icon { width: 2rem; height: 2rem; color: var(--accent); }
.w-card-button { align-self: start; margin-top: var(--space-2); display: inline-flex; align-items: center; min-height: 2.5rem; padding: 0 var(--space-4); border: var(--border-w) solid var(--line-strong, var(--ink)); border-radius: var(--radius-button); font-weight: 600; font-size: .9375rem; }
a.w-card:hover .w-card-button { background: var(--accent); border-color: var(--accent); color: var(--on-accent); }
.w-cards-plain .w-card, .w-cards-numbered .w-card { height: 100%; }

/* contact: details left, form right */
.w-contact { display: grid; gap: var(--space-6); }
@media (min-width: 52rem) { .w-contact { grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); column-gap: var(--space-8); align-items: start; } }
.w-contact-info { display: grid; gap: var(--space-5); align-content: start; }
.w-contact-details { display: grid; gap: var(--space-4); }
.w-contact-details > div { display: grid; grid-template-columns: auto 1fr; column-gap: var(--space-3); align-items: start; }
.w-contact-details .w-icon { grid-row: 1 / span 2; color: var(--accent); margin-top: 2px; }
.w-contact-details > div:not(:has(.w-icon)) { grid-template-columns: 1fr; }
.w-contact-details dt { font-size: .875rem; color: var(--muted); }
.w-contact-details dd { margin: 0; font-weight: 600; }
.w-contact-details a { text-decoration: none; }
.w-contact-details a:hover { text-decoration: underline; }
.w-contact-form .w-form { max-width: none; }

/* social */
.w-social { display: flex; flex-wrap: wrap; gap: var(--space-2); }
.w-social li { max-width: none; }
.w-social a { display: inline-flex; align-items: center; gap: var(--space-2); min-height: var(--tap); padding: 0 var(--space-4) 0 var(--space-3); border: var(--border-w) solid var(--line); border-radius: var(--radius-button); text-decoration: none; font-weight: 600; font-size: .9375rem; background: var(--surface); }
.w-social a:hover { border-color: var(--accent); color: var(--accent); }
.w-social .w-icon { width: 1.25rem; height: 1.25rem; }

/* FAQ: <details>, no script */
.w-faq { max-width: none; border-top: var(--border-w) solid var(--line-strong, var(--ink)); }
.w-faq details { border-bottom: var(--border-w) solid var(--line); }
.w-faq summary { list-style: none; cursor: pointer; padding: var(--space-4) 2.5rem var(--space-4) 0; font-weight: 600; font-size: 1.0625rem; position: relative; min-height: var(--tap); }
.w-faq summary::-webkit-details-marker { display: none; }
.w-faq summary::after { content: ""; position: absolute; right: .5rem; top: 50%; width: .6rem; height: .6rem; border-right: 2px solid currentColor; border-bottom: 2px solid currentColor; transform: translateY(-70%) rotate(45deg); transition: transform .15s; }
.w-faq details[open] summary::after { transform: translateY(-30%) rotate(-135deg); }
.w-faq summary:hover { color: var(--accent); }
.w-faq-a { padding: 0 0 var(--space-5); color: var(--ink); max-width: var(--measure); }

/* before / after */
.w-ba { display: grid; gap: var(--space-6); }
.w-ba > li { max-width: none; }
.w-ba-pair { display: grid; grid-template-columns: 1fr 1fr; gap: var(--space-2); }
.w-ba-pair figure { position: relative; margin: 0; aspect-ratio: 4 / 3; overflow: hidden; border-radius: var(--radius-img, var(--radius)); background: var(--surface); }
.w-ba-pair img { width: 100%; height: 100%; object-fit: cover; }
.w-ba-tag { position: absolute; left: var(--space-3); top: var(--space-3); z-index: 1; padding: 2px var(--space-3); background: var(--ground); color: var(--ink); font-size: .8125rem; font-weight: 700; border-radius: var(--radius-button); }
.w-ba-after { background: var(--accent); color: var(--on-accent); }
.w-ba-caption { margin-top: var(--space-3); color: var(--muted); }
@media (max-width: 40rem) { .w-ba-pair { grid-template-columns: 1fr; } }

/* carousel: horizontal scroll-snap, no script */
.w-gallery-carousel { display: grid; grid-auto-flow: column; grid-auto-columns: min(78%, 28rem); grid-template-columns: none; gap: var(--space-3); overflow-x: auto; scroll-snap-type: x mandatory; overscroll-behavior-x: contain; padding-bottom: var(--space-3); scrollbar-width: thin; -webkit-overflow-scrolling: touch; }
.w-gallery-carousel > li { scroll-snap-align: start; }
.w-gallery-carousel figure { aspect-ratio: 4 / 3; }
@media (min-width: 52rem) { .w-gallery-carousel { grid-auto-columns: calc((100% - 2 * var(--space-3)) / 3); } }

/* v4 fixes */
.w-hero-stacked + .w-block, .w-hero-stacked + .w-block-tight { padding-top: var(--space-7); }
.w-hero-stacked + .w-block:has(.w-infobar) { padding-top: 0; }
.w-feature-item h3 { font-size: clamp(1.1875rem, 1.1rem + .35vw, 1.375rem); }
.w-hours caption { text-align: left; caption-side: top; padding-bottom: var(--space-2); color: var(--muted); font-size: .9375rem; }
@media (min-width: 52rem) { .w-gallery-carousel { grid-auto-columns: calc((100% - 3 * var(--space-3)) / 3.4); } }
.w-gallery-carousel { scroll-padding-inline: 0; }

/* contact card + QR */
.w-vcard { display: grid; gap: var(--space-6); align-items: center; }
.w-vcard-copy { display: grid; gap: var(--space-4); }
.w-vcard-name span { color: var(--muted); }
.w-qr { margin: 0; justify-self: start; display: grid; gap: var(--space-2); }
.w-qr svg { width: 11rem; height: 11rem; border: var(--border-w) solid var(--line); border-radius: var(--radius); background: #fff; }
.w-qr figcaption { font-size: .875rem; color: var(--muted); }
@media (min-width: 40rem) { .w-vcard { grid-template-columns: minmax(0, 1fr) auto; } .w-layout-narrow .w-vcard { grid-template-columns: 1fr; } }

/* cards showing logos, badges, certificates: whole image, centred, on a quiet ground */
ul.w-cards-contain .w-card figure { position: relative; aspect-ratio: 4 / 3; background: var(--surface); overflow: hidden; }
ul.w-cards-contain .w-card figure img { position: absolute; inset: var(--space-4); width: calc(100% - 2 * var(--space-4)); height: calc(100% - 2 * var(--space-4)); max-width: none; object-fit: contain; transform: none; }

/* ======================================================================
   Menus. <header class="w-nav w-nav-d-{inline|centered|button} w-nav-m-{burger|scroll|tabs}">
   Hamburger = <details class="w-burger">: no JavaScript.
   ====================================================================== */
.w-nav { position: relative; }
.w-burger { display: none; }
.w-burger > summary { list-style: none; cursor: pointer; display: inline-flex; align-items: center; gap: var(--space-2); min-height: var(--tap); padding: 0 var(--space-3); border: var(--border-w) solid var(--line-strong, var(--ink)); border-radius: var(--radius-button); font-weight: 600; font-size: .9375rem; user-select: none; }
.w-burger > summary::-webkit-details-marker { display: none; }
.w-burger > summary:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
.w-burger-icon { position: relative; width: 1.1rem; height: 2px; background: currentColor; border-radius: 2px; transition: background .15s; }
.w-burger-icon::before, .w-burger-icon::after { content: ""; position: absolute; left: 0; width: 100%; height: 2px; background: currentColor; border-radius: 2px; transition: transform .15s, top .15s; }
.w-burger-icon::before { top: -6px; } .w-burger-icon::after { top: 6px; }
.w-burger[open] .w-burger-icon { background: transparent; }
.w-burger[open] .w-burger-icon::before { top: 0; transform: rotate(45deg); }
.w-burger[open] .w-burger-icon::after { top: 0; transform: rotate(-45deg); }
.w-burger-panel { position: absolute; z-index: 30; top: 100%; right: var(--gutter); min-width: 16rem; max-width: calc(100vw - 2 * var(--gutter)); padding: var(--space-3); background: var(--ground); border: var(--border-w) solid var(--line-strong, var(--ink)); border-radius: var(--radius); box-shadow: 0 12px 32px rgba(0,0,0,.12); display: grid; gap: var(--space-3); }
.w-burger-menu { display: grid; }
.w-burger-menu a { display: flex; align-items: center; min-height: 3rem; padding: 0 var(--space-3); text-decoration: none; font-size: 1.125rem; border-radius: var(--radius-button); }
.w-burger-menu a:hover { background: var(--surface); }
.w-burger-menu a[aria-current="page"] { font-weight: 700; color: var(--accent); }
.w-burger-lang { display: flex; gap: var(--space-1); padding-top: var(--space-2); border-top: var(--border-w) solid var(--line); }
.w-burger-lang a { min-width: var(--tap); min-height: var(--tap); display: inline-flex; align-items: center; justify-content: center; text-decoration: none; color: var(--muted); border-radius: var(--radius-button); }
.w-burger-lang a[aria-current="true"] { color: var(--ink); font-weight: 700; }

/* desktop: centred */
@media (min-width: 52.01rem) {
  .w-nav-d-centered { flex-direction: column; justify-content: center; gap: var(--space-2); padding-top: var(--space-6); }
  .w-nav-d-centered .w-brand { font-size: 1.5rem; }
  .w-nav-d-centered .w-lang { position: absolute; top: var(--space-3); right: var(--gutter); }
  /* desktop: menu button only */
  .w-nav-d-button .w-menu, .w-nav-d-button > .w-lang { display: none; }
  .w-nav-d-button .w-burger { display: block; }
}
/* phones */
@media (max-width: 52rem) {
  .w-nav-m-burger { flex-wrap: nowrap; }
  .w-nav-m-burger .w-menu, .w-nav-m-burger > .w-lang { display: none; }
  .w-nav-m-burger .w-burger { display: block; }
  .w-nav-m-burger.w-nav-single > .w-lang { display: flex; }
  .w-burger-panel { left: var(--gutter); right: var(--gutter); min-width: 0; }
  .w-nav-m-tabs .w-menu { display: none; }
  .w-nav-m-tabs .w-burger { display: none; }
  .w-nav-d-button.w-nav-m-scroll .w-burger { display: none; }
}
/* keep visible while scrolling */
.w-nav-sticky { position: sticky; top: 0; z-index: 25; background: var(--ground); max-width: none !important; padding-inline: max(var(--gutter), calc((100% - var(--page-wide)) / 2)); border-bottom: var(--border-w) solid var(--line); }
.w-layout-narrow .w-nav-sticky { padding-inline: max(var(--gutter), calc((100% - var(--page-narrow)) / 2)); }

/* phone tab bar */
.w-tabbar { display: none; }
@media (max-width: 52rem) {
  .w-tabbar { position: fixed; left: 0; right: 0; bottom: 0; z-index: 22; display: grid; grid-auto-flow: column; grid-auto-columns: 1fr; background: var(--ground); border-top: var(--border-w) solid var(--line-strong, var(--ink)); padding-bottom: env(safe-area-inset-bottom, 0px); }
  .w-tabbar a { min-height: 3.5rem; display: flex; align-items: center; justify-content: center; padding: 0 var(--space-1); text-decoration: none; font-size: .8125rem; font-weight: 600; color: var(--muted); text-align: center; line-height: 1.15; }
  .w-tabbar a[aria-current="page"] { color: var(--accent); box-shadow: inset 0 3px 0 var(--accent); }
  body:has(.w-tabbar) { padding-bottom: 3.5rem; }
  body:has(.w-tabbar):has(.w-callbar) { padding-bottom: 6.75rem; }
  body:has(.w-tabbar) .w-callbar { bottom: calc(3.5rem + env(safe-area-inset-bottom, 0px)); padding-bottom: 0; }
}
/* scrolling row: its own full-width line under the brand, so long names never squeeze it */
@media (max-width: 52rem) {
  .w-nav-m-scroll { flex-wrap: wrap; row-gap: var(--space-1); }
  .w-nav-m-scroll .w-menu { order: 3; flex: 1 0 100%; margin-inline: calc(-1 * var(--space-3)); }
}

/* language switch styles: code / name / flag-code / flag */
.w-flag { width: 21px; height: 14px; border-radius: 2px; box-shadow: 0 0 0 1px rgba(0,0,0,.14); flex: none; display: block; }
.w-lang a, .w-burger-lang a { gap: 6px; padding-inline: var(--space-2); }
.w-lang-flag a, .w-burger-lang.w-lang-flag a { min-width: var(--tap); }
.w-lang-flag a:not([aria-current="true"]) .w-flag, .w-lang-flag-code a:not([aria-current="true"]) .w-flag { opacity: .72; }
.w-lang-flag a:hover .w-flag, .w-lang-flag-code a:hover .w-flag { opacity: 1; filter: none; }
.w-lang-flag a[aria-current="true"] .w-flag { outline: 2px solid var(--accent); outline-offset: 2px; }
.w-lang-name a { font-size: .875rem; white-space: nowrap; }

/* ======================================================================
   v5 blocks
   ====================================================================== */
/* pricing */
.w-plans { display: grid; gap: var(--space-4); grid-template-columns: repeat(auto-fit, minmax(15rem, 1fr)); align-items: stretch; }
.w-plans > li, .w-team > li, .w-testimonials > li, .w-logos > li, .w-events > li, .w-timeline > li { max-width: none; }
.w-plan { display: flex; flex-direction: column; gap: var(--space-3); padding: var(--space-5); border: var(--border-w) solid var(--line); border-radius: var(--radius); background: var(--surface); }
.w-plan h3 { font-size: 1.125rem; }
.w-plan-price { display: flex; align-items: baseline; gap: var(--space-2); flex-wrap: wrap; }
.w-plan-price strong { font-family: var(--font-display); font-size: clamp(1.75rem, 1.4rem + 1.4vw, 2.5rem); line-height: 1; font-weight: var(--weight-display, 600); }
.w-plan-price span, .w-plan-desc { color: var(--muted); }
.w-plan-features { display: grid; gap: var(--space-2); padding-top: var(--space-3); border-top: var(--border-w) solid var(--line); margin-bottom: auto; }
.w-plan-features li { padding-left: 1.4em; position: relative; max-width: none; }
.w-plan-features li::before { content: ""; position: absolute; left: .15em; top: .45em; width: .7em; height: .38em; border-left: 2px solid var(--accent); border-bottom: 2px solid var(--accent); transform: rotate(-45deg); }
.w-plan .w-button { align-self: stretch; justify-content: center; margin-top: var(--space-3); }
.w-plan-featured { border: 2px solid var(--accent); background: var(--ground); }
/* team */
.w-team { display: grid; gap: var(--space-6) var(--space-5); grid-template-columns: repeat(auto-fill, minmax(13rem, 1fr)); }
.w-member { display: grid; gap: var(--space-3); align-content: start; }
.w-member figure, .w-member-initials { aspect-ratio: 1; border-radius: var(--radius-img, var(--radius)); overflow: hidden; margin: 0; background: var(--surface); }
.w-member figure img { width: 100%; height: 100%; object-fit: cover; }
.w-member-initials { display: grid; place-items: center; font-family: var(--font-display); font-size: 2.5rem; color: var(--accent); border: var(--border-w) solid var(--line); }
.w-member h3 { font-size: 1.125rem; }
.w-member-role { color: var(--muted); font-size: .9375rem; }
.w-member-links { display: flex; gap: var(--space-2); margin-top: var(--space-2); }
.w-member-links a { color: var(--muted); } .w-member-links a:hover { color: var(--accent); }
.w-team-list { grid-template-columns: 1fr; gap: var(--space-5); }
.w-team-list .w-member { grid-template-columns: 6rem 1fr; gap: var(--space-4); align-items: start; }
/* timeline */
.w-timeline { display: grid; border-left: 2px solid var(--line); margin-left: .35rem; }
.w-timeline > li { display: grid; grid-template-columns: minmax(6rem, 9rem) 1fr; gap: var(--space-4); padding: 0 0 var(--space-5) var(--space-5); position: relative; }
.w-timeline > li::before { content: ""; position: absolute; left: calc(-1 * .35rem - 1px); top: .45rem; width: .7rem; height: .7rem; border-radius: 50%; background: var(--ground); border: 2px solid var(--accent); }
.w-timeline-date { font-weight: 700; color: var(--accent); font-variant-numeric: tabular-nums; }
.w-timeline h3 { font-size: 1.0625rem; }
.w-timeline p:not(.w-timeline-date) { color: var(--muted); }
@media (max-width: 40rem) { .w-timeline > li { grid-template-columns: 1fr; gap: var(--space-1); } }
/* logos */
.w-logos { display: grid; grid-template-columns: repeat(auto-fit, minmax(8.5rem, 1fr)); gap: var(--space-3); align-items: center; }
.w-logos li { display: grid; place-items: center; height: 5.5rem; padding: var(--space-3); border: var(--border-w) solid var(--line); border-radius: var(--radius); background: var(--surface); }
.w-logos img { max-width: 100%; max-height: 3.25rem; width: auto; height: auto; object-fit: contain; }
.w-logos-gray img { filter: grayscale(1); opacity: .75; transition: filter .15s, opacity .15s; }
.w-logos-gray li:hover img { filter: none; opacity: 1; }
/* testimonials */
.w-testimonials { display: grid; gap: var(--space-4); grid-template-columns: 1fr; }
@media (min-width: 52rem) { .w-testimonials.w-cols-2 { grid-template-columns: 1fr 1fr; } .w-testimonials.w-cols-3 { grid-template-columns: repeat(3, 1fr); } }
.w-testimonial { margin: 0; height: 100%; display: flex; flex-direction: column; gap: var(--space-3); padding: var(--space-5); border: var(--border-w) solid var(--line); border-radius: var(--radius); background: var(--surface); }
.w-testimonial blockquote { margin: 0; font-size: 1.0625rem; line-height: 1.55; flex: 1; }
.w-testimonial figcaption { display: flex; align-items: center; gap: var(--space-3); font-size: .9375rem; }
.w-testimonial figcaption > span { display: grid; } .w-testimonial figcaption > span > span { color: var(--muted); }
.w-testimonial-avatar { width: 2.5rem; height: 2.5rem; border-radius: 50%; object-fit: cover; }
.w-stars { color: var(--accent); letter-spacing: .1em; } .w-stars span { color: var(--line); }
/* video: poster + play, opens the video's own site */
.w-video { position: relative; display: block; aspect-ratio: 16 / 9; overflow: hidden; border-radius: var(--radius-img, var(--radius)); background: var(--ink); text-decoration: none; }
.w-video img, .w-video-blank { width: 100%; height: 100%; object-fit: cover; display: block; }
.w-video-play { position: absolute; left: 50%; top: 50%; width: 4.5rem; height: 4.5rem; margin: -2.25rem 0 0 -2.25rem; border-radius: 50%; background: rgba(255,255,255,.92); box-shadow: 0 6px 24px rgba(0,0,0,.25); transition: transform .15s; }
.w-video-play::after { content: ""; position: absolute; left: 1.8rem; top: 1.35rem; border-style: solid; border-width: .9rem 0 .9rem 1.45rem; border-color: transparent transparent transparent var(--ink); }
.w-video:hover .w-video-play { transform: scale(1.06); }
.w-video-meta { position: absolute; left: var(--space-3); bottom: var(--space-3); padding: 2px var(--space-3); border-radius: var(--radius-button); background: rgba(0,0,0,.66); color: #fff; font-size: .8125rem; }
/* events */
.w-events { display: grid; border-top: var(--border-w) solid var(--line-strong, var(--ink)); }
.w-events > li { display: grid; grid-template-columns: 4.5rem 1fr auto; gap: var(--space-4); align-items: center; padding: var(--space-4) 0; border-bottom: var(--border-w) solid var(--line); }
.w-event-date { display: grid; text-align: center; line-height: 1.1; }
.w-event-date span { font-size: .75rem; font-weight: 700; color: var(--accent); letter-spacing: .06em; }
.w-event-date strong { font-family: var(--font-display); font-size: 1.125rem; }
.w-events h3 { font-size: 1.0625rem; } .w-events p { color: var(--muted); font-size: .9375rem; }
.w-event-soldout { font-size: .875rem; font-weight: 700; color: var(--muted); text-decoration: line-through; }
@media (max-width: 40rem) { .w-events > li { grid-template-columns: 3.5rem 1fr; } .w-events > li > :last-child:not(div) { grid-column: 2; justify-self: start; } }
/* food & drink menu */
.w-menu-card { display: grid; gap: var(--space-6) var(--space-8); }
@media (min-width: 52rem) { .w-menu-card { grid-template-columns: 1fr 1fr; } }
.w-menu-section h3 { font-family: var(--font-display); font-size: 1.25rem; padding-bottom: var(--space-2); margin-bottom: var(--space-3); border-bottom: var(--border-w) solid var(--line-strong, var(--ink)); }
.w-menu-section ul { display: grid; gap: var(--space-3); } .w-menu-section li { max-width: none; }
.w-menu-line { display: flex; align-items: baseline; gap: var(--space-2); }
.w-menu-name { font-weight: 600; }
.w-menu-dots { flex: 1; border-bottom: 1px dotted var(--muted); transform: translateY(-.3em); min-width: 1rem; }
.w-menu-price { font-variant-numeric: tabular-nums; font-weight: 600; white-space: nowrap; }
.w-menu-desc { color: var(--muted); font-size: .9375rem; margin-top: 2px; }
.w-tag { font-size: .6875rem; font-weight: 700; text-transform: uppercase; letter-spacing: .04em; padding: 1px 6px; border-radius: 999px; border: 1px solid currentColor; color: var(--muted); white-space: nowrap; }
.w-tag-vegan, .w-tag-vegetarian { color: #3d7a3a; } .w-tag-spicy { color: #b3401e; } .w-tag-new { color: var(--accent); }
/* single image */
.w-image figure { margin: 0; } .w-image img { width: 100%; height: auto; border-radius: var(--radius-img, var(--radius)); display: block; }
.w-image figcaption { margin-top: var(--space-2); color: var(--muted); font-size: .9375rem; }
.w-image-text figure { max-width: var(--measure); }
.w-image-full { margin-inline: calc(-1 * var(--gutter)); } .w-image-full img { border-radius: 0; } .w-image-full figcaption { padding-inline: var(--gutter); }
/* text columns */
.w-columns { display: grid; gap: var(--space-5) var(--space-7); }
@media (min-width: 44rem) { .w-columns-2 { grid-template-columns: 1fr 1fr; } .w-columns-3 { grid-template-columns: repeat(3, 1fr); } }
.w-columns h3 { font-size: 1.125rem; margin-bottom: var(--space-2); }
/* divider */
.w-divider { width: 100%; max-width: calc(var(--page-wide) + 2 * var(--gutter)); margin: 0 auto; padding-inline: var(--gutter); }
.w-divider-s { height: var(--space-4); } .w-divider-m { height: var(--space-7); } .w-divider-l { height: var(--space-9, 6rem); }
.w-divider-line { background: linear-gradient(var(--line), var(--line)) center / calc(100% - 2 * var(--gutter)) 1px no-repeat; }
.w-divider-dots { background: radial-gradient(circle, var(--muted) 1.5px, transparent 2px) center / 1.25rem 4px repeat-x; background-size: 1.25rem 4px; background-clip: content-box; width: 5rem; }

/* ======================================================================
   v6: new blocks
   ====================================================================== */
/* announcement bar */
.w-announce { margin-inline: calc(-1 * var(--gutter)); padding: var(--space-2) var(--gutter); text-align: center; font-size: .9375rem; }
.w-announce p { max-width: none; margin: 0 auto; }
.w-announce a { font-weight: 600; margin-left: var(--space-2); white-space: nowrap; }
.w-announce-accent { background: var(--accent); color: var(--on-accent); } .w-announce-accent a { color: var(--on-accent); }
.w-announce-ink { background: var(--ink); color: var(--ground); } .w-announce-ink a { color: var(--ground); }
.w-announce-surface { background: var(--surface); border-block: var(--border-w) solid var(--line); }
/* call to action */
.w-cta { text-align: center; display: grid; justify-items: center; gap: var(--space-4); padding-block: var(--space-8); }
.w-cta h2 { font-size: clamp(1.875rem, 1.3rem + 2.4vw, 3rem); max-width: 22ch; }
.w-cta .w-lede { max-width: 48ch; }
.w-cta .w-actions { justify-content: center; }
/* compare table */
.w-compare { width: 100%; min-width: 30rem; border-collapse: collapse; font-variant-numeric: tabular-nums; }
.w-compare th, .w-compare td { padding: var(--space-3) var(--space-4); border-bottom: var(--border-w) solid var(--line); text-align: center; max-width: none; }
.w-compare tbody th { text-align: left; font-weight: 400; }
.w-compare thead th { font-weight: 700; border-bottom-color: var(--line-strong, var(--ink)); }
.w-compare .w-compare-featured { background: color-mix(in srgb, var(--accent) 7%, transparent); }
.w-compare thead .w-compare-featured { color: var(--accent); }
.w-yes { color: var(--accent); font-weight: 700; } .w-no { color: var(--muted); }
/* products */
.w-products { display: grid; gap: var(--space-6) var(--space-4); grid-template-columns: repeat(auto-fill, minmax(14rem, 1fr)); }
@media (min-width: 52rem) { .w-products.w-cols-2 { grid-template-columns: repeat(2, 1fr); } .w-products.w-cols-3 { grid-template-columns: repeat(3, 1fr); } .w-products.w-cols-4 { grid-template-columns: repeat(4, 1fr); } }
.w-products > li, .w-locations > li, .w-jobs > li, .w-highlights > li { max-width: none; }
.w-product { display: flex; flex-direction: column; gap: var(--space-2); }
.w-product figure { position: relative; margin: 0 0 var(--space-2); aspect-ratio: 1; border-radius: var(--radius-img, var(--radius)); overflow: hidden; background: var(--surface); }
.w-product figure img { width: 100%; height: 100%; object-fit: cover; }
.w-product-badge { position: absolute; left: var(--space-2); top: var(--space-2); padding: 2px var(--space-2); border-radius: var(--radius-button); background: var(--accent); color: var(--on-accent); font-size: .75rem; font-weight: 700; }
.w-product-line { display: flex; justify-content: space-between; align-items: baseline; gap: var(--space-3); }
.w-product h3 { font-size: 1.0625rem; } .w-product-price { font-weight: 700; white-space: nowrap; font-variant-numeric: tabular-nums; }
.w-product p { color: var(--muted); font-size: .9375rem; }
.w-product .w-button { align-self: start; margin-top: auto; }
.w-product-soldout figure img { filter: grayscale(1); opacity: .6; }
/* highlights */
.w-highlights { display: flex; flex-wrap: wrap; justify-content: center; gap: var(--space-3) var(--space-6); padding: var(--space-3) 0; border-block: var(--border-w) solid var(--line); }
.w-highlights li { display: inline-flex; align-items: center; gap: var(--space-2); font-weight: 600; font-size: .9375rem; }
.w-highlights .w-icon { color: var(--accent); width: 1.25rem; height: 1.25rem; }
/* locations */
.w-locations { display: grid; gap: var(--space-4); grid-template-columns: repeat(auto-fill, minmax(17rem, 1fr)); }
.w-location { display: grid; gap: var(--space-3); padding: var(--space-4); border: var(--border-w) solid var(--line); border-radius: var(--radius); background: var(--surface); align-content: start; }
.w-location figure { margin: calc(-1 * var(--space-4)) calc(-1 * var(--space-4)) 0; aspect-ratio: 16 / 9; overflow: hidden; border-radius: var(--radius) var(--radius) 0 0; }
.w-location figure img { width: 100%; height: 100%; object-fit: cover; }
.w-location h3 { font-size: 1.125rem; margin-bottom: var(--space-1); }
.w-location-hours { display: flex; gap: var(--space-2); color: var(--muted); font-size: .9375rem; margin-top: var(--space-2); }
.w-location-hours .w-icon { width: 1.1rem; height: 1.1rem; margin-top: 2px; }
.w-location-links { display: grid; gap: var(--space-1); margin-top: var(--space-3); }
.w-location-links a { display: inline-flex; align-items: center; gap: var(--space-2); text-decoration: none; font-size: .9375rem; }
.w-location-links .w-icon { width: 1.1rem; height: 1.1rem; color: var(--accent); }
/* jobs */
.w-jobs { display: grid; border-top: var(--border-w) solid var(--line-strong, var(--ink)); }
.w-job { display: grid; grid-template-columns: 1fr auto; gap: var(--space-1) var(--space-4); padding: var(--space-4) 0; border-bottom: var(--border-w) solid var(--line); text-decoration: none; }
.w-job h3 { font-size: 1.125rem; } .w-job-meta { color: var(--accent); font-weight: 600; font-size: .875rem; grid-column: 1; }
.w-job p:not(.w-job-meta) { color: var(--muted); grid-column: 1; }
.w-job-apply { grid-column: 2; grid-row: 1 / span 3; align-self: center; font-weight: 700; }
.w-job-apply::after { content: " →"; }
a.w-job:hover h3 { color: var(--accent); }

/* ======================================================================
   v6: variants of existing blocks
   ====================================================================== */
.w-hero-centered { text-align: center; } .w-hero-centered .w-hero-copy { justify-items: center; margin-inline: auto; max-width: 46rem; }
.w-hero-centered .w-h1, .w-hero-centered h1 { margin-inline: auto; } .w-hero-centered .w-lede { margin-inline: auto; } .w-hero-centered .w-actions { justify-content: center; }
.w-cards-horizontal { grid-template-columns: 1fr !important; }
.w-cards-horizontal .w-card { display: grid; grid-template-columns: minmax(0, 2fr) minmax(0, 3fr); column-gap: var(--space-5); align-items: center; }
.w-cards-horizontal .w-card figure { grid-row: 1 / span 5; margin: 0; }
@media (max-width: 40rem) { .w-cards-horizontal .w-card { grid-template-columns: 1fr; } .w-cards-horizontal .w-card figure { grid-row: auto; } }
.w-cards-minimal .w-card { border: 0; background: none; padding: 0; padding-top: var(--space-3); border-top: 2px solid var(--ink); border-radius: 0; }
.w-cards-minimal .w-card figure { display: none; }
.w-features-list { grid-template-columns: 1fr !important; gap: var(--space-4); max-width: 44rem; }
@media (min-width: 52rem) { .w-features-list.w-cols-2, .w-features-list.w-cols-3, .w-features-list.w-cols-4 { grid-template-columns: 1fr 1fr !important; max-width: none; } }
.w-features-list .w-feature-item { grid-template-columns: 2.25rem 1fr; column-gap: var(--space-3); }
.w-features-list .w-feature-item > * { grid-column: 2; } .w-features-list .w-feature-icon { grid-column: 1; grid-row: 1 / span 3; margin: 0; }
.w-testimonials-large .w-testimonial { border: 0; background: none; padding: var(--space-5) 0; text-align: center; align-items: center; border-bottom: var(--border-w) solid var(--line); border-radius: 0; }
.w-testimonials-large blockquote { font-family: var(--font-display); font-size: clamp(1.375rem, 1.1rem + 1.2vw, 2rem); line-height: 1.3; max-width: 34ch; }
.w-gallery-columns { display: block !important; columns: 3 14rem; column-gap: var(--space-2); }
.w-gallery-columns > li { break-inside: avoid; margin-bottom: var(--space-2); }
.w-gallery-columns figure { aspect-ratio: auto !important; height: auto; } .w-gallery-columns figure img { height: auto !important; }
.w-gallery-captions figcaption { padding-top: var(--space-1); font-size: .875rem; color: var(--muted); }
.w-gallery-captions figure { overflow: visible; }
.w-links.w-links-pills { flex-direction: row; flex-wrap: wrap; gap: var(--space-2); justify-content: center; }
.w-links-pills .w-link { display: inline-flex; grid-template-columns: none; border-radius: 999px; min-height: 2.75rem; padding: 0 var(--space-5); }
.w-links-pills .w-link-meta, .w-links-pills .w-link-kicker { display: none; }
.w-links-outline .w-link { background: transparent; border-width: 1.5px; } .w-links-outline .w-link-primary { background: transparent; color: var(--accent); border-color: var(--accent); }
.w-stats-boxed { border: 0; gap: var(--space-3); } .w-stats-boxed li { padding: var(--space-5); border: var(--border-w) solid var(--line); border-radius: var(--radius); background: var(--surface); }
.w-quote-large { border: 0; padding: var(--space-5) 0; margin-inline: auto; text-align: center; max-width: 46rem; }
.w-quote-large blockquote { font-size: clamp(1.625rem, 1.1rem + 2vw, 2.5rem); line-height: 1.25; }
.w-quote-large blockquote::before { content: "“"; display: block; font-size: 4rem; line-height: .6; color: var(--accent); }
.w-quote-large figcaption { justify-content: center; }
.w-team-compact { grid-template-columns: repeat(auto-fill, minmax(11rem, 1fr)); gap: var(--space-4); }
.w-team-compact .w-member { grid-template-columns: 3.5rem 1fr; gap: var(--space-3); align-items: center; }
.w-team-compact .w-member figure, .w-team-compact .w-member-initials { width: 3.5rem; height: 3.5rem; border-radius: 50%; font-size: 1.125rem; }
.w-team-compact .w-member p:not(.w-member-role), .w-team-compact .w-member-links { display: none; }
.w-contact-stacked { grid-template-columns: 1fr !important; max-width: 44rem; }
.w-identity-center { text-align: center; justify-items: center; } .w-identity-center > * { margin-inline: auto; }

.w-cards-horizontal .w-card-button { justify-self: start; }

/* Blocks side by side (span: half, third, twothirds). Six columns; stacks on phones. */
.w-row { display: grid; grid-template-columns: repeat(6, minmax(0, 1fr)); gap: 0 var(--space-6); align-items: start; }
.w-cell { min-width: 0; }
.w-cell-half { grid-column: span 3; } .w-cell-third { grid-column: span 2; } .w-cell-twothirds { grid-column: span 4; }
.w-cell > .w-block-band, .w-cell > .w-hero-cover { margin-inline: 0; }
.w-row + .w-row > .w-cell > .w-block, .w-block + .w-row > .w-cell > .w-block { padding-top: 0; }
@media (max-width: 760px) { .w-row { grid-template-columns: minmax(0, 1fr); } .w-cell { grid-column: auto; } }
.w-empty-block { border: 2px dashed #b9b6ad; border-radius: 10px; padding: var(--space-6); text-align: center; color: #6b6a64; font-size: 0.95rem; }
.w-map-credit { font-size: 0.75rem; color: var(--muted); margin-top: 0.35rem; }
.w-map-credit a { color: inherit; }
.w-captcha { margin-block: var(--space-4); }
.w-captcha-q input { max-width: 20rem; }

/* footer designs: columns, dark band, centred (the default line stays as it is) */
.w-footer-columns { display: block; }
.w-footer-columns .w-footer-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--space-6); padding-bottom: var(--space-5); }
.w-footer-columns .w-footer-links, .w-footer-centered .w-footer-links { border-top: 1px solid var(--line); padding-top: var(--space-4); margin-top: var(--space-4); }
.w-footer-name { display: block; font-family: var(--font-display); font-size: 1.125rem; margin-bottom: var(--space-3); }
.w-footer h3 { font-size: 0.8125rem; text-transform: uppercase; letter-spacing: .06em; color: var(--muted); margin: 0 0 var(--space-3); }
.w-footer-columns p, .w-footer-centered .w-footer-contact p { margin: 0 0 var(--space-2); }
.w-footer-menu { list-style: none; margin: 0; padding: 0; display: grid; gap: var(--space-2); }
.w-footer-centered .w-footer-menu { display: flex; flex-wrap: wrap; justify-content: center; gap: var(--space-4); }
.w-footer-social .w-social { justify-content: flex-start; margin-top: var(--space-3); }
.w-footer-centered { text-align: center; }
.w-footer-centered .w-footer-social .w-social { justify-content: center; }
.w-footer-centered .w-footer-links { justify-content: center; }
.w-footer-dark { background: var(--ink); color: #d9dcd5; margin-top: var(--space-8); padding-block: var(--space-7); border-top: 0; }
.w-footer-dark a, .w-footer-dark .w-footer-name { color: #ffffff; }
.w-footer-dark h3 { color: #b7bcb4; }
.w-footer-dark .w-footer-links, .w-footer-dark .w-footer-grid { border-color: rgba(255,255,255,.18); }
.w-layout-wide .w-footer-dark { max-width: none; padding-inline: max(var(--gutter), calc((100% - var(--page-wide)) / 2)); }
@media (max-width: 760px) { .w-footer-columns .w-footer-grid { grid-template-columns: 1fr; } }
.w-consent label { display: flex; align-items: flex-start; gap: 0.6rem; font-size: 0.9375rem; }
.w-consent input { margin-top: 0.3rem; accent-color: var(--accent); }
.w-consent a { color: inherit; }

/* Inside a half or a third, a block's own columns give way to what fits (the normal rules go by viewport width,
   which says nothing about the space a cell has). Long words may break rather than spill. */
.w-cell { overflow-wrap: anywhere; }
.w-cell h1, .w-cell h2, .w-cell h3 { hyphens: auto; }
.w-cell .w-cards, .w-cell .w-cards.w-cols-2, .w-cell .w-cards.w-cols-3, .w-cell .w-cards.w-cols-4,
.w-cell .w-features, .w-cell .w-features.w-cols-2, .w-cell .w-features.w-cols-3, .w-cell .w-features.w-cols-4,
.w-cell .w-testimonials.w-cols-2, .w-cell .w-testimonials.w-cols-3,
.w-cell .w-products, .w-cell .w-products.w-cols-2, .w-cell .w-products.w-cols-3,
.w-cell .w-plans, .w-cell .w-team, .w-cell .w-team-compact, .w-cell .w-locations, .w-cell .w-stats, .w-cell .w-infobar, .w-cell .w-logos,
.w-cell .w-columns-2, .w-cell .w-columns-3 { grid-template-columns: repeat(auto-fit, minmax(min(100%, 11rem), 1fr)); }
.w-cell .w-gallery, .w-cell .w-gallery-wide, .w-cell .w-gallery-mosaic { grid-template-columns: repeat(auto-fill, minmax(min(100%, 8rem), 1fr)); grid-auto-rows: auto; }
.w-cell .w-gallery-mosaic > li { grid-column: auto; grid-row: auto; }
.w-cell-third .w-cards, .w-cell-third .w-features, .w-cell-third .w-testimonials, .w-cell-third .w-plans, .w-cell-third .w-products, .w-cell-third .w-columns-2, .w-cell-third .w-columns-3 { grid-template-columns: minmax(0, 1fr); }
@media (max-width: 900px) { .w-cell-third, .w-cell-twothirds { grid-column: 1 / -1; } }

/* per block: hidden on phones or on computers (Look section of the inspector) */
@media (max-width: 760px) { .w-hide-phone { display: none !important; } }
@media (min-width: 761px) { .w-hide-desktop { display: none !important; } }

/* news: a list of posts, newest first */
.w-news { list-style: none; margin: 0; padding: 0; display: grid; gap: var(--space-6); }
.w-news-item { display: grid; grid-template-columns: minmax(0, 1fr); gap: var(--space-4); align-items: start; }
.w-news-item figure { margin: 0; } .w-news-item img { width: 100%; height: auto; border-radius: var(--radius); display: block; aspect-ratio: 3 / 2; object-fit: cover; }
.w-news-item time { display: block; font-size: 0.8125rem; color: var(--muted); margin-bottom: 0.25rem; }
.w-news-item h3 { margin: 0 0 0.35rem; font-size: 1.25rem; } .w-news-item h3 a { color: inherit; text-decoration: none; } .w-news-item h3 a:hover { text-decoration: underline; }
.w-news-item p { margin: 0 0 0.5rem; }
@media (min-width: 640px) { .w-news-item:has(figure) { grid-template-columns: 14rem minmax(0, 1fr); } }

/* richer form fields: choose one / several, date range, one-per groups */
.w-form fieldset { border: 0; margin: 0; padding: 0; min-width: 0; }
.w-form fieldset > legend { font-weight: 600; padding: 0; margin-bottom: var(--space-2); }
.w-choice label { display: flex; align-items: center; gap: 0.5rem; font-weight: 400; margin: 0.15rem 0; }
.w-choice-inline { display: flex; flex-wrap: wrap; gap: 0.25rem 1rem; align-items: center; }
.w-choice-inline .w-label { width: 100%; font-size: 0.9375rem; }
.w-repeat-item { border: var(--border-w) solid var(--line) !important; border-radius: var(--radius); padding: var(--space-4) !important; margin-top: var(--space-3) !important; }
.w-repeat-item > legend { padding: 0 0.35rem !important; margin-bottom: 0 !important; }
.w-repeat-item[hidden] { display: none; }
.w-repeat-count select { width: auto; min-width: 5rem; }

/* radio and tick boxes inside choice questions keep their natural size, whatever the theme does to inputs */
.w-form .w-choice input[type=radio], .w-form .w-choice input[type=checkbox], .w-form .w-consent input, .w-form .w-field-check input {
  width: 1.05rem; height: 1.05rem; min-width: 0; min-height: 0; padding: 0; margin: 0; flex: none; box-shadow: none; accent-color: var(--accent, currentColor);
}

/* scroll-in, per block (Look → Animation). anim.js (loaded only where a block uses it) marks the page .w-anims and reveals each
   block as it comes into view, in every browser. Without the script, browsers with scroll-driven animations still do it in pure
   CSS; others, and anyone who asked their system for reduced motion, simply see the block. */
@keyframes w-fade { from { opacity: 0; } to { opacity: 1; } }
@keyframes w-rise { from { opacity: 0; transform: translateY(1.75rem); } to { opacity: 1; transform: none; } }
.w-anims .w-anim-fade, .w-anims .w-anim-rise { transition: opacity .7s ease-out, transform .8s cubic-bezier(.2, .7, .2, 1); }
.w-anims .w-anim-fade:not(.w-in) { opacity: 0; }
.w-anims .w-anim-rise:not(.w-in) { opacity: 0; transform: translateY(1.75rem); }
@media (prefers-reduced-motion: reduce) { .w-anims .w-anim-fade, .w-anims .w-anim-rise { opacity: 1; transform: none; transition: none; } }
@supports (animation-timeline: view()) {
  @media (prefers-reduced-motion: no-preference) {
    :root:not(.w-anims) :is(.w-anim-fade, .w-anim-rise) { animation: linear both; animation-timeline: view(); animation-range: entry 5% cover 28%; }
    :root:not(.w-anims) .w-anim-fade { animation-name: w-fade; }
    :root:not(.w-anims) .w-anim-rise { animation-name: w-rise; }
  }
}

/* alignment per block (Look → Alignment or the toolbar on the block). Text, headings with a measure, button rows and a
   narrower image follow; grids keep their columns and align what is inside each item. */
.w-align-left { text-align: left; }
.w-align-left .w-actions { justify-content: flex-start; }
.w-align-left :is(h1, h2, h3, .w-h1, .w-lede, .w-kicker, p) { margin-inline-start: 0; margin-inline-end: auto; }
.w-align-center { text-align: center; }
.w-align-center .w-actions, .w-align-center .w-social, .w-align-center .w-highlights, .w-align-center .w-logos { justify-content: center; }
.w-align-center :is(h1, h2, h3, .w-h1, .w-lede, .w-kicker, p, .w-prose > *) { margin-inline: auto; }
.w-align-center :is(figure, .w-image) > img { margin-inline: auto; }
.w-align-right { text-align: right; }
.w-align-right .w-actions, .w-align-right .w-social, .w-align-right .w-highlights, .w-align-right .w-logos { justify-content: flex-end; }
.w-align-right :is(h1, h2, h3, .w-h1, .w-lede, .w-kicker, p, .w-prose > *) { margin-inline-start: auto; margin-inline-end: 0; }
.w-align-right :is(figure, .w-image) > img { margin-inline-start: auto; }
.w-align-center ul:not([class]), .w-align-right ul:not([class]) { list-style-position: inside; padding-inline-start: 0; }

/* section backgrounds per block (Look → Background): soft, accent colour, inverted. Full width without changing the
   layout (the background is painted beyond the block, not the block widened); side by side they become panels. */
.w-bg-soft { --w-bg: var(--surface); }
.w-bg-accent { --w-bg: var(--accent); color: var(--on-accent); }
.w-bg-inverse { --w-bg: var(--ink); color: var(--ground); }
.w-bg-soft, .w-bg-accent, .w-bg-inverse { background: var(--w-bg); box-shadow: 0 0 0 100vmax var(--w-bg); clip-path: inset(0 -100vmax); padding-block: var(--space-7); }
.w-cell > :is(.w-bg-soft, .w-bg-accent, .w-bg-inverse) { box-shadow: none; clip-path: none; padding: var(--space-6); border-radius: var(--radius); }
:is(.w-bg-accent, .w-bg-inverse) :is(h1, h2, h3, h4, .w-h1, .w-kicker, .w-lede, p, li, dt, dd, label, legend, small, figcaption, blockquote) { color: inherit; }
:is(.w-bg-accent, .w-bg-inverse) a:not(.w-button) { color: inherit; text-decoration-color: currentColor; }
:is(.w-bg-accent, .w-bg-inverse) :is(.w-muted, .w-form-note, .w-lede, .w-kicker) { opacity: .86; }
.w-bg-accent .w-button { background: var(--on-accent); color: var(--accent); border-color: var(--on-accent); }
.w-bg-inverse .w-button { background: var(--ground); color: var(--ink); border-color: var(--ground); }
:is(.w-bg-accent, .w-bg-inverse) .w-button-secondary { background: transparent; color: inherit; border-color: currentColor; }
/* on a coloured band, boxed things become panels in the theme's own base colours (works in every theme, dark ones too) */
:is(.w-bg-accent, .w-bg-inverse) :is(.w-card:not(.w-cards-tiles .w-card), .w-plan, .w-link, .w-notice) { background: var(--ground); color: var(--ink); border-radius: var(--radius); padding: var(--space-4); }
:is(.w-bg-accent, .w-bg-inverse) :is(.w-card:not(.w-cards-tiles .w-card), .w-plan, .w-link, .w-notice) :is(h2, h3, h4, p, li, span, a:not(.w-button)) { color: var(--ink); opacity: 1; }
:is(.w-bg-accent, .w-bg-inverse) :is(.w-card, .w-plan) .w-button { background: var(--accent); color: var(--on-accent); border-color: var(--accent); }
:is(.w-bg-accent, .w-bg-inverse) :is(.w-card, .w-plan) .w-button-secondary { background: transparent; color: var(--ink); border-color: var(--ink); }
:is(.w-bg-accent, .w-bg-inverse) :is(input, textarea, select) { color: var(--ink); }
/* figures take the band's text colour (an accent-coloured number on an accent or dark band disappears) */
:is(.w-bg-accent, .w-bg-inverse) .w-stats strong, :is(.w-bg-accent, .w-bg-inverse) .w-stats span { color: inherit; }
:is(.w-bg-accent, .w-bg-inverse) .w-stats { border-color: currentColor; }
:is(.w-bg-accent, .w-bg-inverse) :is(hr, .w-rule) { border-color: currentColor; opacity: .3; }

/* gallery: click to see a photo bigger. Pure CSS (:target); the big image loads only when opened; Back closes it */
.w-zoom { display: block; cursor: zoom-in; }
.w-lb-anchor { position: fixed; top: 0; }
.w-lightbox { display: none; }
.w-lightbox:target { display: grid; place-items: center; position: fixed; inset: 0; z-index: 1000; background: rgba(12, 12, 12, .92); padding: 3.5rem 4rem; }
.w-lightbox figure { margin: 0; display: grid; gap: .75rem; justify-items: center; max-height: 100%; }
.w-lightbox img { max-width: min(92vw, 1600px); max-height: calc(100vh - 8rem); width: auto; height: auto; object-fit: contain; border-radius: 0; }
.w-lightbox figcaption { color: #eee; font-size: .95rem; text-align: center; max-width: 60ch; }
.w-lightbox a { position: absolute; display: grid; place-items: center; width: 3rem; height: 3rem; border-radius: 50%; color: #fff; text-decoration: none; font-size: 2rem; line-height: 1; background: rgba(255, 255, 255, .1); }
.w-lightbox a:hover, .w-lightbox a:focus-visible { background: rgba(255, 255, 255, .25); }
.w-lb-close { top: 1rem; right: 1rem; } .w-lb-prev { left: 1rem; top: calc(50% - 1.5rem); } .w-lb-next { right: 1rem; top: calc(50% - 1.5rem); }
@media (max-width: 40rem) { .w-lightbox:target { padding: 3.5rem .5rem 4.5rem; } .w-lb-prev, .w-lb-next { top: auto; bottom: 1rem; } .w-lb-prev { left: calc(50% - 3.5rem); } .w-lb-next { right: calc(50% - 3.5rem); } }

/* sub-menus: pages shown under another page (one level) */
.w-has-sub { position: relative; display: inline-flex; align-items: center; }
.w-has-sub > a::after { content: ""; display: inline-block; width: .38em; height: .38em; margin-left: .4em; border-right: 1.5px solid currentColor; border-bottom: 1.5px solid currentColor; transform: translateY(-.15em) rotate(45deg); opacity: .7; }
.w-sub { display: none; position: absolute; top: 100%; left: -.75rem; z-index: 30; min-width: 12rem; padding: .5rem 0; background: var(--ground); border: 1px solid var(--line); border-radius: var(--radius); box-shadow: 0 10px 28px rgba(0, 0, 0, .12); }
.w-sub a { display: block; padding: .45rem .9rem; white-space: nowrap; }
.w-has-sub:hover > .w-sub, .w-has-sub:focus-within > .w-sub { display: block; }
.w-sub-on > a { text-decoration: underline; text-decoration-color: var(--accent); text-underline-offset: .3em; }
.w-nav-m-burger details .w-has-sub { display: block; }
.w-nav-m-burger details .w-has-sub > a::after { display: none; }
.w-nav-m-burger details .w-sub { display: block; position: static; box-shadow: none; border: 0; border-left: 2px solid var(--line); border-radius: 0; margin: .25rem 0 .25rem .75rem; padding: 0; min-width: 0; background: transparent; }
@media (max-width: 52rem) {
  .w-nav-m-scroll .w-has-sub, .w-nav-m-scroll .w-sub, .w-nav-m-tabs .w-has-sub, .w-nav-m-tabs .w-sub { display: contents; }
  .w-nav-m-scroll .w-has-sub > a::after, .w-nav-m-tabs .w-has-sub > a::after { display: none; }
  .w-nav-m-scroll .w-sub a, .w-nav-m-tabs .w-sub a { padding: 0; }
}

/* photo corners per block (Design → Photo corners) and a soft shadow under photos */
.w-corners-square { --radius-img: 0; } .w-corners-soft { --radius-img: 6px; } .w-corners-rounded { --radius-img: 16px; } .w-corners-round { --radius-img: 28px; } .w-corners-arch { --radius-img: 999px 999px 6px 6px; }
/* Look → Photos, per block. Circle crops square; a shape crops every photo of the block to that ratio (cover, centred);
   the hero's full-width cover photo keeps its own shape. */
.w-corners-circle { --radius-img: 50%; --img-ratio: 1 / 1; }
.w-ratio-wide { --img-ratio: 16 / 9; } .w-ratio-landscape { --img-ratio: 3 / 2; } .w-ratio-square { --img-ratio: 1 / 1; } .w-ratio-portrait { --img-ratio: 4 / 5; }
:is([class*="w-ratio-"], .w-corners-circle):not(.w-hero-cover) :is(figure, .w-feature-img, .w-band-img, .w-hero-wide) { aspect-ratio: var(--img-ratio) !important; overflow: hidden; height: auto !important; }   /* the customer's choice beats a layout's own (columns keeps natural shapes with !important) */
:is([class*="w-ratio-"], .w-corners-circle):not(.w-hero-cover) :is(figure, .w-feature-img, .w-band-img, .w-hero-wide) img:not(.w-logo) { width: 100%; height: 100% !important; object-fit: cover; }
:is([class*="w-ratio-"], .w-corners-circle) .w-gallery-mosaic figure { aspect-ratio: auto !important; height: 100% !important; }   /* a mosaic is an arrangement: it keeps its own shapes */
.w-corners-circle :is(figure, .w-feature-img, .w-band-img) { border-radius: 50%; }
.w-imgframe-line :is(figure, .w-feature-img, .w-band-img, .w-hero-wide), .w-imgframe-line.w-image img { box-shadow: 0 0 0 1px var(--line); }
.w-imgframe-mat :is(figure, .w-feature-img, .w-band-img, .w-hero-wide) { background: #fff; padding: 6px; box-shadow: 0 1px 3px rgba(0, 0, 0, .14); box-sizing: border-box; }
.w-imgframe-mat :is(figure, .w-feature-img, .w-band-img, .w-hero-wide) img { border-radius: max(0px, calc(var(--radius-img, var(--radius)) - 4px)); }
.w-imgtone-bw :is(figure, .w-feature-img, .w-band-img, .w-hero-wide, .w-hero-cover) img:not(.w-logo) { filter: grayscale(1); }
.w-imgtone-soft :is(figure, .w-feature-img, .w-band-img, .w-hero-wide, .w-hero-cover) img:not(.w-logo) { filter: saturate(.55) contrast(.94) brightness(1.04); }
[class*="w-corners-"] :is(figure, .w-card, .w-feature, .w-hero, .w-gallery li, .w-team) img:not(.w-logo) { border-radius: var(--radius-img); }
/* the frames that clip a photo to its corners carry the shadow (a shadow on the photo inside would be cut off) */
.w-img-shadow :is(.w-card figure, .w-gallery figure, .w-feature-img, .w-band-img, .w-cards-tiles .w-card, .w-cards-index figure, .w-hero-split > figure, .w-hero-wide, .w-ba-pair figure, .w-member figure, .w-product figure, .w-location figure, .w-image img) { box-shadow: 0 14px 34px -10px rgba(0, 0, 0, .32), 0 3px 8px rgba(0, 0, 0, .08); }

/* ---------- header designs ---------- */
.w-nav-bar-accent { background: var(--accent); }
.w-nav-bar-accent, .w-nav-bar-accent a, .w-nav-bar-accent .w-brand, .w-nav-bar-accent summary { color: var(--on-accent); }
.w-nav-bar-accent .w-menu a:hover { background: rgba(255, 255, 255, .14); }
.w-nav-bar-dark { background: #17191b; }
.w-nav-bar-dark, .w-nav-bar-dark a, .w-nav-bar-dark .w-brand, .w-nav-bar-dark summary { color: #f4f2ee; }
.w-nav-bar-dark .w-menu a:hover { background: rgba(255, 255, 255, .1); }
.w-nav-bar-line { border-bottom: var(--border-w, 1px) solid var(--line-strong, var(--line)); }
.w-nav-cta { order: 9; min-height: var(--tap); }
.w-nav-bar-accent .w-nav-cta { background: var(--on-accent); color: var(--accent); border-color: var(--on-accent); }
@media (max-width: 40rem) { .w-nav-cta { padding-inline: var(--space-3); } }
/* over the photo: the header floats, transparent, on the headline photo */
.w-page { position: relative; }
.w-nav-over { position: absolute; inset: 0 0 auto 0; z-index: 30; background: linear-gradient(rgba(0, 0, 0, .45), rgba(0, 0, 0, 0)) !important; border: 0 !important; }
.w-nav-over, .w-nav-over a, .w-nav-over .w-brand, .w-nav-over summary { color: #fff; }
.w-nav-over .w-menu a:hover { background: rgba(255, 255, 255, .14); }
.w-page:has(> .w-nav-over) .w-main { padding-top: 0; margin-top: 0; }
.w-page:has(> .w-nav-over) .w-main > .w-hero-cover:first-child { min-height: min(86vh, 50rem); }
/* a sticky header that gets slimmer once the page scrolls (where browsers can do it without script) */
@supports (animation-timeline: scroll()) {
  .w-nav-sticky { animation: w-nav-shrink linear both; animation-timeline: scroll(root); animation-range: 0 160px; }
  @keyframes w-nav-shrink { to { padding-block: var(--space-2); box-shadow: 0 6px 20px -12px rgba(0, 0, 0, .35); } }
}

/* ---------- footer designs ---------- */
.w-footer-minimal { justify-content: center; text-align: center; font-size: .875rem; gap: var(--space-3) var(--space-5); }
.w-footer-minimal ul { justify-content: center; }
.w-footer-contact { display: grid; gap: var(--space-6); }
.w-footer-big h2 { margin: 0 0 var(--space-4); }
.w-footer-big-line { display: block; width: fit-content; font-family: var(--font-display); font-size: clamp(1.5rem, 1rem + 2.4vw, 2.75rem); line-height: 1.15; text-decoration: none; overflow-wrap: anywhere; }
.w-footer-big-line:hover { text-decoration: underline; text-decoration-thickness: 2px; }
.w-footer-big .w-footer-address { margin-top: var(--space-3); color: var(--muted); }
.w-footer-bottom { display: flex; flex-wrap: wrap; align-items: center; gap: var(--space-4) var(--space-6); padding-top: var(--space-5); border-top: var(--border-w, 1px) solid var(--line); }
.w-footer-bottom .w-footer-menu { display: flex; flex-wrap: wrap; gap: var(--space-2) var(--space-4); }
footer.w-footer.w-footer-accent { background: var(--accent); }
footer.w-footer.w-footer-accent, footer.w-footer.w-footer-accent :is(a, h3, strong, p, li) { color: var(--on-accent); }

/* ---------- sections with a background photo ---------- */
.w-bg-photo { position: relative; isolation: isolate; background-size: cover; background-repeat: no-repeat; color: #fff; padding-block: var(--space-8); padding-inline: var(--gutter); margin-inline: calc(-1 * var(--gutter)); }
.w-bg-photo::before { content: ""; position: absolute; inset: 0; z-index: -1; background: rgba(12, 12, 12, var(--w-dim, .48)); }
.w-dim-light { --w-dim: .28; } .w-dim-medium { --w-dim: .48; } .w-dim-strong { --w-dim: .66; }
.w-bg-fixed { background-attachment: fixed; }
@media (hover: none) { .w-bg-fixed { background-attachment: scroll; } }   /* phones ignore it anyway, and some draw it badly */
/* text on the photo is white; cards, forms and other surfaces inside keep their own colours */
.w-bg-photo :is(h1, h2, h3, h4, p, li, dt, dd, figcaption, .w-kicker, .w-lede, .w-muted) { color: #fff; }
.w-bg-photo a:not(.w-button) { color: #fff; }
.w-bg-photo :is(.w-card, .w-plan, .w-member, .w-review, .w-testimonial, .w-product, form, .w-faq details, table) :is(h1, h2, h3, h4, p, li, dt, dd, a:not(.w-button), figcaption) { color: var(--ink); }
.w-bg-photo :is(.w-card, .w-plan, .w-member, .w-review, .w-testimonial, .w-product) { background: var(--surface, var(--ground)); }

/* footer designs win over a theme's own footer colours and layout (themes load after this file) */
.w-footer.w-footer-dark { background: var(--ink); color: #d9dcd5; border-top: 0; }
.w-footer.w-footer-dark :is(a, .w-footer-name) { color: #ffffff; }
.w-footer.w-footer-dark h3 { color: #b7bcb4; }
.w-footer.w-footer-centered { flex-direction: column; align-items: center; text-align: center; gap: var(--space-3); }
.w-footer.w-footer-centered :is(.w-footer-links, .w-footer-menu, .w-social) { justify-content: center; }
.w-footer.w-footer-minimal { justify-content: center; align-items: center; }
.w-footer.w-footer-contact { display: grid; justify-content: stretch; }
/* social buttons on a dark or accent footer: outlined in white */
.w-footer.w-footer-dark .w-social a, footer.w-footer.w-footer-accent .w-social a { background: transparent; color: #fff; border-color: rgba(255, 255, 255, .55); }
.w-footer.w-footer-dark .w-social a:hover, footer.w-footer.w-footer-accent .w-social a:hover { background: rgba(255, 255, 255, .12); }

/* cards that inherit the text colour, on a dark section: a faint light surface instead of the theme's light card (else light text on white) */
.w-bg-inverse :is(.w-testimonial, .w-plans > li) { background: rgba(255, 255, 255, .07); border-color: rgba(255, 255, 255, .18); color: var(--ground); }
.w-bg-inverse .w-testimonial :is(blockquote, figcaption, strong, span) { color: inherit; }

/* ---------- blog: card and magazine overviews, categories, post meta ---------- */
.w-news-meta { display: flex; flex-wrap: wrap; gap: 0 var(--space-3); margin: 0 0 .25rem; font-size: .8125rem; color: var(--muted); }
.w-news-meta time { display: inline; margin: 0; }
.w-news-cat { text-transform: uppercase; letter-spacing: .06em; font-weight: 600; color: var(--accent); }
.w-news-cats { display: flex; flex-wrap: wrap; gap: var(--space-2); margin: 0 0 var(--space-5); }
.w-news-cats a { display: inline-flex; align-items: center; min-height: 2.25rem; padding: 0 var(--space-4); border: var(--border-w, 1px) solid var(--line); border-radius: 999px; text-decoration: none; font-size: .9375rem; }
.w-news-cats a[aria-current] { background: var(--ink); color: var(--ground); border-color: var(--ink); }
.w-news-cards { grid-template-columns: repeat(auto-fill, minmax(min(100%, 17rem), 1fr)); }
.w-news-cards .w-news-item, .w-news-magazine .w-news-item { align-content: start; }
.w-news-magazine { grid-template-columns: repeat(auto-fill, minmax(min(100%, 17rem), 1fr)); }
@media (min-width: 52rem) {
  .w-news-magazine > .w-news-item:first-child { grid-column: 1 / -1; grid-template-columns: 3fr 2fr; align-items: center; gap: var(--space-6); }
  .w-news-magazine > .w-news-item:first-child h3 { font-size: clamp(1.5rem, 1rem + 1.6vw, 2.25rem); }
}
/* in cards and magazine, posts stack: photo on top (the list layout puts it beside) */
.w-news-cards > .w-news-item, .w-news-magazine > .w-news-item:not(:first-child) { grid-template-columns: minmax(0, 1fr) !important; }

/* ---------- hide per device: phone ≤760, tablet 761–1024, computer ≥1025 ("desktop" stays tablet + computer) ---------- */
@media (min-width: 761px) and (max-width: 1024px) { .w-hide-tablet, .w-hide-phone-tablet { display: none !important; } }
@media (min-width: 1025px) { .w-hide-desk, .w-hide-phone-desk { display: none !important; } }
@media (max-width: 760px) { .w-hide-phone-tablet, .w-hide-phone-desk { display: none !important; } }

/* ---------- accordion and tabs ---------- */
.w-accordion { display: grid; gap: var(--space-2); }
.w-acc { border: var(--border-w, 1px) solid var(--line); border-radius: var(--radius); background: var(--surface, transparent); }
.w-acc > summary { cursor: pointer; padding: var(--space-4) var(--space-5); font-weight: 600; list-style: none; display: flex; justify-content: space-between; gap: var(--space-4); }
.w-acc > summary::-webkit-details-marker { display: none; }
.w-acc > summary::after { content: "+"; font-weight: 400; font-size: 1.25rem; line-height: 1; transition: transform .2s; }
.w-acc[open] > summary::after { transform: rotate(45deg); }
.w-acc-body { padding: 0 var(--space-5) var(--space-4); }
.w-tabs { display: grid; gap: var(--space-4); }
.w-tab-r { position: absolute; opacity: 0; pointer-events: none; }
.w-tab-labels { display: flex; flex-wrap: wrap; gap: var(--space-2); border-bottom: var(--border-w, 1px) solid var(--line); }
.w-tab-labels label { cursor: pointer; padding: var(--space-3) var(--space-4); margin-bottom: -1px; border-bottom: 2px solid transparent; font-weight: 600; color: var(--muted); }
.w-tab-panel { display: none; }
.w-tab-r:nth-of-type(1):checked ~ .w-tab-panels > .w-tab-panel:nth-child(1) { display: block; }
.w-tab-r:nth-of-type(1):checked ~ .w-tab-labels > label:nth-child(1) { color: var(--ink); border-bottom-color: var(--accent); }
.w-tab-r:nth-of-type(1):focus-visible ~ .w-tab-labels > label:nth-child(1) { outline: 2px solid var(--accent); outline-offset: 2px; }
.w-tab-r:nth-of-type(2):checked ~ .w-tab-panels > .w-tab-panel:nth-child(2) { display: block; }
.w-tab-r:nth-of-type(2):checked ~ .w-tab-labels > label:nth-child(2) { color: var(--ink); border-bottom-color: var(--accent); }
.w-tab-r:nth-of-type(2):focus-visible ~ .w-tab-labels > label:nth-child(2) { outline: 2px solid var(--accent); outline-offset: 2px; }
.w-tab-r:nth-of-type(3):checked ~ .w-tab-panels > .w-tab-panel:nth-child(3) { display: block; }
.w-tab-r:nth-of-type(3):checked ~ .w-tab-labels > label:nth-child(3) { color: var(--ink); border-bottom-color: var(--accent); }
.w-tab-r:nth-of-type(3):focus-visible ~ .w-tab-labels > label:nth-child(3) { outline: 2px solid var(--accent); outline-offset: 2px; }
.w-tab-r:nth-of-type(4):checked ~ .w-tab-panels > .w-tab-panel:nth-child(4) { display: block; }
.w-tab-r:nth-of-type(4):checked ~ .w-tab-labels > label:nth-child(4) { color: var(--ink); border-bottom-color: var(--accent); }
.w-tab-r:nth-of-type(4):focus-visible ~ .w-tab-labels > label:nth-child(4) { outline: 2px solid var(--accent); outline-offset: 2px; }
.w-tab-r:nth-of-type(5):checked ~ .w-tab-panels > .w-tab-panel:nth-child(5) { display: block; }
.w-tab-r:nth-of-type(5):checked ~ .w-tab-labels > label:nth-child(5) { color: var(--ink); border-bottom-color: var(--accent); }
.w-tab-r:nth-of-type(5):focus-visible ~ .w-tab-labels > label:nth-child(5) { outline: 2px solid var(--accent); outline-offset: 2px; }
.w-tab-r:nth-of-type(6):checked ~ .w-tab-panels > .w-tab-panel:nth-child(6) { display: block; }
.w-tab-r:nth-of-type(6):checked ~ .w-tab-labels > label:nth-child(6) { color: var(--ink); border-bottom-color: var(--accent); }
.w-tab-r:nth-of-type(6):focus-visible ~ .w-tab-labels > label:nth-child(6) { outline: 2px solid var(--accent); outline-offset: 2px; }
.w-tab-r:nth-of-type(7):checked ~ .w-tab-panels > .w-tab-panel:nth-child(7) { display: block; }
.w-tab-r:nth-of-type(7):checked ~ .w-tab-labels > label:nth-child(7) { color: var(--ink); border-bottom-color: var(--accent); }
.w-tab-r:nth-of-type(7):focus-visible ~ .w-tab-labels > label:nth-child(7) { outline: 2px solid var(--accent); outline-offset: 2px; }
.w-tab-r:nth-of-type(8):checked ~ .w-tab-panels > .w-tab-panel:nth-child(8) { display: block; }
.w-tab-r:nth-of-type(8):checked ~ .w-tab-labels > label:nth-child(8) { color: var(--ink); border-bottom-color: var(--accent); }
.w-tab-r:nth-of-type(8):focus-visible ~ .w-tab-labels > label:nth-child(8) { outline: 2px solid var(--accent); outline-offset: 2px; }

/* ---------- the site-wide announcement bar (closable for this visit) ---------- */
/* the site-wide announcement bar: full width, its own colours (themes style .w-notice, the notice block, as a card) */
.w-sitebar { display: flex; align-items: center; justify-content: center; gap: var(--space-4); width: 100%; max-width: none; box-sizing: border-box; margin: 0; padding: var(--space-2) var(--gutter); border: 0; border-radius: 0; font-size: .9375rem; line-height: 1.4; text-align: center; }
.w-sitebar p { margin: 0; color: inherit; } .w-sitebar a { color: inherit; font-weight: 600; text-decoration: underline; }
.w-sitebar label { cursor: pointer; font-size: 1.25rem; line-height: 1; padding: 0 var(--space-2); opacity: .8; color: inherit; }
body .w-sitebar.w-sitebar-accent { background: var(--accent); color: var(--on-accent); }
body .w-sitebar.w-sitebar-ink { background: var(--ink); color: var(--ground); }
body .w-sitebar.w-sitebar-surface { background: var(--surface); color: var(--ink); border-bottom: 1px solid var(--line); }
.w-sitebar-x:checked + .w-sitebar { display: none; }

/* ---------- "Hosted by NovaNode.eu" (opt-in) ---------- */
.w-credit a { opacity: .75; } .w-credit a:hover { opacity: 1; }
.w-credit-badge a { display: inline-flex; align-items: center; gap: .4em; padding: .2em .7em; border: 1px solid currentColor; border-radius: 999px; font-size: .8125rem; text-decoration: none; opacity: .8; }
.w-credit-badge a::before { content: ""; width: .55em; height: .55em; border-radius: 50%; background: currentColor; }

/* ---------- menu styles ---------- */
.w-nav-s-underline .w-menu a { border-radius: 0; background: none !important; text-decoration: none; box-shadow: inset 0 -2px 0 transparent; transition: box-shadow .15s; }
.w-nav-s-underline .w-menu a:hover, .w-nav-s-underline .w-menu a[aria-current="page"] { box-shadow: inset 0 -2px 0 currentColor; text-decoration: none; }
.w-nav-s-pills .w-menu a { border-radius: 999px; text-decoration: none; }
.w-nav-s-pills .w-menu a[aria-current="page"] { background: var(--ink); color: var(--ground); text-decoration: none; }
.w-nav-s-boxed .w-menu { gap: 0; border: var(--border-w, 1px) solid var(--line-strong, var(--line)); border-radius: var(--radius-button, 8px); overflow: hidden; }
.w-nav-s-boxed .w-menu a { border-radius: 0; text-decoration: none; } .w-nav-s-boxed .w-menu a + a, .w-nav-s-boxed .w-menu > * + * { border-left: var(--border-w, 1px) solid var(--line); }
.w-nav-s-boxed .w-menu a[aria-current="page"] { background: var(--surface); text-decoration: none; }
.w-nav-s-caps .w-menu a { text-transform: uppercase; letter-spacing: .08em; font-size: .8125rem; font-weight: 600; }

/* ---------- embed ---------- */
.w-embed { margin: 0; }
.w-embed iframe { display: block; width: 100%; border: 0; border-radius: var(--radius); background: var(--surface, #f3f3f3); }
.w-embed-s iframe { height: 360px; } .w-embed-m iframe { height: 560px; } .w-embed-l iframe { height: 760px; }
.w-embed-spotify.w-embed-s iframe { height: 152px; }
.w-embed figcaption, .w-embed-cap { margin-top: var(--space-2); font-size: .875rem; color: var(--muted); }
.w-embed-ph { display: grid; place-content: center; gap: .3rem; text-align: center; border: 2px dashed var(--line-strong, #bbb); border-radius: var(--radius); color: var(--muted); }
.w-embed-ph strong { color: var(--ink); font-size: 1.125rem; }
.w-embed-ph.w-embed-s { min-height: 160px; } .w-embed-ph.w-embed-m { min-height: 260px; } .w-embed-ph.w-embed-l { min-height: 340px; }
.w-embed-bad { border-color: #c0392b; } .w-embed-bad span { color: #a33224; }

/* ---------- wide layouts on wide screens (5.2.3): menu bar, cover photos, bands, background photos, full-width images and
   the footer run edge to edge; text keeps the page column. The column is padding, not max-width, so backgrounds can be wide. */
.w-layout-wide { --w-col: max(var(--gutter), calc((100% - var(--page-wide)) / 2)); }
.w-layout-wide .w-main { max-width: none; padding-inline: 0; }
.w-layout-wide .w-main > :is(.w-block, .w-row, .w-announce) { padding-inline: var(--w-col); }
.w-layout-wide .w-nav, .w-layout-wide .w-footer { max-width: none; padding-inline: var(--w-col); }
/* what used to step out of the gutter is full width already */
.w-layout-wide .w-main > :is(.w-hero-cover, .w-block-band, .w-block-surface, .w-image-full, .w-announce, .w-bg-photo) { margin-inline: 0; }
.w-layout-wide .w-main > .w-hero-cover .w-hero-cover-copy { padding-inline: 0; }
.w-layout-wide .w-main > .w-image-full { padding-inline: 0; }
.w-layout-wide .w-main > .w-image-full figcaption { padding-inline: var(--w-col); }

/* ---------- text formatting (5.3): colours from the theme, alignment per paragraph, anchors clear of a sticky menu ---------- */
.w-t-accent { color: var(--accent); }
.w-t-muted { color: var(--muted); }
mark { background: color-mix(in srgb, var(--accent) 22%, transparent); color: inherit; padding: 0 .12em; border-radius: .15em; }
.w-ta-center { text-align: center; } .w-ta-right { text-align: right; }
:is(ul, ol).w-ta-center { list-style-position: inside; padding-inline-start: 0; }
[id^="b-"] { scroll-margin-top: 5.5rem; }

/* ---------- a page's own background (5.4): a tone, or a photo behind the whole page ---------- */
body.w-page-soft { background: var(--surface); }
body.w-page-inverse { background: var(--ink); color: var(--ground); }
body.w-page-accent { background: color-mix(in srgb, var(--accent) 12%, var(--ground)); }
body.w-page-inverse :is(h1, h2, h3, h4, p, li, dd, blockquote, .w-lede, .w-kicker) { color: var(--ground); }
body.w-page-photo { background-image: var(--w-page-img); background-size: cover; background-position: center; background-attachment: fixed; }
body.w-page-photo > .w-page { background: color-mix(in srgb, var(--ground) var(--w-page-veil, 86%), transparent); }
body.w-page-dim-light { --w-page-veil: 72%; } body.w-page-dim-strong { --w-page-veil: 95%; }
@media (prefers-reduced-motion: reduce) { body.w-page-photo { background-attachment: scroll; } }

/* link pages v2: the share button, the 18+ confirmation page */
.w-share { display: inline-flex; align-items: center; gap: 8px; margin-top: var(--space-3); height: 2.5rem; padding: 0 var(--space-4); border: var(--border-w) solid var(--line); border-radius: 999px; background: var(--surface); color: var(--ink); font: inherit; font-weight: 600; cursor: pointer; }
.w-share:hover { border-color: var(--accent); }
.w-share svg { width: 1.125rem; height: 1.125rem; }
.w-identity-center .w-share { margin-inline: auto; }
.w-go { max-width: 32rem; margin-inline: auto; text-align: center; padding-block: var(--space-7, 4rem); }
.w-go .w-actions { justify-content: center; margin-top: var(--space-5); }
.w-go-to { font-weight: 600; }

/* ========================================================== slideshow, labels, certificates (6.18) */

/* Slideshow, "cover": a picture stage with the headline on top. The crossfade is a CSS animation whose
   keyframes the renderer writes per block, so a published page needs no script for it. */
.w-slider { position: relative; display: grid; align-items: center; overflow: hidden; padding: 0; border-radius: var(--radius-img, 0); }
.w-slider-short { min-height: min(42vh, 22rem); }
.w-slider-tall { min-height: min(68vh, 38rem); }
.w-slider-full { min-height: calc(100svh - 4rem); }
.w-slider-stage { position: absolute; inset: 0; }
.w-slide { position: absolute; inset: 0; opacity: 0; }
.w-slide:first-child { opacity: 1; }
.w-slide img, .w-slide .w-img-placeholder { width: 100%; height: 100%; object-fit: cover; display: block; }
.w-slider-veil { position: absolute; inset: 0; background: #000; pointer-events: none; }
.w-sliderdim-light { opacity: .25; }
.w-sliderdim-medium { opacity: .45; }
.w-sliderdim-strong { opacity: .65; }
.w-slider-copy { position: relative; z-index: 2; margin: auto; padding: var(--space-6) var(--gutter); max-width: var(--page-narrow); color: #fff; text-align: center; }
.w-slider-copy .w-h1, .w-slider-copy .w-kicker, .w-slider-copy .w-lede { color: #fff; text-shadow: 0 2px 12px rgba(0, 0, 0, .55); }
.w-slider-copy .w-actions { justify-content: center; }
.w-slider-copy:empty { display: none; }
@media (prefers-reduced-motion: reduce) {
  .w-slide { animation: none !important; }
  .w-slide:not(:first-child) { display: none; }
}

/* Slideshow, "wide": a strip the visitor swipes. Scroll-snap, no script. */
.w-sliderstrip .w-slides { display: grid; grid-auto-flow: column; grid-auto-columns: min(82%, 34rem); gap: var(--card-gap); overflow-x: auto; scroll-snap-type: x mandatory; scroll-behavior: smooth; padding-bottom: .5rem; list-style: none; margin: 0; }
.w-sliderstrip .w-slides > li { scroll-snap-align: center; }
.w-sliderstrip figure { margin: 0; }
.w-sliderstrip img, .w-sliderstrip .w-img-placeholder { width: 100%; aspect-ratio: 16 / 10; object-fit: cover; display: block; border-radius: var(--radius-img, 0); }
.w-sliderstrip figcaption { padding-top: .5rem; color: var(--muted); font-size: .9375rem; }
.w-slides-dots { display: flex; justify-content: center; gap: .25rem; padding-top: .75rem; }
.w-slides-dots a { display: grid; place-items: center; width: var(--tap, 2.75rem); height: 1.75rem; }
.w-slides-dots span { display: block; width: .5rem; height: .5rem; border-radius: 50%; background: var(--line); }
.w-slides-dots a:hover span, .w-slides-dots a:focus-visible span { background: var(--accent); }

/* Short labels in a row: skills, languages, what a workshop takes on. */
.w-tags { display: flex; flex-wrap: wrap; gap: .5rem; list-style: none; margin: 0; padding: 0; }
.w-tags a, .w-tags span { display: inline-block; padding: .35rem .75rem; border: 1px solid var(--line); border-radius: 999px; background: var(--surface); font-size: .875rem; line-height: 1.35; }
.w-tags a { color: inherit; text-decoration: none; }
.w-tags a:hover, .w-tags a:focus-visible { border-color: var(--accent); color: var(--accent); }
.w-tags-outline a, .w-tags-outline span { background: transparent; }

/* Certificates, badges and diplomas. */
.w-credentials { display: grid; gap: var(--card-gap); list-style: none; margin: 0; padding: 0; }
.w-credential { display: flex; align-items: flex-start; gap: 1rem; padding: var(--space-4); border: 1px solid var(--line); border-radius: var(--radius-img, 0); }
.w-credential-link { display: flex; align-items: flex-start; gap: 1rem; flex: 1; min-width: 0; color: inherit; text-decoration: none; }
.w-credential-link:hover, .w-credential-link:focus-visible { color: var(--accent); }
.w-credential-badge { flex: 0 0 auto; width: 4rem; margin: 0; }
.w-credential-badge img, .w-credential-badge .w-img-placeholder { width: 4rem; height: 4rem; object-fit: contain; display: block; border-radius: 8px; }
.w-credential-copy { min-width: 0; }
.w-credential-copy h3 { margin: 0 0 .25rem; font-size: 1rem; }
.w-credential-by { margin: 0 0 .35rem; color: var(--muted); font-size: .875rem; }
.w-credential-date { display: flex; align-items: center; gap: .35rem; margin: 0; color: var(--muted); font-size: .8125rem; }
.w-credential-date .w-icon { width: 1rem; height: 1rem; }
@media (min-width: 52rem) {
  .w-credentials.w-cols-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .w-credentials.w-cols-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .w-credentials.w-cols-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
}

/* Contact details as cards, with no form beside them. */
.w-contact-cards { display: block; }
.w-contact-cards .w-contact-details { display: grid; grid-template-columns: repeat(auto-fit, minmax(16rem, 1fr)); gap: var(--card-gap); }
.w-contact-cards .w-contact-details > div { padding: var(--space-4); border: 1px solid var(--line); border-radius: var(--radius-img, 0); }

/* A button that carries an icon beside its text. */
.w-button-withicon { display: inline-flex; align-items: center; gap: .5rem; }
.w-button-withicon .w-icon { flex: 0 0 auto; width: 1.125rem; height: 1.125rem; }

/* Timeline: the "dots on a line" style fills the dots and gives room to a second line and a place. */
.w-timeline-rail > li::before { background: var(--accent); }
.w-timeline-sub { font-weight: 600; }
.w-timeline-place { font-size: .875rem; }

/* ========================================================== Design → Space and Frame (6.19) */
/* Seven steps, in the theme's own rhythm; step 3 is what a block gets anyway. Phones scale down with the variables. */
.w-mt-0 { margin-top: 0 !important; } .w-mt-1 { margin-top: var(--space-2) !important; } .w-mt-2 { margin-top: var(--space-4) !important; }
.w-mt-4 { margin-top: var(--space-7) !important; } .w-mt-5 { margin-top: var(--space-8) !important; } .w-mt-6 { margin-top: var(--space-9) !important; }
.w-mb-0 { margin-bottom: 0 !important; } .w-mb-1 { margin-bottom: var(--space-2) !important; } .w-mb-2 { margin-bottom: var(--space-4) !important; }
.w-mb-4 { margin-bottom: var(--space-7) !important; } .w-mb-5 { margin-bottom: var(--space-8) !important; } .w-mb-6 { margin-bottom: var(--space-9) !important; }
.w-pt-0 { padding-top: 0 !important; } .w-pt-1 { padding-top: var(--space-2) !important; } .w-pt-2 { padding-top: var(--space-4) !important; }
.w-pt-4 { padding-top: var(--space-7) !important; } .w-pt-5 { padding-top: var(--space-8) !important; } .w-pt-6 { padding-top: var(--space-9) !important; }
.w-pb-0 { padding-bottom: 0 !important; } .w-pb-1 { padding-bottom: var(--space-2) !important; } .w-pb-2 { padding-bottom: var(--space-4) !important; }
.w-pb-4 { padding-bottom: var(--space-7) !important; } .w-pb-5 { padding-bottom: var(--space-8) !important; } .w-pb-6 { padding-bottom: var(--space-9) !important; }
/* the block's own edge */
.w-frame-line { border: 1px solid var(--line); border-radius: var(--radius-img, 0); padding-left: var(--space-5); padding-right: var(--space-5); }
.w-frame-card { border: 1px solid var(--line); border-radius: var(--radius-img, 8px); padding-left: var(--space-5); padding-right: var(--space-5); background: var(--surface); box-shadow: 0 1px 2px rgba(0, 0, 0, .05); }
.w-frame-shadow { border-radius: var(--radius-img, 8px); padding-left: var(--space-5); padding-right: var(--space-5); background: var(--ground); box-shadow: 0 12px 32px -12px rgba(0, 0, 0, .25); }
.w-main > .w-frame-line, .w-main > .w-frame-card, .w-main > .w-frame-shadow, .w-cell > .w-frame-line, .w-cell > .w-frame-card, .w-cell > .w-frame-shadow { box-sizing: border-box; }

/* ========================================================== colour on colour (6.19.1) */
/* On an accent, dark or photo background the grey "muted" text and grey lines were kept as on the plain page
   and sank into the colour (unreadable timeline paragraphs on accent, for one). Inside these scopes the
   tokens themselves change, so everything that colours through them reads again. */
.w-bg-accent { --muted: color-mix(in srgb, var(--on-accent) 80%, var(--accent)); --line: color-mix(in srgb, var(--on-accent) 38%, transparent); --surface: color-mix(in srgb, var(--on-accent) 12%, transparent); }
.w-bg-inverse { --muted: color-mix(in srgb, var(--ground) 72%, var(--ink)); --line: color-mix(in srgb, var(--ground) 32%, transparent); --surface: color-mix(in srgb, var(--ground) 10%, transparent); }
.w-bg-photo { --muted: rgba(255, 255, 255, .82); --line: rgba(255, 255, 255, .38); --surface: rgba(255, 255, 255, .14); }
/* the timeline: date and dots in the section's own colour, not accent-on-accent */
:is(.w-bg-accent, .w-bg-photo) .w-timeline-date { color: inherit; }
:is(.w-bg-accent, .w-bg-inverse, .w-bg-photo) .w-timeline > li::before { background: transparent; border-color: currentColor; }
/* label chips take a translucent fill of the text colour instead of the page's light surface */
:is(.w-bg-accent, .w-bg-inverse, .w-bg-photo) :is(.w-tags a, .w-tags span) { background: var(--surface); border-color: var(--line); color: inherit; }
/* certificate cards and contact-detail cards lift to the page's ground, like the other cards do */
:is(.w-bg-accent, .w-bg-inverse) :is(.w-credential, .w-contact-cards .w-contact-details > div) { background: var(--ground); border-color: var(--ground); }
:is(.w-bg-accent, .w-bg-inverse) :is(.w-credential, .w-contact-cards .w-contact-details > div) :is(h3, p, a:not(.w-button), dt, dd) { color: var(--ink); opacity: 1; }
:is(.w-bg-accent, .w-bg-inverse) .w-credential :is(.w-credential-by, .w-credential-date) { color: color-mix(in srgb, var(--ink) 68%, var(--ground)); }
:is(.w-bg-accent, .w-bg-inverse) .w-contact-cards .w-contact-details > div :is(dd, dd a) { color: color-mix(in srgb, var(--ink) 80%, var(--ground)); }
/* swipe-strip dots on colour */
:is(.w-bg-accent, .w-bg-inverse, .w-bg-photo) .w-slides-dots span { background: var(--line); }
:is(.w-bg-accent, .w-bg-inverse, .w-bg-photo) .w-slides-dots a:hover span, :is(.w-bg-accent, .w-bg-inverse, .w-bg-photo) .w-slides-dots a:focus-visible span { background: currentColor; }

/* a fourth background: a pale wash of the site's accent — quieter than the full accent, warmer than grey */
.w-bg-pale { --w-bg: color-mix(in srgb, var(--accent) 9%, var(--ground)); --surface: color-mix(in srgb, var(--accent) 16%, var(--ground)); --line: color-mix(in srgb, var(--accent) 28%, var(--ground)); }
.w-bg-pale { background: var(--w-bg); box-shadow: 0 0 0 100vmax var(--w-bg); clip-path: inset(0 -100vmax); padding-block: var(--space-7); }
.w-cell > .w-bg-pale { box-shadow: none; clip-path: none; padding: var(--space-6); border-radius: var(--radius); }

/* ========================================================== Design → Size, row position, sticky (6.20) */
/* how wide a block's content runs: the theme's column by default, or narrower, wider, or edge to edge */
.w-measure-narrow { max-width: 38rem; margin-inline: auto; }
.w-measure-wide { max-width: min(100%, 88rem); margin-inline: auto; }
.w-measure-full { width: 100vw; max-width: none; margin-inline: calc(50% - 50vw); padding-inline: var(--gutter); }
.w-cell > :is(.w-measure-full, .w-measure-wide) { width: auto; max-width: none; margin-inline: 0; padding-inline: 0; }
/* a minimum height, content held in the middle */
.w-minh-short, .w-minh-tall, .w-minh-screen { display: grid; align-content: center; box-sizing: border-box; }
.w-minh-short { min-height: 40vh; }
.w-minh-tall { min-height: 65vh; }
.w-minh-screen { min-height: calc(100svh - 4rem); }
/* a block beside a taller neighbour */
.w-valign-middle { align-self: center; }
.w-valign-bottom { align-self: end; }
/* when a row folds into one column: phones by default (above), on tablets too, or never */
@media (max-width: 1024px) { .w-row.w-stack-tablet { grid-template-columns: minmax(0, 1fr); } .w-row.w-stack-tablet .w-cell { grid-column: auto; } }
@media (max-width: 760px) {
  .w-row.w-stack-never { grid-template-columns: repeat(6, minmax(0, 1fr)); gap: 0 var(--space-4); }
  .w-row.w-stack-never .w-cell-half { grid-column: span 3; } .w-row.w-stack-never .w-cell-third { grid-column: span 2; } .w-row.w-stack-never .w-cell-twothirds { grid-column: span 4; }
}
/* a block that stays at the top while the page scrolls (an announcement, a call bar) */
.w-sticky { position: sticky; top: 0; z-index: 24; background: var(--w-bg, var(--ground)); }
.w-nav-sticky ~ .w-main .w-sticky { top: 3.5rem; }

/* Roomier by nature: a highlight band, a quote and a numbers block breathe more than a text block does.
   This is their "Normal" — the Space box's steps still count from here. */
.w-block-band:not(.w-pt-0):not(.w-pt-1):not(.w-pt-2):not(.w-pt-4):not(.w-pt-5):not(.w-pt-6) { padding-top: var(--space-8); }
.w-block-band:not(.w-pb-0):not(.w-pb-1):not(.w-pb-2):not(.w-pb-4):not(.w-pb-5):not(.w-pb-6) { padding-bottom: var(--space-8); }
.w-cell > .w-block-band, .w-cell > .w-bg-soft, .w-cell > .w-bg-pale, .w-cell > .w-bg-accent, .w-cell > .w-bg-inverse { padding: var(--space-7) var(--space-6); }
.w-cell > .w-block-band .w-actions, .w-cell > .w-bg-accent .w-actions, .w-cell > .w-bg-inverse .w-actions { margin-top: var(--space-5); }
.w-block:has(> .w-quote), .w-block:has(> .w-stats) { padding-block: var(--space-8); }
