/* GENERATED by lib/zine_print.py from zine/ds/bundle.css + zine/zine.css + zine/print.css + lib/zine_vector.py. Do not edit. */
@import url("https://fonts.googleapis.com/css2?family=Saira+Condensed:wght@600;700;800&family=PT+Serif:ital,wght@0,400;0,700;1,400&family=Ubuntu+Mono:wght@400;700&display=swap");

/* Sacred Wire 28 · Internal Document
   Component classes for the A5 booklets. Every value reads a token from tokens.json
   (compiled to CSS custom properties); the fallback after each var() is the same value,
   so this file also works standalone in the booklet generator. */

.sw-doc {
  font-family: var(--font-serif, "PT Serif", Georgia, serif);
  font-size: 13px;
  line-height: 1.38;
  color: var(--ink, #000000);
  background: var(--paper, #ffffff);
  -webkit-print-color-adjust: exact;
  print-color-adjust: exact;
}
.sw-doc p { margin: 0 0 var(--space-3, 10px) 0; text-wrap: pretty; }
.sw-doc h1, .sw-doc h2, .sw-doc h3 { text-wrap: balance; }

/* ---------- Page furniture ---------- */

.sw-page {
  position: relative;
  box-sizing: border-box;
  width: 559px;
  height: 794px;
  display: flex;
  flex-direction: column;
  overflow: hidden;
  background: var(--paper, #ffffff);
  padding: var(--page-top, 32px) var(--page-inner, 40px) var(--page-bottom, 30px) var(--page-outer, 54px);
}
.sw-page--right {
  padding: var(--page-top, 32px) var(--page-outer, 54px) var(--page-bottom, 30px) var(--page-inner, 40px);
}

.sw-runhead {
  display: flex;
  justify-content: space-between;
  gap: 12px;
  font-family: var(--font-display, "Saira Condensed", sans-serif);
  font-weight: 600;
  font-size: 12px;
  letter-spacing: 1.5px;
  text-transform: uppercase;
  padding-bottom: 4px;
  border-bottom: var(--stroke-hair, 1px) solid var(--ink, #000000);
}

.sw-footer {
  margin-top: auto;
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  border-top: var(--stroke-hair, 1px) solid var(--ink, #000000);
  padding-top: 4px;
  height: 25px;
  box-sizing: border-box;
  flex-shrink: 0;
}
.sw-folio {
  font-family: var(--font-display, "Saira Condensed", sans-serif);
  font-weight: 800;
  font-size: 18px;
  line-height: 1;
  display: inline-flex;
  align-items: center;
  gap: 5px;
}
.sw-page .sw-folio::before {
  content: "";
  width: 22px;
  height: 7px;
  
}
.sw-page:not(.sw-page--right) .sw-folio { flex-direction: row-reverse; }
.sw-formline, .sw-meta {
  font-family: var(--font-mono, "Ubuntu Mono", monospace);
  font-size: 12px;
  letter-spacing: 0.5px;
}

.sw-tab {
  position: absolute;
  width: var(--tab-width, 20px);
  height: var(--tab-height, 78px);
  top: calc(110px + (var(--tab-n, 1) - 1) * 86px);
  background: var(--ink, #000000);
  color: var(--paper, #ffffff);
  display: flex;
  align-items: center;
  justify-content: center;
  font-family: var(--font-display, "Saira Condensed", sans-serif);
  font-weight: 700;
  font-size: 12px;
  letter-spacing: 2px;
  text-transform: uppercase;
  white-space: nowrap;
}
.sw-tab span { writing-mode: vertical-rl; }
.sw-tab--left { left: var(--print-safe, 24px); }
.sw-tab--left span { transform: rotate(180deg); }
.sw-tab--right { right: var(--print-safe, 24px); }

/* ---------- Openers ---------- */

.sw-memo {
  border: var(--stroke-frame, 1.5px) solid var(--ink, #000000);
  margin: var(--space-4, 14px) 0;
}
.sw-memo__bar {
  background: var(--ink, #000000);
  color: var(--paper, #ffffff);
  font-family: var(--font-display, "Saira Condensed", sans-serif);
  font-weight: 700;
  font-size: 13px;
  letter-spacing: 3px;
  padding: 3px 8px;
}
.sw-memo__fields {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  column-gap: 12px;
  padding: 5px 8px;
  font-family: var(--font-mono, "Ubuntu Mono", monospace);
  font-size: 12px;
  line-height: 1.5;
}
.sw-memo__fields b { font-weight: 700; }

.sw-chapter {
  display: flex;
  align-items: flex-end;
  gap: 12px;
  margin: var(--space-4, 14px) 0;
}
.sw-numeral {
  font-family: var(--font-display, "Saira Condensed", sans-serif);
  font-weight: 800;
  font-size: 56px;
  line-height: 0.8;
  color: var(--ink, #000000);
  flex: 0 0 auto;
  padding-right: 12px;
  border-right: var(--stroke-heading, 2px) solid var(--ink, #000000);
}
.sw-chapter__title {
  margin: 0;
  font-family: var(--font-display, "Saira Condensed", sans-serif);
  font-weight: 800;
  font-size: 42px;
  line-height: 0.88;
  letter-spacing: 1px;
  text-transform: uppercase;
}

.sw-h2 {
  margin: var(--space-4, 14px) 0 var(--space-2, 6px) 0;
  padding-bottom: 3px;
  border-bottom: var(--stroke-heading, 2px) solid var(--ink, #000000);
  font-family: var(--font-display, "Saira Condensed", sans-serif);
  font-weight: 700;
  font-size: 20px;
  line-height: 1.15;
  letter-spacing: 1px;
  text-transform: uppercase;
  break-after: avoid;
  clear: both;
  display: flex;
  align-items: center;
  gap: 7px;
}

.sw-lead {
  font-size: 12px;
  font-style: normal;
  line-height: 1.3;
  margin: 0 0 var(--space-2, 6px) 0;
}

/* ---------- Rules text ---------- */

.sw-kw, .sw-prose code, .sw-doc code, .sw-card code {
  word-spacing: -0.25em;
  color: inherit;
  font-family: var(--font-mono, "Ubuntu Mono", monospace);
  font-weight: 700;
  font-size: 0.95em;
  border-bottom: var(--stroke-hair, 1px) dotted var(--ink, #000000);
  background: none;
  padding: 0;
  white-space: nowrap;
}

.sw-xref {
  color: var(--ink, #000000);
  text-decoration: none;
}

.sw-procedure {
  position: relative;
  border: var(--stroke-frame, 1.5px) solid var(--ink, #000000);
  padding: 0 12px 10px 12px;
  margin: var(--space-4, 14px) 5px var(--space-4, 14px) 0;
  background: var(--paper, #ffffff);
  break-inside: avoid;
}
/* Hatched offset shadow: depth without a solid black slab. */
.sw-procedure::before,
.sw-procedure::after {
  content: "";
  position: absolute;
  
  pointer-events: none;
}
.sw-procedure::before { top: 4px; right: -6.5px; width: 5px; bottom: -6.5px; }
.sw-procedure::after { left: 4px; right: -1.5px; bottom: -6.5px; height: 5px; }
.sw-procedure__tab {
  display: inline-block;
  margin-top: -1px;
  background: var(--ink, #000000);
  color: var(--paper, #ffffff);
  font-family: var(--font-display, "Saira Condensed", sans-serif);
  font-weight: 700;
  font-size: 12px;
  letter-spacing: 2px;
  padding: 3px 8px;
  text-transform: uppercase;
}
.sw-procedure ol {
  list-style: none;
  counter-reset: sw-step;
  margin: 8px 0 0 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 5px;
}
.sw-procedure li {
  counter-increment: sw-step;
  position: relative;
  padding-left: 27px;
}
.sw-procedure li::before {
  content: counter(sw-step);
  position: absolute;
  left: 0;
  top: 1px;
  width: 18px;
  height: 18px;
  background: var(--ink, #000000);
  color: var(--paper, #ffffff);
  font-family: var(--font-display, "Saira Condensed", sans-serif);
  font-weight: 700;
  font-size: 12px;
  line-height: 18px;
  text-align: center;
}

.sw-callouts {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 12px;
  margin: var(--space-4, 14px) 0;
}
.sw-callout {
  border-top: var(--stroke-bar, 3px) solid var(--ink, #000000);
  padding-top: 5px;
  font-size: 12.5px;
  line-height: 1.38;
  break-inside: avoid;
}
.sw-callout__title {
  font-family: var(--font-display, "Saira Condensed", sans-serif);
  font-weight: 700;
  font-size: 13px;
  letter-spacing: 1.5px;
  text-transform: uppercase;
}

.sw-note {
  border: var(--stroke-frame, 1.5px) solid var(--ink, #000000);
  border-top-width: var(--stroke-bar, 3px);
  padding: 4px 8px 5px;
  margin: 8px 0 4px;
  font-size: 12.5px;
  line-height: 1.38;
  break-inside: avoid;
}
.sw-note__title {
  font-family: var(--font-display, "Saira Condensed", sans-serif);
  font-weight: 700;
  font-size: 13px;
  letter-spacing: 1.5px;
  text-transform: uppercase;
}
.sw-note p { margin: 2px 0 0; }

.sw-notice {
  display: flex;
  gap: 10px;
  align-items: flex-start;
  margin: var(--space-4, 14px) 0;
  border-top: var(--stroke-bar, 3px) double var(--ink, #000000);
  padding-top: 6px;
  break-inside: avoid;
}
.sw-notice--boxed {
  border: var(--stroke-hair, 1px) solid var(--ink, #000000);
  padding: 8px 10px;
}
.sw-notice--intercept {
  display: block;
  border: var(--stroke-hair, 1px) dashed var(--ink, #000000);
  padding: 7px 10px;
}
.sw-notice__label {
  flex: 0 0 auto;
  border: var(--stroke-frame, 1.5px) solid var(--ink, #000000);
  font-family: var(--font-display, "Saira Condensed", sans-serif);
  font-weight: 700;
  font-size: 11.5px;
  letter-spacing: 2px;
  padding: 1px 5px;
  text-transform: uppercase;
}
.sw-notice--intercept .sw-notice__label {
  display: block;
  border: 0;
  padding: 0;
  font-family: var(--font-mono, "Ubuntu Mono", monospace);
  font-weight: 400;
  font-size: 12px;
  letter-spacing: 1px;
}
.sw-notice--intercept .sw-notice__label::before { content: "\258C"; }
.sw-notice__quote {
  margin: 0;
  font-size: 12.5px;
  line-height: 1.35;
  font-style: italic;
}
.sw-notice--intercept .sw-notice__quote { font-size: 14px; margin-top: 3px; }
.sw-notice__source {
  display: block;
  font-family: var(--font-mono, "Ubuntu Mono", monospace);
  font-size: 12px;
  font-style: normal;
  margin-top: 2px;
  text-transform: uppercase;
}

.sw-redact {
  background: var(--ink, #000000);
  color: var(--ink, #000000);
  padding: 0 2px;
  -webkit-box-decoration-break: clone;
  box-decoration-break: clone;
}

/* ---------- Tables ---------- */

.sw-ledger {
  width: 100%;
  border-collapse: collapse;
  font-size: 12px;
  line-height: 1.25;
  margin: var(--space-2, 6px) 0 var(--space-4, 14px) 0;
  break-inside: avoid;
}
.sw-ledger th {
  background: var(--ink, #000000);
  color: var(--paper, #ffffff);
  font-family: var(--font-display, "Saira Condensed", sans-serif);
  font-weight: 600;
  font-size: 12px;
  letter-spacing: 1px;
  text-align: left;
  text-transform: uppercase;
  padding: 3px 5px;
}
.sw-ledger td {
  border-bottom: var(--stroke-hair, 1px) solid var(--rule-row, #9e9e9e);
  padding: 2px 5px;
  vertical-align: top;
}
.sw-ledger th.sw-r, .sw-ledger td.sw-r { text-align: right; }
.sw-ledger th.sw-c, .sw-ledger td.sw-c { text-align: center; }
.sw-ledger td.sw-roll, .sw-ledger tbody td:first-child.sw-roll {
  background: var(--tint, #ececec);
  font-family: var(--font-mono, "Ubuntu Mono", monospace);
  font-weight: 700;
  text-align: center;
  width: 22px;
  white-space: nowrap;
}
.sw-ledger td.sw-name {
  font-family: var(--font-display, "Saira Condensed", sans-serif);
  font-weight: 700;
  font-size: 13px;
  white-space: nowrap;
}
.sw-ledger td.sw-dmg, .sw-ledger td.sw-dice {
  font-family: var(--font-mono, "Ubuntu Mono", monospace);
  font-weight: 700;
  white-space: nowrap;
}
.sw-ledger td.sw-dice { text-align: center; }
.sw-ledger tr.sw-tier td {
  background: var(--paper, #ffffff);
  border-bottom: var(--stroke-frame, 1.5px) solid var(--ink, #000000);
  font-family: var(--font-display, "Saira Condensed", sans-serif);
  font-weight: 700;
  font-size: 12px;
  letter-spacing: 2px;
  padding: 6px 5px 2px 5px;
  text-transform: uppercase;
}
.sw-unit {
  font-family: var(--font-display, "Saira Condensed", sans-serif);
  font-weight: 700;
  font-size: 14px;
  line-height: 1.1;
}
.sw-unit__weapon { font-size: 12px; color: var(--ink-soft, #333333); }

.sw-tag {
  display: inline-block;
  border: var(--stroke-hair, 1px) solid var(--ink, #000000);
  font-family: var(--font-mono, "Ubuntu Mono", monospace);
  font-weight: 700;
  font-size: 12px;
  line-height: 1;
  padding: 1px 3px;
  text-transform: uppercase;
}
.sw-taglegend {
  border: var(--stroke-hair, 1px) solid var(--ink, #000000);
  padding: 6px 8px;
  margin: var(--space-3, 10px) 0;
  break-inside: avoid;
}
.sw-taglegend__title {
  font-family: var(--font-display, "Saira Condensed", sans-serif);
  font-weight: 700;
  font-size: 12px;
  letter-spacing: 2px;
  text-transform: uppercase;
}
.sw-taglegend__items {
  margin-top: 5px;
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  row-gap: 4px;
  font-size: 12px;
}

/* ---------- Fields, forms, dossiers ---------- */

.sw-fields {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  border: var(--stroke-frame, 1.5px) solid var(--ink, #000000);
  margin: var(--space-3, 10px) 0;
}
.sw-fields--4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.sw-field {
  padding: 4px 7px;
  border-right: var(--stroke-hair, 1px) solid var(--ink, #000000);
  border-bottom: var(--stroke-hair, 1px) solid var(--ink, #000000);
  margin-bottom: -1px;
}
.sw-fields .sw-field:nth-child(2n) { border-right: 0; }
.sw-fields--4 .sw-field:nth-child(2n) { border-right: var(--stroke-hair, 1px) solid var(--ink, #000000); }
.sw-fields--4 .sw-field:nth-child(4n) { border-right: 0; }
.sw-field__label {
  display: block;
  font-family: var(--font-mono, "Ubuntu Mono", monospace);
  font-size: 12px;
  text-transform: uppercase;
}
.sw-field__value {
  display: block;
  font-family: var(--font-display, "Saira Condensed", sans-serif);
  font-weight: 700;
  font-size: 14px;
}

.sw-rule {
  display: flex;
  border: var(--stroke-frame, 1.5px) solid var(--ink, #000000);
  margin: var(--space-4, 14px) 0;
  break-inside: avoid;
}
.sw-rule__label {
  display: flex;
  align-items: center;
  background: var(--ink, #000000);
  color: var(--paper, #ffffff);
  font-family: var(--font-display, "Saira Condensed", sans-serif);
  font-weight: 700;
  font-size: 12px;
  letter-spacing: 2px;
  padding: 8px;
  text-transform: uppercase;
}
.sw-rule__text { padding: 7px 10px; font-size: 13px; line-height: 1.35; }
.sw-rule__name {
  font-family: var(--font-display, "Saira Condensed", sans-serif);
  font-weight: 700;
  font-size: 15px;
  letter-spacing: 1px;
  text-transform: uppercase;
}

.sw-observations {
  border-top: var(--stroke-bar, 3px) solid var(--ink, #000000);
  padding-top: 5px;
  margin: var(--space-3, 10px) 0;
}
.sw-observations dl { margin: 4px 0 0 0; display: grid; grid-template-columns: 112px minmax(0, 1fr); row-gap: 2px; font-size: 12px; line-height: 1.35; }
.sw-observations dt { font-family: var(--font-display, "Saira Condensed", sans-serif); font-weight: 700; font-size: 13px; }
.sw-observations dd { margin: 0; }

/* ---------- Missions ---------- */

.sw-workorder {
  display: flex;
  justify-content: space-between;
  gap: 12px;
  border: var(--stroke-frame, 1.5px) solid var(--ink, #000000);
  padding: 3px 8px;
  font-family: var(--font-mono, "Ubuntu Mono", monospace);
  font-size: 12px;
  text-transform: uppercase;
}

.sw-map { margin: 0; break-inside: avoid; }
.sw-map svg { display: block; width: 176px; height: 176px; margin-left: auto; margin-right: auto; }
.sw-card .sw-map figcaption { text-align: center; }
.sw-map .board { fill: var(--paper, #ffffff); stroke: var(--ink, #000000); stroke-width: 2; }
.sw-map .grid { stroke: var(--rule-grid, #bdbdbd); stroke-width: 1; }
.sw-map .zone { fill: var(--tint, #ececec); stroke: var(--ink, #000000); stroke-width: 1.5; stroke-dasharray: 4 3; }
.sw-map .path { fill: none; stroke: var(--ink, #000000); stroke-width: 1.5; stroke-dasharray: 4 3; }
.sw-map .arrow { fill: none; stroke: var(--ink, #000000); stroke-width: 1.5; }
.sw-map .marker { fill: var(--paper, #ffffff); stroke: var(--ink, #000000); stroke-width: 2; }
.sw-map .dot { fill: var(--ink, #000000); }
.sw-map .deploy { fill: var(--tint, #ececec); stroke: var(--ink, #000000); stroke-width: 1; }
.sw-map figcaption, .sw-caption {
  font-family: var(--font-mono, "Ubuntu Mono", monospace);
  font-size: 12px;
  line-height: 1.3;
  margin-top: 4px;
}

.sw-payout { width: 100%; border-collapse: collapse; font-size: 12px; line-height: 1.25; margin: var(--space-3, 10px) 0; }
.sw-payout th {
  font-family: var(--font-mono, "Ubuntu Mono", monospace);
  font-weight: 700;
  font-size: 12px;
  text-align: left;
  border-bottom: var(--stroke-frame, 1.5px) solid var(--ink, #000000);
  padding: 2px 3px;
  text-transform: uppercase;
}
.sw-payout td { border-bottom: var(--stroke-hair, 1px) dotted var(--ink, #000000); padding: 3px; vertical-align: top; }
.sw-payout th:last-child, .sw-payout td:last-child { text-align: right; }
.sw-payout td:last-child { font-family: var(--font-mono, "Ubuntu Mono", monospace); font-weight: 700; white-space: nowrap; }

.sw-mission-label {
  font-family: var(--font-display, "Saira Condensed", sans-serif);
  font-weight: 700;
  font-size: 13px;
  letter-spacing: 2px;
  text-transform: uppercase;
  border-bottom: var(--stroke-hair, 1px) solid var(--ink, #000000);
  padding-bottom: 1px;
  margin: var(--space-3, 10px) 0 3px 0;
}

.sw-tally {
  border: var(--stroke-hair, 1px) solid var(--ink, #000000);
  padding: 6px 8px;
  font-family: var(--font-mono, "Ubuntu Mono", monospace);
  font-size: 12px;
}
.sw-tally__title { font-weight: 700; text-transform: uppercase; }
.sw-tally__rows { margin-top: 4px; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 6px; }
.sw-tally__boxes { display: inline-flex; gap: 3px; vertical-align: middle; margin-left: 4px; }
.sw-tally__boxes i { display: inline-block; width: 10px; height: 10px; border: var(--stroke-hair, 1px) solid var(--ink, #000000); }

/* ---------- Stamps ---------- */

.sw-stamp {
  display: inline-block;
  transform: rotate(-7deg);
  border: var(--stroke-bar, 3px) double var(--ink, #000000);
  background: var(--paper, #ffffff);
  padding: 6px 10px;
  text-align: center;
  font-family: var(--font-display, "Saira Condensed", sans-serif);
  font-weight: 700;
  font-size: 13px;
  letter-spacing: 1.5px;
  line-height: 1.15;
  text-transform: uppercase;
}

/* ---------- Art: plates, spots, tailpieces ---------- */

.sw-plate { margin: var(--space-4, 14px) 0; break-inside: avoid; }
.sw-plate__frame {
  display: inline-block;
  border: var(--stroke-frame, 1.5px) solid var(--ink, #000000);
  padding: 6px;
  background: var(--paper, #ffffff);
}
.sw-plate img { display: block; max-width: 100%; height: auto;  }
.sw-plate--full { text-align: center; }
.sw-plate--full img { max-height: 560px; }
.sw-plate--half img { max-height: 300px; }
.sw-plate figcaption {
  display: flex;
  justify-content: space-between;
  gap: 10px;
  margin-top: 4px;
  font-family: var(--font-mono, "Ubuntu Mono", monospace);
  font-size: 12px;
  line-height: 1.3;
  text-align: left;
}
.sw-plate__no { font-weight: 700; white-space: nowrap; }

.sw-spot {
  float: right;
  width: 42%;
  margin: 2px 0 var(--space-2, 6px) var(--space-3, 10px);
}
.sw-spot img { display: block; width: 100%; height: auto;  }
.sw-spot figcaption { font-family: var(--font-mono, "Ubuntu Mono", monospace); font-size: 12px; margin-top: 3px; }

.sw-tailpiece {
  clear: both;
  display: flex;
  justify-content: center;
  margin: var(--space-5, 20px) 0;
}
.sw-tailpiece img { display: block; max-width: 45%; max-height: 120px; height: auto;  }
.sw-tailpiece--rule::before, .sw-tailpiece--rule::after {
  content: "";
  flex: 1 1 auto;
  align-self: center;
  border-top: var(--stroke-hair, 1px) solid var(--ink, #000000);
  margin: 0 12px;
}

/* ---------- Covers ---------- */

.sw-cover {
  position: relative;
  box-sizing: border-box;
  width: 559px;
  height: 794px;
  overflow: hidden;
  display: flex;
  flex-direction: column;
  padding: 40px 48px 36px 40px;
  background: var(--paper, #ffffff);
}
.sw-masthead {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  padding-bottom: 8px;
  border-bottom: var(--stroke-bar, 3px) solid var(--ink, #000000);
  box-shadow: 0 3px 0 var(--paper, #ffffff), 0 4px 0 var(--ink, #000000);
}
.sw-masthead__name {
  font-family: var(--font-display, "Saira Condensed", sans-serif);
  font-weight: 800;
  font-size: 30px;
  letter-spacing: 3px;
  line-height: 1;
}
.sw-masthead__vol { font-family: var(--font-mono, "Ubuntu Mono", monospace); font-size: 13px; letter-spacing: 1px; }
.sw-cover__dept {
  margin-top: 12px;
  font-family: var(--font-display, "Saira Condensed", sans-serif);
  font-weight: 600;
  font-size: 12px;
  letter-spacing: 2.4px;
  text-transform: uppercase;
}
.sw-cover__title {
  margin: var(--space-5, 20px) 0 0 0;
  font-family: var(--font-display, "Saira Condensed", sans-serif);
  font-weight: 800;
  font-size: 76px;
  line-height: 0.86;
  letter-spacing: 1px;
  text-transform: uppercase;
}
.sw-cover__tagline { margin-top: 8px; font-size: 14px; font-style: italic; line-height: 1.35; }
.sw-cover .sw-fields { margin-top: auto; }

/* ---------- Play aids: sheets, cards, trackers, tokens ----------
   Cards are TCG size (63 x 88 mm = 238 x 333 px). Card text may go down to 10px (7.5pt),
   the only exception to the 12px floor: standard for printed cards, still legible at arm's length. */

.sw-sheet {
  box-sizing: border-box;
  width: 794px;
  height: 1123px;
  padding: 36px 40px 30px 40px;
  display: flex;
  flex-direction: column;
  background: var(--paper, #ffffff);
  overflow: hidden;
}
.sw-sheet--landscape { width: 1123px; height: 794px; }

/* Cut grid: pieces abut with no gutter, so every cut is one straight stroke across the
   whole sheet. Cut lines run from the grid out to the sheet edges (ruler guides); inside the
   grid they hide under the pieces and only the dashed outlines show. Set --cols, --pitch-x
   and --pitch-y for tokens; stacked grids must share --cols and --pitch-x. */
.sw-cutgrid {
  --cols: 3;
  --pitch-x: 238px;
  --pitch-y: 333px;
  position: relative;
  isolation: isolate;
  display: grid;
  grid-template-columns: repeat(var(--cols), var(--pitch-x));
  grid-auto-rows: var(--pitch-y);
  width: max-content;
  margin: 12px auto 0 auto;
  outline: var(--stroke-hair, 1px) dashed var(--rule-row, #9e9e9e);
}
.sw-cutgrid > * { position: relative; background: var(--paper, #ffffff); outline: var(--stroke-hair, 1px) dashed var(--rule-row, #9e9e9e); }
.sw-cutgrid::before,
.sw-cutgrid::after {
  content: "";
  position: absolute;
  z-index: -1;
  pointer-events: none;
}
.sw-cutgrid::before {
  left: 0; right: -1px; top: -1400px; bottom: -1400px;
  
}
.sw-cutgrid::after {
  top: 0; bottom: -1px; left: -1400px; right: -1400px;
  
  background-position: 0 0;
}
.sw-cutgrid + .sw-cutgrid { margin-top: 0; }
.sw-sheet .sw-runhead > span,
.sw-sheet .sw-footer > span { position: relative; z-index: 1; background: var(--paper, #ffffff); padding: 0 4px; }
.sw-sheet .sw-procedure,
.sw-sheet .sw-notice,
.sw-sheet .sw-cutnote { position: relative; z-index: 1; background: var(--paper, #ffffff); }
.sw-cutnote { font-family: var(--font-mono, "Ubuntu Mono", monospace); font-size: 12px; line-height: 1.35; padding: 4px 8px; border: var(--stroke-hair, 1px) solid var(--ink, #000000); }

.sw-card {
  box-sizing: border-box;
  width: 238px;
  height: 333px;
  padding: 7px;
  background: var(--paper, #ffffff);
  font-family: var(--font-serif, "PT Serif", Georgia, serif);
  font-size: 10.5px;
  line-height: 1.28;
  color: var(--ink, #000000);
  overflow: hidden;
}
.sw-card__frame {
  box-sizing: border-box;
  height: 100%;
  border: var(--stroke-frame, 1.5px) solid var(--ink, #000000);
  display: flex;
  flex-direction: column;
}
.sw-card__bar {
  display: flex;
  justify-content: space-between;
  align-items: center;
  background: var(--ink, #000000);
  color: var(--paper, #ffffff);
  font-family: var(--font-display, "Saira Condensed", sans-serif);
  font-weight: 700;
  font-size: 11px;
  letter-spacing: 1.5px;
  padding: 2px 6px;
  text-transform: uppercase;
}
.sw-card__title {
  font-family: var(--font-display, "Saira Condensed", sans-serif);
  font-weight: 800;
  font-size: 19px;
  line-height: 1;
  letter-spacing: 0.5px;
  text-transform: uppercase;
  padding: 5px 6px 0 6px;
}
.sw-card__sub {
  font-family: var(--font-mono, "Ubuntu Mono", monospace);
  font-size: 10px;
  padding: 1px 6px 4px 6px;
  border-bottom: var(--stroke-hair, 1px) solid var(--ink, #000000);
}
.sw-card__body { padding: 5px 6px; display: flex; flex-direction: column; gap: 5px; flex: 1 1 auto; min-height: 0; }
.sw-card__label {
  font-family: var(--font-display, "Saira Condensed", sans-serif);
  font-weight: 700;
  font-size: 10.5px;
  letter-spacing: 1.5px;
  text-transform: uppercase;
  border-bottom: var(--stroke-hair, 1px) solid var(--ink, #000000);
  margin-bottom: 2px;
}
.sw-card__foot {
  display: flex;
  justify-content: space-between;
  border-top: var(--stroke-hair, 1px) solid var(--ink, #000000);
  padding: 2px 6px;
  font-family: var(--font-mono, "Ubuntu Mono", monospace);
  font-size: 10px;
}
.sw-card .sw-ledger { font-size: 10.5px; margin: 0; }
.sw-card .sw-ledger th { font-size: 10px; padding: 1px 4px; }
.sw-card .sw-ledger td { padding: 1px 4px; }
.sw-card .sw-ledger td.sw-name { font-size: 11px; }
.sw-card .sw-tag { font-size: 10px; padding: 0 2px; }
.sw-card code, .sw-card .sw-kw { font-size: 1em; }
.sw-ledger code { font-size: 1em; }

.sw-card--back .sw-card__frame {
  align-items: center;
  justify-content: center;
  gap: 8px;
  text-align: center;
}
.sw-card__seal {
  width: 120px;
  height: 120px;
  border: var(--stroke-bar, 3px) double var(--ink, #000000);
  border-radius: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  flex-direction: column;
  font-family: var(--font-display, "Saira Condensed", sans-serif);
  font-weight: 800;
  line-height: 0.95;
}

.sw-statstrip {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  border: var(--stroke-hair, 1px) solid var(--ink, #000000);
}
.sw-statstrip > div { padding: 1px 4px; border-right: var(--stroke-hair, 1px) solid var(--ink, #000000); }
.sw-statstrip > div:last-child { border-right: 0; }
.sw-statstrip b {
  display: block;
  font-family: var(--font-display, "Saira Condensed", sans-serif);
  font-weight: 800;
  font-size: 16px;
  line-height: 1;
}
.sw-statstrip span { font-family: var(--font-mono, "Ubuntu Mono", monospace); font-size: 10px; text-transform: uppercase; }

.sw-ladder { display: flex; align-items: center; gap: 3px; }
.sw-ladder__label {
  flex: 0 0 34px;
  font-family: var(--font-display, "Saira Condensed", sans-serif);
  font-weight: 700;
  font-size: 11px;
  letter-spacing: 1px;
  text-transform: uppercase;
}
.sw-ladder__step {
  flex: 1 1 0;
  text-align: center;
  border: var(--stroke-hair, 1px) solid var(--ink, #000000);
  font-family: var(--font-mono, "Ubuntu Mono", monospace);
  font-weight: 700;
  font-size: 10.5px;
  line-height: 15px;
}
/* A printed (preselected) tier is filled ink with paper text; blank sheets leave every step on paper for pencil. */
.sw-ladder__step { position: relative; background: var(--paper, #ffffff); }
.sw-ladder__step--on { font-weight: 700; background: var(--ink, #000000); color: var(--paper, #ffffff); }

.sw-track { display: flex; flex-wrap: wrap; gap: 2px; align-items: center; }
.sw-track i {
  display: inline-block;
  width: 9px;
  height: 9px;
  border: var(--stroke-hair, 1px) solid var(--ink, #000000);
}
.sw-track i.off {  border-color: var(--rule-row, #9e9e9e); }
.sw-track i.tick { position: relative; }
.sw-track i.tick::after { content: ""; position: absolute; left: -3px; right: -3px; bottom: -4px; border-bottom: 2px solid var(--ink, #000000); }

.sw-disc {
  box-sizing: border-box;
  width: 94px;
  height: 94px;
  border-radius: 0;
  border: var(--stroke-frame, 1.5px) solid var(--ink, #000000);
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  text-align: center;
  background: var(--paper, #ffffff);
  font-family: var(--font-display, "Saira Condensed", sans-serif);
  font-weight: 800;
  line-height: 0.95;
}
.sw-disc--solid { background: var(--ink, #000000); color: var(--paper, #ffffff); }
.sw-disc--ring { border: 6px double var(--ink, #000000); }
.sw-disc--tint { background: var(--tint, #ececec); }
.sw-disc--dashed { border: 2px dashed var(--ink, #000000); }
.sw-disc--small { width: 57px; height: 57px; }
.sw-disc__big { font-size: 30px; }
.sw-disc__small { font-family: var(--font-mono, "Ubuntu Mono", monospace); font-weight: 700; font-size: 10px; letter-spacing: 0.5px; text-transform: uppercase; }
.sw-disc--screen {
  background-color: var(--paper, #ffffff);
  
  background-size: 4px 4px;
}
.sw-disc--screen > * { background: var(--paper, #ffffff); padding: 2px 5px; line-height: 1.05; }

/* ---------- Tokens: square tiles in a cut grid ----------
   25 mm tiles (94 px) for the bag and table markers, 25 x 12.5 mm strips (94 x 47 px)
   for conditions. Every bag token is the same size, cut and feel. */

.sw-token {
  box-sizing: border-box;
  width: var(--pitch-x, 94px);
  height: var(--pitch-y, 94px);
  display: flex;
  align-items: center;
  justify-content: center;
  overflow: hidden;
}
.sw-token .sw-disc { width: 78px; height: 78px; }
.sw-token .sw-disc__big { font-size: 28px; }
.sw-token--strip {
  justify-content: flex-start;
  gap: 6px;
  padding: 0 6px;
}
.sw-token__glyph {
  flex: 0 0 auto;
  width: 30px;
  height: 30px;
  box-sizing: border-box;
  border: var(--stroke-frame, 1.5px) solid var(--ink, #000000);
  display: flex;
  align-items: center;
  justify-content: center;
  font-family: var(--font-display, "Saira Condensed", sans-serif);
  font-weight: 800;
  font-size: 15px;
}
.sw-token__glyph--solid { background: var(--ink, #000000); color: var(--paper, #ffffff); }
.sw-token__glyph--ring { border: 4px double var(--ink, #000000); }
.sw-token__glyph--hatch {  }
.sw-token__glyph--hatch > * { background: var(--paper, #ffffff); padding: 2px 5px; line-height: 1.05; }
.sw-token__label {
  font-family: var(--font-mono, "Ubuntu Mono", monospace);
  font-weight: 700;
  font-size: 10px;
  line-height: 1.1;
  text-transform: uppercase;
}
.sw-token--blank { flex-direction: column; justify-content: flex-end; padding-bottom: 8px; }
.sw-token--blank::before { content: ""; width: 60px; border-bottom: var(--stroke-hair, 1px) solid var(--ink, #000000); }

/* ---------- Write-in rule ----------
   Black is for printed labels only. Anything a player writes, ticks or changes sits on paper. */

.sw-card__bar--field {
  background: var(--paper, #ffffff);
  color: var(--ink, #000000);
  border-bottom: var(--stroke-heading, 2px) solid var(--ink, #000000);
  padding: 2px 6px 2px 0;
  gap: 6px;
}
.sw-card__bar--field::before {
  content: attr(data-label);
  flex: 0 0 auto;
  align-self: stretch;
  display: flex;
  align-items: center;
  background: var(--ink, #000000);
  color: var(--paper, #ffffff);
  padding: 0 5px;
  margin: -2px 0;
  font-size: 9.5px;
  letter-spacing: 1.5px;
}
.sw-card__bar--field > span:first-child { flex: 1 1 auto; }
.sw-card__bar > span:last-child { white-space: nowrap; }
.sw-writebar {
  display: flex;
  align-items: stretch;
  border: var(--stroke-frame, 1.5px) solid var(--ink, #000000);
  font-family: var(--font-display, "Saira Condensed", sans-serif);
  font-weight: 700;
  font-size: 12px;
  letter-spacing: 1.5px;
  text-transform: uppercase;
}
.sw-writebar__label { background: var(--ink, #000000); color: var(--paper, #ffffff); padding: 2px 6px; display: flex; align-items: center; }
.sw-writebar__field { flex: 1 1 auto; padding: 2px 6px; display: flex; justify-content: space-between; align-items: center; min-height: 18px; }
.sw-writebar__field .sw-hand { font-family: var(--font-mono, "Ubuntu Mono", monospace); font-weight: 400; letter-spacing: 0; text-transform: none; font-size: 12px; }

/* ---------- Texture and furniture (v2) ----------
   Low-ink surfaces that read as print: hatch, hazard, dot screen, microtext, barcodes,
   corner brackets and cable traces. Pure CSS, scale-free, and they photocopy cleanly. */

.sw-hatch {  }
.sw-hazard {
  height: 8px;
  
  border-top: var(--stroke-hair, 1px) solid var(--ink, #000000);
  border-bottom: var(--stroke-hair, 1px) solid var(--ink, #000000);
}
.sw-screen {
  background-color: var(--paper, #ffffff);
  
  background-size: 4px 4px;
}
.sw-microtext {
  overflow: hidden;
  white-space: nowrap;
  font-family: var(--font-mono, "Ubuntu Mono", monospace);
  font-size: 6px;
  line-height: 8px;
  letter-spacing: 0.6px;
  text-transform: uppercase;
  border-top: var(--stroke-hair, 1px) solid var(--ink, #000000);
  border-bottom: var(--stroke-hair, 1px) solid var(--ink, #000000);
  padding: 1px 0;
  margin: var(--space-2, 6px) 0;
}
.sw-microtext:empty::before {
  content: "Sacred Wire 28 \00b7 property of the Complex \00b7 reproduction is a billable event \00b7 do not fold, spindle or unplug \00b7 Sacred Wire 28 \00b7 property of the Complex \00b7 reproduction is a billable event \00b7 do not fold, spindle or unplug \00b7 Sacred Wire 28 \00b7 property of the Complex \00b7 reproduction is a billable event \00b7";
}
.sw-brackets {
  position: relative;
  padding: 8px;
  
}
/* Cable trace: a jack, a labelled run of wire, a ring terminal. Section breaks inside a chapter. */
.sw-wire {
  display: flex;
  align-items: center;
  gap: 6px;
  margin: var(--space-4, 14px) 0 var(--space-2, 6px) 0;
  font-family: var(--font-mono, "Ubuntu Mono", monospace);
  font-weight: 700;
  font-size: 12px;
  letter-spacing: 1px;
  text-transform: uppercase;
}
.sw-wire::before { content: ""; flex: 0 0 auto; width: 10px; height: 6px; background: var(--ink, #000000); box-shadow: 10px 0 0 -2px var(--ink, #000000); margin-right: 8px; }
.sw-wire::after {
  content: "";
  flex: 1 1 auto;
  height: 10px;
  
}
.sw-barcode {
  display: inline-flex;
  flex-direction: column;
  align-items: stretch;
  gap: 1px;
  font-family: var(--font-mono, "Ubuntu Mono", monospace);
  font-size: 7px;
  letter-spacing: 1.5px;
  line-height: 1;
  text-align: center;
}
.sw-barcode::before {
  content: "";
  display: block;
  width: 84px;
  height: 18px;
  
}

/* Chapter opener (v2): hazard strip, screened numeral, kicker, title, barcode, microtext. */
.sw-opener { margin: var(--space-3, 10px) 0 var(--space-4, 14px) 0; }
.sw-opener__row { display: flex; align-items: stretch; gap: 10px; margin-top: 6px; }
.sw-opener__num {
  flex: 0 0 auto;
  display: flex;
  align-items: flex-end;
  padding-right: 10px;
  border-right: var(--stroke-heading, 2px) solid var(--ink, #000000);
  color: var(--ink, #000000);
  font-family: var(--font-display, "Saira Condensed", sans-serif);
  font-weight: 800;
  font-size: 46px;
  line-height: 0.8;
}
.sw-opener__body { flex: 1 1 auto; display: flex; flex-direction: column; justify-content: flex-end; min-width: 0; }
.sw-opener__kicker { font-family: var(--font-mono, "Ubuntu Mono", monospace); font-size: 12px; letter-spacing: 1px; text-transform: uppercase; }
.sw-opener__title { margin: 2px 0 0 0; white-space: nowrap; font-family: var(--font-display, "Saira Condensed", sans-serif); font-weight: 800; font-size: 36px; line-height: 0.88; letter-spacing: 1px; text-transform: uppercase; }
.sw-opener__code { flex: 0 0 auto; display: flex; align-items: flex-end; }

/* Card backs: a dot-screen field instead of a solid black slab. */
.sw-card--back .sw-card__frame {
  background-color: var(--paper, #ffffff);
  
  background-size: 4px 4px;
}
.sw-card--back .sw-card__frame { box-shadow: inset 0 0 0 9px var(--paper, #ffffff); }
.sw-card--back .sw-card__seal { background: var(--paper, #ffffff); }
.sw-card--back .sw-card__title,
.sw-card--back .sw-meta { background: var(--paper, #ffffff); padding: 3px 8px; }
.sw-card--back.sw-card--hatch .sw-card__frame {  background-size: auto; }

/* Coloured cover sheet: the four pages on the outer A4 sheet (front cover, inside front, inside back, back cover).
   White prints as the paper colour and tint is dropped, so the page re-points both tokens. */
.sw-page--stock { --paper: var(--stock, #faf0b0); --tint: color-mix(in srgb, var(--ink, #000000) 8%, transparent); background: var(--paper); }
.sw-page--stock.sw-stock--salmon { --stock: #f7d5dc; }
.sw-page--stock.sw-stock--sky { --stock: #f4eedb; }
.sw-page--stock.sw-stock--mint { --stock: #e1f0d9; }
.sw-page--stock.sw-stock--blue { --stock: #dbe8f5; }
.sw-page--stock .sw-roll, .sw-page--stock td.sw-roll { background: transparent; border-right: 1px solid var(--ink, #000); }
/* Coloured stock has no white: anything painted paper takes the stock colour. */
:is(.sw-page, .sw-doc).sw-page--stock .sw-h2 .term, :is(.sw-page, .sw-doc).sw-page--stock .term, :is(.sw-page, .sw-doc).sw-page--stock .sw-tab { background: var(--paper); }
.sw-page--stock [fill="#fff"], .sw-page--stock [fill="#ffffff"], .sw-page--stock [fill="white"] { fill: var(--paper); }
:is(.sw-page, .sw-doc).sw-page--stock tr, :is(.sw-page, .sw-doc).sw-page--stock blockquote { background-color: transparent !important; }
/* Greys on stock are translucent ink, so they tint the paper instead of covering it. */
:is(.sw-page, .sw-doc).sw-page--stock tbody tr:nth-child(even), :is(.sw-page, .sw-doc).sw-page--stock blockquote { background-color: var(--tint) !important; }

/* Vector fills (generated by lib/zine_vector.py). */
.sw-page .sw-folio::before { background-color: transparent; background-image: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='5.657' height='5.657'><path d='M0%2C5.657L5.657%2C0M-2.828%2C2.828L2.828%2C-2.828M2.828%2C8.485L8.485%2C2.828' stroke='%23000' stroke-width='1.5' fill='none'/></svg>"); background-size: 5.657px 5.657px; background-repeat: repeat; }
.sw-procedure::before, .sw-procedure::after { background-color: transparent; background-image: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='4.95' height='4.95'><path d='M0%2C4.95L4.95%2C0M-2.475%2C2.475L2.475%2C-2.475M2.475%2C7.425L7.425%2C2.475' stroke='%23000' stroke-width='1' fill='none'/></svg>"); background-size: 4.95px 4.95px; background-repeat: repeat; }
.sw-hatch { background-color: transparent; background-image: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='5.657' height='5.657'><path d='M0%2C5.657L5.657%2C0M-2.828%2C2.828L2.828%2C-2.828M2.828%2C8.485L8.485%2C2.828' stroke='%23000' stroke-width='1' fill='none'/></svg>"); background-size: 5.657px 5.657px; background-repeat: repeat; }
.sw-token__glyph--hatch { background-color: transparent; background-image: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='6.364' height='6.364'><rect width='6.364' height='6.364' fill='%23fff'/><path d='M0%2C6.364L6.364%2C0M-3.182%2C3.182L3.182%2C-3.182M3.182%2C9.546L9.546%2C3.182' stroke='%23000' stroke-width='1.5' fill='none'/></svg>"); background-size: 6.364px 6.364px; background-repeat: repeat; }
.sw-hazard { background-image: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='12.728' height='12.728'><path d='M0%2C12.728L12.728%2C0M-6.364%2C6.364L6.364%2C-6.364M6.364%2C19.092L19.092%2C6.364' stroke='%23000' stroke-width='4' fill='none'/></svg>"); background-size: 12.728px 12.728px; background-repeat: repeat; }
.sw-disc--screen { background-image: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='4' height='4'><rect x='1.25' y='1.25' width='1.5' height='1.5' fill='%23000'/></svg>"); background-size: 4px 4px; }
.sw-screen { background-image: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='4' height='4'><rect x='1.25' y='1.25' width='1.5' height='1.5' fill='%23000'/></svg>"); background-size: 4px 4px; }
.sw-card--back .sw-card__frame { background-image: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='4' height='4'><rect x='1.25' y='1.25' width='1.5' height='1.5' fill='%23000'/></svg>"); background-size: 4px 4px; }
.sw-card--back.sw-card--hatch .sw-card__frame { background-image: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='5.657' height='5.657'><path d='M0%2C5.657L5.657%2C0M-2.828%2C2.828L2.828%2C-2.828M2.828%2C8.485L8.485%2C2.828' stroke='%23000' stroke-width='1' fill='none'/></svg>"); background-size: 5.657px 5.657px; }
.sw-cutgrid::before { background-image: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg'><rect x='0' y='0' width='0.75' height='100%25' fill='%23000'/></svg>"); background-size: var(--pitch-x) 100%; background-repeat: repeat-x; }
.sw-cutgrid::after { background-image: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg'><rect x='0' y='0' width='100%25' height='0.75' fill='%23000'/></svg>"); background-size: 100% var(--pitch-y); background-repeat: repeat-y; }
.sw-track i.off { background: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg'><path d='M0%2C100%25L100%25%2C0' stroke='%23000' stroke-width='1.5' fill='none'/></svg>"); }
.sw-brackets { background: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='14' height='14'><path d='M0%2C1H14M1%2C0V14' stroke='%23000' stroke-width='2' fill='none'/></svg>") top left / 14px 14px no-repeat, url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='14' height='14'><path d='M0%2C1H14M13%2C0V14' stroke='%23000' stroke-width='2' fill='none'/></svg>") top right / 14px 14px no-repeat, url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='14' height='14'><path d='M0%2C13H14M1%2C0V14' stroke='%23000' stroke-width='2' fill='none'/></svg>") bottom left / 14px 14px no-repeat, url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='14' height='14'><path d='M0%2C13H14M13%2C0V14' stroke='%23000' stroke-width='2' fill='none'/></svg>") bottom right / 14px 14px no-repeat; }
.sw-wire::after { background: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='10' height='10'><rect x='1.7' y='1.7' width='6.6' height='6.6' fill='none' stroke='%23000' stroke-width='2'/></svg>") right center / 10px 10px no-repeat, url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg'><rect x='0' y='0' width='100%25' height='100%25' fill='%23000'/></svg>") left center / calc(100% - 9px) 1.5px no-repeat; }
.sw-barcode::before { background: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='21' height='18'><rect x='0' y='0' width='1' height='18' fill='%23000'/><rect x='3' y='0' width='2' height='18' fill='%23000'/><rect x='6' y='0' width='1' height='18' fill='%23000'/><rect x='10' y='0' width='3' height='18' fill='%23000'/><rect x='14' y='0' width='1' height='18' fill='%23000'/><rect x='17' y='0' width='1' height='18' fill='%23000'/></svg>") 0 0 / 21px 18px repeat-x; }
@media screen { .sw-plate img, .sw-spot img, .sw-tailpiece img {  } .sw-cover img { mix-blend-mode: multiply; } }

/* ---------- Wiring (v5) ----------
   Generated from zine/wire.py geometry (weight 0.8). Cables are white with a black edge, hardware is solid black.
   No circles, no gradients, no soft masks. Bands are drawn for the 465px A5 measure and anchored to the left edge.
   Print-safe: first content under the running head starts at or above 58px from the top; the footer band is
   30px tall and sits 24px above the trim (about 54px from the bottom edge). */
:root { --sw-band-w: 465px; }

/* Running head: booklet name outer, section inner, optional sigil centered; wire underneath. */
.sw-runhead--wired {
  position: relative;
  display: grid;
  grid-template-columns: 1fr auto 1fr;
  align-items: center;
  gap: 12px;
  border-bottom: 0;
  padding-bottom: 12px;
  line-height: 1.05;
  background-repeat: no-repeat;
  background-position: left bottom;
  background-size: 465px 10px;
}
.sw-runhead--wired > span:last-child { text-align: right; }
.sw-runhead--wired > span { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.sw-runhead--wired .sw-sigil { display: block; }
.sw-runhead--hair { background-image: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='465' height='10'><path d='M0%2C5H465' stroke='%23000' stroke-width='0.96'/></svg>"); }
.sw-runhead--term { background-image: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='465' height='10'><path d='M5%2C5H460' stroke='%23000' stroke-width='0.96'/><rect x='0.0' y='1.5' width='7' height='7' fill='%23fff' stroke='%23000' stroke-width='1.3'/><rect x='458.0' y='1.5' width='7' height='7' fill='%23fff' stroke='%23000' stroke-width='1.3'/></svg>"); }
.sw-runhead--double { background-image: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='465' height='10'><path d='M0%2C2.92H465M0%2C7.08H465' stroke='%23000' stroke-width='0.80'/><path d='M0.6%2C1.92v6.16M464.4%2C1.92v6.16' stroke='%23000' stroke-width='1.6'/></svg>"); }
.sw-runhead--signal { background-image: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='465' height='10'><path d='M0%2C5H455' stroke='%23000' stroke-width='1.12' stroke-dasharray='6.4 4.0'/><path d='M455%2C0.5L465%2C5L455%2C9.5Z' fill='%23000'/></svg>"); }
.sw-runhead--slim { background-image: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='465' height='10'><path d='M8%2C5 L443%2C5' fill='none' stroke='%23000' stroke-width='6' stroke-linejoin='round' stroke-linecap='butt'/><path d='M8%2C5 L443%2C5' fill='none' stroke='%23fff' stroke-width='3.4' stroke-linejoin='round'/><rect x='0.5' y='1.5' width='7' height='7' fill='%23fff' stroke='%23000' stroke-width='1.3'/><rect x='136.5' y='1.0' width='6' height='8' fill='%23000'/><rect x='294.6' y='1.0' width='6' height='8' fill='%23000'/><rect x='443' y='1.5' width='12' height='7' fill='%23000'/><path d='M446%2C1.5 v7 M449%2C1.5 v7' stroke='%23fff' stroke-width='0.9'/><path d='M455%2C5 h7' stroke='%23000' stroke-width='1.6'/></svg>"); }
.sw-runhead--heavy { background-image: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='465' height='10'><path d='M0%2C5H465' fill='none' stroke='%23000' stroke-width='8' stroke-linejoin='round' stroke-linecap='butt'/><path d='M0%2C5H465' fill='none' stroke='%23fff' stroke-width='5.4' stroke-linejoin='round'/><rect x='81.7' y='0.0' width='4' height='10' fill='%23000'/><rect x='230.5' y='0.0' width='4' height='10' fill='%23000'/><rect x='379.29999999999995' y='0.0' width='4' height='10' fill='%23000'/></svg>"); }
.sw-runhead--slim.sw-runhead--plug { background-image: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='465' height='10'><path d='M8%2C5 L439%2C5' fill='none' stroke='%23000' stroke-width='6' stroke-linejoin='round' stroke-linecap='butt'/><path d='M8%2C5 L439%2C5' fill='none' stroke='%23fff' stroke-width='3.4' stroke-linejoin='round'/><rect x='0.5' y='1.5' width='7' height='7' fill='%23fff' stroke='%23000' stroke-width='1.3'/><rect x='136.5' y='1.0' width='6' height='8' fill='%23000'/><rect x='294.6' y='1.0' width='6' height='8' fill='%23000'/><rect x='439' y='0' width='18' height='10' fill='%23000'/><path d='M443%2C-1 v12 M447%2C-1 v12' stroke='%23fff' stroke-width='1'/><path d='M457%2C2.5 h6 M457%2C7.5 h6' stroke='%23000' stroke-width='1.6'/></svg>"); }
/* Footer: wire on top, form line and folio row below. */
.sw-footer--wired {
  border-top: 0;
  height: 30px;
  padding-top: 10px;
  align-items: center;
  background-repeat: no-repeat;
  background-position: left top;
  background-size: 465px 10px;
}
.sw-footer--hair { background-image: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='465' height='10'><path d='M0%2C5H465' stroke='%23000' stroke-width='0.96'/></svg>"); }
.sw-footer--term { background-image: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='465' height='10'><path d='M5%2C5H460' stroke='%23000' stroke-width='0.96'/><rect x='0.0' y='1.5' width='7' height='7' fill='%23fff' stroke='%23000' stroke-width='1.3'/><rect x='458.0' y='1.5' width='7' height='7' fill='%23fff' stroke='%23000' stroke-width='1.3'/></svg>"); }
.sw-footer--double { background-image: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='465' height='10'><path d='M0%2C2.92H465M0%2C7.08H465' stroke='%23000' stroke-width='0.80'/><path d='M0.6%2C1.92v6.16M464.4%2C1.92v6.16' stroke='%23000' stroke-width='1.6'/></svg>"); }
.sw-footer--signal { background-image: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='465' height='10'><path d='M0%2C5H455' stroke='%23000' stroke-width='1.12' stroke-dasharray='6.4 4.0'/><path d='M455%2C0.5L465%2C5L455%2C9.5Z' fill='%23000'/></svg>"); }
.sw-footer--slim { background-image: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='465' height='10'><path d='M8%2C5 L443%2C5' fill='none' stroke='%23000' stroke-width='6' stroke-linejoin='round' stroke-linecap='butt'/><path d='M8%2C5 L443%2C5' fill='none' stroke='%23fff' stroke-width='3.4' stroke-linejoin='round'/><rect x='0.5' y='1.5' width='7' height='7' fill='%23fff' stroke='%23000' stroke-width='1.3'/><rect x='136.5' y='1.0' width='6' height='8' fill='%23000'/><rect x='294.6' y='1.0' width='6' height='8' fill='%23000'/><rect x='443' y='1.5' width='12' height='7' fill='%23000'/><path d='M446%2C1.5 v7 M449%2C1.5 v7' stroke='%23fff' stroke-width='0.9'/><path d='M455%2C5 h7' stroke='%23000' stroke-width='1.6'/></svg>"); }
.sw-footer--heavy { background-image: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='465' height='10'><path d='M0%2C5H465' fill='none' stroke='%23000' stroke-width='8' stroke-linejoin='round' stroke-linecap='butt'/><path d='M0%2C5H465' fill='none' stroke='%23fff' stroke-width='5.4' stroke-linejoin='round'/><rect x='81.7' y='0.0' width='4' height='10' fill='%23000'/><rect x='230.5' y='0.0' width='4' height='10' fill='%23000'/><rect x='379.29999999999995' y='0.0' width='4' height='10' fill='%23000'/></svg>"); }
.sw-footer--conduit { background-image: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='465' height='10'><path d='M0%2C2.5H465M0%2C7.5H465' stroke='%23000' stroke-width='1.1'/><rect x='108.25' y='0.5' width='16' height='9' fill='%23fff' stroke='%23000' stroke-width='1.1'/><rect x='224.5' y='0.5' width='16' height='9' fill='%23fff' stroke='%23000' stroke-width='1.1'/><rect x='340.75' y='0.5' width='16' height='9' fill='%23fff' stroke='%23000' stroke-width='1.1'/></svg>"); }
/* Barcode beside the folio (vector bars; the page builder may inline a per-page one). */
.sw-barcode--folio { display: inline-block; vertical-align: middle; width: 39px; height: 14px; background: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='39' height='14'><rect x='0' y='0' width='2' height='14' fill='%23000'/><rect x='5' y='0' width='1' height='14' fill='%23000'/><rect x='11' y='0' width='1' height='14' fill='%23000'/><rect x='19' y='0' width='2' height='14' fill='%23000'/><rect x='30' y='0' width='1' height='14' fill='%23000'/><rect x='32' y='0' width='2' height='14' fill='%23000'/><rect x='37' y='0' width='1' height='14' fill='%23000'/></svg>") 0 0 / 39px 14px no-repeat; }
.sw-page .sw-footer--wired .sw-folio::before { content: ""; width: 39px; height: 14px; background: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='39' height='14'><rect x='0' y='0' width='2' height='14' fill='%23000'/><rect x='5' y='0' width='1' height='14' fill='%23000'/><rect x='11' y='0' width='1' height='14' fill='%23000'/><rect x='19' y='0' width='2' height='14' fill='%23000'/><rect x='30' y='0' width='1' height='14' fill='%23000'/><rect x='32' y='0' width='2' height='14' fill='%23000'/><rect x='37' y='0' width='1' height='14' fill='%23000'/></svg>") 0 0 / 39px 14px no-repeat; }

/* Section divider: between top-level sections only. Symbol only where its meaning is true. */
.sw-divider { display: block; width: 465px; max-width: 100%; height: 16px; margin: 2px 0 0 0; background-repeat: no-repeat; background-position: left center; background-size: 465px 16px; clear: both; }
.sw-divider--ground { background-image: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='465' height='16'><path d='M0%2C8 H232.5' stroke='%23000' stroke-width='1.2'/><path d='M232.5%2C8 v4 M223.5%2C12 h18 M226.5%2C15 h12 M229.5%2C18 h6' stroke='%23000' stroke-width='1.2'/></svg>"); }
.sw-divider--resistor { background-image: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='465' height='16'><path d='M0%2C8 H218.5' stroke='%23000' stroke-width='1.2'/><path d='M218.5%2C8 l2%2C-6 l4%2C12 l4%2C-12 l4%2C12 l4%2C-12 l4%2C12 l4%2C-12 l2%2C6' fill='none' stroke='%23000' stroke-width='1.2'/><path d='M246.5%2C8 H465' stroke='%23000' stroke-width='1.2'/></svg>"); }
.sw-divider--fuse { background-image: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='465' height='16'><path d='M0%2C8 H218.5' stroke='%23000' stroke-width='1.2'/><rect x='218.5' y='3' width='28' height='10' fill='%23fff' stroke='%23000' stroke-width='1.2'/><path d='M218.5%2C8 H246.5' stroke='%23000' stroke-width='1'/><path d='M246.5%2C8 H465' stroke='%23000' stroke-width='1.2'/></svg>"); }
.sw-divider--switch { background-image: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='465' height='16'><path d='M0%2C8 H220.5' stroke='%23000' stroke-width='1.2'/><rect x='218.5' y='6' width='4' height='4' fill='%23000'/><path d='M220.5%2C8 L242.5%2C-1' stroke='%23000' stroke-width='1.2'/><rect x='242.5' y='6' width='4' height='4' fill='%23000'/><path d='M244.5%2C8 H465' stroke='%23000' stroke-width='1.2'/></svg>"); }
.sw-divider--splice { background-image: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='465' height='16'><path d='M0%2C8 H214.5' stroke='%23000' stroke-width='1.2'/><path d='M214.5%2C8 l6%2C-6 h24 l6%2C6 l-6%2C6 h-24 Z' fill='%23fff' stroke='%23000' stroke-width='1.2'/><path d='M224.5%2C2 v12 M230.5%2C2 v12 M236.5%2C2 v12' stroke='%23000' stroke-width='1'/><path d='M250.5%2C8 H465' stroke='%23000' stroke-width='1.2'/></svg>"); }
.sw-divider--inductor { background-image: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='465' height='16'><path d='M0%2C8 H216.5' stroke='%23000' stroke-width='1.2'/><path d='M216.5%2C8 a4%2C4 0 0%2C1 8%2C0 a4%2C4 0 0%2C1 8%2C0 a4%2C4 0 0%2C1 8%2C0 a4%2C4 0 0%2C1 8%2C0' fill='none' stroke='%23000' stroke-width='1.2'/><path d='M248.5%2C8 H465' stroke='%23000' stroke-width='1.2'/></svg>"); }
.sw-divider--capacitor { background-image: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='465' height='16'><path d='M0%2C8 H229.5' stroke='%23000' stroke-width='1.2'/><path d='M229.5%2C0 v16 M235.5%2C0 v16' stroke='%23000' stroke-width='2'/><path d='M235.5%2C8 H465' stroke='%23000' stroke-width='1.2'/></svg>"); }
.sw-divider--battery { background-image: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='465' height='16'><path d='M0%2C8 H226.5' stroke='%23000' stroke-width='1.2'/><path d='M226.5%2C-1 v18 M231.5%2C3 v10 M236.5%2C-1 v18 M241.5%2C3 v10' stroke='%23000' stroke-width='1.8'/><path d='M241.5%2C8 H465' stroke='%23000' stroke-width='1.2'/></svg>"); }
.sw-divider--diode { background-image: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='465' height='16'><path d='M0%2C8 H225.5' stroke='%23000' stroke-width='1.2'/><path d='M225.5%2C1 L237.5%2C8 L225.5%2C15 Z' fill='%23000'/><path d='M238.5%2C1 v14' stroke='%23000' stroke-width='2'/><path d='M238.5%2C8 H465' stroke='%23000' stroke-width='1.2'/></svg>"); }
.sw-divider--plugs { background-image: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='465' height='16'><path d='M0%2C8 H212.5' stroke='%23000' stroke-width='1.2'/><rect x='212.5' y='2' width='14' height='12' fill='%23000'/><path d='M226.5%2C5 h6 M226.5%2C11 h6' stroke='%23000' stroke-width='1.6'/><rect x='236.5' y='2' width='16' height='12' fill='%23fff' stroke='%23000' stroke-width='1.2'/><path d='M236.5%2C5 h5 M236.5%2C11 h5' stroke='%23000' stroke-width='1'/><path d='M252.5%2C8 H465' stroke='%23000' stroke-width='1.2'/></svg>"); }
.sw-divider--hair { height: 10px; background-size: 465px 10px; background-image: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='465' height='10'><path d='M0%2C5H465' stroke='%23000' stroke-width='0.96'/></svg>"); }
.sw-divider--term { height: 10px; background-size: 465px 10px; background-image: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='465' height='10'><path d='M5%2C5H460' stroke='%23000' stroke-width='0.96'/><rect x='0.0' y='1.5' width='7' height='7' fill='%23fff' stroke='%23000' stroke-width='1.3'/><rect x='458.0' y='1.5' width='7' height='7' fill='%23fff' stroke='%23000' stroke-width='1.3'/></svg>"); }
.sw-divider--double { height: 10px; background-size: 465px 10px; background-image: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='465' height='10'><path d='M0%2C2.92H465M0%2C7.08H465' stroke='%23000' stroke-width='0.80'/><path d='M0.6%2C1.92v6.16M464.4%2C1.92v6.16' stroke='%23000' stroke-width='1.6'/></svg>"); }
.sw-divider--none { display: none; }

/* Edge wire: one per spread at most, vertical, 24px from the trim, stops above the footer. Marks span 24..34px. */
.sw-edgewire { position: absolute; left: 24px; top: 44px; width: 10px; height: 680px; pointer-events: none; background-repeat: no-repeat; background-position: left top; background-size: 10px 680px; }
.sw-page--right .sw-edgewire { left: auto; right: 24px; }
.sw-edgewire--hair { background-image: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='10' height='680'><g transform='translate%285%2C0%29 rotate%2890%29'><path d='M0%2C0H680' stroke='%23000' stroke-width='0.96'/></g></svg>"); }
.sw-edgewire--term { background-image: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='10' height='680'><g transform='translate%285%2C0%29 rotate%2890%29'><path d='M5%2C0H675' stroke='%23000' stroke-width='0.96'/><rect x='0.0' y='-3.5' width='7' height='7' fill='%23fff' stroke='%23000' stroke-width='1.3'/><rect x='673.0' y='-3.5' width='7' height='7' fill='%23fff' stroke='%23000' stroke-width='1.3'/></g></svg>"); }
.sw-edgewire--double { background-image: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='10' height='680'><g transform='translate%285%2C0%29 rotate%2890%29'><path d='M0%2C-2.08H680M0%2C2.08H680' stroke='%23000' stroke-width='0.80'/><path d='M0.6%2C-3.08v6.16M679.4%2C-3.08v6.16' stroke='%23000' stroke-width='1.6'/></g></svg>"); }
.sw-edgewire--signal { background-image: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='10' height='680'><g transform='translate%285%2C0%29 rotate%2890%29'><path d='M0%2C0H670' stroke='%23000' stroke-width='1.12' stroke-dasharray='6.4 4.0'/><path d='M670%2C-4.5L680%2C0L670%2C4.5Z' fill='%23000'/></g></svg>"); }
.sw-edgewire--slim { background-image: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='10' height='680'><g transform='translate%285%2C0%29 rotate%2890%29'><path d='M8%2C0 L658%2C0' fill='none' stroke='%23000' stroke-width='6' stroke-linejoin='round' stroke-linecap='butt'/><path d='M8%2C0 L658%2C0' fill='none' stroke='%23fff' stroke-width='3.4' stroke-linejoin='round'/><rect x='0.5' y='-3.5' width='7' height='7' fill='%23fff' stroke='%23000' stroke-width='1.3'/><rect x='201.0' y='-4.0' width='6' height='8' fill='%23000'/><rect x='432.2' y='-4.0' width='6' height='8' fill='%23000'/><rect x='658' y='-3.5' width='12' height='7' fill='%23000'/><path d='M661%2C-3.5 v7 M664%2C-3.5 v7' stroke='%23fff' stroke-width='0.9'/><path d='M670%2C0 h7' stroke='%23000' stroke-width='1.6'/></g></svg>"); }

/* Heading: boxed designator (U1, U2...), hairline, terminal square. */
.sw-h2--wired { border-bottom: 0; margin-bottom: 4px; }
.sw-h2--wired::after { content: ""; flex: 1; height: 0; border-top: 1px solid var(--ink, #000000); margin-left: 8px; }
.sw-h2--wired:not(:first-of-type) { font-size: 16px; }
.sw-h2 .sw-des { font-family: var(--font-mono, "Ubuntu Mono", monospace); font-weight: 700; font-size: 11px; line-height: 1.2; letter-spacing: 0; border: 1.3px solid var(--ink, #000000); padding: 1px 4px; margin-right: 1px; }
.sw-h2 .sw-term { order: 3; width: 6px; height: 6px; border: 1.3px solid var(--ink, #000000); background: var(--paper, #ffffff); margin-left: -1px; flex: 0 0 auto; }
/* Play-aid sheets on coloured stock show the paper colour on screen; print is white (print on coloured paper). */
@media print {
  .sw-doc.sw-page--stock, .sw-doc.sw-page--stock.sw-stock--salmon, .sw-doc.sw-page--stock.sw-stock--sky, .sw-doc.sw-page--stock.sw-stock--mint, .sw-doc.sw-page--stock.sw-stock--blue { --stock: #ffffff; --paper: #ffffff; --tint: #ececec; background: #ffffff !important; }
}
/* Compact subhead under an h2. */
.sw-h3 { font-family: var(--font-display, "Saira Condensed", sans-serif); font-weight: 700; font-size: 14px; letter-spacing: 0.5px; text-transform: uppercase; line-height: 1.15; margin: 6px 0 2px 0; break-after: avoid; }
.sw-h3 code { font-size: inherit; }


/* Zine page furniture on top of ds/bundle.css. Rules copied from the v4/v5 canvas boards. */
.txt{font-size:13px;line-height:1.4;margin:0 0 7px 0}
.h3{font-size:15px !important;margin:8px 0 3px 0 !important}
ul.r,ol.r{margin:0 0 6px 0;padding-left:16px;font-size:13px;line-height:1.38}
ul.r li,ol.r li{margin-bottom:2px}
.dense .sw-ledger{margin:2px 0 4px 0;font-size:11.5px}
.dense .sw-ledger td{padding:1px 5px;line-height:1.22}
.dense .sw-ledger th{padding:2px 5px}
.sw-ledger td.sw-name{white-space:nowrap}
.sw-ledger .sw-r{text-align:right}
.lore{font-size:12.5px;line-height:1.38;font-style:italic;margin:0 0 6px 0}
.sw-page a{color:#000}.sw-page{isolation:isolate}.sw-page>*{flex-shrink:0}
.in{margin:0 0 4px 0}.in:last-child{margin-bottom:0}
.xr{display:flex;justify-content:space-between;font-family:'Saira Condensed',sans-serif;font-weight:600;font-size:12px;letter-spacing:1.5px;text-transform:uppercase;padding-bottom:3px;position:relative;z-index:1}
.art{position:absolute;inset:0;z-index:-1;pointer-events:none}
.v4{padding-top:28px !important;padding-bottom:24px !important}
.v4 .xr{display:flex;justify-content:space-between;align-items:center;column-gap:10px;align-items:center;padding-bottom:0;line-height:1.05}
.v4 .xr span:last-child{text-align:right}
.v4 .sw-h2{--hs:20px;font-size:var(--hs);border-bottom:0 !important;display:flex;align-items:flex-start;gap:0}
.v4 .sw-h2 .des{flex:0 0 auto;font-family:'Ubuntu Mono',monospace;font-weight:700;font-size:11px;line-height:14px;border:1.5px solid #000;padding:1px 4px;margin:calc((var(--hs) * 1.1 - 19px) / 2) 8px 0 0;letter-spacing:0}
.v4 .sw-h2 .ttl{flex:0 1 auto;min-width:0;line-height:1.1;letter-spacing:.6px;text-wrap:balance}
.v4 .sw-h2::after{content:"";flex:1 1 0;min-width:10px;height:0;border-top:1.3px solid #000;margin:calc(var(--hs) * .55) 0 0 8px}
.v4 .sw-h2 .term{flex:0 0 auto;width:6px;height:6px;border:1.3px solid #000;background:#fff;margin:calc(var(--hs) * .55 - 4px) 0 0 -1px;order:3}
.v4f{margin-top:auto;display:flex;justify-content:space-between;align-items:center;border-top:1px solid #000;padding-top:0;height:20px;box-sizing:border-box;position:relative;z-index:1}
.v4f .fl{font-family:'Ubuntu Mono',monospace;font-size:12px;line-height:1}
.v4f .fo{display:flex;align-items:center;gap:6px;font-family:'Saira Condensed',sans-serif;font-weight:800;font-size:18px;line-height:1}
.v4f.nol{border-top:0;padding-top:0;margin-top:0}
.v4 .sw-notice{border-style:dashed !important}
.zhead,.zfoot{position:relative;z-index:1}
.zfoot{margin-top:auto}
.irtab span{letter-spacing:1px}
.irtab{top:var(--t) !important;height:72px !important}
/* density pass (print v5): sub-section headings 16px, tight margins, 12px name cells */
.dense .sw-ledger td.sw-name{font-size:11.5px}
.dense .sw-ledger th{padding:1px 5px}
.v4 .sw-h2{margin-bottom:4px}
.v4 .sw-h2:not(:first-of-type){--hs:16px}
.v4 .sw-h2:not(:first-of-type).h3{--hs:15px}
svg + .sw-h2{margin-top:4px !important}
.txt{margin-bottom:5px}
.sw-ledger th,.sw-ledger td{text-align:left}
.sw-ledger th.sw-r,.sw-ledger td.sw-r{text-align:right}
.xr span{white-space:nowrap}
.sw-h3{font-family:'Saira Condensed',sans-serif;font-weight:700;font-size:14px;letter-spacing:.5px;text-transform:uppercase;line-height:1.15;margin:6px 0 2px 0}
.sw-h3 code{font-size:inherit}

/* compact chapter opener (a chapter that starts mid-page) */
.sw-opener--compact{margin:10px 0 6px 0}
.sw-opener--compact .sw-opener__row{margin-top:2px}
.sw-opener--compact .sw-opener__num{font-size:28px;padding-right:8px}
.sw-opener--compact .sw-opener__title{font-size:26px}
/* back-cover panel filled from Markdown (role=backcover) */
.bc .bch{font-family:'Saira Condensed',sans-serif;font-weight:700;font-size:13px;letter-spacing:1.2px;text-transform:uppercase;margin:8px 0 3px 0;line-height:1.1}
.bc .bcmd>.bch:first-child{margin-top:0}
.bc .fld p.txt,.bc .fld ul.r{font-size:12.5px;line-height:1.38;margin:0 0 6px 0}
.bc .fld ul.r{padding-left:16px}
.bc .fld blockquote{margin:6px 0 0 0;padding:0 0 4px 8px;border-left:2px solid #000;font-size:12px;line-height:1.3;font-style:italic}
.bc .fld blockquote p{margin:0 0 3px 0}
.v4 .sw-opener__row{margin-top:0}

.bc .bcpanel{align-items:start;flex:0 1 auto;min-height:0}
.bc .bcpanel .sw-ledger{margin:0}
.bc .bch + .sw-ledger{margin-top:3px}
.bc .bc-idx{line-height:1.4}
.bc .bc-idx li{margin:0}
/* edge tab: outlined, never filled; a white tag clipped onto the edge wire (both centred 32px from the trim) */
.sw-page .sw-tab{width:16px;background:#fff;color:#000;border:1px solid #000;box-sizing:border-box;font-size:11px;letter-spacing:1.5px;z-index:2}
/* tab label: horizontal run rotated, line box trimmed to cap height so the ink centres exactly; cancel trailing letter-spacing */
.sw-page .sw-tab span{writing-mode:horizontal-tb;display:block;line-height:1;text-box:trim-both cap alphabetic;padding-inline-start:1.5px;transform:rotate(90deg)}
.sw-page .sw-tab--tight{letter-spacing:.3px}
.sw-page .sw-tab--left span{transform:rotate(-90deg)}

/* breathe (print v5 page review): ledger and lore pages with spare room get looser rhythm; type stays at or above the table floor */
.breathe .sw-ledger{margin:6px 0 12px 0;font-size:12px}
.breathe .sw-ledger td{padding:3.5px 6px;line-height:1.28}
.breathe .sw-ledger th{padding:3px 6px}
.breathe .sw-ledger td.sw-name{font-size:12px}
.breathe .txt{margin-bottom:10px;line-height:1.5}
.breathe .sw-h2:not(:first-of-type){margin-top:18px !important}
.breathe .sw-h3{margin:14px 0 4px 0}
.breathe .sw-notice,.breathe blockquote{margin-top:16px}

/* tables set in a column never exceed it: names may wrap there */
.zcols--fit > table.sw-ledger{width:100%;max-width:100%}
.zcols--fit > table.sw-ledger td.sw-name{white-space:normal}
/* Inhuman Resources: each faction opens its spread with a big title */
.sw-page[data-zine="inhuman"][data-role="opener"]:not([data-chapter="1"]) > h2.sw-h2:first-of-type .ttl { font-size: 38px; line-height: 0.95; letter-spacing: 0.5px; }
.sw-page[data-zine="inhuman"][data-role="opener"]:not([data-chapter="1"]) > h2.sw-h2:first-of-type { margin-bottom: 10px; }
.sw-page[data-zine="inhuman"][data-role="opener"]:not([data-chapter="1"]) > .zhead { visibility: hidden; height: 0; margin: 0; padding: 0; overflow: hidden; }
/* Inline diagrams and mission maps (Campaign and Missions) */
.sw-diagram{margin:8px 0;break-inside:avoid}
.sw-diagram svg{display:block;width:100%;height:auto}
.sw-diagram .dg-box{fill:var(--paper,#fff);stroke:var(--ink,#000);stroke-width:1.5}
.sw-diagram .dg-line{fill:none;stroke:var(--ink,#000);stroke-width:1.5}
.sw-diagram .dg-n{font-weight:700}
.sw-diagram text{font-family:'Ubuntu Mono',monospace;font-size:11.5px;fill:var(--ink,#000)}
.sw-page .sw-map{margin:8px 0 10px}
.sw-page .sw-map figcaption{font-family:"Ubuntu Mono",monospace;font-size:11.5px;text-align:center;margin-top:4px}
.sw-page .sw-map svg{width:116px;height:116px}
.sw-page table + p.txt{margin-top:6px}

/* Print v5 page layout: screen preview, spread view, mobile scale and real print.
   Appended after ds/bundle.css and zine.css into generator/style-zine.css. The PDF is what Chrome prints
   from the print pages, so preview and print share these rules. */
@page { size: 148mm 210mm; margin: 0; }

.zine { display: flex; flex-direction: column; align-items: center; gap: 2em; margin: 0 auto 3em auto; }
.zine .sw-page { flex: none; outline: 1px solid #ccc; }
.zine .sw-page.zine-ovf { outline: 3px solid red; }
.zine .sw-page .page-fill-badge { z-index: 100; }

/* Spread view (booklet-mode toggle): page 1 alone on the right, 2|3, 4|5 ... N alone on the left. */
@media screen and (min-width: 1120px) {
    body.booklet-mode .zine {
        display: grid;
        grid-template-columns: repeat(2, 559px);
        justify-content: center;
        justify-items: start;
        gap: 2em 0;
    }
    body.booklet-mode .zine .sw-page:first-child { grid-column: 2; }
}

/* Phones: one page at a time, scaled to the viewport (updatePageScale sets --page-scale). */
@media screen and (max-width: 980px) {
    .zine { display: block; margin: 0; }
    .zine .sw-page {
        transform: scale(var(--page-scale, 1));
        transform-origin: top left;
        margin: 0 0 calc(-794px * (1 - var(--page-scale, 1))) var(--page-offset, 0);
    }
}

/* Real print: one page sheet per sw-page, black ink on white paper. */
@media print {
    html, body { background: #fff !important; margin: 0 !important; padding: 0 !important; }
    .content { margin: 0 !important; padding: 0 !important; display: block !important; width: auto !important; }
    .zine { display: block !important; margin: 0 !important; gap: 0; }
    .zine .sw-page {
        margin: 0 !important;
        outline: 0 !important;
        transform: none !important;
        break-after: page;
        page-break-after: always;
        break-inside: avoid;
    }
    .zine .sw-page:last-child, .zine:last-child .sw-page:last-child { break-after: auto; page-break-after: auto; }
    * { -webkit-print-color-adjust: exact; print-color-adjust: exact; }
    .app-menu, .preview-notice, .page-warning, .page-fill-badge, .file-indicator, #rb-search { display: none !important; }
    /* Stock sheets print as white paper. */
    .sw-page--stock, .sw-page--stock.sw-stock--salmon, .sw-page--stock.sw-stock--sky, .sw-page--stock.sw-stock--mint, .sw-page--stock.sw-stock--blue {
        --stock: #fff;
        --paper: #fff;
        --tint: #ececec;
        background: #fff !important;
    }
    /* Cover boards carry the stock colours inline: white in print. */
    [style*="background: #f6df5e"], [style*="background: #f2a68f"], [style*="background: #a9cbe8"], [style*="background: #faf0b0"], [style*="background: #f7d5dc"], [style*="background: #f4eedb"], [style*="background: #a8d5a0"], [style*="background: #e1f0d9"], [style*="background: #dbe8f5"], [style*="background: #e5d9a8"] { background: #fff !important; }
    [style*="; color: #f6df5e"], [style*="; color: #f2a68f"], [style*="; color: #a9cbe8"], [style*="; color: #faf0b0"], [style*="; color: #f7d5dc"], [style*="; color: #f4eedb"], [style*="; color: #a8d5a0"], [style*="; color: #e1f0d9"], [style*="; color: #dbe8f5"], [style*="; color: #e5d9a8"] { color: #fff !important; }
}

/* Per-page density opt-ins: /page dense and /page cols=2 */
.dense2 .txt { font-size: 12.5px; line-height: 1.3; margin-bottom: 5px; }
.dense2 ul.r, .dense2 ol.r { font-size: 12.5px; line-height: 1.3; margin-bottom: 4px; }
.dense2 .sw-ledger { font-size: 11.5px; }
.dense2 .sw-ledger td { padding: 0 5px; line-height: 1.16; }
.dense2 .sw-h2 { margin-top: 7px !important; }
.zcols { column-count: 2; column-gap: 20px; }
.zcols > * { break-inside: avoid; }
.zcols > .sw-opener{column-span:all}
/* cols=2: nothing may exceed its column; wide tables span both */
.zcols svg { max-width: 100%; height: auto; }
.zcols > table.sw-ledger { column-span: all; width: 100%; }
.zcols--fit > table.sw-ledger { column-span: none; width: 100%; }
@media print { .w-top, .w-formbar, .w-foot, .w-wire { display: none !important; } }

/* Vector fills (generated by lib/zine_vector.py). */
.sw-page .sw-folio::before { background-color: transparent; background-image: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='5.657' height='5.657'><path d='M0%2C5.657L5.657%2C0M-2.828%2C2.828L2.828%2C-2.828M2.828%2C8.485L8.485%2C2.828' stroke='%23000' stroke-width='1.5' fill='none'/></svg>"); background-size: 5.657px 5.657px; background-repeat: repeat; }
.sw-procedure::before, .sw-procedure::after { background-color: transparent; background-image: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='4.95' height='4.95'><path d='M0%2C4.95L4.95%2C0M-2.475%2C2.475L2.475%2C-2.475M2.475%2C7.425L7.425%2C2.475' stroke='%23000' stroke-width='1' fill='none'/></svg>"); background-size: 4.95px 4.95px; background-repeat: repeat; }
.sw-hatch { background-color: transparent; background-image: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='5.657' height='5.657'><path d='M0%2C5.657L5.657%2C0M-2.828%2C2.828L2.828%2C-2.828M2.828%2C8.485L8.485%2C2.828' stroke='%23000' stroke-width='1' fill='none'/></svg>"); background-size: 5.657px 5.657px; background-repeat: repeat; }
.sw-token__glyph--hatch { background-color: transparent; background-image: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='6.364' height='6.364'><rect width='6.364' height='6.364' fill='%23fff'/><path d='M0%2C6.364L6.364%2C0M-3.182%2C3.182L3.182%2C-3.182M3.182%2C9.546L9.546%2C3.182' stroke='%23000' stroke-width='1.5' fill='none'/></svg>"); background-size: 6.364px 6.364px; background-repeat: repeat; }
.sw-hazard { background-image: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='12.728' height='12.728'><path d='M0%2C12.728L12.728%2C0M-6.364%2C6.364L6.364%2C-6.364M6.364%2C19.092L19.092%2C6.364' stroke='%23000' stroke-width='4' fill='none'/></svg>"); background-size: 12.728px 12.728px; background-repeat: repeat; }
.sw-disc--screen { background-image: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='4' height='4'><rect x='1.25' y='1.25' width='1.5' height='1.5' fill='%23000'/></svg>"); background-size: 4px 4px; }
.sw-screen { background-image: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='4' height='4'><rect x='1.25' y='1.25' width='1.5' height='1.5' fill='%23000'/></svg>"); background-size: 4px 4px; }
.sw-card--back .sw-card__frame { background-image: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='4' height='4'><rect x='1.25' y='1.25' width='1.5' height='1.5' fill='%23000'/></svg>"); background-size: 4px 4px; }
.sw-card--back.sw-card--hatch .sw-card__frame { background-image: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='5.657' height='5.657'><path d='M0%2C5.657L5.657%2C0M-2.828%2C2.828L2.828%2C-2.828M2.828%2C8.485L8.485%2C2.828' stroke='%23000' stroke-width='1' fill='none'/></svg>"); background-size: 5.657px 5.657px; }
.sw-cutgrid::before { background-image: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg'><rect x='0' y='0' width='0.75' height='100%25' fill='%23000'/></svg>"); background-size: var(--pitch-x) 100%; background-repeat: repeat-x; }
.sw-cutgrid::after { background-image: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg'><rect x='0' y='0' width='100%25' height='0.75' fill='%23000'/></svg>"); background-size: 100% var(--pitch-y); background-repeat: repeat-y; }
.sw-track i.off { background: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg'><path d='M0%2C100%25L100%25%2C0' stroke='%23000' stroke-width='1.5' fill='none'/></svg>"); }
.sw-brackets { background: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='14' height='14'><path d='M0%2C1H14M1%2C0V14' stroke='%23000' stroke-width='2' fill='none'/></svg>") top left / 14px 14px no-repeat, url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='14' height='14'><path d='M0%2C1H14M13%2C0V14' stroke='%23000' stroke-width='2' fill='none'/></svg>") top right / 14px 14px no-repeat, url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='14' height='14'><path d='M0%2C13H14M1%2C0V14' stroke='%23000' stroke-width='2' fill='none'/></svg>") bottom left / 14px 14px no-repeat, url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='14' height='14'><path d='M0%2C13H14M13%2C0V14' stroke='%23000' stroke-width='2' fill='none'/></svg>") bottom right / 14px 14px no-repeat; }
.sw-wire::after { background: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='10' height='10'><rect x='1.7' y='1.7' width='6.6' height='6.6' fill='none' stroke='%23000' stroke-width='2'/></svg>") right center / 10px 10px no-repeat, url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg'><rect x='0' y='0' width='100%25' height='100%25' fill='%23000'/></svg>") left center / calc(100% - 9px) 1.5px no-repeat; }
.sw-barcode::before { background: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='420' height='18'><rect x='0' y='0' width='1' height='18' fill='%23000'/><rect x='3' y='0' width='2' height='18' fill='%23000'/><rect x='6' y='0' width='1' height='18' fill='%23000'/><rect x='10' y='0' width='3' height='18' fill='%23000'/><rect x='14' y='0' width='1' height='18' fill='%23000'/><rect x='17' y='0' width='1' height='18' fill='%23000'/><rect x='21' y='0' width='1' height='18' fill='%23000'/><rect x='24' y='0' width='2' height='18' fill='%23000'/><rect x='27' y='0' width='1' height='18' fill='%23000'/><rect x='31' y='0' width='3' height='18' fill='%23000'/><rect x='35' y='0' width='1' height='18' fill='%23000'/><rect x='38' y='0' width='1' height='18' fill='%23000'/><rect x='42' y='0' width='1' height='18' fill='%23000'/><rect x='45' y='0' width='2' height='18' fill='%23000'/><rect x='48' y='0' width='1' height='18' fill='%23000'/><rect x='52' y='0' width='3' height='18' fill='%23000'/><rect x='56' y='0' width='1' height='18' fill='%23000'/><rect x='59' y='0' width='1' height='18' fill='%23000'/><rect x='63' y='0' width='1' height='18' fill='%23000'/><rect x='66' y='0' width='2' height='18' fill='%23000'/><rect x='69' y='0' width='1' height='18' fill='%23000'/><rect x='73' y='0' width='3' height='18' fill='%23000'/><rect x='77' y='0' width='1' height='18' fill='%23000'/><rect x='80' y='0' width='1' height='18' fill='%23000'/><rect x='84' y='0' width='1' height='18' fill='%23000'/><rect x='87' y='0' width='2' height='18' fill='%23000'/><rect x='90' y='0' width='1' height='18' fill='%23000'/><rect x='94' y='0' width='3' height='18' fill='%23000'/><rect x='98' y='0' width='1' height='18' fill='%23000'/><rect x='101' y='0' width='1' height='18' fill='%23000'/><rect x='105' y='0' width='1' height='18' fill='%23000'/><rect x='108' y='0' width='2' height='18' fill='%23000'/><rect x='111' y='0' width='1' height='18' fill='%23000'/><rect x='115' y='0' width='3' height='18' fill='%23000'/><rect x='119' y='0' width='1' height='18' fill='%23000'/><rect x='122' y='0' width='1' height='18' fill='%23000'/><rect x='126' y='0' width='1' height='18' fill='%23000'/><rect x='129' y='0' width='2' height='18' fill='%23000'/><rect x='132' y='0' width='1' height='18' fill='%23000'/><rect x='136' y='0' width='3' height='18' fill='%23000'/><rect x='140' y='0' width='1' height='18' fill='%23000'/><rect x='143' y='0' width='1' height='18' fill='%23000'/><rect x='147' y='0' width='1' height='18' fill='%23000'/><rect x='150' y='0' width='2' height='18' fill='%23000'/><rect x='153' y='0' width='1' height='18' fill='%23000'/><rect x='157' y='0' width='3' height='18' fill='%23000'/><rect x='161' y='0' width='1' height='18' fill='%23000'/><rect x='164' y='0' width='1' height='18' fill='%23000'/><rect x='168' y='0' width='1' height='18' fill='%23000'/><rect x='171' y='0' width='2' height='18' fill='%23000'/><rect x='174' y='0' width='1' height='18' fill='%23000'/><rect x='178' y='0' width='3' height='18' fill='%23000'/><rect x='182' y='0' width='1' height='18' fill='%23000'/><rect x='185' y='0' width='1' height='18' fill='%23000'/><rect x='189' y='0' width='1' height='18' fill='%23000'/><rect x='192' y='0' width='2' height='18' fill='%23000'/><rect x='195' y='0' width='1' height='18' fill='%23000'/><rect x='199' y='0' width='3' height='18' fill='%23000'/><rect x='203' y='0' width='1' height='18' fill='%23000'/><rect x='206' y='0' width='1' height='18' fill='%23000'/><rect x='210' y='0' width='1' height='18' fill='%23000'/><rect x='213' y='0' width='2' height='18' fill='%23000'/><rect x='216' y='0' width='1' height='18' fill='%23000'/><rect x='220' y='0' width='3' height='18' fill='%23000'/><rect x='224' y='0' width='1' height='18' fill='%23000'/><rect x='227' y='0' width='1' height='18' fill='%23000'/><rect x='231' y='0' width='1' height='18' fill='%23000'/><rect x='234' y='0' width='2' height='18' fill='%23000'/><rect x='237' y='0' width='1' height='18' fill='%23000'/><rect x='241' y='0' width='3' height='18' fill='%23000'/><rect x='245' y='0' width='1' height='18' fill='%23000'/><rect x='248' y='0' width='1' height='18' fill='%23000'/><rect x='252' y='0' width='1' height='18' fill='%23000'/><rect x='255' y='0' width='2' height='18' fill='%23000'/><rect x='258' y='0' width='1' height='18' fill='%23000'/><rect x='262' y='0' width='3' height='18' fill='%23000'/><rect x='266' y='0' width='1' height='18' fill='%23000'/><rect x='269' y='0' width='1' height='18' fill='%23000'/><rect x='273' y='0' width='1' height='18' fill='%23000'/><rect x='276' y='0' width='2' height='18' fill='%23000'/><rect x='279' y='0' width='1' height='18' fill='%23000'/><rect x='283' y='0' width='3' height='18' fill='%23000'/><rect x='287' y='0' width='1' height='18' fill='%23000'/><rect x='290' y='0' width='1' height='18' fill='%23000'/><rect x='294' y='0' width='1' height='18' fill='%23000'/><rect x='297' y='0' width='2' height='18' fill='%23000'/><rect x='300' y='0' width='1' height='18' fill='%23000'/><rect x='304' y='0' width='3' height='18' fill='%23000'/><rect x='308' y='0' width='1' height='18' fill='%23000'/><rect x='311' y='0' width='1' height='18' fill='%23000'/><rect x='315' y='0' width='1' height='18' fill='%23000'/><rect x='318' y='0' width='2' height='18' fill='%23000'/><rect x='321' y='0' width='1' height='18' fill='%23000'/><rect x='325' y='0' width='3' height='18' fill='%23000'/><rect x='329' y='0' width='1' height='18' fill='%23000'/><rect x='332' y='0' width='1' height='18' fill='%23000'/><rect x='336' y='0' width='1' height='18' fill='%23000'/><rect x='339' y='0' width='2' height='18' fill='%23000'/><rect x='342' y='0' width='1' height='18' fill='%23000'/><rect x='346' y='0' width='3' height='18' fill='%23000'/><rect x='350' y='0' width='1' height='18' fill='%23000'/><rect x='353' y='0' width='1' height='18' fill='%23000'/><rect x='357' y='0' width='1' height='18' fill='%23000'/><rect x='360' y='0' width='2' height='18' fill='%23000'/><rect x='363' y='0' width='1' height='18' fill='%23000'/><rect x='367' y='0' width='3' height='18' fill='%23000'/><rect x='371' y='0' width='1' height='18' fill='%23000'/><rect x='374' y='0' width='1' height='18' fill='%23000'/><rect x='378' y='0' width='1' height='18' fill='%23000'/><rect x='381' y='0' width='2' height='18' fill='%23000'/><rect x='384' y='0' width='1' height='18' fill='%23000'/><rect x='388' y='0' width='3' height='18' fill='%23000'/><rect x='392' y='0' width='1' height='18' fill='%23000'/><rect x='395' y='0' width='1' height='18' fill='%23000'/><rect x='399' y='0' width='1' height='18' fill='%23000'/><rect x='402' y='0' width='2' height='18' fill='%23000'/><rect x='405' y='0' width='1' height='18' fill='%23000'/><rect x='409' y='0' width='3' height='18' fill='%23000'/><rect x='413' y='0' width='1' height='18' fill='%23000'/><rect x='416' y='0' width='1' height='18' fill='%23000'/></svg>") 0 0 / 420px 18px no-repeat; }
@media screen { .sw-plate img, .sw-spot img, .sw-tailpiece img { filter: grayscale(1); } .sw-cover img { mix-blend-mode: multiply; } }
