/* ============================================================================
   BRIDGES 51-70 — fifteen stores and five websites. Each block carries the one
   structural move that makes its reference recognisable.
   ==========================================================================*/
/* ---------- kedge — maritime law (bridge 70) ----------------------------------
   STRUCTURAL MOVE — THE WELD: the four-tile numbers strip is fused to the foot
   of a full-viewport hero. Same gunmetal ground, zero gap, one oxidised-brass
   hairline standing in for a seam. It is the only join on the page. Everything
   under it returns to the contained column and alternates gunmetal / bone band
   by band; containment is broken exactly once, by the full-bleed quote. The
   page closes on two `columns` rows ruled into a single four-across, two-deep
   port directory (#columns + #columns-2), then a contact block standing alone.
   Grounds are painted BY CLASS carrying the same :not() tail as the stock
   nth-child(even) wash, so they outrank it without !important. Padding is set
   on a lower-specificity rule than the grounds so the per-band exceptions below
   can still win. No :first-of-type / :nth-of-type anywhere — only :first-child
   / :nth-child on real siblings, plus the renderer's own anchor ids. */
body.t-kedge.ws-body {
  --bg: #ecebe5; --fg: #3e4145; --heading: #15181c; --text: #3e4145; --muted: #787c80;
  --kg-ink: #14181d; --kg-band: #1b2026; --kg-brass: #9c7a37; --kg-hair: rgba(156, 122, 55, .30);
  --kg-line: #d4d0c6; --kg-on: #ecebe5; --kg-on-mute: #a3a19a; --kg-field: #ffffff;
  --hero-a: rgba(10, 13, 17, .50); --hero-b: rgba(10, 13, 17, .74);
  --sf-serif: 'Fraunces', Georgia, 'Times New Roman', serif;
}
body.t-kedge { background: var(--bg); }

/* nav — a charcoal bar continuous with the hero scrim. The last link is the one
   framed element in the header (it is an anchor, not a button). */
body.t-kedge .ws-nav { background: var(--kg-ink); color: var(--kg-on); border-bottom: 1px solid var(--kg-hair); backdrop-filter: none; }
body.t-kedge .ws-nav-inner { height: 74px; }
body.t-kedge .ws-brand { font-family: var(--sf-serif); font-weight: 400; font-size: 25px; letter-spacing: .01em; color: var(--kg-on); }
body.t-kedge .ws-nav-links { gap: 26px; }
body.t-kedge .ws-nav-links a { color: #c6c3bb; font-size: 11.5px; font-weight: 600; letter-spacing: .17em; text-transform: uppercase; opacity: 1; }
body.t-kedge .ws-nav-links a:hover, body.t-kedge .ws-nav-links a.on { color: var(--kg-brass); }
body.t-kedge .ws-nav-links a:last-child { border: 1px solid var(--kg-brass); color: var(--kg-brass); padding: 10px 18px; }
body.t-kedge .ws-nav-links a:last-child:hover { background: var(--kg-brass); color: var(--kg-ink); }

/* hero — nav plus hero come to exactly one viewport; copy locked dead centre */
body.t-kedge .ws-hero { min-height: calc(100vh - 74px); align-items: center; }
body.t-kedge .ws-hero-inner { padding: 40px 22px; }
body.t-kedge .ws-hero h1 { font-family: var(--sf-serif); font-weight: 400; font-size: clamp(36px, 6.2vw, 76px); line-height: 1.04; letter-spacing: -.01em; max-width: 17ch; text-shadow: none; margin-bottom: 22px; }
body.t-kedge .ws-hero p { color: #d5d2cb; font-size: clamp(15px, 1.55vw, 17.5px); line-height: 1.68; max-width: 58ch; margin-bottom: 36px; }
body.t-kedge .btn.brand, body.t-kedge .ws-hero-cta.btn.brand { background: var(--kg-brass); color: #12161b; border-radius: 0; box-shadow: none; font-size: 11.5px; font-weight: 700; letter-spacing: .17em; text-transform: uppercase; padding: 16px 32px; }
body.t-kedge .btn.brand:hover, body.t-kedge .ws-hero-cta.btn.brand:hover { background: #b08c42; }

/* rhythm first (low specificity), then the grounds (high) — order matters */
body.t-kedge .ws-section { padding: 104px 0; }
body.t-kedge .ws-section:not(.ws-cta):not(.ws-shoplink) { background: var(--bg); }
body.t-kedge .ws-features:not(.ws-cta):not(.ws-shoplink),
body.t-kedge .ws-gallery:not(.ws-cta):not(.ws-shoplink),
body.t-kedge .ws-quoteblock:not(.ws-cta):not(.ws-shoplink) { background: var(--kg-band); }

/* THE WELD — full-bleed numbers strip flush to the hero, brass hairline seam */
body.t-kedge .ws-features { padding: 0; border-top: 1px solid var(--kg-brass); }
body.t-kedge .ws-features .ws-container { max-width: none; padding: 0; }
body.t-kedge .ws-features-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 0; }
body.t-kedge .ws-feature { text-align: left; padding: 48px clamp(20px, 2.6vw, 38px) 52px; border-left: 1px solid var(--kg-hair); }
body.t-kedge .ws-feature:first-child { border-left: 0; }
body.t-kedge .ws-feature-icon { color: var(--kg-brass); margin-bottom: 22px; }
body.t-kedge .ws-feature-icon .ws-ico { width: 24px; height: 24px; }
body.t-kedge .ws-feature h3 { font-family: var(--sf-serif); font-weight: 400; font-size: clamp(28px, 3.2vw, 44px); line-height: 1; letter-spacing: -.01em; color: var(--kg-on); margin: 0 0 10px; }
body.t-kedge .ws-feature p { color: var(--kg-on-mute); font-size: 13px; line-height: 1.62; }

/* shared type */
body.t-kedge .ws-h2, body.t-kedge .ws-title-h { font-family: var(--sf-serif); font-weight: 400; letter-spacing: -.01em; color: var(--heading); }
body.t-kedge .ws-h2 { font-size: clamp(26px, 3.5vw, 40px); margin: 0 0 10px; }
body.t-kedge .ws-sub, body.t-kedge .ws-title-sub { color: var(--muted); font-size: 14px; }

/* the firm — the only asymmetric block on the page */
body.t-kedge .ws-story-grid { gap: 64px; align-items: center; }
body.t-kedge .ws-story-media img { border-radius: 0; aspect-ratio: 4 / 5; }
body.t-kedge .ws-story-copy h2 { font-family: var(--sf-serif); font-weight: 400; font-size: clamp(26px, 3.2vw, 38px); letter-spacing: -.01em; color: var(--heading); }
body.t-kedge .ws-story-copy p { color: var(--text); font-size: 16px; line-height: 1.82; }

/* practice — deliberately the plainest, most rectangular block here */
body.t-kedge .ws-gallery .ws-h2 { color: var(--kg-on); }
body.t-kedge .ws-gallery-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 46px 32px; margin-top: 54px; }
body.t-kedge .ws-gallery-item img { aspect-ratio: 16 / 10; border-radius: 0; }
body.t-kedge .ws-gallery-cap { margin-top: 14px; padding: 14px 0 0; border-top: 1px solid var(--kg-hair); gap: 6px; }
body.t-kedge .ws-gallery-cap strong { font-family: var(--sf-serif); font-weight: 400; font-size: 20px; color: var(--kg-on); }
body.t-kedge .ws-gallery-cap span { color: var(--kg-on-mute); font-size: 12.5px; line-height: 1.5; }

/* casualty steps — brass leading zeros instead of list markers */
body.t-kedge .ws-listblock .ws-container { max-width: 860px; }
body.t-kedge .ws-list-number { padding-left: 0; list-style: none; counter-reset: kgstep; margin-top: 40px; }
body.t-kedge .ws-list-number li { counter-increment: kgstep; position: relative; margin: 0; padding: 24px 0 24px 66px; border-top: 1px solid var(--kg-line); font-size: 16px; line-height: 1.72; color: var(--text); }
body.t-kedge .ws-list-number li::before { content: counter(kgstep, decimal-leading-zero); position: absolute; left: 0; top: 24px; font-family: var(--sf-serif); font-size: 19px; color: var(--kg-brass); }

/* costs */
body.t-kedge .ws-faq { border-top: 1px solid var(--kg-line); }
body.t-kedge .ws-faq-list { border-top: 1px solid var(--kg-line); margin-top: 38px; }
body.t-kedge .ws-faq-item { border-bottom: 1px solid var(--kg-line); }
body.t-kedge .ws-faq-item summary { font-family: var(--sf-serif); font-weight: 400; font-size: 19px; color: var(--heading); padding: 22px 4px; }
body.t-kedge .ws-faq-item summary::after { color: var(--kg-brass); }
body.t-kedge .ws-faq-item p { color: var(--text); font-size: 15.5px; line-height: 1.78; }

/* the single break in containment */
body.t-kedge .ws-quoteblock { padding: 108px 0; }
body.t-kedge .ws-quoteblock .ws-container { max-width: none; padding: 0 clamp(22px, 7vw, 130px); }
body.t-kedge .ws-quote-t { font-family: var(--sf-serif); font-style: normal; font-weight: 400; font-size: clamp(21px, 2.7vw, 34px); line-height: 1.4; color: var(--kg-on); margin: 0 0 24px; }
body.t-kedge .ws-quote-a { color: var(--kg-brass); font-size: 11.5px; font-weight: 600; letter-spacing: .17em; text-transform: uppercase; }

/* the directory — two `columns` rows ruled into one four-across, two-deep table */
body.t-kedge .ws-titleblock { padding: 104px 0 0; }
body.t-kedge .ws-title-h { font-size: clamp(26px, 3.5vw, 40px); }
body.t-kedge .ws-title-sub { max-width: 54ch; margin: 12px auto 0; line-height: 1.65; }
body.t-kedge .ws-columns { padding: 40px 0 0; }
body.t-kedge #columns-2 { padding: 0 0 112px; }
body.t-kedge .ws-columns .ws-cols { gap: 0; }
body.t-kedge .ws-col { padding: 26px 22px 30px; border-top: 1px solid var(--kg-line); border-left: 1px solid var(--kg-line); }
body.t-kedge .ws-cols .ws-col:first-child { border-left: 0; }
body.t-kedge #columns-2 .ws-col { border-bottom: 1px solid var(--kg-line); }
body.t-kedge .ws-col-h { font-family: var(--sf-serif); font-weight: 400; font-size: 21px; letter-spacing: 0; color: var(--heading); margin: 0 0 10px; }
body.t-kedge .ws-col-h::after { content: ''; display: block; width: 22px; height: 1px; background: var(--kg-brass); margin-top: 12px; }
body.t-kedge .ws-col p { color: var(--muted); font-size: 13.5px; line-height: 1.66; margin: 0; }

/* the form ends the page with nothing beside it */
body.t-kedge .ws-contact { padding: 108px 0 124px; border-top: 1px solid var(--kg-line); }
body.t-kedge .ws-form { max-width: 520px; margin: 0 auto; }
body.t-kedge .ws-field label { font-size: 11px; font-weight: 700; letter-spacing: .15em; text-transform: uppercase; color: var(--muted); }
body.t-kedge .ws-field input, body.t-kedge .ws-field textarea, body.t-kedge .ws-field select { background: var(--kg-field); border: 1px solid var(--kg-line); border-radius: 0; color: var(--heading); }
body.t-kedge .ws-footer { border-top: 1px solid var(--kg-line); }

@media (max-width: 860px) {
  body.t-kedge .ws-features-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  body.t-kedge .ws-feature { border-top: 1px solid var(--kg-hair); }
  body.t-kedge .ws-feature:nth-child(odd) { border-left: 0; }
  body.t-kedge .ws-gallery-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 32px 20px; }
}
@media (max-width: 760px) {
  /* restate every padding exception AFTER the generic — media queries add no
     specificity, so the later rule would otherwise re-pad the welded strip */
  body.t-kedge .ws-section { padding: 64px 0; }
  body.t-kedge .ws-features { padding: 0; }
  body.t-kedge .ws-titleblock { padding: 64px 0 0; }
  body.t-kedge .ws-columns { padding: 28px 0 0; }
  body.t-kedge #columns-2 { padding: 0 0 72px; }
  body.t-kedge .ws-quoteblock { padding: 76px 0; }
  body.t-kedge .ws-contact { padding: 68px 0 84px; }
  body.t-kedge .ws-hero { min-height: 74vh; }
  body.t-kedge .ws-nav-links { background: var(--kg-ink); border: 1px solid var(--kg-hair); border-radius: 0; box-shadow: none; }
  body.t-kedge .ws-nav-links a { color: #d6d3cc; font-size: 12.5px; border-radius: 0; padding: 14px 12px; }
  body.t-kedge .ws-nav-links a:last-child { margin-top: 8px; }
}
@media (max-width: 720px) {
  body.t-kedge .ws-col { border-left: 0; }
  body.t-kedge #columns-2 .ws-col { border-bottom: 0; }
  body.t-kedge #columns-2 .ws-col:last-child { border-bottom: 1px solid var(--kg-line); }
}

/* night — the tokens carry almost everything, so this stays short */
html[data-theme="dark"] body.t-kedge.ws-body {
  --bg: #101317; --fg: #a8acb1; --heading: #eceae4; --text: #a8acb1; --muted: #7a7e83;
  --kg-ink: #0b0e11; --kg-band: #171b21; --kg-brass: #c39a4c; --kg-hair: rgba(195, 154, 76, .34);
  --kg-line: #292e34; --kg-on: #eceae4; --kg-on-mute: #9a9ea3; --kg-field: #171b21;
  --hero-a: rgba(6, 8, 11, .56); --hero-b: rgba(6, 8, 11, .80);
}
html[data-theme="dark"] body.t-kedge { background: var(--bg); }
html[data-theme="dark"] body.t-kedge .ws-nav-links a { color: #b9bcc0; }
html[data-theme="dark"] body.t-kedge .ws-hero p { color: #c9ccd0; }
html[data-theme="dark"] body.t-kedge .btn.brand, html[data-theme="dark"] body.t-kedge .ws-hero-cta.btn.brand { background: var(--kg-brass); color: #0b0e11; }
html[data-theme="dark"] body.t-kedge .btn.brand:hover, html[data-theme="dark"] body.t-kedge .ws-hero-cta.btn.brand:hover { background: #d4ab5c; }
