/* 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); }

/* a column holding several blocks one under the other: the blocks sit close, as one group */
.w-cell-stack > .w-block + .w-block { padding-top: 0; }

/* ========================================================== own colours, shaped edges, ticker (6.20.2.20) */
/* a section in the customer's own colour; the text colour is worked out for contrast (in site.css, per block) */
.w-bg-custom { background: var(--w-bg); color: var(--custom-ink); box-shadow: 0 0 0 100vmax var(--w-bg); clip-path: inset(0 -100vmax); padding-block: var(--space-7);
  --ink: var(--custom-ink); --muted: color-mix(in srgb, var(--custom-ink) 74%, var(--w-bg)); --line: color-mix(in srgb, var(--custom-ink) 28%, transparent); --surface: color-mix(in srgb, var(--custom-ink) 8%, transparent); }
.w-bg-custom :is(h1, h2, h3, .w-h1, .w-kicker) { color: inherit; }
.w-cell > .w-bg-custom { box-shadow: none; clip-path: none; padding: var(--space-6); border-radius: var(--radius); }
.w-bg-custom :is(.w-card, .w-credential, .w-contact-cards .w-contact-details > div) { background: color-mix(in srgb, var(--custom-ink) 6%, var(--w-bg)); }
/* the bottom edge of a coloured section runs into the next one as a slant, a curve or a wave */
.w-edge { --edge-h: clamp(28px, 5vw, 72px); position: relative; z-index: 2; margin-bottom: var(--edge-h); }
/* the section's own colour already reaches past it on every side (the full-width trick); the shape is cut out of that */
.w-edge-slant:is(.w-bg-soft, .w-bg-pale, .w-bg-accent, .w-bg-inverse, .w-bg-custom, .w-bg-photo) { clip-path: polygon(calc(50% - 50vw) 0, calc(50% + 50vw) 0, calc(50% - 50vw + 100vw) calc(100% + var(--edge-h) * 0.000), calc(50% - 50vw + 97.5vw) calc(100% + var(--edge-h) * 0.025), calc(50% - 50vw + 95vw) calc(100% + var(--edge-h) * 0.050), calc(50% - 50vw + 92.5vw) calc(100% + var(--edge-h) * 0.075), calc(50% - 50vw + 90vw) calc(100% + var(--edge-h) * 0.100), calc(50% - 50vw + 87.5vw) calc(100% + var(--edge-h) * 0.125), calc(50% - 50vw + 85vw) calc(100% + var(--edge-h) * 0.150), calc(50% - 50vw + 82.5vw) calc(100% + var(--edge-h) * 0.175), calc(50% - 50vw + 80vw) calc(100% + var(--edge-h) * 0.200), calc(50% - 50vw + 77.5vw) calc(100% + var(--edge-h) * 0.225), calc(50% - 50vw + 75vw) calc(100% + var(--edge-h) * 0.250), calc(50% - 50vw + 72.5vw) calc(100% + var(--edge-h) * 0.275), calc(50% - 50vw + 70vw) calc(100% + var(--edge-h) * 0.300), calc(50% - 50vw + 67.5vw) calc(100% + var(--edge-h) * 0.325), calc(50% - 50vw + 65vw) calc(100% + var(--edge-h) * 0.350), calc(50% - 50vw + 62.5vw) calc(100% + var(--edge-h) * 0.375), calc(50% - 50vw + 60vw) calc(100% + var(--edge-h) * 0.400), calc(50% - 50vw + 57.5vw) calc(100% + var(--edge-h) * 0.425), calc(50% - 50vw + 55vw) calc(100% + var(--edge-h) * 0.450), calc(50% - 50vw + 52.5vw) calc(100% + var(--edge-h) * 0.475), calc(50% - 50vw + 50vw) calc(100% + var(--edge-h) * 0.500), calc(50% - 50vw + 47.5vw) calc(100% + var(--edge-h) * 0.525), calc(50% - 50vw + 45vw) calc(100% + var(--edge-h) * 0.550), calc(50% - 50vw + 42.5vw) calc(100% + var(--edge-h) * 0.575), calc(50% - 50vw + 40vw) calc(100% + var(--edge-h) * 0.600), calc(50% - 50vw + 37.5vw) calc(100% + var(--edge-h) * 0.625), calc(50% - 50vw + 35vw) calc(100% + var(--edge-h) * 0.650), calc(50% - 50vw + 32.5vw) calc(100% + var(--edge-h) * 0.675), calc(50% - 50vw + 30vw) calc(100% + var(--edge-h) * 0.700), calc(50% - 50vw + 27.5vw) calc(100% + var(--edge-h) * 0.725), calc(50% - 50vw + 25vw) calc(100% + var(--edge-h) * 0.750), calc(50% - 50vw + 22.5vw) calc(100% + var(--edge-h) * 0.775), calc(50% - 50vw + 20vw) calc(100% + var(--edge-h) * 0.800), calc(50% - 50vw + 17.5vw) calc(100% + var(--edge-h) * 0.825), calc(50% - 50vw + 15vw) calc(100% + var(--edge-h) * 0.850), calc(50% - 50vw + 12.5vw) calc(100% + var(--edge-h) * 0.875), calc(50% - 50vw + 10vw) calc(100% + var(--edge-h) * 0.900), calc(50% - 50vw + 7.5vw) calc(100% + var(--edge-h) * 0.925), calc(50% - 50vw + 5vw) calc(100% + var(--edge-h) * 0.950), calc(50% - 50vw + 2.5vw) calc(100% + var(--edge-h) * 0.975), calc(50% - 50vw + 0vw) calc(100% + var(--edge-h) * 1.000)); }
.w-edge-curve:is(.w-bg-soft, .w-bg-pale, .w-bg-accent, .w-bg-inverse, .w-bg-custom, .w-bg-photo) { clip-path: polygon(calc(50% - 50vw) 0, calc(50% + 50vw) 0, calc(50% - 50vw + 100vw) calc(100% + var(--edge-h) * 0.000), calc(50% - 50vw + 97.5vw) calc(100% + var(--edge-h) * 0.078), calc(50% - 50vw + 95vw) calc(100% + var(--edge-h) * 0.156), calc(50% - 50vw + 92.5vw) calc(100% + var(--edge-h) * 0.233), calc(50% - 50vw + 90vw) calc(100% + var(--edge-h) * 0.309), calc(50% - 50vw + 87.5vw) calc(100% + var(--edge-h) * 0.383), calc(50% - 50vw + 85vw) calc(100% + var(--edge-h) * 0.454), calc(50% - 50vw + 82.5vw) calc(100% + var(--edge-h) * 0.522), calc(50% - 50vw + 80vw) calc(100% + var(--edge-h) * 0.588), calc(50% - 50vw + 77.5vw) calc(100% + var(--edge-h) * 0.649), calc(50% - 50vw + 75vw) calc(100% + var(--edge-h) * 0.707), calc(50% - 50vw + 72.5vw) calc(100% + var(--edge-h) * 0.760), calc(50% - 50vw + 70vw) calc(100% + var(--edge-h) * 0.809), calc(50% - 50vw + 67.5vw) calc(100% + var(--edge-h) * 0.853), calc(50% - 50vw + 65vw) calc(100% + var(--edge-h) * 0.891), calc(50% - 50vw + 62.5vw) calc(100% + var(--edge-h) * 0.924), calc(50% - 50vw + 60vw) calc(100% + var(--edge-h) * 0.951), calc(50% - 50vw + 57.5vw) calc(100% + var(--edge-h) * 0.972), calc(50% - 50vw + 55vw) calc(100% + var(--edge-h) * 0.988), calc(50% - 50vw + 52.5vw) calc(100% + var(--edge-h) * 0.997), calc(50% - 50vw + 50vw) calc(100% + var(--edge-h) * 1.000), calc(50% - 50vw + 47.5vw) calc(100% + var(--edge-h) * 0.997), calc(50% - 50vw + 45vw) calc(100% + var(--edge-h) * 0.988), calc(50% - 50vw + 42.5vw) calc(100% + var(--edge-h) * 0.972), calc(50% - 50vw + 40vw) calc(100% + var(--edge-h) * 0.951), calc(50% - 50vw + 37.5vw) calc(100% + var(--edge-h) * 0.924), calc(50% - 50vw + 35vw) calc(100% + var(--edge-h) * 0.891), calc(50% - 50vw + 32.5vw) calc(100% + var(--edge-h) * 0.853), calc(50% - 50vw + 30vw) calc(100% + var(--edge-h) * 0.809), calc(50% - 50vw + 27.5vw) calc(100% + var(--edge-h) * 0.760), calc(50% - 50vw + 25vw) calc(100% + var(--edge-h) * 0.707), calc(50% - 50vw + 22.5vw) calc(100% + var(--edge-h) * 0.649), calc(50% - 50vw + 20vw) calc(100% + var(--edge-h) * 0.588), calc(50% - 50vw + 17.5vw) calc(100% + var(--edge-h) * 0.522), calc(50% - 50vw + 15vw) calc(100% + var(--edge-h) * 0.454), calc(50% - 50vw + 12.5vw) calc(100% + var(--edge-h) * 0.383), calc(50% - 50vw + 10vw) calc(100% + var(--edge-h) * 0.309), calc(50% - 50vw + 7.5vw) calc(100% + var(--edge-h) * 0.233), calc(50% - 50vw + 5vw) calc(100% + var(--edge-h) * 0.156), calc(50% - 50vw + 2.5vw) calc(100% + var(--edge-h) * 0.078), calc(50% - 50vw + 0vw) calc(100% + var(--edge-h) * 0.000)); }
.w-edge-wave:is(.w-bg-soft, .w-bg-pale, .w-bg-accent, .w-bg-inverse, .w-bg-custom, .w-bg-photo) { clip-path: polygon(calc(50% - 50vw) 0, calc(50% + 50vw) 0, calc(50% - 50vw + 100vw) calc(100% + var(--edge-h) * 0.500), calc(50% - 50vw + 97.5vw) calc(100% + var(--edge-h) * 0.617), calc(50% - 50vw + 95vw) calc(100% + var(--edge-h) * 0.727), calc(50% - 50vw + 92.5vw) calc(100% + var(--edge-h) * 0.825), calc(50% - 50vw + 90vw) calc(100% + var(--edge-h) * 0.905), calc(50% - 50vw + 87.5vw) calc(100% + var(--edge-h) * 0.962), calc(50% - 50vw + 85vw) calc(100% + var(--edge-h) * 0.994), calc(50% - 50vw + 82.5vw) calc(100% + var(--edge-h) * 0.998), calc(50% - 50vw + 80vw) calc(100% + var(--edge-h) * 0.976), calc(50% - 50vw + 77.5vw) calc(100% + var(--edge-h) * 0.926), calc(50% - 50vw + 75vw) calc(100% + var(--edge-h) * 0.854), calc(50% - 50vw + 72.5vw) calc(100% + var(--edge-h) * 0.761), calc(50% - 50vw + 70vw) calc(100% + var(--edge-h) * 0.655), calc(50% - 50vw + 67.5vw) calc(100% + var(--edge-h) * 0.539), calc(50% - 50vw + 65vw) calc(100% + var(--edge-h) * 0.422), calc(50% - 50vw + 62.5vw) calc(100% + var(--edge-h) * 0.309), calc(50% - 50vw + 60vw) calc(100% + var(--edge-h) * 0.206), calc(50% - 50vw + 57.5vw) calc(100% + var(--edge-h) * 0.120), calc(50% - 50vw + 55vw) calc(100% + var(--edge-h) * 0.054), calc(50% - 50vw + 52.5vw) calc(100% + var(--edge-h) * 0.014), calc(50% - 50vw + 50vw) calc(100% + var(--edge-h) * 0.000), calc(50% - 50vw + 47.5vw) calc(100% + var(--edge-h) * 0.014), calc(50% - 50vw + 45vw) calc(100% + var(--edge-h) * 0.054), calc(50% - 50vw + 42.5vw) calc(100% + var(--edge-h) * 0.120), calc(50% - 50vw + 40vw) calc(100% + var(--edge-h) * 0.206), calc(50% - 50vw + 37.5vw) calc(100% + var(--edge-h) * 0.309), calc(50% - 50vw + 35vw) calc(100% + var(--edge-h) * 0.422), calc(50% - 50vw + 32.5vw) calc(100% + var(--edge-h) * 0.539), calc(50% - 50vw + 30vw) calc(100% + var(--edge-h) * 0.655), calc(50% - 50vw + 27.5vw) calc(100% + var(--edge-h) * 0.761), calc(50% - 50vw + 25vw) calc(100% + var(--edge-h) * 0.854), calc(50% - 50vw + 22.5vw) calc(100% + var(--edge-h) * 0.926), calc(50% - 50vw + 20vw) calc(100% + var(--edge-h) * 0.976), calc(50% - 50vw + 17.5vw) calc(100% + var(--edge-h) * 0.998), calc(50% - 50vw + 15vw) calc(100% + var(--edge-h) * 0.994), calc(50% - 50vw + 12.5vw) calc(100% + var(--edge-h) * 0.962), calc(50% - 50vw + 10vw) calc(100% + var(--edge-h) * 0.905), calc(50% - 50vw + 7.5vw) calc(100% + var(--edge-h) * 0.825), calc(50% - 50vw + 5vw) calc(100% + var(--edge-h) * 0.727), calc(50% - 50vw + 2.5vw) calc(100% + var(--edge-h) * 0.617), calc(50% - 50vw + 0vw) calc(100% + var(--edge-h) * 0.500)); }
.w-cell > .w-edge { margin-bottom: 0; clip-path: none !important; }
/* a band of words that runs across: services, places, brands */
.w-ticker { overflow: hidden; padding-block: var(--space-3); }
.w-ticker-track { display: flex; width: max-content; animation: w-ticker 40s linear infinite; }
.w-ticker-slow .w-ticker-track { animation-duration: 70s; } .w-ticker-fast .w-ticker-track { animation-duration: 22s; }
.w-ticker:hover .w-ticker-track { animation-play-state: paused; }
.w-ticker-list { display: flex; flex: none; gap: 0; margin: 0; padding: 0; list-style: none; }
.w-ticker-list li { display: flex; align-items: center; white-space: nowrap; font-size: clamp(1rem, .9rem + .5vw, 1.25rem); font-weight: 600; padding-inline: var(--space-5); }
.w-ticker-list li::after { content: ""; width: .45em; height: .45em; margin-left: calc(var(--space-5) * 2); border-radius: 50%; background: currentColor; opacity: .55; }
@keyframes w-ticker { to { transform: translateX(-50%); } }
@media (prefers-reduced-motion: reduce) { .w-ticker-track { animation: none; flex-wrap: wrap; width: auto; justify-content: center; } .w-ticker-list[aria-hidden] { display: none; } .w-ticker-list { flex-wrap: wrap; justify-content: center; } }

/* a footer built from blocks: the blocks as on a page, then a small line with the legal links and the credit */
.w-footer-custom { display: block; padding: 0; }
.w-footer-custom .w-footer-blocks > .w-block:first-child, .w-footer-custom .w-footer-blocks > .w-row:first-child > .w-cell > .w-block { padding-top: var(--space-6); }
.w-footer-small { display: flex; flex-wrap: wrap; gap: var(--space-2) var(--space-5); justify-content: center; margin: 0; padding: var(--space-4) var(--gutter); list-style: none; font-size: .875rem; color: var(--muted); border-top: 1px solid var(--line); }
.w-footer-small a { color: inherit; }

/* the running band with logos: a logo, or a logo with a word; grey until hovered if chosen */
.w-ticker-list li { gap: .6em; }
.w-ticker .w-ticker-img { display: block; width: auto; max-width: none; height: 2.4em; object-fit: contain; }
.w-ticker-s .w-ticker-img { height: 1.6em; } .w-ticker-l .w-ticker-img { height: 3.6em; }
.w-ticker-grey .w-ticker-img { filter: grayscale(1); opacity: .7; transition: filter .2s, opacity .2s; }
.w-ticker-grey li:hover .w-ticker-img { filter: none; opacity: 1; }
.w-ticker-logos .w-ticker-list li { padding-inline: calc(var(--space-5) * 1.4); }
.w-ticker-logos .w-ticker-list li::after { display: none; }

/* ========================================================== blocks for a footer built from blocks (6.20.2.28) */
.w-foot-h { margin: 0 0 var(--space-3); font-size: .8125rem; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; color: var(--muted); }
.w-footlinks-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(9.5rem, 1fr)); gap: var(--space-5) var(--space-6); }
.w-foot-links, .w-footcontact-list { display: grid; gap: var(--space-2); margin: 0; padding: 0; list-style: none; }
.w-foot-links a, .w-footcontact-list a, .w-copyright a { color: inherit; text-decoration: none; }
.w-foot-links a:hover, .w-footcontact-list a:hover, .w-copyright a:hover { text-decoration: underline; text-underline-offset: .2em; }
.w-footbrand { display: grid; gap: var(--space-3); justify-items: start; }
.w-align-center.w-footbrand { justify-items: center; }
.w-footbrand-logo { width: auto; max-width: 12rem; max-height: 3.5rem; object-fit: contain; }
.w-footbrand-name { margin: 0; font-family: var(--font-display); font-weight: var(--weight-display, 700); font-size: 1.25rem; }
.w-footbrand-text { margin: 0; color: var(--muted); max-width: 32ch; }
.w-footbrand .w-social { margin: 0; }
.w-footcontact-list li { display: flex; gap: .6em; align-items: flex-start; }
.w-footcontact-list .w-icon { flex: none; width: 1.1em; height: 1.1em; margin-top: .2em; opacity: .75; }
.w-copyright { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: var(--space-2) var(--space-5); padding-block: var(--space-4); font-size: .875rem; color: var(--muted); border-top: 1px solid var(--line); }
.w-copyright p { margin: 0; }
.w-copyright ul { display: flex; flex-wrap: wrap; gap: var(--space-2) var(--space-5); margin: 0; padding: 0; list-style: none; }
.w-align-center.w-copyright { justify-content: center; text-align: center; }
/* inside the footer the footer's own list styles (one line of links) must not reach these blocks */
.w-footer-custom .w-foot-links, .w-footer-custom .w-footcontact-list { display: grid; gap: var(--space-2); flex-direction: column; margin: 0; padding: 0; }
.w-footer-custom .w-foot-links li, .w-footer-custom .w-footcontact-list li { margin: 0; padding: 0; border: 0; }
.w-footer-custom .w-copyright ul { display: flex; }

/* a picture smaller than its space: centred, or to the side the block is aligned to; never tiny on a phone */
.w-image[class*="w-imgsize-"] figure { margin-inline: auto; }
.w-imgsize-s figure { max-width: max(33%, 10rem); } .w-imgsize-m figure { max-width: max(50%, 14rem); } .w-imgsize-l figure { max-width: 75%; }
.w-align-left.w-image[class*="w-imgsize-"] figure { margin-left: 0; margin-right: auto; }
.w-align-right.w-image[class*="w-imgsize-"] figure { margin-left: auto; margin-right: 0; }
@media (max-width: 40rem) { .w-imgsize-s figure { max-width: 55%; } .w-imgsize-m figure { max-width: 75%; } .w-imgsize-l figure { max-width: 100%; } }

/* text styles in formatted text: a larger opening paragraph, and a highlighted note */
.w-rt-lead { font-size: clamp(1.125rem, 1.05rem + .45vw, 1.375rem); line-height: 1.5; }
.w-rt-note { padding: var(--space-3) var(--space-4); border-left: 3px solid var(--accent); border-radius: 0 var(--radius) var(--radius) 0; background: color-mix(in srgb, var(--accent) 9%, transparent); }

/* more footer blocks (6.20.2.38): company details, short opening hours, ways to pay, language links, small print */
.w-footco p, .w-footnote p { margin: 0; font-size: .875rem; line-height: 1.6; }
.w-footnote p { color: var(--muted); }
.w-footco strong { font-weight: 600; }
.w-footco-l { color: var(--muted); }
.w-footco-i { white-space: nowrap; } .w-footco-dot { color: var(--muted); }
.w-foothours dl { display: grid; gap: var(--space-1); margin: 0; }
.w-foothours dl > div { display: grid; grid-template-columns: minmax(5.5em, auto) 1fr; gap: var(--space-4); }
.w-foothours dt { font-weight: 600; } .w-foothours dd { margin: 0; color: var(--muted); font-variant-numeric: tabular-nums; }
.w-foothours-note { margin: var(--space-2) 0 0; font-size: .875rem; color: var(--muted); }
.w-footpay ul { display: flex; flex-wrap: wrap; gap: var(--space-2); margin: 0; padding: 0; list-style: none; }
.w-footpay li { padding: .2em .7em; border: 1px solid var(--line); border-radius: 999px; font-size: .875rem; }
.w-footlangs-inline .w-foot-links { display: flex; flex-wrap: wrap; gap: var(--space-2) var(--space-4); }
.w-footlangs [aria-current="true"] { font-weight: 600; text-decoration: none; }
.w-footlangs-one { margin: 0; font-size: .875rem; color: var(--muted); font-style: italic; }
.w-footer-custom .w-footpay ul, .w-footer-custom .w-footlangs-inline .w-foot-links { display: flex; flex-direction: row; flex-wrap: wrap; }   /* not the column the footer's own link lists use */
.w-footer-custom .w-foothours dl { display: grid; }

/* ===================================================================== the blog (6.20.2.38): the article, the overview */
/* the article is a normal full-width block (it gets the layout's side padding like every block); its parts get the reading
   width. Before 6.20.2.45 the article itself had the reading width, and the wide layout's side padding came off it: ~175 px of text. */
/* one column, worked out once on the article: the reading width is in characters, and each part has its own font size,
   so giving each part its own max-width made their left edges differ */
.w-post { display: grid; grid-template-columns: 1fr min(100%, var(--measure, 68ch)) 1fr; }
.w-post > * { grid-column: 2; min-width: 0; }
.w-post > .w-post-cover { grid-column: 1 / -1; width: 100%; max-width: min(100%, calc(var(--measure, 68ch) + 14rem)); margin-inline: auto; }
.w-post-where { margin: 0 0 var(--space-3); font-size: .875rem; color: var(--muted); }
.w-post-where a { color: inherit; text-decoration: none; } .w-post-where a:hover { color: var(--ink, inherit); text-decoration: underline; text-underline-offset: .2em; }
.w-post-head h1 { margin: 0; font-size: clamp(2rem, 1.5rem + 2.2vw, 3rem); line-height: 1.1; text-wrap: balance; }
.w-post-lede { margin: var(--space-4) 0 0; font-size: clamp(1.125rem, 1.05rem + .35vw, 1.3rem); line-height: 1.5; color: var(--muted); text-wrap: pretty; }
.w-post-meta { display: flex; flex-wrap: wrap; gap: .25em .9em; margin: var(--space-4) 0 0; font-size: .875rem; color: var(--muted); }
.w-post-meta > * + *::before { content: "·"; margin-right: .9em; opacity: .6; }
.w-post-cover { margin: var(--space-6) 0 0; } .w-post-cover img { width: 100%; height: auto; border-radius: var(--radius-img, var(--radius)); display: block; }
.w-post-body { margin-top: var(--space-6); font-size: 1.0625rem; line-height: 1.7; }
.w-post-body > * + * { margin-top: 1.1em; } .w-post-body h2 { margin-top: 1.8em; } .w-post-body h3 { margin-top: 1.5em; }
.w-post-foot { margin-top: var(--space-7, 3rem); padding-top: var(--space-5); border-top: 1px solid var(--line); display: grid; gap: var(--space-6); }
.w-post-steps { display: grid; grid-template-columns: 1fr 1fr; gap: var(--space-4); }
.w-post-step { display: grid; gap: .2em; padding: var(--space-4); border: 1px solid var(--line); border-radius: var(--radius); text-decoration: none; color: inherit; }
.w-post-step:hover { border-color: currentColor; } .w-post-step span, .w-post-step time { font-size: .8125rem; color: var(--muted); } .w-post-newer { text-align: right; }
.w-post-more h2 { margin: 0 0 var(--space-3); font-size: 1.125rem; }
.w-post-more ul { display: grid; gap: var(--space-2); margin: 0; padding: 0; list-style: none; }
.w-post-more li { display: flex; flex-wrap: wrap; justify-content: space-between; gap: .2em 1em; padding-bottom: var(--space-2); border-bottom: 1px solid var(--line); }
.w-post-more time { font-size: .875rem; color: var(--muted); }
.w-post-back { margin: 0; }
@media (max-width: 40rem) { .w-post-steps { grid-template-columns: 1fr; } .w-post-newer { text-align: left; } }
.w-news-read { color: var(--muted); }
.w-news-draft { display: inline-block; margin-right: .6em; padding: 0 .5em; border-radius: 4px; background: #F5E8C8; color: #6B4E00; font-size: .75rem; font-weight: 600; }
.w-news-pages { display: grid; grid-template-columns: 1fr auto 1fr; align-items: center; gap: var(--space-4); margin-top: var(--space-6); font-size: .9375rem; }
.w-news-pages a[rel="next"] { justify-self: end; } .w-news-pageno { color: var(--muted); font-size: .875rem; }

/* ========================================================== appointments (6.20.2.40): service → day → time → details */
.w-book { max-width: 46rem; }
.w-book-h { margin: var(--space-5) 0 var(--space-3); font-size: 1rem; }
.w-book-svcs { display: grid; gap: var(--space-2); margin: 0; padding: 0; list-style: none; }
.w-book-svc { display: flex; gap: var(--space-3); align-items: flex-start; padding: var(--space-3) var(--space-4); border: 1px solid var(--line); border-radius: var(--radius); cursor: pointer; }
.w-book-svc:has(input:checked) { border-color: var(--accent); box-shadow: inset 0 0 0 1px var(--accent); }
.w-book-svc input { margin-top: .3em; accent-color: var(--accent); } .w-book-svc span { display: grid; } .w-book-svc small { color: var(--muted); }
.w-book-days, .w-book-times { display: flex; flex-wrap: wrap; gap: var(--space-2); }
.w-book-day, .w-book-time, .w-book-more, .w-book-change { font: inherit; padding: .5em .9em; border: 1px solid var(--line); border-radius: var(--radius); background: transparent; color: inherit; cursor: pointer; }
.w-book-time { min-width: 5.2em; font-variant-numeric: tabular-nums; }
.w-book-day[aria-pressed="true"], .w-book-time[aria-pressed="true"] { background: var(--accent); border-color: var(--accent); color: var(--on-accent, #fff); }
.w-book-more, .w-book-change { border-style: dashed; color: var(--muted); }
.w-book-sum { margin: var(--space-4) 0; } .w-book-change { padding: .2em .7em; font-size: .875rem; margin-left: .4em; }
.w-book-form { display: grid; gap: var(--space-3); max-width: 30rem; }
.w-book-field { display: grid; gap: .3em; } .w-book-field span { font-size: .9375rem; font-weight: 600; }
.w-book-field input, .w-book-field textarea { font: inherit; padding: .6em .75em; border: 1px solid var(--line); border-radius: var(--radius); background: var(--bg, #fff); color: inherit; }
.w-book-consent { display: flex; align-items: flex-start; gap: .5em; font-size: .875rem; }   /* 6.20.2.73 */
.w-book-consent input { margin-top: .2em; flex: none; }
.w-book-hp { position: absolute; left: -9999px; width: 1px; height: 1px; }
.w-book-msg { margin: 0; color: #B42318; } .w-book-done { margin: var(--space-4) 0 0; padding: var(--space-4); border-left: 3px solid var(--accent); background: color-mix(in srgb, var(--accent) 9%, transparent); font-weight: 600; }
.w-book-none, .w-book-noscript { color: var(--muted); }
.w-book-hours { display: grid; gap: .2em; } .w-book-hours > div { display: grid; grid-template-columns: 8em 1fr; }

/* ======================================================== inside a post (6.20.2.42): quote, pictures, divider, button, video */
.w-rt-quote { margin: 1.6em 0; padding: 0 0 0 1.2em; border-left: 3px solid var(--accent); font-size: 1.15em; line-height: 1.5; }
.w-rt-quote p { margin: 0; } .w-rt-quote footer { margin-top: .5em; font-size: .85em; color: var(--muted); }
.w-rt-img, .w-rt-gallery { margin: 1.8em 0; } .w-rt-img img { width: 100%; height: auto; display: block; border-radius: var(--radius-img, var(--radius)); }
.w-rt-img figcaption, .w-rt-gallery figcaption { margin-top: .5em; font-size: .875rem; color: var(--muted); }
@media (min-width: 60rem) { .w-rt-img-wide { margin-inline: -6rem; } }
.w-rt-img-full { width: 100vw; margin-left: calc(50% - 50vw); } .w-rt-img-full img { border-radius: 0; } .w-rt-img-full figcaption { padding-inline: var(--gutter, 1rem); }
.w-rt-gallery > div { display: grid; grid-template-columns: repeat(var(--cols, 3), 1fr); gap: .5rem; }
.w-rt-gallery-1 > div { --cols: 1; } .w-rt-gallery-2 > div { --cols: 2; }
.w-rt-gallery img { width: 100%; height: 100%; aspect-ratio: 1; object-fit: cover; display: block; border-radius: var(--radius-img, var(--radius)); }
@media (max-width: 40rem) { .w-rt-gallery-3 > div { --cols: 2; } }
.w-rt-hr { margin: 2.2em auto; border: 0; height: 1px; background: var(--line); width: 40%; }
.w-rt-btn { margin: 1.6em 0; }
.w-rt-video { display: flex; align-items: center; gap: .8em; padding: 1em 1.2em; border: 1px solid var(--line); border-radius: var(--radius); text-decoration: none; color: inherit; }
.w-rt-video:hover { border-color: currentColor; } .w-rt-play { display: grid; place-items: center; width: 2.4em; height: 2.4em; border-radius: 50%; background: var(--accent); color: var(--on-accent, #fff); font-size: .9em; }
.w-rt-video small { margin-left: auto; color: var(--muted); }

/* ======================================================= the blog (6.20.2.43): pinned post, tags, authors, search */
.w-news-pinned h3 { font-size: 1.35em; } .w-news-list .w-news-pinned { padding-bottom: var(--space-4); border-bottom: 2px solid var(--accent); }
.w-post-tags { display: flex; flex-wrap: wrap; gap: .4em; margin: 0; }
.w-post-tags a { padding: .2em .7em; border: 1px solid var(--line); border-radius: 999px; font-size: .875rem; text-decoration: none; color: inherit; }
.w-post-tags a:hover { border-color: currentColor; }
.w-author { display: flex; gap: var(--space-4); align-items: flex-start; }
.w-author-photo { width: 4.5rem; height: 4.5rem; border-radius: 50%; object-fit: cover; flex: none; }
.w-author p { margin: 0; } .w-author p + p { margin-top: .3em; color: var(--muted); } .w-author-name { font-weight: 700; }
.w-author-name a { color: inherit; } .w-author-post { padding: var(--space-4); border: 1px solid var(--line); border-radius: var(--radius); }
.w-author-intro { margin-bottom: var(--space-6); } .w-author-intro .w-author-photo { width: 6rem; height: 6rem; }
.w-news-search { position: relative; margin: 0 0 var(--space-5); max-width: 32rem; }
.w-news-search input { width: 100%; font: inherit; padding: .65em .9em; border: 1px solid var(--line); border-radius: var(--radius); background: var(--bg, #fff); color: inherit; }
.w-news-found { margin: .4em 0 0; padding: 0; list-style: none; display: grid; gap: .1em; }
.w-news-found:empty { display: none; } .w-news-found li { display: flex; flex-wrap: wrap; justify-content: space-between; gap: .2em 1em; padding: .45em 0; border-bottom: 1px solid var(--line); }
.w-news-found time { font-size: .875rem; color: var(--muted); } .w-news-none { color: var(--muted); }
.w-visually-hidden { position: absolute !important; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }

/* 6.20.2.69 — a colour per card (cards, features): a tone of the theme or the customer's own; text that reads on it */
.w-tone-soft { --w-bg: var(--surface); }
.w-tone-accent { --w-bg: var(--accent); color: var(--on-accent); }
.w-tone-inverse { --w-bg: var(--ink); color: var(--ground); }
.w-tone-custom { color: var(--custom-ink); }
.w-tone:is(.w-card, .w-feature-item) { background: var(--w-bg); border-color: transparent; border-radius: var(--radius); padding: var(--space-5); }
.w-tone :is(h3, p, .w-card-source, .w-feature-sub) { color: inherit; }
.w-tone :is(p, .w-card-source, .w-feature-sub) { opacity: .88; }
:is(.w-tone-accent, .w-tone-inverse, .w-tone-custom) :is(.w-icon, .w-card-num) { color: inherit; }   /* on a soft card they keep the accent colour */
.w-tone-accent .w-step { background: var(--on-accent); color: var(--accent); }
.w-tone-inverse .w-step { background: var(--ground); color: var(--ink); }
.w-tone-custom .w-step { background: var(--custom-ink); color: var(--w-bg); }
.w-tone .w-card-button { color: inherit; border-color: currentColor; }
a.w-tone:hover h3 { color: inherit; text-decoration: underline; }
.w-tone.w-card figure { margin: calc(var(--space-5) * -1) calc(var(--space-5) * -1) 0; border-radius: var(--radius) var(--radius) 0 0; overflow: hidden; }
.w-cards-horizontal .w-tone.w-card figure, .w-cards-index .w-tone.w-card figure { margin: 0; border-radius: var(--radius-img, var(--radius)); }

/* 6.20.2.69 — a block's headings in a font of their own (Look → Heading font); the families of fonts/fonts.css */
.w-hf-newsreader :is(h1, h2, h3, h4, .w-h1, .w-brand) { font-family: "Newsreader", Georgia, serif; }
.w-hf-publicsans :is(h1, h2, h3, h4, .w-h1, .w-brand) { font-family: "Public Sans", "Helvetica Neue", Arial, sans-serif; }
.w-hf-bricolage :is(h1, h2, h3, h4, .w-h1, .w-brand) { font-family: "Bricolage Grotesque", "Arial Narrow", Arial, sans-serif; }
.w-hf-instrument :is(h1, h2, h3, h4, .w-h1, .w-brand) { font-family: "Instrument Sans", "Helvetica Neue", Arial, sans-serif; }
.w-hf-youngserif :is(h1, h2, h3, h4, .w-h1, .w-brand) { font-family: "Young Serif", Georgia, serif; font-weight: 400; }
.w-hf-atkinson :is(h1, h2, h3, h4, .w-h1, .w-brand) { font-family: "Atkinson Hyperlegible Next", "Segoe UI", Arial, sans-serif; }
.w-hf-archivo :is(h1, h2, h3, h4, .w-h1, .w-brand) { font-family: "Archivo", "Arial Narrow", Arial, sans-serif; }
:is(.w-hf-newsreader, .w-hf-publicsans, .w-hf-bricolage, .w-hf-instrument, .w-hf-youngserif, .w-hf-atkinson, .w-hf-archivo) :is(.w-stats strong, .w-quote blockquote) { font-family: var(--w-hf, var(--font-display)); }
.w-hf-newsreader { --w-hf: "Newsreader", Georgia, serif; } .w-hf-publicsans { --w-hf: "Public Sans", Arial, sans-serif; } .w-hf-bricolage { --w-hf: "Bricolage Grotesque", Arial, sans-serif; }
.w-hf-instrument { --w-hf: "Instrument Sans", Arial, sans-serif; } .w-hf-youngserif { --w-hf: "Young Serif", Georgia, serif; } .w-hf-atkinson { --w-hf: "Atkinson Hyperlegible Next", Arial, sans-serif; } .w-hf-archivo { --w-hf: "Archivo", Arial, sans-serif; }

/* 6.20.2.69 — figures that count up (countup.js): the same width all the way, so nothing beside them moves */
.w-count { font-variant-numeric: tabular-nums; }
.w-cu:not(.w-cu-ready) [data-countup] .w-count { visibility: hidden; }

/* embedded content held back until the visitor agrees (6.20.2.72) */
.w-cc{display:flex;flex-direction:column;align-items:flex-start;justify-content:center;gap:8px;height:100%;padding:22px;
  background:var(--w-soft,#f4f5f7);border:1px dashed var(--w-line,#d7dee5);border-radius:var(--w-radius,10px);text-align:left}
.w-cc strong{font-size:1rem}
.w-cc p{margin:0;font-size:.875rem;color:var(--w-muted,#5b6b7b);max-width:52ch}
.w-cc-acts{display:flex;flex-wrap:wrap;align-items:center;gap:10px 14px}
.w-cc-acts label{display:inline-flex;align-items:center;gap:6px;font-size:.8125rem;color:var(--w-muted,#5b6b7b)}
.w-cc-change{background:none;border:0;padding:0;font:inherit;color:inherit;cursor:pointer;text-decoration:underline;text-underline-offset:2px}
.w-cc-change:hover{opacity:.75}
/* ----------------------------------------------------------------------
   6.20.2.75 — the consent box. It belongs to the site, so it takes the
   site's own surface, ink, line, accent, type and corner radius; only the
   shape, the place and (if the owner asks) two colours are set by hand.
   ---------------------------------------------------------------------- */
.w-ccbar{position:fixed;left:0;right:0;bottom:0;z-index:60;box-sizing:border-box;
  display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--space-3,12px) var(--space-6,32px);
  padding:var(--space-4,16px) var(--gutter,24px);
  background:var(--surface,#fff);color:var(--ink,#16202b);font-family:var(--font-body,inherit);
  border-top:var(--border-w,1px) solid var(--line,#e2e5e9);
  box-shadow:0 -1px 2px rgba(16,24,32,.04),0 -14px 36px rgba(16,24,32,.10);
  animation:w-cc-up .22s cubic-bezier(.2,.7,.3,1) both}
.w-ccbar p{margin:0}
.w-cc-body{display:flex;flex-direction:column;gap:var(--space-2,8px);min-width:0;flex:1 1 26rem;max-width:68ch}
.w-cc-h{margin:0;font-family:var(--font-display,inherit);font-size:1rem;font-weight:var(--weight-display,700);letter-spacing:var(--tracking-display,0);line-height:1.25}
.w-cc-text{font-size:.875rem;line-height:1.55;color:var(--muted,#5b6b7b)}
.w-cc-text a{color:inherit;text-underline-offset:2px}
.w-cc-text a:hover{color:var(--ink,#16202b)}
.w-ccbar-acts{display:flex;gap:var(--space-2,8px);flex:none;align-items:center;flex-wrap:wrap;margin:0;min-width:0}
.w-ccbar .w-button{min-width:9.5rem;justify-content:center;text-align:center;font-size:.9375rem}
.w-ccbar .w-button-secondary{background:color-mix(in srgb,var(--ink,#16202b) 8%,transparent);border-color:transparent;color:inherit}
.w-ccbar .w-button-secondary:hover{background:color-mix(in srgb,var(--ink,#16202b) 14%,transparent)}
.w-cc-link{background:none;border:0;padding:var(--space-2,8px) var(--space-1,4px);font:inherit;font-size:.8125rem;color:var(--muted,#5b6b7b);cursor:pointer;text-decoration:underline;text-underline-offset:3px}
.w-cc-link:hover{color:var(--ink,#16202b)}
.w-ccbar :focus-visible{outline:2px solid var(--accent,#16202b);outline-offset:2px}
.w-ccbar:focus,.w-ccbar:focus-visible{outline:none}
/* who the page would reach out to, read at a glance */
.w-cc-chips{display:flex;flex-wrap:wrap;gap:var(--space-1,4px) var(--space-2,8px);margin:0;padding:0;list-style:none}
.w-cc-chips li{padding:3px 10px;border-radius:999px;font-size:.75rem;line-height:1.4;
  background:color-mix(in srgb,var(--ink,#16202b) 7%,transparent);color:var(--muted,#5b6b7b)}
/* one row per purpose: what it is, what it does, who it loads from, and a switch */
.w-cc-kinds{display:flex;flex-direction:column;width:100%;margin:var(--space-1,4px) 0 0;
  border-top:1px solid color-mix(in srgb,var(--ink,#16202b) 10%,transparent)}
.w-cc-kind{display:grid;grid-template-columns:1fr auto;gap:2px var(--space-4,16px);align-items:center;
  padding:var(--space-3,12px) 0;border-bottom:1px solid color-mix(in srgb,var(--ink,#16202b) 10%,transparent);
  font-size:.875rem;cursor:pointer}
.w-cc-kind-t{display:flex;flex-direction:column;gap:3px;min-width:0}
.w-cc-kind-t strong{font-weight:600;font-size:.9375rem}
.w-cc-kind-t em{font-style:normal;font-size:.8125rem;line-height:1.5;color:var(--muted,#5b6b7b)}
.w-cc-kind-t small{font-size:.75rem;color:var(--muted,#5b6b7b);opacity:.85}
.w-cc-kind input{appearance:none;-webkit-appearance:none;margin:0;position:relative;flex:none;
  width:2.5rem;height:1.5rem;border-radius:999px;cursor:pointer;
  background:color-mix(in srgb,var(--ink,#16202b) 18%,transparent);transition:background .15s ease}
.w-cc-kind input::after{content:"";position:absolute;top:3px;left:3px;width:1.125rem;height:1.125rem;border-radius:50%;
  background:var(--surface,#fff);box-shadow:0 1px 2px rgba(16,24,32,.3);transition:transform .15s ease}
.w-cc-kind input:checked{background:var(--accent,#2d6cdf)}
.w-cc-kind input:checked::after{transform:translateX(1rem)}
.w-cc-kind input:disabled{cursor:default;opacity:.55}
.w-cc-kind-on{cursor:default}
/* the shapes: a bar at the bottom or the top, a card in a corner, a box in the middle */
.w-ccbar-bar.w-cc-top{top:0;bottom:auto;border-top:0;border-bottom:var(--border-w,1px) solid var(--line,#e2e5e9);
  box-shadow:0 1px 2px rgba(16,24,32,.04),0 14px 36px rgba(16,24,32,.10);animation-name:w-cc-down}
.w-ccbar-card,.w-ccbar-dialog{flex-direction:column;align-items:stretch;padding:var(--space-5,20px);
  border:var(--border-w,1px) solid var(--line,#e2e5e9);border-radius:var(--radius,12px);
  box-shadow:0 1px 2px rgba(16,24,32,.06),0 16px 44px rgba(16,24,32,.18)}
.w-ccbar-card{left:auto;right:var(--space-5,20px);bottom:var(--space-5,20px);width:min(24rem,calc(100vw - 2.5rem));max-width:none}
.w-ccbar-card.w-cc-left{right:auto;left:var(--space-5,20px)}
.w-ccbar-dialog{left:50%;right:auto;bottom:auto;top:50%;transform:translate(-50%,-50%);width:min(30rem,calc(100vw - 2rem));
  animation-name:w-cc-pop}
.w-cc-veil{position:fixed;inset:0;z-index:59;background:rgba(10,14,20,.5);backdrop-filter:blur(3px);-webkit-backdrop-filter:blur(3px);
  animation:w-cc-fade .22s ease both}
.w-ccbar-card .w-cc-body,.w-ccbar-dialog .w-cc-body{flex:0 1 auto;width:100%;max-width:none;max-height:min(58vh,26rem);overflow:auto;overscroll-behavior:contain}
.w-ccbar-card .w-ccbar-acts,.w-ccbar-dialog .w-ccbar-acts{width:100%;min-width:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-2,8px);margin-top:var(--space-3,12px)}
.w-ccbar-card .w-cc-wide,.w-ccbar-dialog .w-cc-wide{grid-column:1/-1}
.w-ccbar-card .w-button,.w-ccbar-dialog .w-button{min-width:0;width:100%}
.w-ccbar-card .w-cc-link,.w-ccbar-dialog .w-cc-link{grid-column:1/-1;justify-self:center}
.w-ccbar [hidden]{display:none}   /* a class with display: beats the browser's own [hidden] rule */
@keyframes w-cc-up{from{opacity:0;transform:translateY(14px)}}
@keyframes w-cc-down{from{opacity:0;transform:translateY(-14px)}}
@keyframes w-cc-pop{from{opacity:0;transform:translate(-50%,-50%) scale(.97)}}
@keyframes w-cc-fade{from{opacity:0}}
@media (prefers-reduced-motion:reduce){.w-ccbar,.w-cc-veil{animation:none}.w-cc-kind input,.w-cc-kind input::after{transition:none}}
/* the two colour schemes the owner can force, and their own two colours */
.w-ccbar[data-theme=light]{background:#fff;color:#16202b;border-color:#dfe4ea}
.w-ccbar[data-theme=dark]{background:#131a22;color:#eef3f8;border-color:#28313b}
.w-ccbar[data-theme=own]{background:var(--w-cc-bg,#fff);color:var(--w-cc-ink,#16202b);border-color:color-mix(in srgb,var(--w-cc-ink,#16202b) 20%,transparent)}
.w-ccbar[data-theme=dark] .w-cc-text,.w-ccbar[data-theme=dark] .w-cc-kind-t em,.w-ccbar[data-theme=dark] .w-cc-kind-t small,
.w-ccbar[data-theme=dark] .w-cc-chips li,.w-ccbar[data-theme=dark] .w-cc-link,
.w-ccbar[data-theme=own] .w-cc-text,.w-ccbar[data-theme=own] .w-cc-kind-t em,.w-ccbar[data-theme=own] .w-cc-kind-t small,
.w-ccbar[data-theme=own] .w-cc-chips li,.w-ccbar[data-theme=own] .w-cc-link{color:inherit;opacity:.78}
.w-ccbar[data-theme=dark] .w-cc-chips li,.w-ccbar[data-theme=own] .w-cc-chips li{background:rgba(255,255,255,.12);opacity:.9}
.w-ccbar[data-theme=dark] .w-button-secondary,.w-ccbar[data-theme=own] .w-button-secondary{background:rgba(255,255,255,.16);border-color:transparent;color:inherit}
.w-ccbar[data-theme=dark] .w-button-secondary:hover,.w-ccbar[data-theme=own] .w-button-secondary:hover{background:rgba(255,255,255,.24)}
.w-ccbar[data-theme=dark] .w-cc-kinds,.w-ccbar[data-theme=dark] .w-cc-kind,
.w-ccbar[data-theme=own] .w-cc-kinds,.w-ccbar[data-theme=own] .w-cc-kind{border-color:rgba(255,255,255,.16)}
.w-ccbar[data-theme=dark] .w-cc-kind input,.w-ccbar[data-theme=own] .w-cc-kind input{background:rgba(255,255,255,.26)}
.w-ccbar[data-theme=dark] .w-cc-kind input::after,.w-ccbar[data-theme=own] .w-cc-kind input::after{background:#fff}
@media (max-width:720px){
  .w-ccbar{flex-direction:column;align-items:stretch;padding:var(--space-4,16px)}
  .w-cc-body{flex:0 1 auto;width:100%;max-width:none}   /* stacked: the basis above is a width, not a height */
  .w-ccbar-acts{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-2,8px)}
  .w-ccbar .w-button{min-width:0;width:100%}
  .w-ccbar-acts .w-cc-link{grid-column:1/-1;justify-self:center}
  .w-ccbar-card,.w-ccbar-dialog{left:0;right:0;bottom:0;top:auto;transform:none;width:auto;max-width:none;
    border-radius:var(--radius,12px) var(--radius,12px) 0 0;animation-name:w-cc-up}
  .w-ccbar-card .w-cc-body,.w-ccbar-dialog .w-cc-body{max-height:min(52vh,22rem)}
}
