/*
 * energypoint.sk (ESK) — "energy-field card grid over a datasheet chassis".
 *
 * The edition is an industrial-engineering energy publication, so the skin is
 * built from technical paper, graphite ink, hairline rules that do the work
 * colour usually does, square corners (no radius, ever) and exactly two
 * typefaces — a transitional serif for everything that is read, a monospace for
 * every field name and meta. There is no third family and no sans.
 *
 * TWO REGISTERS, ONE VOICE
 * The HOMEPAGE is a card grid: a wide drawn "energy field" hero band (layered
 * contour / isoline SVG, since the publisher owns no photography) over a
 * three-column grid of analysis cards, each with an image slot that falls back
 * to a deterministic contour tile (see template-parts/kw-tile.php). The
 * FURNITURE — masthead, footer and the article anatomy — keeps the original
 * specification-row device (a fixed mono label gutter beside a content field),
 * which is what still makes the chrome read as one continuous sheet.
 *
 * Namespace: kw-. Every rule below is either a kw- class or a base-layer class
 * scoped under .brand-ene-sk, so nothing here escapes this stylesheet.
 *
 * NOTE ON .wrap — this file deliberately never restyles `.wrap`. Widths are set
 * on .kw-sheet, an inner element, so the base reading measure asserted by
 * `.wrap.wrap--narrow` is never regressed.
 */

/* ---------- Tokens ---------- */
.brand-ene-sk {
  /* 8-point spacing scale. */
  --kw-space-1: 0.25rem;
  --kw-space-2: 0.5rem;
  --kw-space-3: 0.75rem;
  --kw-space-4: 1rem;
  --kw-space-5: 1.5rem;
  --kw-space-6: 2rem;
  --kw-space-7: 3rem;
  --kw-space-8: 4rem;
  --kw-space-9: 6rem;

  /* Surfaces and ink. Contrast against --kw-paper: ink 15.4:1, muted 6.8:1,
     accent 7.2:1 — every text pair clears WCAG AA for body copy. */
  --kw-paper:      #F2F3F1;
  --kw-field:      #FFFFFF;
  --kw-ink:        #14191A;
  --kw-muted:      #4C5654;
  --kw-rule:       #CFD3CF;
  --kw-rule-firm:  #A8AFAB;
  --kw-rule-heavy: #14191A;
  --kw-accent:     #0B5C55;
  --kw-accent-ink: #08423D;
  --kw-accent-wash:#E6EDEB;

  --kw-serif: Charter, "Bitstream Charter", "Iowan Old Style", "Palatino Linotype", Palatino, "Book Antiqua", Georgia, serif;
  --kw-mono: "IBM Plex Mono", "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, Consolas, "Liberation Mono", monospace;

  /* Sheet geometry. --kw-sheet is the reading sheet used by the masthead,
     footer and article furniture; --kw-canvas is the wider card canvas the
     homepage grid needs. */
  --kw-sheet: 62rem;
  --kw-canvas: 74rem;
  --kw-gutter-col: 12rem;
  --kw-measure: 40rem;
  --kw-card-gap: 1.5rem;

  --kw-label-size: 0.6875rem;
  --kw-label-track: 0.14em;
}

/* ---------- Page ---------- */
body.brand-ene-sk {
  background: var(--kw-paper);
  color: var(--kw-ink);
  font-family: var(--kw-serif);
  font-size: 1.0625rem;
  line-height: 1.6;
}

body.brand-ene-sk a { color: var(--kw-accent); text-decoration: none; }
body.brand-ene-sk a:hover { color: var(--kw-accent-ink); text-decoration: underline; text-underline-offset: 0.18em; }
body.brand-ene-sk h1,
body.brand-ene-sk h2,
body.brand-ene-sk h3,
body.brand-ene-sk h4 {
  font-family: var(--kw-serif);
  color: var(--kw-ink);
  font-weight: 600;
  letter-spacing: -0.005em;
  line-height: 1.2;
  overflow-wrap: break-word;
}
body.brand-ene-sk :focus-visible {
  outline: 2px solid var(--kw-accent);
  outline-offset: 2px;
  border-radius: 0;
}
body.brand-ene-sk .skip-link { background: var(--kw-ink); color: var(--kw-paper); border-radius: 0; }

/* The base reading measure, restated at 0-2-0 for this edition. */
body.brand-ene-sk .wrap.wrap--narrow { max-width: 44rem; }

/* ---------- The sheet + the specification row ---------- */
.kw-sheet {
  max-width: var(--kw-sheet);
  margin-inline: auto;
}

.kw-row {
  display: grid;
  grid-template-columns: var(--kw-gutter-col) minmax(0, 1fr);
  column-gap: var(--kw-space-6);
  align-items: start;
}

.kw-row__label { padding-block-start: 0.35rem; }

.kw-label {
  margin: 0;
  font-family: var(--kw-mono);
  font-size: var(--kw-label-size);
  font-weight: 500;
  line-height: 1.45;
  letter-spacing: var(--kw-label-track);
  text-transform: uppercase;
  color: var(--kw-muted);
}

/* Hairline that ties the gutter label to its field. */
.kw-row__label::after {
  content: "";
  display: block;
  width: 2rem;
  height: 1px;
  margin-block-start: var(--kw-space-3);
  background: var(--kw-rule-firm);
}

.kw-sep {
  display: inline-block;
  width: 1px;
  height: 0.7em;
  margin-inline: 0.6em;
  vertical-align: -0.05em;
  background: var(--kw-rule-firm);
}

/* ---------- Masthead ---------- */
.kw-mast {
  background: var(--kw-field);
  border-block-end: 2px solid var(--kw-rule-heavy);
  padding-block: var(--kw-space-5) 0;
}

.kw-mast__id {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: var(--kw-space-4);
  padding-block-end: var(--kw-space-4);
}

.kw-mast__wordmark {
  display: inline-flex;
  align-items: baseline;
  gap: var(--kw-space-3);
  min-width: 0;
}
body.brand-ene-sk .kw-mast__wordmark { color: var(--kw-ink); text-decoration: none; }

.kw-mast__name {
  font-family: var(--kw-serif);
  font-size: clamp(1.5rem, 1.2rem + 1.2vw, 2rem);
  font-weight: 600;
  letter-spacing: -0.015em;
  line-height: 1;
}

.kw-mast__rule {
  display: none;
  flex: 1 1 3rem;
  height: 1px;
  background: var(--kw-rule-firm);
  transform: translateY(-0.3em);
}

.kw-mast__lang {
  display: inline-flex;
  align-items: center;
  gap: var(--kw-space-2);
  font-family: var(--kw-mono);
  font-size: var(--kw-label-size);
  letter-spacing: var(--kw-label-track);
}
.kw-mast__lang span[aria-current] { color: var(--kw-ink); font-weight: 600; }
body.brand-ene-sk .kw-mast__lang a { color: var(--kw-muted); }
body.brand-ene-sk .kw-mast__lang a:hover { color: var(--kw-accent-ink); }

.kw-mast__spec { border-block-start: 1px solid var(--kw-rule); padding-block: var(--kw-space-4); }
.kw-mast__spec .kw-row__label { padding-block-start: 0.15rem; }
.kw-mast__spec .kw-row__label::after { display: none; }

.kw-mast__tag { text-transform: none; letter-spacing: 0.02em; }

.kw-mast__navlist {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-wrap: wrap;
  gap: var(--kw-space-2) var(--kw-space-5);
  font-family: var(--kw-mono);
  font-size: 0.75rem;
  letter-spacing: 0.03em;
}
body.brand-ene-sk .kw-mast__navlist a { color: var(--kw-ink); }
body.brand-ene-sk .kw-mast__navlist a:hover { color: var(--kw-accent-ink); }
.kw-mast__navlist-aux a { color: var(--kw-muted) !important; }

/* ---------- Sections ---------- */
.kw-sec { padding-block: var(--kw-space-7); }
.kw-sec + .kw-sec { border-block-start: 1px solid var(--kw-rule); }

/* The wide card canvas. The masthead/footer/article keep the narrower
   .kw-sheet; the homepage grid needs room to breathe across three columns. */
.kw-canvas { max-width: var(--kw-canvas); margin-inline: auto; }

.kw-sec__head { margin-block-end: var(--kw-space-6); }
.kw-sec__lead {
  margin: var(--kw-space-3) 0 0;
  max-width: var(--kw-measure);
  font-size: 1rem;
  line-height: 1.7;
}

/* ---------- 1. Hero — energy-field band ---------- */
.kw-hero { padding-block: var(--kw-space-8) var(--kw-space-7); }

.kw-hero__grid {
  display: grid;
  grid-template-columns: minmax(0, 0.9fr) minmax(0, 1.1fr);
  gap: var(--kw-space-7);
  align-items: center;
}

.kw-hero__intro { min-width: 0; }
.kw-hero__eyebrow { margin: 0 0 var(--kw-space-4); }

.kw-doc-title {
  margin: 0 0 var(--kw-space-4);
  max-width: 22ch;
  font-size: clamp(1.9rem, 1.4rem + 2.4vw, 3rem);
  font-weight: 600;
  line-height: 1.08;
  letter-spacing: -0.015em;
}

.kw-doc-abstract {
  margin: 0;
  max-width: 46ch;
  color: var(--kw-muted);
  font-size: 1.0625rem;
  line-height: 1.6;
}

/* The field is the only "image" the anonymous edition owns: a drawn contour
   graphic, framed like a plate, never a photograph. */
.kw-hero__field {
  border: 1px solid var(--kw-rule-firm);
  background: var(--kw-field);
  line-height: 0;
}
.kw-hero__svg { display: block; width: 100%; height: auto; aspect-ratio: 1200 / 480; }

/* ---------- 2. Register — card grid ---------- */
.kw-grid {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: var(--kw-card-gap);
}

.kw-card {
  display: flex;
  flex-direction: column;
  min-width: 0;
  background: var(--kw-field);
  border: 1px solid var(--kw-rule);
  /* Square corners are an ESK signature — no radius, ever. */
  border-radius: 0;
  transition: border-color 140ms ease;
}
.kw-card:hover { border-color: var(--kw-rule-heavy); }

/* The featured lead spans two columns and stands the image beside the copy on
   wide viewports, so the newest analysis reads first and largest. */
.kw-card--lead {
  grid-column: span 2;
  display: grid;
  grid-template-columns: minmax(0, 1.15fr) minmax(0, 1fr);
  border-color: var(--kw-rule-firm);
}

.kw-card__media {
  display: block;
  overflow: hidden;
  aspect-ratio: 3 / 2;
  border-block-end: 1px solid var(--kw-rule);
  background: var(--kw-accent-wash);
  line-height: 0;
}
.kw-card--lead .kw-card__media {
  aspect-ratio: auto;
  border-block-end: 0;
  border-inline-end: 1px solid var(--kw-rule);
}
.kw-card__img,
.kw-card__tile {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.kw-card__img { filter: saturate(0.82) contrast(1.02); }

.kw-card__body {
  display: flex;
  flex-direction: column;
  gap: var(--kw-space-3);
  padding: var(--kw-space-5);
}
.kw-card--lead .kw-card__body { justify-content: center; gap: var(--kw-space-4); }

.kw-card__title {
  margin: 0;
  font-size: 1.125rem;
  font-weight: 600;
  line-height: 1.3;
}
.kw-card--lead .kw-card__title { font-size: clamp(1.4rem, 1.1rem + 1.4vw, 1.9rem); line-height: 1.18; }
body.brand-ene-sk .kw-card__title a { color: var(--kw-ink); }
body.brand-ene-sk .kw-card__title a:hover { color: var(--kw-accent-ink); text-decoration-thickness: 1px; }

.kw-card__dek {
  margin: 0;
  color: var(--kw-muted);
  font-size: 0.9375rem;
  line-height: 1.6;
}
.kw-card--lead .kw-card__dek { font-size: 1rem; line-height: 1.65; }

.kw-card__meta {
  margin: var(--kw-space-1) 0 0;
  font-family: var(--kw-mono);
  font-size: 0.6875rem;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--kw-muted);
}
.kw-card__rubric { color: var(--kw-accent-ink); }

.kw-empty { margin: 0; color: var(--kw-muted); }

/* ---------- 3. Specification — rubric mini-cards ---------- */
.kw-spec__grid {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: var(--kw-card-gap);
}

.kw-rubric {
  min-width: 0;
  padding: var(--kw-space-5);
  background: var(--kw-field);
  border: 1px solid var(--kw-rule);
  /* A heavy hairline at the head keys each rubric to the edition's ink — the
     card-scale echo of the datasheet's field rules. */
  border-block-start: 2px solid var(--kw-rule-heavy);
}

.kw-rubric__term {
  margin: 0 0 var(--kw-space-3);
  font-size: 1.0625rem;
  font-weight: 600;
  line-height: 1.3;
  letter-spacing: -0.005em;
}
body.brand-ene-sk .kw-rubric__term a { color: var(--kw-ink); }
body.brand-ene-sk .kw-rubric__term a:hover { color: var(--kw-accent-ink); }

.kw-rubric__body {
  margin: 0 0 var(--kw-space-4);
  color: var(--kw-muted);
  font-size: 0.9375rem;
  line-height: 1.6;
}

.kw-rubric__items {
  list-style: none;
  margin: 0;
  padding-block-start: var(--kw-space-3);
  border-block-start: 1px dotted var(--kw-rule-firm);
}
.kw-rubric__items li {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  justify-content: space-between;
  gap: var(--kw-space-2) var(--kw-space-4);
  padding-block: var(--kw-space-3);
}
.kw-rubric__items li + li { border-block-start: 1px dotted var(--kw-rule-firm); }
.kw-rubric__items a { font-size: 0.9375rem; line-height: 1.4; }
body.brand-ene-sk .kw-rubric__items a { color: var(--kw-ink); }
body.brand-ene-sk .kw-rubric__items a:hover { color: var(--kw-accent-ink); }

.kw-rubric__date {
  flex: 0 0 auto;
  font-family: var(--kw-mono);
  font-size: 0.6875rem;
  letter-spacing: 0.06em;
  color: var(--kw-muted);
  white-space: nowrap;
}

/* ---------- 4. Method + colophon — panels ---------- */
.kw-panel {
  padding: var(--kw-space-6);
  background: var(--kw-field);
  border: 1px solid var(--kw-rule);
  border-block-start: 2px solid var(--kw-rule-heavy);
}
.kw-panel__title {
  margin: 0 0 var(--kw-space-4);
  font-size: 1.25rem;
  font-weight: 600;
}

.kw-method__lead {
  margin: 0 0 var(--kw-space-5);
  max-width: var(--kw-measure);
  font-size: 1rem;
  line-height: 1.7;
}

.kw-sources {
  list-style: none;
  margin: 0 0 var(--kw-space-5);
  padding: 0;
  display: flex;
  flex-wrap: wrap;
  gap: var(--kw-space-2);
}
.kw-sources li {
  padding: 0.3rem 0.6rem;
  border: 1px solid var(--kw-rule-firm);
  background: var(--kw-field);
  font-family: var(--kw-mono);
  font-size: 0.6875rem;
  letter-spacing: 0.05em;
  color: var(--kw-ink);
}

.kw-method__more { margin: 0; }

.kw-link {
  font-family: var(--kw-mono);
  font-size: 0.75rem;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  border-block-end: 1px solid currentColor;
  padding-block-end: 0.15rem;
}
body.brand-ene-sk .kw-link:hover { text-decoration: none; color: var(--kw-accent-ink); }

/* ---------- 5. Colophon (inside .kw-panel) ---------- */
.kw-colophon__name {
  margin: 0 0 var(--kw-space-3);
  font-size: 1.25rem;
  font-weight: 600;
}

.kw-colophon__lead {
  margin: 0 0 var(--kw-space-5);
  max-width: var(--kw-measure);
  color: var(--kw-muted);
  font-size: 0.9375rem;
  line-height: 1.7;
}

.kw-colophon__links {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-wrap: wrap;
  gap: var(--kw-space-3) var(--kw-space-6);
}

/* ---------- 6. Contact panel ---------- */
.kw-contact__field {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: var(--kw-space-4);
  padding: var(--kw-space-5);
  background: var(--kw-accent-wash);
  border: 1px solid var(--kw-rule-firm);
}

.kw-contact__head {
  margin: 0;
  max-width: 34rem;
  font-size: 1.0625rem;
  font-weight: 600;
  line-height: 1.4;
}

.kw-btn {
  display: inline-block;
  padding: 0.7rem 1.4rem;
  background: var(--kw-accent);
  border: 1px solid var(--kw-accent);
  font-family: var(--kw-mono);
  font-size: 0.75rem;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  transition: background-color 140ms ease, border-color 140ms ease;
}
body.brand-ene-sk .kw-btn { color: #FFFFFF; text-decoration: none; }
body.brand-ene-sk .kw-btn:hover { background: var(--kw-accent-ink); border-color: var(--kw-accent-ink); color: #FFFFFF; }

/* ---------- Footer ---------- */
.kw-foot {
  background: var(--kw-field);
  border-block-start: 2px solid var(--kw-rule-heavy);
  padding-block: var(--kw-space-7) var(--kw-space-6);
}

.kw-foot__ident {
  padding-block-end: var(--kw-space-5);
  border-block-end: 1px solid var(--kw-rule);
}

.kw-foot__wordmark {
  display: inline-block;
  font-size: 1.25rem;
  font-weight: 600;
  letter-spacing: -0.015em;
}
body.brand-ene-sk .kw-foot__wordmark { color: var(--kw-ink); text-decoration: none; }

.kw-foot__tag {
  margin: var(--kw-space-2) 0 0;
  font-family: var(--kw-mono);
  font-size: var(--kw-label-size);
  letter-spacing: 0.06em;
  color: var(--kw-muted);
}

.kw-foot__trust {
  margin: var(--kw-space-3) 0 0;
  max-width: var(--kw-measure);
  color: var(--kw-muted);
  font-size: 0.9375rem;
  line-height: 1.6;
}

.kw-foot__cols {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: var(--kw-space-6);
  padding-block: var(--kw-space-6);
}

.kw-foot__col h2 { margin: 0 0 var(--kw-space-3); }
.kw-foot__col ul { list-style: none; margin: 0; padding: 0; }
.kw-foot__col li + li { margin-block-start: var(--kw-space-2); }
.kw-foot__col a { font-size: 0.9375rem; }
body.brand-ene-sk .kw-foot__col a { color: var(--kw-ink); }
body.brand-ene-sk .kw-foot__col a:hover { color: var(--kw-accent-ink); }

.kw-foot__base {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  justify-content: space-between;
  gap: var(--kw-space-3) var(--kw-space-5);
  padding-block-start: var(--kw-space-4);
  border-block-start: 1px solid var(--kw-rule);
  font-family: var(--kw-mono);
  font-size: 0.6875rem;
  letter-spacing: 0.05em;
  color: var(--kw-muted);
}
.kw-foot__base p { margin: 0; }

/* =========================================================================
 * Base-layer repaint — internal pages (article, archive, cards, pagination).
 * Scoped under .brand-ene-sk so the shared classes carry this edition's
 * palette and furniture without touching the base layer.
 * ====================================================================== */

body.brand-ene-sk .kicker,
body.brand-ene-sk .meta,
body.brand-ene-sk .breadcrumbs {
  font-family: var(--kw-mono);
  font-size: 0.6875rem;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--kw-muted);
}
body.brand-ene-sk .breadcrumbs { text-transform: none; letter-spacing: 0.03em; }
body.brand-ene-sk .breadcrumbs ol { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: 0.5rem; }
body.brand-ene-sk .breadcrumbs li + li::before { content: "/"; margin-inline-end: 0.5rem; color: var(--kw-rule-firm); }

body.brand-ene-sk .article-title {
  font-size: clamp(1.7rem, 1.3rem + 2vw, 2.6rem);
  font-weight: 600;
  line-height: 1.14;
  margin-block: var(--kw-space-3) var(--kw-space-4);
}
body.brand-ene-sk .article-dek {
  max-width: var(--kw-measure);
  color: var(--kw-muted);
  font-size: 1.0625rem;
  line-height: 1.6;
}

body.brand-ene-sk .article-body {
  font-size: 1.0625rem;
  line-height: 1.72;
}
body.brand-ene-sk .article-body h2 {
  margin-block: var(--kw-space-7) var(--kw-space-3);
  padding-block-start: var(--kw-space-3);
  border-block-start: 1px solid var(--kw-rule);
  font-size: 1.375rem;
}
body.brand-ene-sk .article-body h3 { margin-block: var(--kw-space-6) var(--kw-space-2); font-size: 1.125rem; }
body.brand-ene-sk .article-body blockquote {
  margin: var(--kw-space-6) 0;
  padding-inline-start: var(--kw-space-4);
  border-inline-start: 2px solid var(--kw-accent);
  color: var(--kw-muted);
  font-style: normal;
}
body.brand-ene-sk .article-body table {
  width: 100%;
  border-collapse: collapse;
  font-family: var(--kw-mono);
  font-size: 0.8125rem;
}
body.brand-ene-sk .article-body th,
body.brand-ene-sk .article-body td {
  padding: var(--kw-space-2) var(--kw-space-3);
  border-block-end: 1px solid var(--kw-rule);
  text-align: start;
}
body.brand-ene-sk .article-body th { border-block-end-color: var(--kw-rule-heavy); font-weight: 600; }

body.brand-ene-sk .byline {
  display: flex;
  align-items: center;
  gap: var(--kw-space-3);
  padding-block: var(--kw-space-3);
  border-block: 1px solid var(--kw-rule);
}
body.brand-ene-sk .byline__avatar {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 2.25rem;
  height: 2.25rem;
  border: 1px solid var(--kw-rule-firm);
  background: var(--kw-field);
  font-family: var(--kw-mono);
  font-size: 0.6875rem;
  letter-spacing: 0.06em;
  color: var(--kw-muted);
}
body.brand-ene-sk .byline__name { font-family: var(--kw-serif); font-size: 0.9375rem; font-weight: 600; }

body.brand-ene-sk .translation-note {
  margin-block: var(--kw-space-4);
  padding: var(--kw-space-3);
  border: 1px solid var(--kw-rule);
  background: var(--kw-field);
  font-size: 0.875rem;
}
body.brand-ene-sk .translation-note__lead {
  font-family: var(--kw-mono);
  font-size: 0.6875rem;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--kw-muted);
  margin-inline-end: var(--kw-space-2);
}

body.brand-ene-sk .card {
  background: var(--kw-field);
  border: 1px solid var(--kw-rule);
  border-radius: 0;
  box-shadow: none;
  overflow: hidden;
}
body.brand-ene-sk .card h3 { font-size: 1.0625rem; font-weight: 600; }
body.brand-ene-sk .card img { filter: saturate(0.82) contrast(1.02); }

body.brand-ene-sk .section-head h2 {
  font-family: var(--kw-mono);
  font-size: var(--kw-label-size);
  font-weight: 500;
  letter-spacing: var(--kw-label-track);
  text-transform: uppercase;
  color: var(--kw-muted);
}

body.brand-ene-sk .pagination a,
body.brand-ene-sk .pagination span {
  font-family: var(--kw-mono);
  font-size: 0.75rem;
  letter-spacing: 0.06em;
}

/* ---------- Responsive ---------- */
@media (max-width: 64rem) {
  .kw-hero__grid { gap: var(--kw-space-6); }
  /* Two columns on tablet; the featured lead keeps its full-width span. */
  .kw-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .kw-card--lead { grid-column: span 2; }
}

@media (max-width: 60rem) {
  .brand-ene-sk { --kw-gutter-col: 9.5rem; }
}

@media (max-width: 48rem) {
  .kw-row {
    grid-template-columns: minmax(0, 1fr);
    row-gap: var(--kw-space-4);
  }
  .kw-row__label { padding-block-start: 0; }
  .kw-row__label::after { display: none; }
  .kw-label {
    padding-block-end: var(--kw-space-2);
    border-block-end: 1px solid var(--kw-rule-firm);
  }
  .kw-mast__spec .kw-label { border-block-end: 0; padding-block-end: 0; }
  /* The hero eyebrow is a standalone label, not a datasheet field header, so it
     keeps neither the closing hairline nor the field padding. */
  .kw-hero__eyebrow.kw-label { border-block-end: 0; padding-block-end: 0; }

  /* The hero stacks: copy first, field beneath. */
  .kw-hero { padding-block: var(--kw-space-6) var(--kw-space-6); }
  .kw-hero__grid { grid-template-columns: minmax(0, 1fr); gap: var(--kw-space-5); }

  /* The lead card unstacks into a single column like the others. */
  .kw-card--lead {
    grid-template-columns: minmax(0, 1fr);
  }
  .kw-card--lead .kw-card__media {
    aspect-ratio: 3 / 2;
    border-inline-end: 0;
    border-block-end: 1px solid var(--kw-rule);
  }

  .kw-spec__grid { grid-template-columns: minmax(0, 1fr); }

  .kw-foot__cols { grid-template-columns: minmax(0, 1fr); gap: var(--kw-space-5); }
  .kw-contact__field { align-items: flex-start; }
}

@media (max-width: 34rem) {
  .kw-grid { grid-template-columns: minmax(0, 1fr); }
  .kw-card--lead { grid-column: span 1; }
}

@media (max-width: 30rem) {
  .kw-mast { padding-block-start: var(--kw-space-4); }
  .kw-mast__id { flex-wrap: wrap; gap: var(--kw-space-2); }
  .kw-mast__navlist { gap: var(--kw-space-2) var(--kw-space-4); font-size: 0.6875rem; }
  .kw-sec { padding-block: var(--kw-space-6); }
  .kw-panel { padding: var(--kw-space-5); }
  .kw-contact__field { padding: var(--kw-space-4); }
  .kw-btn { width: 100%; text-align: center; }
}

@media (prefers-reduced-motion: reduce) {
  body.brand-ene-sk *,
  body.brand-ene-sk *::before,
  body.brand-ene-sk *::after {
    transition-duration: 0.01ms !important;
    animation-duration: 0.01ms !important;
  }
}

/* =========================================================================
 * ARTICLE — the "specification sheet" anatomy (template-parts/single-kw.php).
 *
 * The article reuses the homepage device rather than inventing article
 * furniture: .kw-row splits into a standing left label gutter and a right
 * field. What is new here is that the gutter is LOAD-BEARING — it carries the
 * breadcrumb path and the document's mono fields (rubric, published, updated)
 * down the whole identification block, which is the ESK-only structural mark.
 *
 * The related list is a specification list: hairline-separated rows, no
 * counters, no dates, no thumbnails; the rubric is the only meta.
 * ====================================================================== */

.kw-art { display: block; }

/* ---------- 1. Identification block ---------- */
.kw-art__head {
  padding-block: var(--kw-space-6) var(--kw-space-5);
  border-block-end: 2px solid var(--kw-rule-heavy);
}

.kw-art__idrow { align-items: start; }

/* The gutter reads top-down as a field stack, so the breadcrumb path is set
   vertically rather than as a wrapping inline trail. */
.kw-art__gutter { padding-block-start: 0.3rem; }

body.brand-ene-sk .kw-art__gutter .breadcrumbs ol {
  flex-direction: column;
  gap: var(--kw-space-1);
  padding-block-end: var(--kw-space-3);
  border-block-end: 1px solid var(--kw-rule);
}
body.brand-ene-sk .kw-art__gutter .breadcrumbs li + li::before {
  content: "└";
  margin-inline-end: 0.4em;
  color: var(--kw-rule-firm);
}
body.brand-ene-sk .kw-art__gutter .breadcrumbs a { color: var(--kw-muted); }
body.brand-ene-sk .kw-art__gutter .breadcrumbs a:hover { color: var(--kw-accent-ink); }
body.brand-ene-sk .kw-art__gutter .breadcrumbs [aria-current] { color: var(--kw-ink); }

.kw-art__field {
  margin-block-start: var(--kw-space-3);
  text-transform: none;
  letter-spacing: 0.04em;
}
.kw-art__field--rubric { text-transform: uppercase; letter-spacing: var(--kw-label-track); color: var(--kw-accent-ink); }

.kw-art__id { min-width: 0; }
body.brand-ene-sk .kw-art__id .article-title { margin-block-start: 0; }
body.brand-ene-sk .kw-art__id .article-dek { margin-block-end: var(--kw-space-5); }

/* The gutter already states published / updated / rubric, so the core byline
   keeps only its attribution line — one label per fact, per the playbook. */
.kw-art__byline .byline { border-block-end: 0; }
.kw-art__byline .byline .meta { display: none; }

/* ---------- 2. Plate ---------- */
.kw-art__plate { margin: 0; padding-block: var(--kw-space-6); }
.kw-art__plate-media { line-height: 0; }
.kw-art__plate-media img {
  display: block;
  width: 100%;
  height: auto;
  border: 1px solid var(--kw-rule-firm);
  background: var(--kw-field);
  filter: saturate(0.82) contrast(1.02);
}
.kw-art__plate-cap {
  margin: var(--kw-space-3) 0 0;
  font-family: var(--kw-mono);
  font-size: 0.6875rem;
  line-height: 1.6;
  letter-spacing: 0.04em;
  color: var(--kw-muted);
}

/* ---------- 3. Reading column ---------- */
.kw-art__reading { padding-block: var(--kw-space-6) var(--kw-space-7); }

/* Wide content inside authored bodies scrolls in its own box; the page never
   scrolls sideways at 390px. */
body.brand-ene-sk .kw-art__reading .article-body pre,
body.brand-ene-sk .kw-art__reading .article-body table { display: block; max-width: 100%; overflow-x: auto; }
body.brand-ene-sk .kw-art__reading .article-body img { max-width: 100%; height: auto; }

/* ---------- 4. Source register ---------- */
.kw-art__sources {
  padding-block: var(--kw-space-6);
  border-block-start: 1px solid var(--kw-rule);
}
.kw-art__sources .kw-sources { margin-block-end: var(--kw-space-4); }

.kw-art__disclaimer {
  margin: 0;
  max-width: var(--kw-measure);
  color: var(--kw-muted);
  font-size: 0.875rem;
  line-height: 1.65;
}

/* ---------- 5. Related — unnumbered specification list ---------- */
.kw-art__related {
  padding-block: var(--kw-space-6) var(--kw-space-8);
  border-block-start: 1px solid var(--kw-rule);
}

.kw-art__rel {
  list-style: none;
  margin: 0;
  padding: 0;
}

.kw-art__rel-item {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  justify-content: space-between;
  gap: var(--kw-space-1) var(--kw-space-5);
  padding-block: var(--kw-space-4);
  border-block-start: 1px solid var(--kw-rule);
}
.kw-art__rel-item:first-child { border-block-start: 0; padding-block-start: 0; }

.kw-art__rel-title {
  margin: 0;
  flex: 1 1 20rem;
  min-width: 0;
  font-family: var(--kw-serif);
  font-size: 1.0625rem;
  font-weight: 600;
  line-height: 1.35;
  letter-spacing: -0.005em;
}
body.brand-ene-sk .kw-art__rel-title a { color: var(--kw-ink); }
body.brand-ene-sk .kw-art__rel-title a:hover { color: var(--kw-accent-ink); text-decoration-thickness: 1px; }

.kw-art__rel-meta {
  margin: 0;
  flex: 0 0 auto;
  font-family: var(--kw-mono);
  font-size: var(--kw-label-size);
  letter-spacing: var(--kw-label-track);
  text-transform: uppercase;
  color: var(--kw-accent-ink);
}

/* ---------- Article responsive ---------- */
@media (max-width: 48rem) {
  /* The row is already one column here; the gutter becomes a header band with a
     single closing hairline instead of one per field. */
  .kw-art__gutter {
    padding-block-end: var(--kw-space-3);
    border-block-end: 1px solid var(--kw-rule-firm);
  }
  .kw-art__gutter .kw-label {
    padding-block-end: 0;
    border-block-end: 0;
  }
  body.brand-ene-sk .kw-art__gutter .breadcrumbs ol {
    flex-direction: row;
    flex-wrap: wrap;
    gap: 0.4rem;
    padding-block-end: var(--kw-space-2);
    border-block-end: 0;
  }
  body.brand-ene-sk .kw-art__gutter .breadcrumbs li + li::before { content: "/"; }

  .kw-art__field {
    display: inline-block;
    margin-block-start: var(--kw-space-2);
    margin-inline-end: var(--kw-space-4);
  }

  .kw-art__rel-item { display: block; }
  .kw-art__rel-meta { margin-block-start: var(--kw-space-2); }
}

@media (max-width: 30rem) {
  .kw-art__head { padding-block-start: var(--kw-space-5); }
  .kw-art__plate { padding-block: var(--kw-space-5); }
  .kw-art__reading { padding-block: var(--kw-space-5) var(--kw-space-6); }
  .kw-art__related { padding-block-end: var(--kw-space-7); }
}

/* ---------- a11y gate fixes (2026-07-20) ----------------------------------
 * Core token --nn-gray (#6E7A88) measures 4.37:1 on white and 4.18:1 on the
 * cream strip — both under the 4.5:1 AA floor for body-size text. It is a
 * base-layer token, so it is repainted HERE rather than edited in the base
 * stylesheet, which this file is not the right place to change.
 * #5F6B7A -> 5.42:1 on white, 4.76:1 on cream: clears both.
 * -------------------------------------------------------------------------- */
.brand-ene-sk { --nn-gray: #5F6B7A; }

/* ---------- energy-field mark + footprint card tiles (2026-07-21) -----------
 * The edition's own inline mark (nn_kw_logo), and the generated contour tiles
 * that replace the shared raster card placeholder on archives/singles — the
 * mockup-leak fix. Same "energy field" vocabulary as the homepage; kw- only. */
.kw-logo { display: block; inline-size: 24px; block-size: auto; flex: none; align-self: center; overflow: visible; }
.kw-logo__line { fill: none; }
.brand-ene-sk .kw-logo__line { stroke: var(--kw-accent); stroke-width: 3; }
.brand-ene-sk .kw-logo__line--strong { stroke: var(--kw-accent-ink); stroke-width: 3.4; }
.kw-foot__logo { inline-size: 20px; }

/* Footer wordmark now carries the mark beside the name. */
.kw-foot__wordmark { display: inline-flex; align-items: center; gap: var(--kw-space-3); }

/* Archive / category / search cards (shared core .card anatomy): the energy edition
 * draws its contour tile in the media slot instead of the raster fallback. The core
 * .card__media has no intrinsic height, so give it the 3:2 box the tile fills. */
body.brand-ene-sk .card__media { aspect-ratio: 3 / 2; overflow: hidden; background: var(--kw-accent-wash); line-height: 0; }
body.brand-ene-sk .card__media .kw-card__tile { width: 100%; height: 100%; display: block; }

/* Article opening plate when the post has no featured image: the tile at reading width. */
.brand-ene-sk .kw-art__plate--tile .kw-art__plate-media { background: var(--kw-accent-wash); line-height: 0; }
.brand-ene-sk .kw-art__plate--tile .kw-card__tile { width: 100%; height: auto; display: block; }

/* ============================================================================
 * Editorial contact form — ep-contact (shared Energypoint DOM, ESK skin)
 * ----------------------------------------------------------------------------
 * Markup: template-parts/contact-form-energy.php (gated in via
 * template-parts/page-extras-energy.php). The SAME DOM is painted by
 * brand-ene-ltd.css in the vt- idiom; here it is the ESK "specification sheet"
 * idiom on kw- tokens. This is NOT the Roksolana rk- form — the two share only the
 * POST contract to inc/contact.php. All selectors are scoped under .brand-ene-sk,
 * so nothing here reaches another edition.
 * ========================================================================== */
.brand-ene-sk .ep-contact {
  margin-block-start: var(--kw-space-8);
  border-block-start: 1px solid var(--kw-rule-heavy);
  padding-block-start: var(--kw-space-6);
}
/* Pure PRG scroll target (handler hard-codes #rk-contact-form): zero-box, no ink. */
.brand-ene-sk .ep-contact__anchor { display: block; block-size: 0; overflow: hidden; }
.brand-ene-sk .ep-contact__inner { max-inline-size: var(--kw-measure); }
.brand-ene-sk .ep-contact__title {
  font-family: var(--kw-serif);
  font-size: 1.5rem;
  line-height: 1.2;
  margin: 0 0 var(--kw-space-3);
  color: var(--kw-ink);
}
.brand-ene-sk .ep-contact__intro { color: var(--kw-muted); margin: 0 0 var(--kw-space-5); }

/* Status banner (aria-live). --error uses a deep red that clears AA on paper/field. */
.brand-ene-sk .ep-contact__status {
  background: var(--kw-field);
  border: 1px solid var(--kw-rule-firm);
  border-inline-start-width: 3px;
  padding: var(--kw-space-3) var(--kw-space-4);
  margin-block-end: var(--kw-space-5);
}
.brand-ene-sk .ep-contact__status p { margin: 0; }
.brand-ene-sk .ep-contact__status--ok { border-inline-start-color: var(--kw-accent); }
.brand-ene-sk .ep-contact__status--error { border-inline-start-color: #B22C1F; }

/* Fields */
.brand-ene-sk .ep-field { margin-block-end: var(--kw-space-4); }
.brand-ene-sk .ep-field__label {
  display: block;
  font-family: var(--kw-mono);
  font-size: var(--kw-label-size);
  letter-spacing: var(--kw-label-track);
  text-transform: uppercase;
  color: var(--kw-muted);
  margin-block-end: var(--kw-space-2);
}
.brand-ene-sk .ep-field__control {
  inline-size: 100%;
  max-inline-size: 100%;
  box-sizing: border-box;
  font-family: var(--kw-serif);
  font-size: 1rem;
  line-height: 1.5;
  color: var(--kw-ink);
  background: var(--kw-field);
  border: 1px solid var(--kw-rule-firm);
  border-radius: 0;
  padding: var(--kw-space-3);
}
.brand-ene-sk textarea.ep-field__control { min-block-size: 8rem; resize: vertical; }
.brand-ene-sk .ep-field__control:focus-visible {
  outline: 2px solid var(--kw-accent);
  outline-offset: 2px;
  border-color: var(--kw-accent);
}
.brand-ene-sk .ep-field__control[aria-invalid="true"] { border-color: #B22C1F; }

/* Consent checkbox row */
.brand-ene-sk .ep-field--check {
  display: grid;
  grid-template-columns: auto 1fr;
  gap: var(--kw-space-2) var(--kw-space-3);
  align-items: start;
}
.brand-ene-sk .ep-field--check .ep-field__check {
  margin-block-start: 0.2em;
  inline-size: 1.1rem;
  block-size: 1.1rem;
  accent-color: var(--kw-accent);
}
.brand-ene-sk .ep-field--check label { color: var(--kw-muted); font-size: 0.9375rem; line-height: 1.5; }
.brand-ene-sk .ep-field--check .ep-field__err { grid-column: 1 / -1; }
.brand-ene-sk .ep-field__err { display: block; margin-block-start: var(--kw-space-2); color: #B22C1F; font-size: 0.875rem; }
.brand-ene-sk .ep-req { color: var(--kw-accent-ink); }

/* Submit — the ESK primary-button idiom, kept local so the form owns its look. */
.brand-ene-sk .ep-contact__actions { margin-block-start: var(--kw-space-5); }
.brand-ene-sk .ep-contact__submit {
  display: inline-block;
  padding: 0.7rem 1.4rem;
  background: var(--kw-accent);
  border: 1px solid var(--kw-accent);
  color: #FFFFFF;
  font-family: var(--kw-mono);
  font-size: 0.75rem;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  cursor: pointer;
  transition: background-color 140ms ease, border-color 140ms ease;
}
.brand-ene-sk .ep-contact__submit:hover { background: var(--kw-accent-ink); border-color: var(--kw-accent-ink); }
.brand-ene-sk .ep-contact__submit:focus-visible { outline: 2px solid var(--kw-accent); outline-offset: 2px; }

/* Honeypot — off-screen, non-focusable, hidden from AT (aria-hidden in markup). */
.brand-ene-sk .ep-hp { position: absolute; left: -9999px; width: 1px; height: 1px; overflow: hidden; }
