/* ---- vasbyt (Vasbyt — Road running club 127) --------------------------------
   STRUCTURAL MOVE: one rhythm, four across, welded. The dated run row, both
   portrait rows and the photo wall all run at gap:0, so each reads as a single
   strip and not a grid of cards — whitespace sits above and below bands, never
   between tiles. The container is broken exactly twice, by the full-viewport
   single-photograph hero and by the eight-tile wall; every other band is one
   centred column and there is no split story block anywhere. Dawn orange is
   spent twice only — the hero button and the four stat figures. Photographs are
   pushed cold and hard so the pack reads as silhouettes. Nothing is reached with
   :first-of-type / :nth-of-type. */
body.t-vasbyt.ws-body {
  --bg: #f5f4f0; --fg: #35342f; --heading: #0e0e0c; --text: #35342f; --muted: #83817a;
  --vb-flare: #e8671c; --vb-line: #dcd9d1;
  --hero-a: rgba(10, 10, 9, .26); --hero-b: rgba(10, 10, 9, .60);
}
body.t-vasbyt { background: var(--bg); }

/* the bar rides transparent on the photograph — wordmark left, four words right */
body.t-vasbyt .ws-nav { position: absolute; top: 0; left: 0; right: 0; padding: 15px 0; background: transparent; backdrop-filter: none; border-bottom: 0; }
body.t-vasbyt .ws-brand { color: #f7f6f2; text-transform: uppercase; letter-spacing: .3em; font-size: 12px; font-weight: 800; }
body.t-vasbyt .ws-nav-links a { color: #f7f6f2; text-transform: uppercase; letter-spacing: .2em; font-size: 10.5px; font-weight: 700; opacity: .8; border-bottom: 0; }
body.t-vasbyt .ws-nav-links a:hover, body.t-vasbyt .ws-nav-links a.on { opacity: 1; color: #f7f6f2; border-bottom: 0; }

/* bleed 1 of 2 — one photograph, the whole viewport, copy dead centre */
body.t-vasbyt .ws-hero { min-height: 100vh; }
body.t-vasbyt .ws-hero h1 { font-size: clamp(40px, 8.4vw, 104px); font-weight: 800; text-transform: uppercase; letter-spacing: -.028em; line-height: .92; text-shadow: none; max-width: 16ch; }
body.t-vasbyt .ws-hero p { font-size: 15.5px; line-height: 1.85; max-width: 58ch; margin: 26px auto 34px; }
body.t-vasbyt.ws-body .btn.brand { background: var(--heading); color: var(--bg); border: 0; border-radius: 0; box-shadow: none; text-transform: uppercase; letter-spacing: .22em; font-size: 10.5px; font-weight: 800; padding: 17px 32px; }
/* orange 1 of 2 — the only button on the page that carries it */
body.t-vasbyt.ws-body .ws-hero-cta.btn.brand { background: var(--vb-flare); color: #14120f; }

/* air above and below bands; the shared zebra wash off so the ground never shifts */
body.t-vasbyt .ws-section { padding: 104px 0; }
body.t-vasbyt.ws-body .ws-section:nth-child(even):not(.ws-cta):not(.ws-shoplink) { background: transparent; }
body.t-vasbyt .ws-h2, body.t-vasbyt .ws-title-h { color: var(--heading); text-transform: uppercase; font-size: clamp(24px, 3.4vw, 40px); font-weight: 800; letter-spacing: -.012em; line-height: 1.06; margin: 0 0 34px; text-align: center; }
body.t-vasbyt .ws-title-sub, body.t-vasbyt .ws-sub, body.t-vasbyt .ws-feature p, body.t-vasbyt .ws-member p, body.t-vasbyt .ws-gallery-cap span, body.t-vasbyt .ws-feature-icon { color: var(--muted); font-size: 13px; line-height: 1.8; }

/* the counter row — four figures standing on nothing */
body.t-vasbyt .ws-features-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 30px; }
/* orange 2 of 2 */
body.t-vasbyt .ws-feature h3 { color: var(--vb-flare); font-size: clamp(38px, 6vw, 72px); font-weight: 800; letter-spacing: -.05em; line-height: .9; margin: 0 0 12px; font-variant-numeric: tabular-nums; }

/* THE MOVE — every row of tiles is four across with the gutters at zero */
body.t-vasbyt .ws-gallery-grid, body.t-vasbyt .ws-team-grid, body.t-vasbyt .ws-photogrid-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 0; }
body.t-vasbyt .ws-gallery-item img, body.t-vasbyt .ws-member-photo img, body.t-vasbyt .ws-photogrid-grid img { border-radius: 0; filter: grayscale(1) contrast(1.22) brightness(.94); }
body.t-vasbyt .ws-gallery-item img, body.t-vasbyt .ws-member-photo img { width: 100%; height: auto; aspect-ratio: 4 / 5; object-fit: cover; margin: 0; }
body.t-vasbyt .ws-gallery-cap strong, body.t-vasbyt .ws-member strong { color: var(--heading); text-transform: uppercase; letter-spacing: .14em; font-size: 10.5px; font-weight: 800; }
body.t-vasbyt .ws-gallery-cap, body.t-vasbyt .ws-member strong, body.t-vasbyt .ws-member .muted, body.t-vasbyt .ws-member p { padding-left: 18px; padding-right: 18px; }
body.t-vasbyt .ws-member { text-align: left; }

/* bleed 2 of 2 — the wall leaves the container and carries no words at all */
body.t-vasbyt .ws-photogrid { padding: 0; }

/* it closes quietly: one centred column, four ruled fields, one black slab */
body.t-vasbyt .ws-contact { border-top: 1px solid var(--vb-line); }
body.t-vasbyt .ws-field input, body.t-vasbyt .ws-field select { background: transparent; border: 0; border-bottom: 1px solid var(--vb-line); border-radius: 0; color: var(--heading); padding: 12px 2px; }

/* mobile: the four-across rhythm halves, and the menu drops onto chalk */
@media (max-width: 780px) {
  body.t-vasbyt .ws-nav-links a, body.t-vasbyt .ws-nav-links .theme-toggle { color: var(--heading); opacity: 1; }
  body.t-vasbyt .ws-features-grid, body.t-vasbyt .ws-gallery-grid, body.t-vasbyt .ws-team-grid, body.t-vasbyt .ws-photogrid-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  body.t-vasbyt .ws-hero h1 { font-size: clamp(34px, 11vw, 56px); }
}

/* night — tar ground, chalk ink, the same two orange moments one stop hotter */
html[data-theme="dark"] body.t-vasbyt.ws-body {
  --bg: #101010; --fg: #a5a39c; --heading: #f4f2ec; --text: #a5a39c; --muted: #7b7970;
  --vb-flare: #ff7a2e; --vb-line: #2a2925;
  --hero-a: rgba(6, 6, 6, .30); --hero-b: rgba(6, 6, 6, .66);
}
html[data-theme="dark"] body.t-vasbyt { background: var(--bg); }
html[data-theme="dark"] body.t-vasbyt .ws-gallery-item img, html[data-theme="dark"] body.t-vasbyt .ws-member-photo img, html[data-theme="dark"] body.t-vasbyt .ws-photogrid-grid img { filter: grayscale(1) contrast(1.16) brightness(.84); }
