/* ---- ruiker (Ruiker — Real weddings journal 332) ---------------------------
   THE STRUCTURAL MOVE: nothing on this page is ever full-bleed. The featured
   post at the top is clamped to the same measure as the body and stands its
   headline on a bone slab across the photograph's floor, so paper gutters are
   visible either side from the very first pixel. Every band below it is ruled
   off by a hairline drawn at CONTENT width — never a tinted zebra band running
   to the window edge — and the body then splits seventy-thirty and does not
   rejoin: a wide left stack whose dated entries are ruled apart one from the
   next, beside a narrow rail walled off with one more hairline. Olive is spent
   on date stamps, category caps and link hover, and on nothing else. */
body.t-ruiker.ws-body {
  --bg: #f7f4ef; --fg: #3a382f; --heading: #16150f; --text: #3a382f; --muted: #85806f;
  --rk-line: #ddd8cc; --rk-olive: #6e7a5b;
  --hero-a: rgba(22, 21, 15, .08); --hero-b: rgba(22, 21, 15, .28);
}

/* a quiet bar on bare paper — the wordmark is the loud part, the links are not */
body.t-ruiker .ws-nav { background: var(--bg); backdrop-filter: none; border-bottom: 1px solid var(--rk-line); }
body.t-ruiker .ws-brand { font-family: var(--sf-serif); font-weight: 400; font-size: 30px; letter-spacing: -.035em; color: var(--heading); }
body.t-ruiker .ws-nav-links a { color: var(--heading); opacity: .7; text-transform: uppercase; letter-spacing: .16em; font-size: 10px; font-weight: 600; }
body.t-ruiker .ws-nav-links a:hover, body.t-ruiker .ws-nav-links a.on { color: var(--rk-olive); opacity: 1; }

/* THE CLAMP — the featured post is contained, headline on a bone slab across
   the photograph's floor, paper gutters showing from the first pixel */
body.t-ruiker .ws-hero { max-width: 1076px; margin: 30px auto 0; min-height: 66vh; align-items: flex-end; }
body.t-ruiker .ws-hero-inner { background: var(--bg); color: var(--heading); padding: 30px 34px 34px; }
body.t-ruiker .ws-hero h1 { font-family: var(--sf-serif); font-weight: 400; font-size: clamp(27px, 3.6vw, 43px); letter-spacing: -.032em; line-height: 1.12; text-shadow: none; color: var(--heading); max-width: 24ch; }
body.t-ruiker.ws-body .btn.brand { background: var(--heading); color: var(--bg); border: 0; border-radius: 0; box-shadow: none; text-transform: uppercase; letter-spacing: .18em; font-size: 10px; font-weight: 700; padding: 14px 26px; }

/* one paper ground the whole way down — hairlines at measure do every division */
body.t-ruiker.ws-body .ws-section:nth-child(even):not(.ws-cta):not(.ws-shoplink) { background: transparent; }
body.t-ruiker .ws-section { padding: 0 0 62px; }
body.t-ruiker .ws-section > .ws-container { border-top: 1px solid var(--rk-line); padding-top: 58px; }
body.t-ruiker .ws-h2, body.t-ruiker .ws-story-copy h2 { font-family: var(--sf-serif); font-weight: 400; color: var(--heading); font-size: clamp(23px, 3vw, 33px); letter-spacing: -.03em; line-height: 1.14; text-align: left; margin: 0 0 20px; }
body.t-ruiker .ws-hero p, body.t-ruiker .ws-story-copy p { color: var(--text); font-size: 15px; line-height: 1.85; max-width: 62ch; opacity: 1; margin: 0 0 24px; }
body.t-ruiker .ws-sub, body.t-ruiker .ws-feature p, body.t-ruiker .ws-col + .ws-col p { color: var(--muted); font-size: 13.5px; line-height: 1.72; text-align: left; border-bottom: 0; padding: 0; margin: 0 0 20px; max-width: 62ch; }

/* THE SPLIT — seventy-thirty, and it never rejoins. Left: dated entries ruled
   apart. Right: the rail, walled with one hairline. The archive register below
   is ruled on the same recipe, so the page reads as one continuous ledger. */
body.t-ruiker .ws-col p, body.t-ruiker .ws-list li { color: var(--text); font-size: 15px; line-height: 1.8; margin: 0; padding: 17px 0; border-bottom: 1px solid var(--rk-line); }
body.t-ruiker .ws-col + .ws-col { border-left: 1px solid var(--rk-line); padding-left: 34px; }
body.t-ruiker .ws-list { list-style: none; padding-left: 0; }

/* six weddings, three across and gapped — a grid, never a mosaic */
body.t-ruiker .ws-gallery-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 42px 30px; }
body.t-ruiker .ws-gallery-item img, body.t-ruiker .ws-story-media img { border-radius: 0; aspect-ratio: 4 / 3; object-fit: cover; }
body.t-ruiker .ws-gallery-cap strong, body.t-ruiker .ws-feature h3, body.t-ruiker .ws-col-h { display: block; font-family: var(--sf-serif); font-weight: 400; font-size: 19px; line-height: 1.3; letter-spacing: -.018em; color: var(--heading); margin: 12px 0 6px; }
body.t-ruiker .ws-gallery-cap span, body.t-ruiker .ws-quote-a, body.t-ruiker .ws-feature-icon { display: block; color: var(--rk-olive); text-transform: uppercase; letter-spacing: .16em; font-size: 10px; font-weight: 700; margin-bottom: 10px; }

/* the categories band — four across, each hung off its own hairline */
body.t-ruiker .ws-features-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 30px 26px; }
body.t-ruiker .ws-feature { text-align: left; padding: 20px 0 0; border-top: 1px solid var(--rk-line); }
body.t-ruiker .ws-quote-t { font-family: var(--sf-serif); font-style: normal; font-weight: 400; font-size: clamp(21px, 2.8vw, 30px); line-height: 1.36; color: var(--heading); }
body.t-ruiker .ws-field input, body.t-ruiker .ws-field textarea { background: transparent; border: 0; border-bottom: 1px solid var(--rk-line); border-radius: 0; color: var(--heading); padding: 10px 2px; }

@media (max-width: 760px) {
  body.t-ruiker .ws-gallery-grid, body.t-ruiker .ws-features-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  body.t-ruiker .ws-col + .ws-col { border-left: 0; border-top: 1px solid var(--rk-line); padding-left: 0; padding-top: 26px; }
  body.t-ruiker .ws-hero { margin-top: 0; min-height: 54vh; }
}

/* night — the same bone paper turned to charcoal, the olive one stop lighter */
html[data-theme="dark"] body.t-ruiker.ws-body {
  --bg: #16150f; --fg: #a8a49a; --heading: #f4f1ea; --text: #a8a49a; --muted: #7c776c;
  --rk-line: #2d2b24; --rk-olive: #93a077;
  --hero-a: rgba(8, 8, 5, .16); --hero-b: rgba(8, 8, 5, .44);
}
