/* Self-hosted fonts (woff2, subset latin) */
@font-face {
  font-family: 'Bricolage Grotesque';
  font-style: normal;
  font-weight: 400 800;
  font-display: swap;
  src: url('fonts/bricolage-grotesque-latin.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

@font-face {
  font-family: 'Literata';
  font-style: normal;
  font-weight: 400 700;
  font-display: swap;
  src: url('fonts/literata-latin.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

@font-face {
  font-family: 'Literata';
  font-style: italic;
  font-weight: 400 700;
  font-display: swap;
  src: url('fonts/literata-italic-latin.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

/* Metric-matched fallback fonts to eliminate CLS */
@font-face {
  font-family: 'Bricolage Fallback';
  src: local('Arial'), local('Helvetica');
  size-adjust: 104%;
  ascent-override: 95%;
  descent-override: 25%;
  line-gap-override: 0%;
}

@font-face {
  font-family: 'Literata Fallback';
  src: local('Georgia'), local('Times New Roman');
  size-adjust: 100%;
  ascent-override: 92%;
  descent-override: 26%;
  line-gap-override: 0%;
}

/* ==========================================================================
   SoloWired — site stylesheet
   One file for WordPress + GeneratePress (child theme or enqueued file).
   All classes are prefixed sw-. Tokens live on :root.
   Fonts: Bricolage Grotesque (UI/display) + Literata (reading), Google Fonts.
   ========================================================================== */

/* ---------- 1. Tokens ---------- */
:root {
  /* core palette */
  --sw-ink: #18222D;
  --sw-graphite: #4D5966;
  --sw-paper: #FFFFFF;
  --sw-panel: #F1F4F7;
  --sw-rule: #D5DCE3;
  --sw-rule-strong: #C3CCD5;
  --sw-signal: #FFC53D;
  --sw-signal-hover: #FFB80F;
  --sw-cobalt: #1F49C7;
  --sw-cobalt-hover: #15338F;

  /* wire colors (category system): wire = graphic, ink = text, tint = background */
  --sw-email: #2E6BE6;   --sw-email-ink: #1C4BAE;   --sw-email-tint: #E7EFFD;
  --sw-voice: #8B55E8;   --sw-voice-ink: #5E2DC0;   --sw-voice-tint: #F0E9FD;
  --sw-web: #0E9A8A;     --sw-web-ink: #0A6A5F;     --sw-web-tint: #E1F4F1;
  --sw-course: #CF7408;  --sw-course-ink: #904A00;  --sw-course-tint: #FDF0DE;
  --sw-privacy: #2F9445; --sw-privacy-ink: #226B32; --sw-privacy-tint: #E4F3E7;
  --sw-biz: #D8423A;     --sw-biz-ink: #A82A23;     --sw-biz-tint: #FBE8E6;
  --sw-seo: #A2662A;     --sw-seo-ink: #77481A;     --sw-seo-tint: #F5ECE2;
  --sw-prod: #5F6E80;    --sw-prod-ink: #465364;    --sw-prod-tint: #ECEFF3;

  /* glyph shapes (used as CSS masks, so they take any color) */
  --sw-shape-circle: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Ccircle cx='6' cy='6' r='5.25'/%3E%3C/svg%3E");
  --sw-shape-wave: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpath d='M.8 6C2.3.9 4.4.9 6 6s3.7 5.1 5.2 0' fill='none' stroke='%23000' stroke-width='2.4' stroke-linecap='round'/%3E%3C/svg%3E");
  --sw-shape-square: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Crect x='1' y='1' width='10' height='10' rx='1'/%3E%3C/svg%3E");
  --sw-shape-triangle: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpath d='M6 .6l5.8 10.8H.2z'/%3E%3C/svg%3E");
  --sw-shape-hex: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpath d='M6 .3l5.2 2.9v5.6L6 11.7.8 8.8V3.2z'/%3E%3C/svg%3E");
  --sw-shape-diamond: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpath d='M6 0l6 6-6 6-6-6z'/%3E%3C/svg%3E");
  --sw-shape-bars: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpath d='M.5 7.5h3v4h-3zM4.5 4.5h3v7h-3zM8.5 1h3v10.5h-3z'/%3E%3C/svg%3E");
  --sw-shape-ring: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Ccircle cx='6' cy='6' r='4.2' fill='none' stroke='%23000' stroke-width='2.6'/%3E%3C/svg%3E");

  /* type */
  --sw-font-ui: "Bricolage Grotesque", "Bricolage Fallback", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
  --sw-font-read: "Literata", "Literata Fallback", Georgia, "Times New Roman", serif;
  --sw-fs-xs: 0.8125rem;   /* 13 */
  --sw-fs-sm: 0.9375rem;   /* 15 */
  --sw-fs-ui: 1rem;        /* 16 */
  --sw-fs-base: 1.125rem;  /* 18 */
  --sw-fs-md: 1.25rem;     /* 20 */
  --sw-fs-lg: 1.5625rem;   /* 25 */
  --sw-fs-xl: clamp(1.75rem, 1.2rem + 1.6vw, 2.125rem);
  --sw-fs-2xl: clamp(2.25rem, 1.3rem + 3.2vw, 3.25rem);
  --sw-fs-hero: clamp(2.875rem, 1rem + 7.4vw, 6.5rem);

  /* spacing */
  --sw-s-1: 4px; --sw-s-2: 8px; --sw-s-3: 12px; --sw-s-4: 16px; --sw-s-5: 24px;
  --sw-s-6: 32px; --sw-s-7: 48px; --sw-s-8: 64px; --sw-s-9: 96px;

  /* radii (hierarchy, not one value) */
  --sw-r-table: 8px; --sw-r-btn: 6px; --sw-r-mark: 10px; --sw-r-card: 12px; --sw-r-panel: 16px;

  /* layout */
  --sw-container: 1200px;
  --sw-gutter: 24px;
  --sw-measure: 66ch;
}
@media (max-width: 640px) { :root { --sw-gutter: 16px; } }

/* Category hooks: set on any element, children read the vars */
.sw-cat--email        { --w: var(--sw-email);   --wi: var(--sw-email-ink);   --wt: var(--sw-email-tint);   --shape: var(--sw-shape-circle); }
.sw-cat--ai-voice     { --w: var(--sw-voice);   --wi: var(--sw-voice-ink);   --wt: var(--sw-voice-tint);   --shape: var(--sw-shape-wave); }
.sw-cat--websites     { --w: var(--sw-web);     --wi: var(--sw-web-ink);     --wt: var(--sw-web-tint);     --shape: var(--sw-shape-square); }
.sw-cat--courses      { --w: var(--sw-course);  --wi: var(--sw-course-ink);  --wt: var(--sw-course-tint);  --shape: var(--sw-shape-triangle); }
.sw-cat--privacy      { --w: var(--sw-privacy); --wi: var(--sw-privacy-ink); --wt: var(--sw-privacy-tint); --shape: var(--sw-shape-hex); }
.sw-cat--business     { --w: var(--sw-biz);     --wi: var(--sw-biz-ink);     --wt: var(--sw-biz-tint);     --shape: var(--sw-shape-diamond); }
.sw-cat--seo          { --w: var(--sw-seo);     --wi: var(--sw-seo-ink);     --wt: var(--sw-seo-tint);     --shape: var(--sw-shape-bars); }
.sw-cat--productivity { --w: var(--sw-prod);    --wi: var(--sw-prod-ink);    --wt: var(--sw-prod-tint);    --shape: var(--sw-shape-ring); }

/* ---------- 2. Base (scoped so GeneratePress leftovers do not fight it) ---------- */
html { -webkit-text-size-adjust: 100%; text-size-adjust: 100%; }
body.sw-site {
  margin: 0;
  background: var(--sw-paper);
  color: var(--sw-ink);
  font-family: var(--sw-font-ui);
  font-size: var(--sw-fs-ui);
  line-height: 1.45;
  font-optical-sizing: auto;
  -webkit-font-smoothing: antialiased;
}
*, *::before, *::after { box-sizing: border-box; }
:where(.sw-site) img, :where(.sw-site) svg { max-width: 100%; }
.sw-site :where(a) { color: var(--sw-cobalt); text-underline-offset: 0.18em; text-decoration-thickness: 1px; }
.sw-site :where(a):hover { color: var(--sw-cobalt-hover); text-decoration-thickness: 2px; }
.sw-site :focus-visible { outline: 3px solid var(--sw-cobalt); outline-offset: 2px; border-radius: 3px; }
.sw-site h1, .sw-site h2, .sw-site h3, .sw-site h4 { font-family: var(--sw-font-ui); color: var(--sw-ink); margin: 0; }
.sw-site p, .sw-site ul, .sw-site ol, .sw-site dl, .sw-site figure { margin: 0; }

/* GeneratePress list indent resets under .sw-site */
.sw-site .sw-crumbs ol, .sw-site .sw-crumbs ul { margin: 0 !important; padding: 0 !important; list-style: none !important; }
.sw-site .sw-features, .sw-site ul.sw-features { margin: 0 !important; padding: 0 !important; list-style: none !important; }
.sw-site .sw-glance dd ul, .sw-site .sw-glance dl dd ul { margin: 0 !important; padding: 0 0 0 1.1em !important; }
.sw-site .sw-plainlist, .sw-site .sw-sources-list { margin: 0 !important; padding-left: 1.2em !important; }
.sw-site .sw-filter, .sw-site .sw-guides, .sw-site .sw-proscons ul, .sw-site .sw-toc ol, .sw-site .sw-sources, .sw-site .sw-footer ul { margin: 0 !important; }

.sw-visually-hidden {
  position: absolute !important; width: 1px; height: 1px; padding: 0; margin: -1px;
  overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0;
}
.sw-skip {
  position: absolute; left: var(--sw-s-4); top: -100px; z-index: 100;
  background: var(--sw-ink); color: #fff !important; padding: var(--sw-s-3) var(--sw-s-4);
  border-radius: var(--sw-r-btn); font-weight: 600; text-decoration: none;
}
.sw-skip:focus { top: var(--sw-s-4); }

.sw-container { width: 100%; max-width: calc(var(--sw-container) + 2 * var(--sw-gutter)); margin-inline: auto; padding-inline: var(--sw-gutter); }

/* Condensed display voice */
.sw-display {
  font-family: var(--sw-font-ui);
  font-weight: 780;
  font-stretch: 78%;
  font-variation-settings: "wdth" 78;
  letter-spacing: -0.015em;
  line-height: 1;
}

/* ---------- 3. Ribbon cable (brand device: top of page, above footer) ---------- */
.sw-ribbon {
  height: 12px;
  background: linear-gradient(to bottom,
    var(--sw-email) 0 1.5px, var(--sw-voice) 1.5px 3px, var(--sw-web) 3px 4.5px, var(--sw-course) 4.5px 6px,
    var(--sw-privacy) 6px 7.5px, var(--sw-biz) 7.5px 9px, var(--sw-seo) 9px 10.5px, var(--sw-prod) 10.5px 12px);
}

/* ---------- 4. Header ---------- */
.sw-header { background: var(--sw-paper); border-bottom: 1px solid var(--sw-rule); }
.sw-header__bar { display: flex; align-items: center; justify-content: space-between; gap: var(--sw-s-5); min-height: 76px; }
.sw-logo { display: inline-flex; align-items: center; color: var(--sw-ink); text-decoration: none; }
.sw-logo svg { display: block; height: 34px; width: auto; }
.sw-logo:focus-visible { outline-offset: 6px; }
.sw-nav ul { list-style: none; padding: 0; display: flex; gap: var(--sw-s-1); }
.sw-nav a {
  display: inline-flex; align-items: center; min-height: 44px; padding: 0 var(--sw-s-3);
  color: var(--sw-ink); text-decoration: none; font-weight: 600; font-size: var(--sw-fs-ui);
  border-radius: var(--sw-r-btn);
}
.sw-nav a:hover { background: var(--sw-panel); color: var(--sw-ink); }
.sw-nav a[aria-current="page"] { box-shadow: inset 0 -3px 0 var(--sw-ink); border-radius: 0; }
@media (max-width: 640px) {
  .sw-header__bar { flex-wrap: wrap; gap: 0; padding-top: var(--sw-s-3); min-height: 0; }
  .sw-logo svg { height: 28px; }
  .sw-nav { width: 100%; margin-inline: calc(-1 * var(--sw-s-3)); }
  .sw-nav ul { overflow-x: auto; scrollbar-width: none; }
  .sw-nav a { font-size: var(--sw-fs-sm); white-space: nowrap; }
}

/* ---------- 5. Buttons ---------- */
.sw-btn, .sw-aff-btn {
  display: inline-flex; align-items: center; justify-content: center; gap: var(--sw-s-2);
  min-height: 46px; padding: 0 var(--sw-s-5);
  font-family: var(--sw-font-ui); font-size: var(--sw-fs-ui); font-weight: 650; line-height: 1.1;
  text-decoration: none; text-align: center;
  border: 2px solid var(--sw-ink); border-radius: var(--sw-r-btn);
  cursor: pointer;
  transition: transform 120ms ease, box-shadow 120ms ease, background-color 120ms ease;
}
.sw-btn:hover, .sw-aff-btn:hover { text-decoration: none; }
.sw-btn--ink { background: var(--sw-ink); color: #fff !important; }
.sw-btn--ink:hover { background: #2B3846; }
.sw-btn--line { background: transparent; color: var(--sw-ink) !important; }
.sw-btn--line:hover { background: var(--sw-panel); }
.sw-btn--quiet { border-color: var(--sw-rule-strong); color: var(--sw-ink) !important; background: var(--sw-paper); min-height: 40px; padding: 0 var(--sw-s-4); font-size: var(--sw-fs-sm); border-width: 1.5px; }
.sw-btn--quiet:hover { border-color: var(--sw-ink); }

/* Affiliate button: the only yellow element. Hard "keycap" edge = clearly pressable. */
.sw-aff-btn {
  background: var(--sw-signal); color: var(--sw-ink) !important;
  box-shadow: 0 3px 0 var(--sw-ink);
  margin-bottom: 3px;
}
.sw-aff-btn:hover { background: var(--sw-signal-hover); }
.sw-aff-btn:active { transform: translateY(2px); box-shadow: 0 1px 0 var(--sw-ink); }
.sw-aff-btn--sm { min-height: 40px; padding: 0 var(--sw-s-4); font-size: var(--sw-fs-sm); }
.sw-aff-btn--block { width: 100%; }
.sw-btn-row { display: flex; flex-wrap: wrap; gap: var(--sw-s-3); align-items: center; }

/* Small disclosure that sits next to affiliate buttons */
.sw-aff-note {
  font-family: var(--sw-font-ui); font-size: var(--sw-fs-xs); line-height: 1.45; color: var(--sw-graphite);
  margin-top: var(--sw-s-3); max-width: 60ch;
}
.sw-aff-note a { color: inherit; }

/* Key: a tiny yellow keycap used in disclosures to say "yellow = affiliate" */
.sw-key {
  display: inline-block; width: 0.95em; height: 0.75em; vertical-align: -0.05em; margin-right: 0.35em;
  background: var(--sw-signal); border: 1.5px solid var(--sw-ink); border-radius: 2px; box-shadow: 0 1.5px 0 var(--sw-ink);
}

/* ---------- 6. Category glyph, chip label and tool mark ---------- */
.sw-glyph {
  display: inline-block; flex: none; width: 0.8em; height: 0.8em;
  background: var(--w, var(--sw-ink));
  -webkit-mask: var(--shape) center / contain no-repeat; mask: var(--shape) center / contain no-repeat;
}
.sw-catlabel {
  display: inline-flex; align-items: center; gap: 0.45em;
  font-size: var(--sw-fs-sm); font-weight: 600; color: var(--wi, var(--sw-graphite));
  text-decoration: none;
}
a.sw-catlabel:hover { color: var(--wi); text-decoration: underline; }

.sw-mark {
  position: relative; flex: none;
  display: inline-grid; place-items: center;
  width: 48px; height: 48px; border-radius: var(--sw-r-mark);
  background: var(--wt, var(--sw-panel)); color: var(--wi, var(--sw-ink));
  font-family: var(--sw-font-ui); font-weight: 760; font-size: 19px; letter-spacing: -0.01em;
  font-stretch: 85%; font-variation-settings: "wdth" 85;
  box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--w, #000) 22%, transparent);
}
.sw-mark::after {
  content: ""; position: absolute; right: 5px; bottom: 5px; width: 9px; height: 9px;
  background: var(--w, var(--sw-ink));
  -webkit-mask: var(--shape) center / contain no-repeat; mask: var(--shape) center / contain no-repeat;
}
.sw-mark--lg { width: 76px; height: 76px; font-size: 30px; border-radius: 14px; }
.sw-mark--lg::after { width: 13px; height: 13px; right: 8px; bottom: 8px; }
.sw-mark--sm { width: 34px; height: 34px; font-size: 14px; border-radius: 8px; }
.sw-mark--sm::after { width: 7px; height: 7px; right: 3px; bottom: 3px; }

/* ---------- 7. Section scaffolding ---------- */
.sw-main { display: block; }
.sw-section { padding-block: var(--sw-s-8); }
.sw-section + .sw-section { border-top: 1px solid var(--sw-rule); }
.sw-section__head { display: flex; align-items: baseline; justify-content: space-between; gap: var(--sw-s-4); flex-wrap: wrap; margin-bottom: var(--sw-s-6); }
.sw-section__title { font-size: var(--sw-fs-xl); }
.sw-section__intro { font-family: var(--sw-font-read); font-size: var(--sw-fs-base); color: var(--sw-graphite); max-width: 56ch; margin-top: var(--sw-s-2); line-height: 1.55; }
.sw-section__link { font-weight: 600; }
@media (max-width: 640px) { .sw-section { padding-block: var(--sw-s-7); } }

/* ---------- 8. Homepage hero + switchboard ---------- */
.sw-hero { padding-block: var(--sw-s-8) var(--sw-s-8); }
.sw-hero__grid { display: grid; grid-template-columns: minmax(0, 1.25fr) minmax(0, 1fr); gap: var(--sw-s-8); align-items: start; }
.sw-hero__title { font-size: var(--sw-fs-hero); line-height: 0.92; letter-spacing: -0.025em; max-width: 9.5em; }
.sw-hero__lead { font-family: var(--sw-font-read); font-size: clamp(1.125rem, 1rem + 0.4vw, 1.3125rem); line-height: 1.55; color: var(--sw-ink); max-width: 36em; margin-top: var(--sw-s-6); }
.sw-hero__actions { margin-top: var(--sw-s-6); }
.sw-hero__note { margin-top: var(--sw-s-5); font-size: var(--sw-fs-sm); color: var(--sw-graphite); }

.sw-board { padding-top: var(--sw-s-2); }
.sw-board__you { display: flex; align-items: center; gap: var(--sw-s-3); font-weight: 650; font-size: var(--sw-fs-ui); }
.sw-board__node {
  width: 26px; height: 26px; border-radius: 50%; background: var(--sw-ink); flex: none;
  box-shadow: 0 0 0 5px var(--sw-paper), 0 0 0 7px var(--sw-ink);
}
.sw-board__you small { display: block; font-weight: 400; color: var(--sw-graphite); font-size: var(--sw-fs-sm); }
.sw-board__list { list-style: none; padding: 0; margin: 0 0 0 11.5px; }
.sw-board__item { position: relative; padding: var(--sw-s-4) 0 var(--sw-s-4) 46px; }
.sw-board__item:first-child { padding-top: var(--sw-s-6); }
.sw-board__item::after { /* the bus: one ink wire running down from "you" */
  content: ""; position: absolute; left: 0; top: 0; bottom: 0; width: 3px; background: var(--sw-ink);
}
.sw-board__item:last-child::after { bottom: calc(50% - 1.5px); border-bottom-left-radius: 3px; }
.sw-board__item::before { /* the tap: a short wire in the category color */
  content: ""; position: absolute; left: 3px; top: calc(50% - 1.5px); width: 37px; height: 3px; background: var(--w);
}
.sw-board__link { display: flex; align-items: center; gap: var(--sw-s-3); text-decoration: none; color: var(--sw-ink) !important; }
.sw-board__link .sw-glyph { width: 16px; height: 16px; }
.sw-board__job { display: block; font-weight: 700; font-size: var(--sw-fs-md); line-height: 1.2; }
.sw-board__guide { display: block; font-size: var(--sw-fs-sm); color: var(--sw-graphite); margin-top: 2px; }
.sw-board__link:hover .sw-board__job { text-decoration: underline; text-decoration-thickness: 2px; text-underline-offset: 0.15em; }

@media (max-width: 960px) {
  .sw-hero__grid { grid-template-columns: 1fr; gap: var(--sw-s-7); }
}
@media (max-width: 640px) {
  .sw-hero { padding-block: var(--sw-s-6) var(--sw-s-7); }
  .sw-hero__title { line-height: 0.95; }
  .sw-board__item { padding-left: 38px; }
  .sw-board__item::before { width: 29px; }
}

/* ---------- 9. Tool cards + grid ---------- */
.sw-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--sw-s-5); list-style: none; padding: 0; }
@media (max-width: 1024px) { .sw-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 640px)  { .sw-grid { grid-template-columns: 1fr; gap: var(--sw-s-4); } }

.sw-card {
  display: flex; flex-direction: column; gap: var(--sw-s-4);
  height: 100%; padding: var(--sw-s-5);
  background: var(--sw-paper); border: 1px solid var(--sw-rule-strong); border-radius: var(--sw-r-card);
}
.sw-card:hover { border-color: var(--sw-ink); }
.sw-card[hidden] { display: none; }
.sw-card__head { display: flex; gap: var(--sw-s-3); align-items: center; }
.sw-card__title { font-size: var(--sw-fs-md); font-weight: 700; line-height: 1.15; }
.sw-card__title a { color: var(--sw-ink); text-decoration: none; }
.sw-card__title a:hover { text-decoration: underline; color: var(--sw-ink); }
.sw-card__head .sw-catlabel { font-size: var(--sw-fs-xs); margin-top: 3px; }
.sw-card__tagline { font-family: var(--sw-font-read); font-size: var(--sw-fs-sm); line-height: 1.5; color: var(--sw-ink); }
.sw-card__facts { display: grid; gap: var(--sw-s-2); font-size: var(--sw-fs-sm); line-height: 1.4; padding-top: var(--sw-s-3); border-top: 1px solid var(--sw-rule); }
.sw-card__facts div { display: grid; grid-template-columns: 5.5em 1fr; gap: var(--sw-s-2); }
.sw-card__facts dt { color: var(--sw-graphite); }
.sw-card__facts dd { margin: 0; }
.sw-card__actions { margin-top: auto; display: flex; justify-content: space-between; align-items: center; gap: var(--sw-s-3); flex-wrap: wrap; padding-top: var(--sw-s-2); }

/* ---------- 10. Guides list (home, category pages) ---------- */
.sw-guides { list-style: none; padding: 0; border-top: 2px solid var(--sw-ink); }
.sw-guide { display: grid; grid-template-columns: 230px minmax(0, 1fr) auto; gap: var(--sw-s-5); align-items: baseline; padding: var(--sw-s-5) 0; border-bottom: 1px solid var(--sw-rule); }
.sw-guide__title { font-size: var(--sw-fs-md); font-weight: 700; line-height: 1.25; }
.sw-guide__title a { color: var(--sw-ink); text-decoration: none; }
.sw-guide__title a:hover { text-decoration: underline; color: var(--sw-ink); }
.sw-guide__desc { font-family: var(--sw-font-read); font-size: var(--sw-fs-sm); color: var(--sw-graphite); margin-top: var(--sw-s-2); line-height: 1.55; max-width: 70ch; }
.sw-guide__date { font-size: var(--sw-fs-xs); color: var(--sw-graphite); white-space: nowrap; }
@media (max-width: 860px) {
  .sw-guide { grid-template-columns: 1fr; gap: var(--sw-s-2); }
}

/* ---------- 11. Honesty / method band ---------- */
.sw-method-band { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: var(--sw-s-6); }
.sw-method-band__col { padding: var(--sw-s-6); border-radius: var(--sw-r-panel); }
.sw-method-band__col--done { background: var(--sw-panel); }
.sw-method-band__col--todo { border: 2px dashed var(--sw-rule-strong); }
.sw-method-band h3 { font-size: var(--sw-fs-lg); margin-bottom: var(--sw-s-4); }
.sw-method-band ul { padding-left: 1.1em; font-family: var(--sw-font-read); line-height: 1.55; display: grid; gap: var(--sw-s-2); }
.sw-method-band__key { grid-column: 1 / -1; display: flex; align-items: center; gap: var(--sw-s-4); flex-wrap: wrap; font-size: var(--sw-fs-sm); color: var(--sw-graphite); }
.sw-method-band__key .sw-aff-btn { pointer-events: none; }
@media (max-width: 760px) { .sw-method-band { grid-template-columns: 1fr; gap: var(--sw-s-4); } .sw-method-band__col { padding: var(--sw-s-5); } }

/* ---------- 12. Page head (archives) + breadcrumbs ---------- */
.sw-crumbs { font-size: var(--sw-fs-sm); color: var(--sw-graphite); padding-top: var(--sw-s-6); }
.sw-crumbs ol, .sw-crumbs ul { list-style: none !important; margin: 0 !important; padding: 0 !important; display: flex; flex-wrap: wrap; gap: var(--sw-s-2); }
.sw-crumbs li + li::before { content: "/"; margin-right: var(--sw-s-2); color: var(--sw-rule-strong); }
.sw-crumbs a { color: var(--sw-graphite); }
.sw-pagehead { padding-block: var(--sw-s-5) var(--sw-s-6); }
.sw-pagehead__title { font-size: var(--sw-fs-2xl); max-width: 16em; }
.sw-pagehead__intro { font-family: var(--sw-font-read); font-size: var(--sw-fs-md); line-height: 1.55; max-width: 44em; margin-top: var(--sw-s-4); }

/* ---------- 13. Filter chips (tools directory) ---------- */
.sw-filter { display: flex; flex-wrap: wrap; gap: var(--sw-s-2); padding: 0 !important; margin: 0 !important; list-style: none !important; }
.sw-chip {
  display: inline-flex; align-items: center; gap: 0.5em; min-height: 40px; padding: 0 var(--sw-s-4);
  font-family: var(--sw-font-ui); font-size: var(--sw-fs-sm); font-weight: 600; color: var(--sw-ink);
  background: var(--sw-paper); border: 1.5px solid var(--sw-rule-strong); border-radius: 999px; cursor: pointer;
  transition: background-color 120ms ease, border-color 120ms ease;
}
.sw-chip:hover { border-color: var(--sw-ink); }
.sw-chip__count { color: var(--sw-graphite); font-weight: 500; font-variant-numeric: tabular-nums; }
.sw-chip[aria-pressed="true"] { background: var(--sw-ink); border-color: var(--sw-ink); color: #fff; }
.sw-chip[aria-pressed="true"] .sw-chip__count { color: #C9D1DA; }
.sw-chip[aria-pressed="true"] .sw-glyph { box-shadow: none; filter: brightness(1.35) saturate(1.1); }
.sw-toolbar { display: flex; justify-content: space-between; align-items: baseline; gap: var(--sw-s-4); flex-wrap: wrap; padding-block: var(--sw-s-5) var(--sw-s-5); border-top: 1px solid var(--sw-rule); margin-top: var(--sw-s-5); }
.sw-toolbar__status { font-size: var(--sw-fs-sm); font-weight: 600; }
.sw-toolbar .sw-aff-note { margin-top: 0; }
@media (max-width: 640px) {
  .sw-filter { flex-wrap: wrap; gap: var(--sw-s-2); margin-inline: 0; padding-inline: 0; padding-bottom: var(--sw-s-3); }
  .sw-chip { white-space: nowrap; min-height: 36px; padding: 0 var(--sw-s-3); font-size: var(--sw-fs-xs); }
}

/* ---------- 14. Single tool ---------- */
.sw-tool-layout { display: grid; grid-template-columns: minmax(0, 760px) 380px; justify-content: space-between; column-gap: var(--sw-s-7); align-items: start; padding-top: var(--sw-s-5); }
.sw-tool-layout > .sw-tool-id { grid-column: 1; grid-row: 1; padding-bottom: var(--sw-s-7); }
.sw-tool-layout > .sw-glance { grid-column: 2; grid-row: 1 / span 2; position: sticky; top: var(--sw-s-5); }
.sw-tool-layout > .sw-tool-body { grid-column: 1; grid-row: 2; }
.sw-tool-id { display: grid; grid-template-columns: auto minmax(0, 1fr); gap: var(--sw-s-5); align-items: start; }
.sw-tool-id__title { font-size: var(--sw-fs-2xl); }
.sw-tool-id__tagline { font-family: var(--sw-font-read); font-size: var(--sw-fs-md); line-height: 1.5; margin-top: var(--sw-s-3); max-width: 34em; }
.sw-tool-id__meta { display: flex; flex-wrap: wrap; gap: var(--sw-s-3) var(--sw-s-5); align-items: center; margin-top: var(--sw-s-5); font-size: var(--sw-fs-sm); color: var(--sw-graphite); }
.sw-checked { display: inline-flex; align-items: center; gap: 0.45em; }
.sw-checked::before { content: ""; width: 8px; height: 8px; border-radius: 50%; background: var(--sw-ink); }
.sw-untested { /* dashed = not yet tested hands-on */
  display: inline-flex; align-items: center; min-height: 28px; padding: 3px var(--sw-s-3); line-height: 1.3;
  border: 1.5px dashed var(--sw-graphite); border-radius: 14px; color: var(--sw-ink); font-size: var(--sw-fs-xs); font-weight: 600;
}

.sw-glance { background: var(--sw-panel); border-radius: var(--sw-r-panel); padding: var(--sw-s-5); }
.sw-glance__title { font-size: var(--sw-fs-md); font-weight: 700; margin-bottom: var(--sw-s-3); }
.sw-glance dl { display: grid; gap: 0; margin: 0 !important; }
.sw-glance dl > div { padding: var(--sw-s-3) 0; border-top: 1px solid var(--sw-rule); }
.sw-glance dt { font-size: var(--sw-fs-xs); color: var(--sw-graphite); font-weight: 600; }
.sw-glance dd { margin: 2px 0 0 !important; font-size: var(--sw-fs-ui); line-height: 1.4; }
.sw-glance dd ul, .sw-glance dl dd ul { margin: 0 !important; padding: 0 0 0 1.1em !important; display: grid; gap: 2px; }
.sw-glance .sw-aff-btn { margin-top: var(--sw-s-4); }

.sw-tool-body { max-width: 760px; padding-bottom: var(--sw-s-8); }
.sw-tool-body > * + * { margin-top: var(--sw-s-7); }
.sw-block__title { font-size: var(--sw-fs-xl); margin-bottom: var(--sw-s-4); }
.sw-lede { font-family: var(--sw-font-read); font-size: var(--sw-fs-base); line-height: 1.65; max-width: var(--sw-measure); }
.sw-features, ul.sw-features { list-style: none !important; margin: 0 !important; padding: 0 !important; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--sw-s-3) var(--sw-s-5); }
.sw-features li { display: flex; gap: var(--sw-s-3); align-items: baseline; font-size: var(--sw-fs-ui); line-height: 1.4; padding-bottom: var(--sw-s-3); border-bottom: 1px solid var(--sw-rule); }
.sw-features li::before { content: ""; flex: none; width: 10px; height: 10px; background: var(--w, var(--sw-ink)); -webkit-mask: var(--shape) center / contain no-repeat; mask: var(--shape) center / contain no-repeat; transform: translateY(1px); }
@media (max-width: 640px) { .sw-features { grid-template-columns: 1fr; } }

.sw-proscons { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--sw-s-4); }
.sw-proscons__col { border: 1px solid var(--sw-rule-strong); border-radius: var(--sw-r-card); padding: var(--sw-s-5); }
.sw-proscons__col h3 { font-size: var(--sw-fs-md); margin-bottom: var(--sw-s-3); }
.sw-proscons ul { list-style: none; padding: 0; display: grid; gap: var(--sw-s-3); font-family: var(--sw-font-read); font-size: var(--sw-fs-sm); line-height: 1.5; }
.sw-proscons li { position: relative; padding-left: 1.6em; }
.sw-proscons li::before { position: absolute; left: 0; top: -0.05em; font-family: var(--sw-font-ui); font-weight: 800; font-size: 1.15em; }
.sw-proscons__col--pros li::before { content: "+"; }
.sw-proscons__col--cons li::before { content: "\2212"; }
@media (max-width: 640px) { .sw-proscons { grid-template-columns: 1fr; } }

.sw-plainlist { padding-left: 1.2em; font-family: var(--sw-font-read); font-size: var(--sw-fs-base); line-height: 1.6; display: grid; gap: var(--sw-s-1); }

.sw-related {
  display: grid; grid-template-columns: auto minmax(0, 1fr); gap: var(--sw-s-4); align-items: center;
  padding: var(--sw-s-5); border: 2px solid var(--sw-ink); border-radius: var(--sw-r-card); text-decoration: none; color: var(--sw-ink) !important;
}
.sw-related:hover { background: var(--sw-panel); }
.sw-related__marks { display: flex; gap: 6px; }
.sw-related__kicker { font-size: var(--sw-fs-sm); color: var(--sw-graphite); }
.sw-related__title { display: block; font-size: var(--sw-fs-md); font-weight: 700; line-height: 1.25; margin-top: 2px; }
.sw-related:hover .sw-related__title { text-decoration: underline; }

.sw-research { border: 2px dashed var(--sw-rule-strong); border-radius: var(--sw-r-panel); padding: var(--sw-s-5); }
.sw-research h2 { font-size: var(--sw-fs-lg); font-weight: 760; font-stretch: 82%; font-variation-settings: "wdth" 82; margin-bottom: var(--sw-s-3); }
.sw-research p { font-family: var(--sw-font-read); line-height: 1.6; }
.sw-sources-list { margin-top: var(--sw-s-4); padding-left: 1.2em; font-size: var(--sw-fs-sm); display: grid; gap: var(--sw-s-2); overflow-wrap: anywhere; }

.sw-cta-end { padding: var(--sw-s-6); background: var(--sw-panel); border-radius: var(--sw-r-panel); }
.sw-cta-end__lead { font-size: var(--sw-fs-md); font-weight: 650; margin-bottom: var(--sw-s-4); }

@media (max-width: 1040px) {
  .sw-tool-layout { grid-template-columns: minmax(0, 1fr); }
  .sw-tool-layout > .sw-tool-id, .sw-tool-layout > .sw-glance, .sw-tool-layout > .sw-tool-body { grid-column: 1; grid-row: auto; position: static; }
  .sw-tool-layout > .sw-tool-id { padding-bottom: var(--sw-s-6); }
  .sw-tool-layout > .sw-glance { margin-bottom: var(--sw-s-7); }
}
@media (max-width: 640px) {
  .sw-tool-id { grid-template-columns: 1fr; gap: var(--sw-s-4); }
  .sw-mark--lg { width: 60px; height: 60px; font-size: 24px; }
  .sw-related { grid-template-columns: 1fr; }
}

/* ---------- 15. Article ---------- */
.sw-article-head { padding-block: var(--sw-s-4) var(--sw-s-7); border-bottom: 1px solid var(--sw-rule); }
.sw-article-head__title { font-size: var(--sw-fs-2xl); max-width: 19em; margin-top: var(--sw-s-4); line-height: 1.02; }
.sw-article-head__meta { display: flex; flex-wrap: wrap; gap: var(--sw-s-3) var(--sw-s-5); align-items: center; margin-top: var(--sw-s-5); font-size: var(--sw-fs-sm); color: var(--sw-graphite); }
.sw-compared { display: flex; align-items: center; gap: var(--sw-s-2); }
.sw-compared__marks { display: flex; gap: 6px; }

.sw-article-grid { display: grid; grid-template-columns: 220px minmax(0, 720px); gap: var(--sw-s-8); padding-block: var(--sw-s-7) var(--sw-s-9); }
.sw-toc { position: sticky; top: var(--sw-s-5); align-self: start; font-size: var(--sw-fs-sm); }
.sw-toc__title { font-size: var(--sw-fs-sm); font-weight: 700; margin-bottom: var(--sw-s-3); }
.sw-toc ol { list-style: none; padding: 0; border-left: 2px solid var(--sw-rule); }
.sw-toc a { display: block; padding: 6px 0 6px var(--sw-s-4); margin-left: -2px; border-left: 2px solid transparent; color: var(--sw-graphite); text-decoration: none; line-height: 1.3; }
.sw-toc a:hover { color: var(--sw-ink); border-left-color: var(--sw-ink); }
@media (max-width: 1100px) {
  .sw-article-grid { grid-template-columns: minmax(0, 1fr); gap: 0; max-width: 760px; }
  .sw-toc { display: none; }
}

/* Disclosure at the top of articles ([AFFILIATE_NOTE] / synced block 28) */
.sw-disclosure {
  display: flex; gap: var(--sw-s-3); align-items: baseline;
  font-family: var(--sw-font-ui); font-size: var(--sw-fs-sm); line-height: 1.5; color: var(--sw-graphite);
  padding: var(--sw-s-3) var(--sw-s-4); border: 1px solid var(--sw-rule); border-radius: var(--sw-r-table);
  margin-bottom: var(--sw-s-6);
}
.sw-disclosure .sw-key { flex: none; }
.sw-disclosure a { color: var(--sw-ink); }

/* Prose */
.sw-prose { font-family: var(--sw-font-read); font-size: var(--sw-fs-base); line-height: 1.68; color: var(--sw-ink); }
.sw-prose > * { max-width: var(--sw-measure); }
.sw-prose p { margin: 0 0 1.35em 0; }
.sw-prose > * + * { margin-top: 1.25em; }
.sw-prose h2 {
  font-size: var(--sw-fs-xl); font-weight: 760; font-stretch: 82%; font-variation-settings: "wdth" 82;
  line-height: 1.15; letter-spacing: -0.01em; margin-top: 2.4em; margin-bottom: 0.75em; scroll-margin-top: var(--sw-s-5);
}
.sw-prose h3 { font-size: var(--sw-fs-md); font-weight: 700; line-height: 1.3; margin-top: 1.9em; margin-bottom: 0.6em; }
.sw-prose h2 + *, .sw-prose h3 + * { margin-top: 0.8em; }
.sw-prose ul, .sw-prose ol { padding-left: 1.5em; margin: 0 0 1.35em 0; }
.sw-prose li { margin-bottom: 0.45em; line-height: 1.6; }
.sw-prose li + li { margin-top: 0.45em; }
.sw-prose li::marker { color: var(--sw-graphite); }
.sw-prose strong { font-weight: 650; }
.sw-prose em { font-style: italic; }
.sw-prose a { color: var(--sw-cobalt); }
.sw-prose blockquote { margin-left: 0; padding-left: var(--sw-s-5); border-left: 3px solid var(--sw-rule-strong); color: var(--sw-graphite); }
.sw-prose .sw-small { font-size: var(--sw-fs-sm); color: var(--sw-graphite); font-style: italic; }

/* Quick verdict box */
.sw-verdict-btns { margin-top: var(--sw-s-4); padding-top: var(--sw-s-4); border-top: 1px solid var(--sw-rule-strong); }
.sw-table-btns { margin-top: var(--sw-s-4); margin-bottom: var(--sw-s-6); max-width: none !important; }

.sw-verdict { background: var(--sw-panel); border-radius: var(--sw-r-panel); padding: var(--sw-s-5) var(--sw-s-6) var(--sw-s-6); max-width: none !important; }
.sw-verdict__title { font-family: var(--sw-font-ui); font-size: var(--sw-fs-lg); font-weight: 760; font-stretch: 82%; font-variation-settings: "wdth" 82; margin-bottom: var(--sw-s-3); }
.sw-verdict ul { list-style: none; padding: 0; display: grid; gap: 0; }
.sw-verdict li { padding: var(--sw-s-3) 0; border-top: 1px solid var(--sw-rule-strong); font-size: var(--sw-fs-ui); line-height: 1.55; }
.sw-verdict li + li { margin-top: 0; }
.sw-verdict li strong { display: block; font-family: var(--sw-font-ui); font-weight: 700; font-size: var(--sw-fs-md); }
@media (max-width: 640px) { .sw-verdict { padding: var(--sw-s-4) var(--sw-s-4) var(--sw-s-5); } }

/* Method section inside articles ("How we researched this") */
.sw-method { border: 2px dashed var(--sw-rule-strong); border-radius: var(--sw-r-panel); padding: var(--sw-s-5); font-size: var(--sw-fs-ui); max-width: none !important; }
.sw-method h2 { margin-top: 0; font-size: var(--sw-fs-lg); }
.sw-method > * + * { margin-top: 0.8em; }
.sw-prose h2 + h3 { margin-top: 1em; }

/* Tables */
.sw-table-wrap {
  max-width: none !important; overflow-x: auto; -webkit-overflow-scrolling: touch;
  border: 1px solid var(--sw-rule-strong); border-radius: var(--sw-r-table);
  background:
    linear-gradient(to right, var(--sw-paper) 30%, transparent) left / 32px 100% no-repeat local,
    linear-gradient(to left, var(--sw-paper) 30%, transparent) right / 32px 100% no-repeat local,
    linear-gradient(to right, rgba(24,34,45,.14), transparent) left / 12px 100% no-repeat scroll,
    linear-gradient(to left, rgba(24,34,45,.14), transparent) right / 12px 100% no-repeat scroll;
}
.sw-table-wrap:focus-visible { outline-offset: 3px; }
.sw-table { width: 100%; min-width: 680px; border-collapse: collapse; font-family: var(--sw-font-ui); font-size: var(--sw-fs-sm); line-height: 1.4; }
.sw-table th, .sw-table td { text-align: left; vertical-align: top; padding: var(--sw-s-3) var(--sw-s-4); border-bottom: 1px solid var(--sw-rule); }
.sw-table thead th { background: var(--sw-panel); font-weight: 700; font-size: var(--sw-fs-ui); border-bottom: 2px solid var(--sw-ink); white-space: nowrap; }
.sw-table tbody th, .sw-table tbody td:first-child { font-weight: 650; color: var(--sw-ink); width: 15%; }
.sw-table tbody tr:last-child > * { border-bottom: 0; }
.sw-table td strong, .sw-table th strong { font-weight: 700; }
.sw-table-hint { display: none; font-family: var(--sw-font-ui); font-size: var(--sw-fs-xs); color: var(--sw-graphite); margin-bottom: calc(-1 * var(--sw-s-2)); }
@media (max-width: 800px) { .sw-table-hint { display: block; } }
.sw-caption { font-family: var(--sw-font-ui); font-size: var(--sw-fs-sm); color: var(--sw-graphite); }

/* Affiliate button row inside articles ({{AFF:slug}}) */
.sw-aff-row { max-width: none !important; padding: var(--sw-s-5); border: 1px solid var(--sw-rule-strong); border-radius: var(--sw-r-card); }
.sw-aff-row .sw-aff-note { margin-top: var(--sw-s-4); }

/* FAQ */
.sw-faq { max-width: var(--sw-measure); display: grid; gap: var(--sw-s-4); margin: var(--sw-s-5) 0 var(--sw-s-7); }
.sw-faq__item { padding: var(--sw-s-4) var(--sw-s-5); background: var(--sw-panel); border: 1px solid var(--sw-rule); border-radius: var(--sw-r-table); margin: 0 !important; }
.sw-faq__q { font-family: var(--sw-font-ui); font-size: var(--sw-fs-md); font-weight: 700; line-height: 1.3; color: var(--sw-ink); margin: 0 0 var(--sw-s-2) 0 !important; }
.sw-faq__a { font-family: var(--sw-font-read); font-size: var(--sw-fs-base); line-height: 1.6; color: var(--sw-graphite); margin: 0 !important; }
.sw-prose .sw-faq__item + .sw-faq__item { margin-top: 0; }


/* Responsive table stack for mobile under 600px */
@media (max-width: 600px) {
  .sw-table-stack thead { display: none; }
  .sw-table-stack, .sw-table-stack tbody, .sw-table-stack tr, .sw-table-stack td, .sw-table-stack th {
    display: block; width: 100% !important; min-width: 0 !important; box-sizing: border-box;
  }
  .sw-table-stack tr {
    margin-bottom: var(--sw-s-3);
    padding: var(--sw-s-3) var(--sw-s-4);
    background: var(--sw-panel);
    border: 1px solid var(--sw-rule-strong);
    border-radius: var(--sw-r-table);
  }
  .sw-table-stack th { font-weight: 700; font-size: var(--sw-fs-md); border: none; padding: 0 0 var(--sw-s-1); color: var(--sw-ink); }
  .sw-table-stack td { border: none; padding: var(--sw-s-1) 0; font-size: var(--sw-fs-sm); }
  .sw-table-stack td:last-child {
    font-weight: 700;
    color: var(--sw-ink);
    font-size: var(--sw-fs-ui);
    padding-top: var(--sw-s-2);
    margin-top: var(--sw-s-2);
    border-top: 1px dashed var(--sw-rule-strong);
    display: flex;
    justify-content: space-between;
  }
  .sw-table-stack td:last-child::before {
    content: "Cost: ";
    color: var(--sw-graphite);
    font-weight: 600;
  }
}

/* Sources */
.sw-sources { list-style: none; padding: 0 !important; font-family: var(--sw-font-ui); font-size: var(--sw-fs-sm); line-height: 1.4; }
.sw-sources li { display: grid; grid-template-columns: minmax(0, 15em) minmax(0, 1fr); gap: var(--sw-s-4); padding: var(--sw-s-2) 0; border-bottom: 1px solid var(--sw-rule); }
.sw-sources li + li { margin-top: 0; }
.sw-source-label { font-weight: 600; color: var(--sw-ink); overflow-wrap: break-word; }
.sw-sources a { overflow-wrap: anywhere; }
@media (max-width: 640px) { .sw-sources li { grid-template-columns: 1fr; gap: 2px; } }

/* Article end: tools mentioned */
.sw-mentioned { max-width: none !important; margin-top: var(--sw-s-8) !important; padding-top: var(--sw-s-6); border-top: 2px solid var(--sw-ink); }
.sw-mentioned h2 { margin-top: 0; margin-bottom: var(--sw-s-5); }
.sw-mentioned .sw-grid { grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); font-family: var(--sw-font-ui); }

/* ---------- 16. Footer ---------- */
.sw-footer { background: var(--sw-ink); color: #D7DEE5; margin-top: 0; }
.sw-footer a { color: #FFFFFF; text-decoration: none; }
.sw-footer a:hover { color: #fff; text-decoration: underline; }
.sw-footer :focus-visible { outline-color: var(--sw-signal); }
.sw-footer__grid { display: grid; grid-template-columns: 1.4fr 1fr 1fr; gap: var(--sw-s-7); padding-block: var(--sw-s-8) var(--sw-s-7); }
.sw-footer .sw-logo { color: #fff; }
.sw-footer .sw-logo svg { height: 30px; }
.sw-footer__tag { margin-top: var(--sw-s-4); font-family: var(--sw-font-read); font-size: var(--sw-fs-ui); line-height: 1.55; max-width: 30em; }
.sw-footer h2 { color: #fff; font-size: var(--sw-fs-ui); font-weight: 700; margin-bottom: var(--sw-s-3); }
.sw-footer ul { list-style: none; padding: 0; display: grid; gap: var(--sw-s-1); }
.sw-footer li a { display: inline-flex; align-items: center; gap: 0.5em; min-height: 32px; font-size: var(--sw-fs-sm); }
.sw-footer .sw-glyph { filter: brightness(1.45); }
.sw-footer__legal { border-top: 1px solid #34414F; padding-block: var(--sw-s-5); font-size: var(--sw-fs-xs); line-height: 1.6; color: #B9C3CD; display: flex; justify-content: space-between; gap: var(--sw-s-4); flex-wrap: wrap; }
@media (max-width: 860px) { .sw-footer__grid { grid-template-columns: 1fr 1fr; } .sw-footer__brand { grid-column: 1 / -1; } }
@media (max-width: 480px) { .sw-footer__grid { grid-template-columns: 1fr; gap: var(--sw-s-6); padding-block: var(--sw-s-7) var(--sw-s-6); } }

.sw-context-link {
  padding: var(--sw-s-4);
  background: var(--sw-panel);
  border-left: 3px solid var(--sw-cobalt);
  margin: var(--sw-s-6) 0 !important;
  font-family: var(--sw-font-ui);
  font-size: var(--sw-fs-ui);
  line-height: 1.5;
}
.sw-context-link a {
  font-weight: 600;
  text-decoration: underline;
}

/* ---------- 17. Motion + print ---------- */
@media (prefers-reduced-motion: reduce) {
  .sw-site *, .sw-site *::before, .sw-site *::after { transition: none !important; animation: none !important; scroll-behavior: auto !important; }
  .sw-aff-btn:active { transform: none; }
}
@media print {
  .sw-ribbon, .sw-nav, .sw-toc, .sw-filter, .sw-footer { display: none; }
  .sw-aff-btn { box-shadow: none; }
}
