/* Lintmoor (clean-realestate). Generated by factory/build.mjs from factory/configs/clean-realestate.json: edit the config or
   factory/factory.css and rebuild. To rebrand by hand, change only this first block: --accent / --accent-strong for light,
   --accent-dk / --accent-strong-dk for dark. Keep text on the accent at 4.5:1 or more. */
:root { --accent: #7A4426; --accent-strong: #5F341D; --accent-dk: #E0A47F; --accent-strong-dk: #EDC1A5; }

/* Inazda template factory: section styles layered on ../clean-base.css. Tokens only (--iz-*); no hex, no new radius,
   no new easing. The build prepends the brand's accent block and writes the result to templates/<id>/site.css.
   Edit this file, not the copies, then rebuild: node factory/build.mjs --all */

/* ---------- Hero ---------- */
.fx-hero h1 { max-width: 17ch; }
@media (max-width: 400px) { .fx-hero h1 { font-size: 32px; } }
@media (max-width: 359px) { .fx-hero h1 { font-size: 28px; } }
.fx-hero .frame img { width: 100%; }
.fx-hero .frame-shell { margin-inline: calc(var(--iz-gutter) * -0.5); }
@media (min-width: 1280px) { .fx-hero:not(.is-split) .frame-shell { margin-inline: -24px; } }
/* On phones a full desktop screen is too small to read: show a square crop at the config's focus point instead. */
@media (max-width: 639px) {
  .fx-hero-media:not(.has-phone) .frame img { aspect-ratio: 1 / 1; object-fit: cover; object-position: var(--fx-focus, 0 0); }
  .fx-hero-media.has-phone .frame img { aspect-ratio: auto; height: auto; }
  .fx-hero.is-split .has-phone .frame img { aspect-ratio: auto; }
}
.fx-hero.is-split .hero-grid { grid-template-columns: minmax(0, 1fr); }
.fx-hero.is-split .hero-shot { margin-top: 0; }
.fx-hero.is-split .frame-shell { margin-inline: 0; }
.fx-hero.is-split .frame img { aspect-ratio: 16 / 10; object-fit: cover; object-position: 0 0; }
/* Split: the words get half the width, and the H1 steps down to 48 px (on the Clean scale) so it stays at two lines. */
@media (min-width: 1024px) {
  .fx-hero.is-split .hero-grid { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 48px; }
  .fx-hero.is-split h1 { max-width: none; font-size: 40px; }
}
@media (min-width: 1200px) { .fx-hero.is-split h1 { font-size: 48px; } }

/* ---------- Problem: heading left, numbered statements right ---------- */
@media (min-width: 1024px) {
  .fx-problem { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 6fr); gap: 64px; align-items: start; }
  .fx-problem .sec-head { margin-bottom: 0; }
}
.fx-reasons { display: grid; }
.fx-reasons li { display: grid; grid-template-columns: 40px minmax(0, 1fr); gap: 8px; padding: 24px 0; border-top: 1px solid var(--iz-border); }
.fx-reasons li:last-child { border-bottom: 1px solid var(--iz-border); }
.fx-reasons .index { padding-top: 5px; }
.fx-reasons p { color: var(--iz-muted-fg); margin-top: 6px; max-width: 58ch; }

/* ---------- Steps: a crop of the real screen above each step ---------- */
.fx-crop { background: var(--iz-ui-canvas); }
.fx-crop img { width: 100%; aspect-ratio: 16 / 10; object-fit: cover; object-position: 0 0; }
@media (min-width: 900px) { .steps.fx-steps-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 56px 32px; } }
.step-head p { max-width: 52ch; }

/* ---------- Features as a table ---------- */
.fx-ftable { min-width: 640px; }
.fx-ftable tbody th { width: 26%; }
.fx-ftable td:last-child { width: 18%; color: var(--iz-muted-fg); white-space: nowrap; }
.fx-ftable td { color: var(--iz-muted-fg); }

/* ---------- Tables: the scroller is the containing block, so screen-reader-only text in cells can't widen the page ---------- */
.table-scroll { position: relative; }

/* ---------- Compare ---------- */
.fx-compare { min-width: 760px; }
.fx-compare tbody th { width: 22%; }
.fx-compare td, .fx-compare thead th:not(:first-child) { width: 26%; }

/* ---------- Pricing ---------- */
@media (min-width: 1024px) {
  .plans.fx-plans-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); max-width: 840px; }
}
.fx-fine { margin-top: 20px; }

/* ---------- FAQ ---------- */
@media (min-width: 1024px) {
  .fx-faq { display: grid; grid-template-columns: minmax(0, 4fr) minmax(0, 7fr); gap: 64px; align-items: start; }
  .fx-faq .sec-head { margin-bottom: 0; }
}

/* ---------- Closing call: one quiet bordered band ---------- */
.fx-cta { display: grid; gap: 28px; padding: 32px 24px; border: 1px solid var(--iz-border); border-radius: var(--iz-r-lg); background: var(--iz-bg-subtle); }
.fx-cta .h2 { max-width: 20ch; }
.fx-cta .lede { margin-top: 12px; }
@media (min-width: 1024px) {
  .fx-cta { grid-template-columns: minmax(0, 1fr) auto; align-items: end; gap: 48px; padding: 48px; }
}

/* ---------- Site sections (multi-page, photo-led templates). Tokens only: no hex, no new radius, no new easing. ---------- */

/* Photos: a quiet 1 px frame, the same image in both themes, slightly dimmed in dark so it doesn't glare. */
.sx-photo { overflow: hidden; border: 1px solid var(--iz-border); border-radius: var(--iz-r-lg); background: var(--iz-sunken); }
.sx-photo img { width: 100%; height: 100%; object-fit: cover; }
@media (prefers-color-scheme: dark) { :root:not([data-theme="light"]) .sx-photo img { filter: brightness(.9); } }
:root[data-theme="dark"] .sx-photo img { filter: brightness(.9); }
.sx-ico { width: 16px; height: 16px; flex: none; color: var(--iz-muted-fg); }
.sx-meta { color: var(--iz-muted-fg); font-size: 14px; }
.sx-more { margin-top: 32px; }

/* Facts list (hero, page head, curriculum) */
.sx-facts { display: grid; gap: 0; margin-top: 32px; border-top: 1px solid var(--iz-border); }
.sx-facts > div { display: grid; grid-template-columns: minmax(0, 9rem) minmax(0, 1fr); gap: 12px; padding: 12px 0; border-bottom: 1px solid var(--iz-border); font-size: 14px; }
.sx-facts dt { display: flex; align-items: center; gap: 8px; color: var(--iz-muted-fg); }
.sx-facts dd { color: var(--iz-fg); font-weight: 500; min-width: 0; overflow-wrap: anywhere; }
.sx-facts.is-card { margin-top: 0; padding: 4px 20px; border: 1px solid var(--iz-border); border-radius: var(--iz-r-lg); background: var(--iz-surface); align-self: start; }
.sx-facts.is-card > div:last-child { border-bottom: 0; }
@media (max-width: 479px) { .sx-facts.is-card > div { grid-template-columns: 1fr; gap: 2px; } }
.sx-facts.is-row { margin: 0 0 32px; }
@media (min-width: 900px) {
  .sx-facts.is-row { grid-template-columns: repeat(4, minmax(0, 1fr)); border: 1px solid var(--iz-border); border-radius: var(--iz-r-lg); background: var(--iz-surface); }
  .sx-facts.is-row > div { grid-template-columns: 1fr; gap: 4px; padding: 16px 20px; border-bottom: 0; }
  .sx-facts.is-row > div + div { border-left: 1px solid var(--iz-border); }
}

/* Photo hero: words left, photo right */
.sx-hero { padding-block: 40px 0; }
.sx-hero-grid { display: grid; gap: 32px; }
.sx-hero h1 { max-width: 15ch; }
.sx-hero .lede { margin-top: 16px; }
.sx-hero .actions { margin-top: 28px; }
.sx-hero-photo .sx-photo { aspect-ratio: 4 / 3; }
.sx-hero-photo .caption { margin-top: 10px; }
@media (max-width: 400px) { .sx-hero h1, .sx-pagehead h1, .sx-listing h1 { font-size: 32px; } }
@media (max-width: 359px) { .sx-hero h1, .sx-pagehead h1, .sx-listing h1 { font-size: 28px; } }
@media (min-width: 1024px) {
  .sx-hero { padding-block: 64px 0; }
  .sx-hero-grid { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 56px; align-items: center; }
  .sx-hero h1 { font-size: 44px; max-width: 18ch; }
  .sx-hero-photo .sx-photo { aspect-ratio: 5 / 4; }
}
/* On the Clean scale the split hero H1 is 48 px, so it stays at two lines beside the photo. */
@media (min-width: 1200px) { .sx-hero h1 { font-size: 48px; } }
.sx-hero { padding-bottom: 8px; }

/* Inner page head */
.sx-pagehead { padding-block: 24px 48px; border-bottom: 1px solid var(--iz-border); }
.sx-pagehead .lede { margin-top: 14px; }
.sx-pagehead .actions { margin-top: 24px; }
.sx-pagehead-grid { display: grid; gap: 32px; margin-top: 24px; }
@media (min-width: 1024px) {
  .sx-pagehead { padding-block: 32px 64px; }
  .sx-pagehead-grid { grid-template-columns: minmax(0, 7fr) minmax(0, 4fr); gap: 64px; align-items: end; }
  .sx-pagehead h1 { font-size: 48px; }
}
.sx-pagehead + .section, .sx-listing + .section { border-top: 0; }
.sx-crumbs ol { display: flex; flex-wrap: wrap; gap: 4px 8px; font-size: 14px; color: var(--iz-muted-fg); }
.sx-crumbs li { display: inline-flex; gap: 8px; align-items: center; }
.sx-crumbs li + li::before { content: "/"; color: var(--iz-faint-fg); }
.sx-crumbs a { color: var(--iz-muted-fg); }
.sx-crumbs a:hover { color: var(--iz-fg); }
.sx-crumbs [aria-current] { color: var(--iz-fg); }

/* Story and info: heading left, words right */
.sx-text, .sx-info, .sx-form-wrap { display: grid; gap: 32px; }
.sx-text .sec-head, .sx-info .sec-head, .sx-form-wrap .sec-head { margin-bottom: 0; align-content: start; }
.sx-prose { font-size: 16px; }
.sx-prose p { max-width: 62ch; }
.sx-text-photo { margin-top: 16px; }
.sx-text-photo .sx-photo { aspect-ratio: 3 / 2; }
.sx-text-photo .caption { margin-top: 8px; }
@media (min-width: 1024px) {
  .sx-text, .sx-info, .sx-form-wrap { grid-template-columns: minmax(0, 5fr) minmax(0, 6fr); gap: 64px; align-items: start; }
  .sx-prose { font-size: 18px; }
}
.sx-ticks { display: grid; gap: 10px; margin-top: 20px; color: var(--iz-fg); }
.sx-ticks li { display: flex; gap: 10px; }
.sx-ticks svg { width: 16px; height: 16px; flex: none; margin-top: 4px; color: var(--iz-accent); }
.sx-ticks.small svg { margin-top: 3px; }
.sx-ticks.is-cols { margin-top: 12px; }
@media (min-width: 640px) { .sx-ticks.is-cols { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px 24px; } }
.sx-groups { display: grid; gap: 0; }
.sx-group { padding: 20px 0; border-top: 1px solid var(--iz-border); }
.sx-group:last-child { border-bottom: 1px solid var(--iz-border); }
.sx-group h3 { display: flex; align-items: center; gap: 10px; }
.sx-group h3 .sx-ico { color: var(--iz-accent); }
.sx-group ul { display: grid; gap: 6px; margin-top: 10px; color: var(--iz-muted-fg); }
@media (min-width: 1024px) { .sx-group ul { padding-left: 26px; } }

/* Cards */
.sx-cards { display: grid; gap: 24px; }
@media (min-width: 640px) { .sx-cards.sx-cols-2, .sx-cards.sx-cols-3 { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (min-width: 1024px) { .sx-cards.sx-cols-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
.sx-card { position: relative; display: grid; grid-template-rows: auto 1fr; border: 1px solid var(--iz-border); border-radius: var(--iz-r-lg); background: var(--iz-surface); overflow: hidden; }
.sx-card-photo { border: 0; border-bottom: 1px solid var(--iz-border); border-radius: 0; aspect-ratio: 3 / 2; }
.sx-card-body { display: grid; gap: 8px; align-content: start; padding: 20px; }
.sx-card-body .chip { justify-self: start; }
.sx-card-body .tlink { margin-top: 4px; }

/* Gallery */
.sx-gallery { display: grid; gap: 16px; }
.sx-gal-item .sx-photo { aspect-ratio: 4 / 3; }
.sx-gal-item .caption { margin-top: 8px; }
@media (min-width: 900px) {
  .sx-gallery { grid-template-columns: minmax(0, 3fr) minmax(0, 2fr); grid-template-rows: auto auto; gap: 24px; }
  .sx-gal-item.is-lead { grid-row: span 2; }
  .sx-gal-item.is-lead .sx-photo { aspect-ratio: auto; height: calc(100% - 30px); }
  .sx-gal-item:not(.is-lead) .sx-photo { aspect-ratio: 16 / 9; }
}

/* Menu */
.sx-menu-tabs { margin-bottom: 32px; }
.sx-menu-panel + .sx-menu-panel { margin-top: 40px; }
.sx-menu-panel[role="tabpanel"] + .sx-menu-panel[role="tabpanel"] { margin-top: 0; }
.sx-menu-panel:focus-visible { outline-offset: 8px; }
.sx-menu-cat { margin-bottom: 4px; }
.sx-dishes { display: grid; gap: 0 56px; margin-top: 16px; }
@media (min-width: 900px) { .sx-dishes { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
.sx-dish { padding: 16px 0; border-top: 1px solid var(--iz-border); }
.sx-dish-top { display: flex; align-items: baseline; gap: 12px; }
.sx-dish-name { font-size: 16px; font-weight: 600; letter-spacing: -0.01em; }
.sx-dish-rule { flex: 1; min-width: 16px; border-bottom: 1px dotted var(--iz-border-strong); transform: translateY(-4px); }
.sx-dish-price { font-size: 15px; font-weight: 500; }
.sx-dish p { margin-top: 4px; color: var(--iz-muted-fg); font-size: 14px; max-width: 52ch; }
.sx-diets { display: flex; gap: 6px; }
.sx-diet { display: inline-grid; place-items: center; min-width: 26px; height: 20px; padding: 0 5px; border: 1px solid var(--iz-border-strong); border-radius: var(--iz-r-sm); font: 500 12px/1 var(--iz-mono); color: var(--iz-fg); text-decoration: none; }
.sx-legend { display: flex; flex-wrap: wrap; gap: 8px 20px; margin-top: 28px; }
.sx-legend span { display: inline-flex; gap: 8px; align-items: center; }

/* Hours */
.sx-hours { display: grid; gap: 32px; }
@media (min-width: 1024px) { .sx-hours { grid-template-columns: minmax(0, 6fr) minmax(0, 5fr); gap: 48px; align-items: start; } }
.sx-hours-table .table { font-size: 15px; }
.sx-hours-table td.num { white-space: nowrap; text-align: left; }
/* Phones: the note moves under the hours instead of a narrow third column. */
.sx-note-inline { display: block; margin-top: 4px; font: 400 14px/1.4 var(--iz-font); color: var(--iz-muted-fg); white-space: normal; }
@media (max-width: 639px) { .sx-hours-table .sx-note-col { display: none; } }
@media (min-width: 640px) { .sx-note-inline { display: none; } }
.sx-hours-table tr.is-today > * { background: color-mix(in srgb, var(--iz-accent) 7%, var(--iz-surface)); }
.sx-today { margin-left: 4px; vertical-align: 1px; }
.sx-where { display: grid; gap: 16px; align-content: start; }
.sx-where .sx-photo { aspect-ratio: 3 / 2; }
.sx-address { display: flex; gap: 10px; font-style: normal; font-weight: 500; }
.sx-address .sx-ico { margin-top: 4px; color: var(--iz-accent); }
.sx-contact { display: grid; gap: 8px; }
.sx-contact li { display: flex; align-items: center; gap: 10px; }
.sx-contact a { color: var(--iz-link); overflow-wrap: anywhere; }

/* Forms. Base .field sets display, so hidden parts need an explicit rule. */
.sx-form [hidden], .sx-tickets [hidden] { display: none !important; }
.sx-form-aside { margin-top: 12px; }
.sx-form { display: grid; gap: 24px; }
.sx-fields { display: grid; gap: 20px; }
@media (min-width: 640px) {
  .sx-fields { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .sx-fields > .sx-field:not(.is-half) { grid-column: 1 / -1; }
}
.sx-field legend { margin-bottom: 0; padding: 0; }
.sx-field .choices { margin-top: 4px; }
.err { display: flex; gap: 6px; align-items: flex-start; font-size: 14px; color: var(--iz-danger); }
.err svg { width: 16px; height: 16px; flex: none; margin-top: 2px; }
.err[hidden] { display: none; }
.sx-check { display: flex; gap: 10px; align-items: flex-start; font-size: 14px; color: var(--iz-muted-fg); cursor: pointer; }
.sx-check input { width: 18px; height: 18px; margin: 1px 0 0; flex: none; accent-color: var(--iz-accent); }
.sx-form-foot { display: grid; gap: 10px; justify-items: start; }
.sx-status.is-note svg { color: var(--iz-info); }
.sx-status p { color: var(--iz-fg); }

/* Listings */
.sx-filters { display: grid; gap: 12px; margin-bottom: 24px; padding: 16px; border: 1px solid var(--iz-border); border-radius: var(--iz-r-lg); background: var(--iz-surface); }
@media (min-width: 640px) { .sx-filters { grid-template-columns: repeat(3, minmax(0, 1fr)); align-items: end; } .sx-count { grid-column: 1 / -1; } }
@media (min-width: 1024px) { .sx-filters { grid-template-columns: repeat(3, minmax(0, 13rem)) 1fr; } .sx-count { grid-column: auto; text-align: right; padding-bottom: 10px; } }
.sx-homes { display: grid; gap: 24px; }
@media (min-width: 640px) { .sx-homes { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (min-width: 1024px) { .sx-homes { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
.sx-home { position: relative; display: grid; grid-template-rows: auto 1fr; border: 1px solid var(--iz-border); border-radius: var(--iz-r-lg); background: var(--iz-surface); overflow: hidden; transition: border-color var(--iz-dur) var(--iz-ease); }
.sx-home:hover { border-color: var(--iz-border-strong); }
.sx-home[hidden] { display: none; }
.sx-home-photo { aspect-ratio: 3 / 2; border: 0; border-bottom: 1px solid var(--iz-border); border-radius: 0; }
.sx-home-body { display: grid; gap: 6px; align-content: start; padding: 16px 18px 18px; }
.sx-home-top { display: flex; align-items: center; justify-content: space-between; gap: 8px; margin-bottom: 6px; }
.sx-home-price { font-weight: 600; font-size: 16px; }
.sx-home-price small { font: 400 13px/1 var(--iz-font); color: var(--iz-muted-fg); }
.sx-stretch { text-decoration: none; color: inherit; }
.sx-stretch::after { content: ""; position: absolute; inset: 0; border-radius: var(--iz-r-lg); }
.sx-stretch:hover { text-decoration: underline; }
.sx-stretch:focus-visible { outline: 0; }
.sx-stretch:focus-visible::after { outline: 2px solid var(--iz-accent); outline-offset: 2px; }
.sx-specs { display: flex; flex-wrap: wrap; gap: 6px 16px; margin-top: 8px; color: var(--iz-muted-fg); }
.sx-specs li { display: inline-flex; align-items: center; gap: 6px; }
.sx-specs.is-lg { gap: 10px 24px; padding: 16px 0; margin: 0 0 32px; border-block: 1px solid var(--iz-border); color: var(--iz-fg); font-size: 15px; }
.sx-empty { display: grid; gap: 12px; justify-items: start; padding: 24px; border: 1px dashed var(--iz-border-strong); border-radius: var(--iz-r-lg); }
.sx-empty[hidden] { display: none; }

/* Listing detail */
.sx-listing { padding-block: 24px 0; }
.sx-listing-head { display: grid; gap: 12px; margin: 24px 0 24px; }
.sx-listing-head .lede { margin-top: 8px; }
.sx-listing-title { margin-top: 12px; max-width: 20ch; }
@media (min-width: 1024px) { .sx-listing-title { font-size: 48px; } }
.sx-lgal { display: grid; gap: 8px; grid-template-columns: repeat(2, minmax(0, 1fr)); }
.sx-lgal-item .sx-photo { aspect-ratio: 4 / 3; }
.sx-lgal-item.is-lead { grid-column: 1 / -1; }
.sx-lgal-item.is-lead .sx-photo { aspect-ratio: 16 / 10; }
@media (min-width: 900px) {
  .sx-lgal { grid-template-columns: 2fr 1fr 1fr; grid-template-rows: repeat(2, minmax(0, 1fr)); gap: 12px; }
  .sx-lgal-item.is-lead { grid-column: 1; grid-row: 1 / span 2; }
  .sx-lgal-item.is-lead .sx-photo { aspect-ratio: auto; height: 100%; }
  .sx-lgal-item .sx-photo { aspect-ratio: 4 / 3; }
}
.sx-listing-grid { display: grid; gap: 40px; padding-block: 40px 64px; }
.sx-listing-main h2 { margin: 40px 0 12px; }
.sx-listing-main h2:first-of-type { margin-top: 0; }
@media (min-width: 1024px) {
  .sx-listing-grid { grid-template-columns: minmax(0, 7fr) minmax(0, 4fr); gap: 64px; padding-block: 56px 96px; }
  .sx-listing-aside { position: sticky; top: calc(var(--iz-head-h) + 24px); align-self: start; }
}
.sx-agent-card { display: grid; gap: 16px; }
.sx-listing-price { display: grid; gap: 2px; }
.sx-listing-price b { font-size: 32px; font-weight: 600; letter-spacing: -0.02em; }
.sx-listing-price span { color: var(--iz-muted-fg); font-size: 14px; }
.sx-agent-card .btn { width: 100%; }
.sx-dl { display: grid; border-top: 1px solid var(--iz-border); }
.sx-dl > div { display: grid; grid-template-columns: minmax(0, 2fr) minmax(0, 3fr); gap: 16px; padding: 12px 0; border-bottom: 1px solid var(--iz-border); font-size: 15px; }
.sx-dl dt { color: var(--iz-muted-fg); }

/* People (initials, never stock faces) */
.sx-av { display: inline-grid; place-items: center; width: 44px; height: 44px; flex: none; border-radius: 50%; background: color-mix(in srgb, var(--iz-accent) 12%, var(--iz-surface)); border: 1px solid color-mix(in srgb, var(--iz-accent) 30%, var(--iz-border)); color: var(--iz-fg); font: 600 15px/1 var(--iz-font); letter-spacing: 0; }
.sx-av.is-lg { width: 72px; height: 72px; font-size: 22px; }
.sx-person { display: flex; align-items: center; gap: 14px; }
.sx-person-name { font-size: 16px; font-weight: 600; letter-spacing: -0.01em; }
.sx-people { display: grid; gap: 16px; }
@media (min-width: 640px) { .sx-people { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (min-width: 1024px) { .sx-people { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 24px; } }
.sx-person-card { display: grid; gap: 12px; align-content: start; padding: 20px; border: 1px solid var(--iz-border); border-radius: var(--iz-r-lg); background: var(--iz-surface); }
.sx-talk { display: flex; gap: 8px; align-items: flex-start; }
.sx-talk .sx-ico { margin-top: 3px; color: var(--iz-accent); }
.sx-talk a { color: var(--iz-link); }
.sx-feature-person { display: grid; gap: 24px; }
@media (min-width: 1024px) { .sx-feature-person { grid-template-columns: minmax(0, 4fr) minmax(0, 7fr); gap: 64px; align-items: start; } }

/* Curriculum */
.sx-modules { display: grid; border-top: 1px solid var(--iz-border); }
.sx-module { border-bottom: 1px solid var(--iz-border); }
.sx-module summary { display: grid; grid-template-columns: 40px minmax(0, 1fr) 20px; gap: 8px; align-items: center; padding: 20px 0; cursor: pointer; list-style: none; }
.sx-module summary::-webkit-details-marker { display: none; }
.sx-module summary:hover .h4 { text-decoration: underline; text-underline-offset: 4px; }
.sx-module-t { display: grid; gap: 2px; }
.sx-module .chev { width: 20px; height: 20px; color: var(--iz-muted-fg); transition: transform var(--iz-dur) var(--iz-ease); }
.sx-module[open] .chev { transform: rotate(180deg); }
.sx-module-body { display: grid; gap: 16px; padding: 0 0 24px; }
@media (min-width: 640px) { .sx-module-body { padding-left: 48px; } }
.sx-lessons { display: grid; border: 1px solid var(--iz-border); border-radius: var(--iz-r-lg); background: var(--iz-surface); }
.sx-lessons li { display: flex; justify-content: space-between; gap: 16px; padding: 12px 16px; font-size: 15px; }
.sx-lessons li + li { border-top: 1px solid var(--iz-border); }
.sx-lessons li > span:first-child { display: flex; gap: 10px; align-items: flex-start; }
.sx-lessons .sx-ico { margin-top: 3px; }
.sx-lesson-meta { display: flex; gap: 12px; flex: none; white-space: nowrap; }
.sx-outcome b { font-weight: 600; }
.sx-modules-compact { display: grid; border-top: 1px solid var(--iz-border); }
.sx-modules-compact li { display: grid; grid-template-columns: 40px minmax(0, 1fr); gap: 8px; padding: 20px 0; border-bottom: 1px solid var(--iz-border); }
.sx-modules-compact .index { padding-top: 5px; }
.sx-modules-compact p { margin-top: 4px; max-width: 60ch; }
.sx-modules-compact .sx-meta { grid-column: 2; }
@media (min-width: 900px) { .sx-modules-compact li { grid-template-columns: 40px minmax(0, 1fr) 10rem; } .sx-modules-compact .sx-meta { grid-column: auto; text-align: right; padding-top: 3px; } }

/* Schedule: a list, never a wide table */
.sx-day-h { margin: 28px 0 12px; }
.sx-sessions { display: grid; border-top: 1px solid var(--iz-border); }
.sx-session { display: grid; gap: 6px 24px; padding: 18px 0; border-bottom: 1px solid var(--iz-border); }
.sx-time { font-size: 14px; color: var(--iz-muted-fg); display: flex; gap: 4px; }
.sx-session-t { font-size: 17px; font-weight: 600; letter-spacing: -0.01em; line-height: 1.35; }
.sx-session-t a { color: inherit; text-decoration: none; }
.sx-session-t a:hover { text-decoration: underline; }
.sx-session-main { display: grid; gap: 4px; }
.sx-session-main p { display: flex; gap: 8px; align-items: flex-start; }
.sx-session-main .sx-ico { margin-top: 3px; }
.sx-session-side { display: flex; flex-wrap: wrap; gap: 8px 12px; align-items: center; color: var(--iz-muted-fg); }
.sx-room { display: inline-flex; gap: 6px; align-items: center; }
.sx-session.is-break .sx-session-t { font-weight: 500; color: var(--iz-muted-fg); font-size: 15px; }
@media (min-width: 900px) {
  .sx-session { grid-template-columns: 9rem minmax(0, 1fr) 13rem; align-items: start; }
  .sx-time { padding-top: 2px; }
  .sx-session-side { justify-content: flex-end; padding-top: 2px; }
}

/* Tickets */
.sx-ticket-list { display: grid; gap: 12px; }
.sx-ticket { display: grid; gap: 16px; padding: 20px; border: 1px solid var(--iz-border); border-radius: var(--iz-r-lg); background: var(--iz-surface); }
.sx-ticket-main { display: grid; gap: 6px; }
.sx-ticket-main .sx-ticks { margin-top: 6px; gap: 6px; color: var(--iz-muted-fg); }
.sx-ticket-side { display: flex; align-items: center; justify-content: space-between; gap: 16px; flex-wrap: wrap; }
.sx-ticket-price { display: grid; gap: 4px; justify-items: start; }
.sx-ticket-price b { font-size: 24px; font-weight: 600; }
@media (min-width: 900px) {
  .sx-ticket { grid-template-columns: minmax(0, 1fr) auto; gap: 32px; align-items: center; padding: 24px; }
  .sx-ticket-side { flex-direction: column; align-items: flex-end; }
  .sx-ticket-price { justify-items: end; }
}
.sx-qty { display: inline-flex; align-items: center; gap: 4px; }
.sx-qty .input { width: 64px; text-align: center; -moz-appearance: textfield; }
.sx-qty .input::-webkit-outer-spin-button, .sx-qty .input::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }
.sx-qty .icon-btn { border: 1px solid var(--iz-border-strong); }
.sx-total { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 16px; margin-top: 16px; padding: 20px; border: 1px solid var(--iz-border); border-radius: var(--iz-r-lg); background: var(--iz-bg-subtle); }
.sx-total output { font-size: 24px; font-weight: 600; margin-inline: 6px; }
.sx-tickets .sx-status { margin-top: 12px; }

/* Donate */
.sx-amounts .choice span { min-width: 72px; justify-content: center; }
.sx-what { margin-top: 12px; padding: 12px 14px; border-radius: var(--iz-r-md); background: var(--iz-bg-subtle); border: 1px solid var(--iz-border); color: var(--iz-fg); }


/* ---------- v- sections (variety pass): extra heroes, intro layouts and signature sections. Appended to site.css only
   when a config lists it in "extraCss". Tokens only; the two photo tokens below are the one addition (light text and
   the scrim under it are the same in both themes, because the photo is). No new radius, no new easing. ---------- */
:root { --iz-on-photo: #FFFFFF; --iz-on-photo-muted: #E7E5E4; --iz-scrim: 12 12 11; }
.v-flag[hidden] { display: none !important; }
.v-flag { margin-left: 8px; vertical-align: 2px; }

/* Inline fact row (label value · label value) */
.v-factrow { display: flex; flex-wrap: wrap; gap: 8px 24px; margin-top: 28px; font-size: 14px; }
.v-factrow > div { display: inline-flex; align-items: center; gap: 6px; }
.v-factrow dt { color: var(--iz-muted-fg); }
.v-factrow dd { font-weight: 500; }

/* ---------- Full-bleed photo hero ---------- */
.v-fb { position: relative; display: grid; isolation: isolate; }
.v-fb-media { grid-area: 1 / 1; position: relative; min-height: 520px; background: rgb(var(--iz-scrim)); overflow: hidden; }
.v-fb-media img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.v-fb-media::after { content: ""; position: absolute; inset: 0; background: linear-gradient(to bottom, rgb(var(--iz-scrim) / .25) 0%, rgb(var(--iz-scrim) / .58) 28%, rgb(var(--iz-scrim) / .86) 58%, rgb(var(--iz-scrim) / .9) 100%); }
.v-fb-words { grid-area: 1 / 1; align-self: end; position: relative; z-index: 1; padding-block: 160px 36px; color: var(--iz-on-photo); }
.v-fb-words h1 { max-width: 13ch; }
.v-fb-words .lede { margin-top: 14px; color: var(--iz-on-photo-muted); max-width: 46ch; }
.v-fb-words .actions { margin-top: 24px; }
.v-fb-words .tlink { color: var(--iz-on-photo); }
.v-fb-words :focus-visible { outline-color: var(--iz-on-photo); }
.v-factrow.is-on-photo dt { color: var(--iz-on-photo-muted); }
.v-factrow.is-on-photo .sx-ico { color: var(--iz-on-photo-muted); }
.v-fb-board { grid-row: 2; padding-top: 16px; }
@media (max-width: 400px) { .v-fb-words h1, .v-hc h1, .v-hg h1, .v-hb h1, .v-sr h1 { font-size: 32px; } }
@media (max-width: 359px) { .v-fb-words h1, .v-hc h1, .v-hg h1, .v-hb h1, .v-sr h1 { font-size: 28px; } }
@media (min-width: 1024px) {
  .v-fb-media { min-height: clamp(620px, calc(100svh - var(--iz-head-h)), 820px); }
  .v-fb-words { padding-block: 200px 64px; }
  .v-fb-words h1, .v-fb-words .lede, .v-fb-words .v-factrow { max-width: 600px; }
  .v-fb-words h1 { font-size: 56px; }
  .v-fb-board { grid-area: 1 / 1; align-self: end; position: relative; z-index: 2; display: flex; justify-content: flex-end; padding-block: 0 56px; pointer-events: none; }
  .v-fb-board > * { pointer-events: auto; }
  .v-fb-board .v-board { width: 380px; }
}

/* Lunch board: a solid card (never text on the photo) */
.v-board { display: grid; gap: 12px; padding: 20px; border: 1px solid var(--iz-border); border-radius: var(--iz-r-lg); background: var(--iz-surface); color: var(--iz-fg); box-shadow: var(--iz-shadow-pop); }
.v-board-head { display: grid; gap: 4px; }
.v-board-t { font-size: 18px; font-weight: 600; letter-spacing: -0.01em; line-height: 1.3; }
.v-board-status { color: var(--iz-muted-fg); }
.v-board-list { display: grid; border-top: 1px solid var(--iz-border); }
.v-svc { display: grid; gap: 8px; padding: 12px 0; border-bottom: 1px solid var(--iz-border); }
.v-svc-h { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 10px; font-weight: 600; font-size: 15px; }
.v-svc-time { font-size: 13px; font-weight: 400; color: var(--iz-muted-fg); }
.v-svc-days { font-weight: 400; color: var(--iz-muted-fg); font-size: 13px; }
.v-svc .v-flag { margin-left: auto; vertical-align: 0; }
.v-svc-items { display: grid; gap: 4px; }
.v-svc-items li { display: flex; justify-content: space-between; gap: 12px; font-size: 14px; color: var(--iz-muted-fg); }
.v-svc-mins { font-size: 13px; white-space: nowrap; }
.v-svc.is-now { margin-inline: -12px; padding-inline: 12px; border-radius: var(--iz-r-md); border-bottom-color: transparent; background: color-mix(in srgb, var(--iz-accent) 8%, var(--iz-surface)); box-shadow: inset 3px 0 0 var(--iz-accent); }
.v-svc.is-now .v-svc-items li { color: var(--iz-fg); }
.v-svc.is-off .v-svc-items, .v-svc.is-done .v-svc-items { display: none; }
.v-board-note { color: var(--iz-muted-fg); }
.v-board-link { font-size: 15px; }

/* ---------- Centred editorial hero ---------- */
.v-hc { padding-block: 40px 0; }
.v-hc-words { display: grid; justify-items: start; }
.v-hc .lede { margin-top: 16px; }
.v-hc .actions { margin-top: 28px; }
.v-hc-band { margin-top: 40px; }
.v-hc-band .sx-photo { aspect-ratio: 4 / 3; }
.v-hc-band .caption { margin-top: 10px; }
@media (min-width: 640px) {
  .v-hc-words { justify-items: center; text-align: center; }
  .v-hc .lede { margin-inline: auto; }
  .v-hc .actions, .v-hc .v-factrow { justify-content: center; }
  .v-hc-band .sx-photo { aspect-ratio: 16 / 9; }
  .v-hc-band .caption { text-align: center; }
}
@media (min-width: 1024px) {
  .v-hc { padding-top: 80px; }
  .v-hc h1 { font-size: 56px; max-width: 18ch; }
  .v-hc .lede { margin-top: 20px; max-width: 54ch; }
  .v-hc-band { margin-top: 56px; }
  .v-hc-band .sx-photo { aspect-ratio: 21 / 8; }
}

/* ---------- Gallery hero ---------- */
.v-hg { padding-block: 40px 0; }
.v-hg-head { display: grid; gap: 16px; }
.v-hg .actions { margin-top: 24px; }
.v-hg-fig { margin-top: 32px; }
.v-hg-fig .caption { margin-top: 10px; }
.v-hg-mosaic { display: grid; gap: 8px; grid-template-columns: repeat(2, minmax(0, 1fr)); }
.v-hg-tile .sx-photo { aspect-ratio: 4 / 3; height: 100%; }
.v-hg-tile.is-lead { grid-column: 1 / -1; }
.v-hg-tile.is-lead .sx-photo { aspect-ratio: 3 / 2; }
.v-hg-mosaic.v-hg-4 .v-hg-tile:last-child { grid-column: 1 / -1; }
.v-hg-mosaic.v-hg-4 .v-hg-tile:last-child .sx-photo { aspect-ratio: 2 / 1; }
.v-hg-facts { margin-top: 24px; }
@media (min-width: 900px) { .sx-facts.is-row.v-hg-facts { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
@media (min-width: 900px) {
  .v-hg-mosaic { grid-template-columns: minmax(0, 2fr) minmax(0, 1fr) minmax(0, 1fr); grid-template-rows: repeat(2, minmax(0, 210px)); gap: 12px; }
  .v-hg-tile .sx-photo, .v-hg-tile.is-lead .sx-photo, .v-hg-mosaic.v-hg-4 .v-hg-tile:last-child .sx-photo { aspect-ratio: auto; }
  .v-hg-tile.is-lead { grid-column: 1; grid-row: 1 / span 2; }
  .v-hg-mosaic.v-hg-4 .v-hg-tile:last-child { grid-column: 2 / span 2; }
  .v-hg-mosaic.v-hg-3 .v-hg-tile:not(.is-lead) { grid-column: span 2; }
}
@media (min-width: 1024px) {
  .v-hg { padding-top: 56px; }
  .v-hg-head { grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); gap: 64px; align-items: end; }
  .v-hg h1 { font-size: 56px; max-width: 14ch; }
  .v-hg .lede { font-size: 17px; }
  .v-hg-fig { margin-top: 40px; }
}

/* ---------- Board hero (live programme card) ---------- */
.v-hb { padding-block: 40px 0; }
.v-hb-grid { display: grid; gap: 32px; }
.v-hb h1 { max-width: 18ch; }
.v-hb .lede { margin-top: 16px; }
.v-hb .actions { margin-top: 28px; }
.v-hb-card { border: 1px solid var(--iz-border); border-radius: var(--iz-r-lg); background: var(--iz-surface); overflow: hidden; }
.v-hb-top { display: grid; gap: 4px; padding: 16px 20px; background: var(--iz-accent); color: var(--iz-accent-fg); }
.v-hb-t { display: flex; align-items: center; gap: 8px; font-size: 16px; font-weight: 600; letter-spacing: -0.01em; }
.v-hb-t .sx-ico { color: currentColor; }
.v-hb-status { color: var(--iz-accent-fg); }
.v-hb-top a { color: var(--iz-accent-fg); }
.v-hb-tabs { padding-inline: 12px; }
.v-hb-date { color: var(--iz-muted-fg); font-weight: 400; }
.v-hb-list { display: grid; padding: 4px 20px; }
.v-hb-panel:focus-visible { outline-offset: -2px; }
.v-hb-panel[hidden] { display: none; }
.v-hb-row { display: grid; grid-template-columns: 3.25rem minmax(0, 1fr) auto; gap: 12px; padding: 12px 0; border-bottom: 1px solid var(--iz-border); align-items: start; }
.v-hb-row:last-child { border-bottom: 0; }
.v-hb-time { font-size: 14px; padding-top: 1px; color: var(--iz-fg); }
.v-hb-title { display: block; font-weight: 600; font-size: 15px; line-height: 1.35; }
.v-hb-who { display: block; margin-top: 2px; color: var(--iz-muted-fg); }
.v-hb-row.is-break .v-hb-title { font-weight: 500; color: var(--iz-muted-fg); }
.v-hb-side { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 6px; align-items: center; }
.v-hb-side .v-flag { margin-left: 0; }
.v-hb-row.is-now { margin-inline: -20px; padding-inline: 20px; background: color-mix(in srgb, var(--iz-accent) 8%, var(--iz-surface)); box-shadow: inset 3px 0 0 var(--iz-accent); }
.v-hb-foot { padding: 12px 20px 16px; border-top: 1px solid var(--iz-border); }
@media (max-width: 479px) { .v-hb-row { grid-template-columns: 3rem minmax(0, 1fr); } .v-hb-side { grid-column: 2; justify-content: flex-start; } }
@media (min-width: 1024px) {
  .v-hb { padding-top: 64px; }
  .v-hb-grid { grid-template-columns: minmax(0, 6fr) minmax(0, 5fr); gap: 64px; align-items: start; }
  .v-hb h1 { font-size: 48px; }
  .v-hb-words { padding-top: 24px; }
}

/* ---------- Split hero, photo first ---------- */
.v-sr { display: grid; }
.v-sr-media { margin: 0; }
.v-sr-media img { width: 100%; aspect-ratio: 4 / 3; object-fit: cover; }
.v-sr-cap { padding: 8px var(--iz-gutter) 0; }
.v-sr-words { width: 100%; max-width: calc(var(--iz-max) + 2 * var(--iz-gutter)); margin-inline: auto; padding: 28px var(--iz-gutter) 0; }
.v-sr .lede { margin-top: 16px; }
.v-sr .actions { margin-top: 28px; }
.v-open { display: inline-flex; align-items: center; gap: 8px; margin-bottom: 16px; color: var(--iz-muted-fg); font-weight: 500; }
.v-open-dot { width: 8px; height: 8px; flex: none; border-radius: 50%; background: var(--iz-faint-fg); }
.v-open.is-open { color: var(--iz-fg); }
.v-open.is-open .v-open-dot { background: var(--iz-success); }
@media (min-width: 640px) { .v-sr-media img { aspect-ratio: 16 / 9; } }
@media (min-width: 1024px) {
  .v-sr { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); align-items: center; padding-top: 40px; }
  .v-sr-media { align-self: stretch; display: grid; grid-template-rows: minmax(0, 1fr) auto; }
  .v-sr-media img { height: 100%; min-height: 560px; max-height: 700px; aspect-ratio: auto; border-radius: 0 var(--iz-r-lg) var(--iz-r-lg) 0; }
  .v-sr-cap { padding-left: max(var(--iz-gutter), calc((100vw - var(--iz-max)) / 2)); }
  .v-sr-words { max-width: none; margin: 0; padding: 32px max(var(--iz-gutter), calc((100vw - var(--iz-max)) / 2)) 32px 64px; }
  .v-sr h1 { font-size: 52px; max-width: 12ch; }
}
@media (min-width: 1200px) { .v-sr h1 { font-size: 56px; } }

/* ---------- Intro: one big statement ---------- */
.v-statement { font-size: 32px; font-weight: 600; letter-spacing: -0.025em; line-height: 1.1; max-width: 20ch; text-wrap: balance; }
.v-is-lede { margin-top: 20px; }
.v-points { display: grid; gap: 24px; margin-top: 40px; padding-top: 28px; border-top: 1px solid var(--iz-border); }
.v-points p { margin-top: 6px; color: var(--iz-muted-fg); max-width: 44ch; }
@media (min-width: 900px) {
  .v-points-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 40px; }
  .v-points-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 40px; }
}
@media (min-width: 1024px) { .v-statement { font-size: 48px; } .v-points { margin-top: 64px; } }
.v-is.is-accent { background: var(--iz-accent); color: var(--iz-accent-fg); border-top-color: transparent; }
.v-is.is-accent + .section { border-top-color: transparent; }
.v-is.is-accent .lede, .v-is.is-accent .v-points p { color: var(--iz-accent-fg); }
.v-is.is-accent .v-points { border-top-color: color-mix(in srgb, var(--iz-accent-fg) 35%, var(--iz-accent)); }
.v-is.is-accent ::selection { background: var(--iz-accent-fg); color: var(--iz-accent); }
@media (min-width: 640px) {
  .v-is.is-center .v-statement, .v-is.is-center .v-is-lede { margin-inline: auto; text-align: center; }
}

/* ---------- Intro: numbered row ---------- */
.v-num { display: grid; gap: 32px; }
.v-num li { display: grid; gap: 10px; align-content: start; padding-top: 20px; border-top: 1px solid var(--iz-border-strong); }
.v-num-n { font-size: 40px; font-weight: 500; line-height: 1; letter-spacing: -0.03em; color: var(--iz-accent); }
.v-num p { color: var(--iz-muted-fg); max-width: 42ch; }
@media (min-width: 900px) { .v-num-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 40px; } .v-num-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 40px; } }
@media (min-width: 1024px) { .v-num-n { font-size: 48px; } }

/* ---------- Intro: usual vs this one ---------- */
.v-ct-head { display: none; }
.v-ct { display: grid; border-top: 1px solid var(--iz-border); }
.v-ct-row { display: grid; gap: 12px; padding: 20px 0; border-bottom: 1px solid var(--iz-border); }
.v-ct-lab { display: block; margin-bottom: 4px; font-weight: 500; color: var(--iz-muted-fg); }
.v-ct-usual { color: var(--iz-muted-fg); font-size: 17px; }
.v-ct-ours { font-size: 17px; font-weight: 500; }
.v-ct-ours .v-ct-lab { color: var(--iz-accent-strong); }
.v-ct-arrow { display: none; }
@media (min-width: 900px) {
  .v-ct-head, .v-ct-row { grid-template-columns: minmax(0, 5fr) 3rem minmax(0, 7fr); gap: 16px; }
  .v-ct-head { display: grid; padding-bottom: 12px; font-size: 13px; font-weight: 500; color: var(--iz-muted-fg); }
  .v-ct-row { align-items: baseline; padding: 24px 0; }
  .v-ct-lab { position: absolute; width: 1px; height: 1px; margin: -1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
  .v-ct-arrow { display: block; color: var(--iz-accent); }
  .v-ct-arrow svg { width: 20px; height: 20px; transform: translateY(3px); }
  .v-ct-usual, .v-ct-ours { font-size: 20px; letter-spacing: -0.01em; }
}
@media (prefers-color-scheme: dark) { :root:not([data-theme="light"]) .v-ct-ours .v-ct-lab { color: var(--iz-accent); } }
:root[data-theme="dark"] .v-ct-ours .v-ct-lab { color: var(--iz-accent); }

/* ---------- Intro: photo and points ---------- */
.v-ip-grid { display: grid; gap: 32px; }
.v-ip .lede { margin-top: 14px; }
.v-ip-list { display: grid; gap: 20px; margin-top: 32px; }
.v-ip-list li { display: grid; grid-template-columns: 20px minmax(0, 1fr); gap: 12px; }
.v-ip-ico { width: 18px; height: 18px; margin-top: 3px; color: var(--iz-accent); }
.v-ip-list p { margin-top: 4px; color: var(--iz-muted-fg); max-width: 52ch; }
.v-ip-fig .sx-photo { aspect-ratio: 4 / 3; }
.v-ip-fig .caption { margin-top: 10px; }
@media (min-width: 1024px) {
  .v-ip-grid { grid-template-columns: minmax(0, 5fr) minmax(0, 6fr); gap: 72px; align-items: center; }
  .v-ip-fig { order: -1; }
  .v-ip-fig .sx-photo { aspect-ratio: 4 / 5; }
}

/* ---------- Listings: floor-area bars ---------- */
.v-area { display: grid; gap: 6px; margin-top: 10px; }
.v-area-top { display: flex; justify-content: space-between; align-items: center; gap: 8px; color: var(--iz-muted-fg); }
.v-area-lab { display: inline-flex; align-items: center; gap: 6px; }
.v-area-top b { font-size: 14px; font-weight: 600; color: var(--iz-fg); }
.v-area-track { position: relative; display: block; height: 8px; border-radius: var(--iz-r-sm); background: var(--iz-sunken); box-shadow: inset 0 0 0 1px var(--iz-border); overflow: hidden; }
.v-area-fill { position: absolute; inset: 0 auto 0 0; width: var(--v-w); border-radius: inherit; background: var(--iz-accent); }
.v-area-key { display: flex; align-items: center; gap: 12px; margin-bottom: 20px; }
.v-area-track.is-key { width: 48px; flex: none; }
.v-home .sx-specs { margin-top: 10px; }
.v-perbed { color: var(--iz-muted-fg); }

/* ---------- Course: week-by-week strip ---------- */
.v-weeks { display: grid; border-top: 1px solid var(--iz-border); }
.v-wk { display: grid; gap: 6px; align-content: start; padding: 20px 0; border-bottom: 1px solid var(--iz-border); }
.v-wk-track { position: relative; display: block; height: 4px; margin-bottom: 8px; border-radius: var(--iz-r-sm); background: var(--iz-sunken); box-shadow: inset 0 0 0 1px var(--iz-border); overflow: hidden; }
.v-wk-fill { position: absolute; inset: 0 auto 0 0; width: var(--v-w); background: var(--iz-accent); }
.v-wk-label { font-size: 13px; color: var(--iz-muted-fg); }
.v-wk-t { font-size: 18px; font-weight: 600; letter-spacing: -0.01em; line-height: 1.25; }
.v-wk-out { color: var(--iz-muted-fg); }
.v-wk-by { color: var(--iz-fg); font-weight: 500; }
@media (min-width: 1024px) {
  .v-weeks { grid-template-columns: repeat(auto-fit, minmax(0, 1fr)); border-top: 0; }
  .v-wk { padding: 0 20px 0 0; border-bottom: 0; }
  .v-wk + .v-wk { padding-left: 20px; border-left: 1px solid var(--iz-border); }
  .v-wk-track { margin-bottom: 18px; }
}

/* ---------- Three steps with line drawings ---------- */
.v-si { display: grid; gap: 32px; }
.v-si-step { position: relative; display: grid; gap: 10px; align-content: start; }
.v-si-mark { position: relative; display: inline-grid; place-items: center; width: 88px; height: 88px; margin-bottom: 8px; border: 1px solid var(--iz-border-strong); border-radius: 50%; background: var(--iz-surface); color: var(--iz-accent); }
.v-ico48 { width: 48px; height: 48px; }
.v-si-n { position: absolute; top: -2px; right: -2px; display: grid; place-items: center; width: 24px; height: 24px; border-radius: 50%; background: var(--iz-accent); color: var(--iz-accent-fg); font-size: 13px; font-weight: 600; }
.v-si p { color: var(--iz-muted-fg); max-width: 36ch; }
@media (min-width: 900px) {
  .v-si-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 40px; }
  .v-si-step:not(:last-child)::after { content: ""; position: absolute; top: 44px; left: 112px; right: -16px; border-top: 1px dashed var(--iz-border-strong); }
}

/* ---------- Schedule: live line and now/next ---------- */
.v-live-line { display: flex; align-items: center; gap: 8px; margin-bottom: 24px; padding: 12px 16px; border: 1px solid var(--iz-border); border-radius: var(--iz-r-md); background: var(--iz-bg-subtle); color: var(--iz-fg); }
.v-live-line .sx-ico { color: var(--iz-accent); }
.v-session.is-now { margin-inline: -16px; padding-inline: 16px; background: color-mix(in srgb, var(--iz-accent) 7%, var(--iz-surface)); box-shadow: inset 3px 0 0 var(--iz-accent); }


/* ---------- Lintmoor character: measured and architectural. Crisper photo corners, tighter headings, figures in mono. ---------- */
.sx-photo { border-radius: var(--iz-r-md); }
.sx-home, .sx-card { border-radius: var(--iz-r-md); }
.h1, .h2 { letter-spacing: -0.03em; }
.sx-home-price { font-size: 17px; }
