      :root {
        color-scheme: light;
        /* Newspaper redesign (brief section 3/21) — warm paper, not sterile
           white; ink for text; one editorial-burgundy accent used only for
           critical signals, section rules and active nav, never as flat UI
           decoration. Same variable names as the previous pass so every
           consumer below just inherits the new palette. */
        --color-bg-base: #f4f1ea;
        --color-bg-surface: #efeade;
        --color-bg-raised: #e9e3d6;
        --color-bg-elevated: #e3dccb;
        --color-bg-inset: #fbfaf6;
        --color-border-subtle: rgba(23, 23, 23, 0.08);
        --color-border-default: #d6d0c5;
        --color-border-strong: rgba(23, 23, 23, 0.32);
        /* Text — 4 levels, warm near-black ink as the base (never pure #000) */
        --color-text-1: #171717;
        --color-text-2: #68645e;
        --color-text-3: rgba(23, 23, 23, 0.46);
        --color-text-4: rgba(23, 23, 23, 0.3);
        --color-text-primary: var(--color-text-1);
        --color-text-secondary: var(--color-text-2);
        --color-text-tertiary: var(--color-text-3);
        /* One accent — deep editorial burgundy, used like ink: critical
           signals, section markers, active nav, scores. Rest-state links
           read as ink + hairline border; burgundy only appears on
           hover/active or as a genuine signal marker. */
        --color-accent: #8e1b1b;
        --color-accent-muted: rgba(142, 27, 27, 0.08);
        --color-critical: var(--color-accent);
        --color-positive: #3f6b4a;
        --color-link: var(--color-text-1);
        --color-link-hover: var(--color-accent);
        /* Semantic — caution/error/positive markers only, never decoration */
        --color-warn: #8a6a1e;
        --color-bad: var(--color-accent);
        --color-good: var(--color-positive);
        --shadow-xs: none;
        --shadow-sm: 0 1px 2px rgba(23, 23, 23, 0.07);
        --shadow-md: 0 4px 14px rgba(23, 23, 23, 0.1);
        --shadow-lg: 0 10px 28px rgba(23, 23, 23, 0.14);
        /* Restrained radii — a premium publication is not "rounded
           rectangles everywhere" (brief section 18); pill is kept only for
           the few genuinely pill-shaped utility chips outside the main
           digest page (/my-signals). */
        --radius-sm: 3px;
        --radius-md: 4px;
        --radius-lg: 6px;
        --radius-pill: 999px;
        --space-1: 4px;
        --space-2: 8px;
        --space-3: 12px;
        --space-4: 16px;
        --space-5: 20px;
        --space-6: 24px;
        --space-8: 32px;
        --space-10: 40px;
        --space-12: 48px;
        --space-14: 56px;
        --space-16: 64px;
        --space-20: 80px;
        /* Newsreader (serif) + Inter (sans) — the owner's stated
           recommendation (brief section 4). Numeric figures use Inter with
           tabular-nums rather than a third monospace family. */
        --font-display: "Newsreader", ui-serif, Georgia, serif;
        --font-ui: "Inter", -apple-system, "Segoe UI", sans-serif;
        --font-mono: var(--font-ui);
        /* Type scale (brief section 21): display/headline-*/body/label */
        --text-label: 0.75rem;
        --text-xs: 0.8125rem;
        --text-sm: 0.875rem;
        --text-metadata: 0.8125rem;
        --text-body: 1.0625rem;
        --text-body-small: 0.9375rem;
        --text-lg: 1.0625rem;
        --text-xl: 1.125rem;
        --text-2xl: clamp(1.5rem, 1vw + 1.3rem, 1.875rem);
        /* Headline scale (brief section 17): row/compact ~19-21px, article
           headlines 24-33px, lead story 32-52px. */
        --text-headline-md: clamp(1.1875rem, 0.3vw + 1.1rem, 1.3125rem);
        --text-headline-lg: clamp(1.5rem, 0.6vw + 1.3rem, 1.75rem);
        --text-headline-xl: clamp(1.75rem, 1vw + 1.45rem, 2.0625rem);
        --text-headline-hero: clamp(2rem, 2.2vw + 1.5rem, 3.25rem);
        --text-display: clamp(2.75rem, 3vw + 2rem, 4rem);
        --leading-tight: 1.16;
        --leading-snug: 1.32;
        --leading-normal: 1.5;
        --leading-relaxed: 1.62;
        --tracking-wide: 0.05em;
        --tracking-label: 0.1em;
        --focus-ring: 0 0 0 2px var(--color-bg-base), 0 0 0 4px var(--color-link-hover);
        --page-pad: clamp(16px, 4.5vw, 28px);
        /* Width tokens (brief section 5/21): 1280–1440px front page, ~75ch
           article measure for long-form reading. */
        --content-max: 82.5rem;
        --width-article-max: 44rem;
        --reading-max: var(--width-article-max);
        /* Rule weights (brief section 21): hairline/standard/strong/section */
        --rule-hairline: 1px solid var(--color-border-subtle);
        --rule-standard: 1px solid var(--color-border-default);
        --rule-strong: 2px solid var(--color-text-1);
        --rule-section: 3px solid var(--color-text-1);
        --hourly-bar: rgba(23, 23, 23, 0.22);
        --hourly-bar-peak: var(--color-accent);
        --hourly-baseline: rgba(23, 23, 23, 0.28);
        --tap-min: 44px;
        --site-header-estimate: 0px;
      }

      *,
      *::before,
      *::after {
        box-sizing: border-box;
      }

      html {
        -webkit-text-size-adjust: 100%;
        scroll-behavior: smooth;
      }

      body {
        margin: 0;
        min-height: 100dvh;
        color: var(--color-text-primary);
        background: var(--color-bg-base);
        font-family: var(--font-ui);
        font-size: var(--text-body);
        line-height: var(--leading-normal);
        overflow-x: clip;
      }

      .wrap {
        max-width: var(--content-max);
        margin: 0 auto;
        padding: var(--space-3) var(--page-pad) var(--space-8);
      }

      /* ═══════════════════════════════════════════════════════════════
         Newspaper front page (owner brief, newspaper-redesign pass):
         masthead, edition stats line, day-in-60-seconds brief, ranked
         lead+secondary hero, topic sections, sources today, data today.
         Article-level styling (.newsCard*) lives further down, next to
         the pre-existing per-signal rules it extends. ═══════════════ */

      /* ——— Masthead (brief section 6): compact left-aligned nameplate,
         Bloomberg/Axios-style -- wordmark+tagline and the edition block
         share one baseline row, topic nav and utility share the next. ——— */
      .masthead {
        padding: var(--space-5) 0 0;
      }
      .masthead__top {
        display: flex;
        align-items: flex-end;
        justify-content: space-between;
        flex-wrap: wrap;
        gap: var(--space-3) var(--space-4);
        padding-bottom: var(--space-3);
        border-bottom: var(--rule-strong);
      }
      .masthead__brand {
        display: flex;
        align-items: baseline;
        flex-wrap: wrap;
        gap: var(--space-3);
      }
      .masthead__wordmark {
        font-family: var(--font-display);
        font-size: clamp(1.7rem, 1.1vw + 1.45rem, 2.15rem);
        font-weight: 600;
        letter-spacing: 0.005em;
        line-height: 1;
        color: var(--color-text-1);
        text-decoration: none;
      }
      .masthead__wordmark:hover {
        color: var(--color-accent);
      }
      .masthead__wordmark:focus-visible {
        outline: none;
        box-shadow: var(--focus-ring);
        border-radius: var(--radius-sm);
      }
      .masthead__tagline {
        font-family: var(--font-ui);
        font-size: var(--text-metadata);
        color: var(--color-text-3);
        border-left: var(--rule-standard);
        padding-left: var(--space-3);
      }
      .masthead__editionBlock {
        margin: 0;
        text-align: right;
        font-family: var(--font-ui);
        font-size: var(--text-metadata);
        font-weight: 600;
        color: var(--color-text-2);
        line-height: 1.5;
      }
      .masthead__editionKicker {
        display: block;
        color: var(--color-accent);
        font-weight: 700;
        font-size: var(--text-label);
        letter-spacing: 0.08em;
        text-transform: uppercase;
      }
      .masthead__editionSep {
        opacity: 0.5;
      }
      .masthead__editionIssue {
        font-weight: 500;
        font-variant-numeric: tabular-nums;
      }
      .masthead__row2 {
        display: flex;
        flex-wrap: wrap;
        align-items: center;
        justify-content: space-between;
        gap: var(--space-2) var(--space-4);
        padding: var(--space-1) 0 var(--space-4);
      }
      .masthead__nav {
        display: flex;
        flex-wrap: nowrap;
        gap: 0;
        overflow-x: auto;
        -webkit-overflow-scrolling: touch;
        scrollbar-width: none;
      }
      .masthead__nav::-webkit-scrollbar {
        display: none;
      }
      /* Divider pipes between topic items instead of the toolbar's chip
         spacing, and no underline on the active item -- colour alone is
         enough once the row sits this compact. */
      .masthead__nav .masthead__navItem {
        position: relative;
        min-height: auto;
        padding: 4px var(--space-3);
        border-bottom: none;
      }
      .masthead__nav .masthead__navItem:first-child {
        padding-left: 0;
      }
      .masthead__nav .masthead__navItem:not(:last-child)::after {
        content: "";
        position: absolute;
        right: 0;
        top: 22%;
        bottom: 22%;
        width: 1px;
        background: var(--color-border-default);
      }
      .masthead__nav .masthead__navItem.is-active {
        border-bottom: none;
      }
      .masthead__utility {
        display: flex;
        flex-wrap: wrap;
        align-items: center;
        gap: var(--space-4);
        font-family: var(--font-ui);
        font-size: var(--text-metadata);
      }
      .masthead__pager {
        display: flex;
        align-items: center;
        gap: var(--space-3);
      }
      .masthead__pagerLink {
        font-weight: 600;
        letter-spacing: 0.02em;
        color: var(--color-text-2);
        text-decoration: none;
      }
      .masthead__pagerLink:hover {
        color: var(--color-accent);
        text-decoration: underline;
        text-underline-offset: 2px;
      }
      .masthead__pagerLink:focus-visible {
        outline: none;
        box-shadow: var(--focus-ring);
      }
      .masthead__pagerLink--disabled {
        color: var(--color-text-4);
        pointer-events: none;
      }
      .masthead__pagerLink--archive {
        text-decoration: underline;
        text-underline-offset: 2px;
      }
      .masthead__tgIcon {
        width: 13px;
        height: 13px;
        flex: none;
        fill: none;
        stroke: currentColor;
        stroke-width: 1.9;
        stroke-linecap: round;
        stroke-linejoin: round;
      }
      .masthead__tgSubs {
        display: inline-flex;
        align-items: center;
        gap: 5px;
        color: var(--color-text-3);
        font-variant-numeric: tabular-nums;
      }
      /* Subscribe CTA (owner-approved: outline that fills solid on hover/
         focus -- the only filled accent shape in the masthead, reserved for
         the one real action here). */
      .masthead__tgCta {
        display: inline-flex;
        align-items: center;
        gap: 7px;
        font-weight: 700;
        color: var(--color-accent);
        background: var(--color-accent-muted);
        border: 1px solid color-mix(in srgb, var(--color-accent) 35%, transparent);
        border-radius: var(--radius-md);
        padding: 6px 12px 6px 10px;
        text-decoration: none;
        transition: background 0.15s ease, color 0.15s ease, border-color 0.15s ease;
      }
      .masthead__tgCta .masthead__tgIcon {
        color: inherit;
        transition: color 0.15s ease;
      }
      .masthead__tgCta:hover {
        background: var(--color-accent);
        color: var(--color-bg-base);
        border-color: var(--color-accent);
      }
      .masthead__tgCta:focus-visible {
        outline: none;
        box-shadow: var(--focus-ring);
      }
      @media (max-width: 560px) {
        .masthead__top {
          flex-direction: column;
          align-items: flex-start;
        }
        .masthead__editionBlock {
          text-align: left;
        }
      }

      /* Compact masthead: archive / 404 / empty state / my-signals */
      .masthead--compact {
        padding-top: var(--space-5);
      }
      .masthead__top--compact {
        flex-direction: row;
        flex-wrap: wrap;
        align-items: center;
        justify-content: space-between;
        text-align: left;
        gap: var(--space-3);
        padding-bottom: var(--space-4);
        border-bottom: var(--rule-standard);
      }
      .masthead__wordmark--sm {
        font-size: clamp(1.5rem, 1vw + 1.3rem, 1.875rem);
      }
      .masthead__compactNav {
        display: flex;
        flex-wrap: wrap;
        gap: var(--space-1) var(--space-4);
      }
      .masthead__compactLink {
        font-family: var(--font-ui);
        font-size: var(--text-metadata);
        font-weight: 600;
        letter-spacing: 0.04em;
        text-transform: uppercase;
        color: var(--color-text-2);
        text-decoration: none;
      }
      .masthead__compactLink:hover {
        color: var(--color-accent);
      }
      .masthead__compactLink:focus-visible {
        outline: none;
        box-shadow: var(--focus-ring);
      }
      .masthead__tg--compact {
        font-size: var(--text-metadata);
      }

      /* ——— Query note (custom digests) ——— */
      .digestQueryNote {
        margin: var(--space-4) 0 0;
        font-family: var(--font-ui);
        font-size: var(--text-body-small);
        color: var(--color-text-2);
      }

      /* ——— Edition stats line (brief section 7) ——— */
      .editionStats {
        display: flex;
        flex-wrap: wrap;
        gap: var(--space-2) var(--space-5);
        margin: var(--space-5) 0 0;
        padding: var(--space-3) 0;
        border-top: var(--rule-hairline);
        border-bottom: var(--rule-hairline);
        font-family: var(--font-ui);
        font-size: var(--text-metadata);
        color: var(--color-text-2);
      }
      .editionStats__item {
        white-space: nowrap;
      }
      .editionStats__val {
        margin-right: 4px;
        font-weight: 700;
        color: var(--color-text-1);
        font-variant-numeric: tabular-nums;
      }

      /* ——— Hero: ranked lead + secondary row (brief section 7/8) ——— */
      .edLead {
        margin: var(--space-8) 0 0;
      }
      .edLead__eyebrow {
        margin: 0 0 var(--space-4);
        padding-bottom: var(--space-2);
        font-family: var(--font-ui);
        font-size: var(--text-label);
        font-weight: 700;
        letter-spacing: 0.16em;
        text-transform: uppercase;
        color: var(--color-text-1);
        border-bottom: var(--rule-strong);
      }
      .edLead__row {
        margin-top: var(--space-6);
        padding-top: var(--space-5);
        border-top: var(--rule-hairline);
        display: grid;
        grid-template-columns: 1fr;
        gap: var(--space-6);
      }
      @media (min-width: 700px) {
        .edLead__row {
          grid-template-columns: repeat(3, 1fr);
        }
        .edLead__row > .newsCard {
          border-top: none;
          padding-top: 0;
        }
        .edLead__row > .newsCard:not(:first-child) {
          border-left: var(--rule-hairline);
          padding-left: var(--space-6);
        }
      }

      /* ——— Topic sections (brief section 11) ——— */
      .topicSection {
        margin-top: var(--space-10);
        padding-top: var(--space-4);
        border-top: var(--rule-section);
      }
      .topicSection__title {
        margin: 0 0 var(--space-2);
        font-family: var(--font-ui);
        font-size: var(--text-label);
        font-weight: 700;
        letter-spacing: 0.16em;
        text-transform: uppercase;
        color: var(--color-text-1);
      }
      .topicSection__secondary {
        margin-top: var(--space-4);
        padding-top: var(--space-4);
        border-top: var(--rule-hairline);
      }
      .topicSection__row {
        margin-top: var(--space-2);
        display: grid;
        grid-template-columns: 1fr;
      }
      @media (min-width: 640px) {
        .topicSection__row {
          grid-template-columns: repeat(2, 1fr);
          column-gap: var(--space-6);
        }
        .topicSection__row > .newsCard {
          border-top: var(--rule-hairline);
        }
      }
      @media (min-width: 960px) {
        .topicSection {
          display: grid;
          grid-template-columns: minmax(0, 1.6fr) minmax(0, 1fr);
          column-gap: var(--space-8);
          align-items: start;
        }
        .topicSection__title {
          grid-column: 1 / -1;
        }
        .topicSection__lead {
          grid-column: 1;
        }
        .topicSection__secondary {
          grid-column: 2;
          margin-top: 0;
          padding-top: 0;
          padding-left: var(--space-6);
          border-top: none;
          border-left: var(--rule-hairline);
        }
        .topicSection__row {
          grid-column: 1 / -1;
          grid-template-columns: repeat(3, 1fr);
          column-gap: var(--space-6);
          margin-top: var(--space-5);
          padding-top: var(--space-4);
          border-top: var(--rule-hairline);
        }
        .topicSection__row > .newsCard {
          border-top: none;
        }
      }

      /* ——— Sources today (brief section 14) ——— */
      .sourcesToday {
        margin-top: var(--space-10);
        padding-top: var(--space-4);
        border-top: var(--rule-section);
      }
      .sourcesToday__title {
        margin: 0 0 var(--space-6);
        font-family: var(--font-ui);
        font-size: var(--text-label);
        font-weight: 700;
        letter-spacing: 0.16em;
        text-transform: uppercase;
        color: var(--color-text-1);
      }
      /* Owner-picked "variant F": centered, border-free tiles -- no rank
         digits or bars, reading order alone (top-left to bottom-right,
         already sorted by count) communicates rank. */
      .sourcesToday__grid {
        display: grid;
        grid-template-columns: repeat(2, minmax(0, 1fr));
        gap: var(--space-8) var(--space-4);
        text-align: center;
      }
      @media (min-width: 560px) {
        .sourcesToday__grid {
          grid-template-columns: repeat(3, minmax(0, 1fr));
        }
      }
      .sourcesToday__cell {
        min-width: 0;
      }
      .sourcesToday__name {
        display: block;
        margin: 0 0 4px;
        font-family: var(--font-ui);
        font-weight: 500;
        font-size: var(--text-body-small);
        color: var(--color-text-1);
        overflow-wrap: anywhere;
        text-decoration: none;
      }
      a.sourcesToday__name:hover {
        color: var(--color-accent);
        text-decoration: underline;
        text-underline-offset: 2px;
      }
      a.sourcesToday__name:focus-visible {
        outline: none;
        box-shadow: var(--focus-ring);
      }
      .sourcesToday__num {
        display: block;
        font-family: var(--font-ui);
        font-size: var(--text-label);
        letter-spacing: 0.04em;
        text-transform: uppercase;
        color: var(--color-text-3);
      }

      /* ——— Today in data (brief section 13) ——— */
      .dataToday {
        margin-top: var(--space-12);
        padding-top: var(--space-4);
        border-top: var(--rule-section);
      }
      .dataToday__title {
        margin: 0 0 var(--space-5);
        font-family: var(--font-ui);
        font-size: var(--text-label);
        font-weight: 700;
        letter-spacing: 0.16em;
        text-transform: uppercase;
        color: var(--color-text-1);
      }
      .dataToday__tiles {
        display: grid;
        grid-template-columns: repeat(2, minmax(0, 1fr));
        gap: var(--space-5) var(--space-6);
        padding-bottom: var(--space-5);
        border-bottom: var(--rule-hairline);
      }
      @media (min-width: 640px) {
        .dataToday__tiles {
          grid-template-columns: repeat(5, minmax(0, 1fr));
        }
      }
      .dataToday__tile {
        display: flex;
        flex-direction: column;
        gap: 2px;
        min-width: 0;
      }
      .dataToday__tileVal {
        font-family: var(--font-display);
        font-size: clamp(1.75rem, 2vw + 1.3rem, 2.25rem);
        font-weight: 600;
        line-height: 1.05;
        color: var(--color-text-1);
        font-variant-numeric: tabular-nums;
        overflow-wrap: anywhere;
      }
      .dataToday__tileLbl {
        font-family: var(--font-ui);
        font-size: var(--text-label);
        font-weight: 600;
        letter-spacing: 0.04em;
        text-transform: uppercase;
        color: var(--color-text-3);
      }
      .dataToday__chart {
        margin-top: var(--space-6);
      }
      .dataToday__insight {
        margin: var(--space-3) 0 0;
        font-size: var(--text-body-small);
        line-height: var(--leading-relaxed);
        color: var(--color-text-2);
        max-width: var(--width-article-max);
      }
      .dataToday__hist {
        margin: var(--space-6) 0 0;
        padding-top: var(--space-5);
        border-top: var(--rule-hairline);
        list-style: none;
        display: flex;
        flex-direction: column;
        gap: var(--space-2);
      }
      .dataToday__histRow {
        display: flex;
        align-items: center;
        gap: var(--space-3);
        font-size: var(--text-body-small);
      }
      .dataToday__histLbl {
        flex: 0 0 8rem;
        color: var(--color-text-2);
        font-weight: 600;
      }
      .dataToday__histTrack {
        flex: 1;
        min-width: 0;
        height: 6px;
        background: var(--color-bg-raised);
      }
      .dataToday__histFill {
        display: block;
        height: 100%;
        background: var(--color-text-2);
      }
      .dataToday__histNum {
        flex-shrink: 0;
        width: 2.2em;
        text-align: right;
        font-variant-numeric: tabular-nums;
        color: var(--color-text-3);
      }
      .edEmpty {
        margin: var(--space-8) 0;
        font-size: var(--text-body);
        color: var(--color-text-3);
      }

      /* ——— Mobile polish (iPhone + large phones): до 520px — все актуальные iPhone в портрете */
      @media (max-width: 520px) {
        :root {
          --page-pad: 14px;
        }
        .wrap {
          max-width: 100%;
          padding-top: var(--space-2);
          padding-left: max(var(--page-pad), env(safe-area-inset-left));
          padding-right: max(var(--page-pad), env(safe-area-inset-right));
        }

        .digestPage > .digestChrome {
          margin-bottom: var(--space-4);
        }
        .digestChrome__panel {
          padding: 0 0 var(--space-3);
          gap: var(--space-2);
        }
        .digestChip {
          min-height: 36px;
          padding: 0 2px;
        }
        .digestPage > nav.digestPager {
          display: none !important;
        }
        .footerMeta {
          display: none !important;
        }

        /* Карточки: компактнее, мета и источники видны */
        .newsCard--integrated .newsCard__footer {
          display: none !important;
        }
        .newsCard__footer {
          margin-top: var(--space-2);
          padding-top: 8px;
          border-top: 1px solid color-mix(in srgb, var(--color-border-subtle) 75%, transparent);
        }
        .newsCard__factCopy,
        .newsCard__factSite {
          display: none !important;
        }
        .newsCard__factMeta {
          margin-top: var(--space-2);
          padding-top: var(--space-2);
          font-size: 0.75rem;
          gap: 4px;
        }
        .newsCard__factChan {
          white-space: normal;
          overflow: visible;
          text-overflow: unset;
        }
        .newsCard__inner {
          padding: 10px;
        }
        .newsCard__headline {
          display: -webkit-box;
          -webkit-box-orient: vertical;
          -webkit-line-clamp: 3;
          overflow: hidden;
          overflow-wrap: anywhere;
          word-break: normal;
        }
        .newsCard__summary {
          margin-bottom: var(--space-2);
        }
        .newsCard__footerActions {
          justify-content: flex-start;
        }

        /* Sources: remove heavy headings on mobile */
        .newsCard__sourceMount .sourceSectionHead--compact {
          display: none;
        }
        .newsCard__sourceMount .digestCard__label--compact {
          display: none;
        }
      }

      /* ——— iPhone (включая Pro Max) и узкие экраны: до 520px — те же правила, что для ≤430px (viewport Max часто 428–440+ px) ——— */
      @media (max-width: 520px) {
        :root {
          --page-pad: 12px;
          --tap-min: 36px;
        }
        .wrap {
          max-width: 100%;
          width: 100%;
          padding-left: max(12px, env(safe-area-inset-left));
          padding-right: max(12px, env(safe-area-inset-right));
          padding-top: 8px;
          box-sizing: border-box;
        }
        /* Edge-to-edge signal feed (digest + /my-signals): ~0–4px page gutter; rollback = remove this block */
        .wrap:has(main.digestPage) {
          padding-left: max(4px, env(safe-area-inset-left));
          padding-right: max(4px, env(safe-area-inset-right));
        }
        .digestPage > .digestChrome {
          margin-bottom: 10px;
        }
        .digestPage .digestChrome__panel {
          padding: 0 0 10px;
          gap: 8px;
        }
        .digestChrome__search {
          min-height: var(--tap-min);
          font-size: 0.9rem;
        }
        .digestChip {
          min-height: 36px;
          padding: 0 2px;
        }
        .digestChrome__exportBtn {
          min-height: 36px;
          padding: 6px 10px;
        }
        .mySignalsPage .mySignals__mount,
        .mySignalsPage .mySignals__tgCard {
          max-width: none;
        }
        /* Карточки: ~12px padding, меньше вертикальных зазоров */
        .digestPage .newsCard__inner {
          padding: 13px;
        }
        .digestPage .newsCard__summary {
          margin-bottom: 6px;
        }
        .digestPage .newsCard__fact {
          padding: 8px 10px 8px 12px;
          margin-top: 4px;
        }
        .digestPage .newsCard__headline {
          -webkit-line-clamp: 3;
          line-clamp: 3;
          overflow-wrap: anywhere;
          word-break: normal;
        }
        #digest-app:not([data-density="analyst"]) .digestPage .newsCard__summary .newsCard__text:first-of-type {
          -webkit-line-clamp: 3;
          line-clamp: 3;
          overflow-wrap: anywhere;
          word-break: normal;
        }
        #digest-app:not([data-density="analyst"]) .digestPage .newsCard__signal .newsCard__signalText {
          -webkit-line-clamp: 3;
          line-clamp: 3;
          overflow-wrap: anywhere;
          word-break: normal;
        }
        .digestPage .newsCard__footer {
          margin-top: 6px;
          padding-top: 6px;
          gap: 6px 8px;
        }
        /* Edge-to-edge cards: never push actions out of view */
        .digestPage .newsCard__footer--soloActions {
          justify-content: flex-start;
        }
        /* Tap targets ≥ 36px */
        .digestPage .newsCard__linkBtn,
        .digestPage .newsCard__toolbarBtn,
        .digestPage .newsCard .copyLinkBtn,
        .digestPage .postTextBtn,
        .digestPage .signalFeedbackBtn {
          min-height: 36px;
          min-width: 36px;
          padding: 0 10px;
        }
        .digestPage .signalSaveBtn {
          min-width: 36px;
          min-height: 36px;
          padding: 6px;
        }
        .digestPage .signalFeedback {
          margin-top: 8px;
        }
        /* Источники / Telegram: одна зона с переносом, не вертикальный «столбец» */
        .digestPage .newsCard__sources--compact {
          display: flex;
          flex-direction: row;
          flex-wrap: wrap;
          align-items: center;
          gap: 6px 10px;
        }
        .digestPage .newsCard__sources--compact .sourceBlock--compact {
          display: flex;
          flex-direction: row;
          flex-wrap: wrap;
          align-items: center;
          gap: 6px 8px;
          flex: 1 1 100%;
          min-width: 0;
        }
        .digestPage .sourceRow--compact {
          display: flex;
          flex-direction: row;
          flex-wrap: wrap;
          align-items: center;
          gap: 6px 8px;
          min-width: 0;
        }
        .digestPage .newsCard__factChan {
          white-space: normal;
          overflow: visible;
          text-overflow: unset;
          overflow-wrap: anywhere;
          word-break: normal;
        }
      }

      .digestPager {
        max-width: min(20.5rem, 100%);
        margin: 0 auto var(--space-5);
        font-size: var(--text-xs);
      }
      .digestPager__inner {
        display: grid;
        grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr);
        align-items: center;
        gap: var(--space-2);
        padding: var(--space-2) var(--space-3);
        background: var(--color-bg-inset);
        border: 1px solid var(--color-border-subtle);
        border-radius: var(--radius-pill);
        box-shadow: var(--shadow-sm);
      }
      .digestPager__side {
        display: flex;
        align-items: center;
        min-width: 0;
      }
      .digestPager__side--prev {
        justify-content: flex-start;
      }
      .digestPager__side--next {
        justify-content: flex-end;
      }
      .digestPager__nav {
        display: inline-flex;
        align-items: center;
        gap: 0.2rem;
        min-height: 36px;
        padding: 0 var(--space-2);
        font-family: var(--font-ui);
        font-size: var(--text-xs);
        font-weight: 600;
        letter-spacing: 0.02em;
        color: var(--color-link);
        text-decoration: none;
        border-radius: var(--radius-pill);
        border: 1px solid transparent;
        transition: background 0.14s ease, border-color 0.14s ease, color 0.14s ease;
      }
      .digestPager__nav:hover {
        color: var(--color-link-hover);
        background: var(--color-accent-muted);
        border-color: var(--color-border-subtle);
      }
      .digestPager__nav:focus-visible {
        outline: none;
        box-shadow: var(--focus-ring);
      }
      .digestPager__nav--disabled {
        color: var(--color-text-4);
        cursor: not-allowed;
        pointer-events: none;
      }
      .digestPager__navChev {
        font-size: 1.1rem;
        font-weight: 700;
        line-height: 1;
        opacity: 0.9;
      }
      .digestPager__center {
        display: flex;
        flex-direction: column;
        align-items: center;
        justify-content: center;
        gap: 2px;
        padding: 0 var(--space-1);
        text-align: center;
        border-left: 1px solid var(--color-border-subtle);
        border-right: 1px solid var(--color-border-subtle);
        min-width: 5.5rem;
      }
      .digestPager__issue {
        display: block;
        line-height: 1.25;
        white-space: nowrap;
      }
      .digestPager__issueLbl {
        display: block;
        font-size: 0.65rem;
        font-weight: 700;
        letter-spacing: 0.12em;
        text-transform: uppercase;
        color: var(--color-text-4);
      }
      .digestPager__issueNum {
        font-family: var(--font-ui);
        font-size: var(--text-sm);
        font-weight: 700;
        font-variant-numeric: tabular-nums;
        color: var(--color-text-primary);
      }
      .digestPager__archive {
        font-size: 0.65rem;
        font-weight: 600;
        letter-spacing: 0.06em;
        text-transform: uppercase;
        color: var(--color-link);
        text-decoration: none;
      }
      .digestPager__archive:hover {
        color: var(--color-link-hover);
        text-decoration: underline;
      }
      .digestPager__archive:focus-visible {
        outline: none;
        box-shadow: var(--focus-ring);
        border-radius: var(--radius-sm);
      }

      @media print {
        .fab {
          display: none !important;
        }
      }

      .digestScoreFilter {
        display: inline-flex;
        align-items: center;
        gap: var(--space-2);
        font-size: var(--text-sm);
        color: var(--color-text-secondary);
        cursor: pointer;
        user-select: none;
        margin: 0;
      }
      .digestScoreFilter input {
        width: 1.1rem;
        height: 1.1rem;
        accent-color: var(--color-accent);
      }

      .digestCard__summary--clamp {
        display: -webkit-box;
        -webkit-line-clamp: 8;
        -webkit-box-orient: vertical;
        overflow: hidden;
      }
      .digestCard__summary--clamp.is-open {
        display: block;
        -webkit-line-clamp: unset;
        overflow: visible;
      }
      .digestCard__expandBtn {
        margin-top: var(--space-2);
        padding: var(--space-2) var(--space-3);
        font-family: var(--font-ui);
        font-size: var(--text-xs);
        font-weight: 600;
        color: var(--color-link);
        background: transparent;
        border: 1px dashed var(--color-border-default);
        border-radius: var(--radius-sm);
        cursor: pointer;
      }
      .digestCard__expandBtn:hover {
        border-style: solid;
        background: var(--color-accent-muted);
      }

      .copyLinkBtn {
        padding: var(--space-2) var(--space-3);
        font-family: var(--font-ui);
        font-size: var(--text-xs);
        font-weight: 600;
        color: var(--color-text-secondary);
        background: var(--color-bg-inset);
        border: 1px solid var(--color-border-subtle);
        border-radius: var(--radius-sm);
        cursor: pointer;
        min-height: 40px;
      }
      .copyLinkBtn:hover {
        color: var(--color-text-primary);
        border-color: var(--color-border-strong);
      }

      .sourceRow {
        display: flex;
        flex-wrap: wrap;
        align-items: flex-start;
        justify-content: space-between;
        gap: var(--space-3);
      }
      .sourceRow__main {
        flex: 1 1 12rem;
        min-width: 0;
      }
      .sourceRow__actions {
        display: flex;
        flex-wrap: wrap;
        gap: var(--space-2);
        align-items: center;
      }
      .sourceExtraBadge {
        display: inline-block;
        margin-right: var(--space-2);
        padding: 2px 8px;
        font-size: 0.7rem;
        font-weight: 700;
        letter-spacing: 0.06em;
        text-transform: uppercase;
        color: var(--color-text-tertiary);
        background: var(--color-bg-inset);
        border-radius: var(--radius-pill);
        vertical-align: middle;
      }
      .sourceExtraHost {
        font-weight: 600;
        word-break: break-all;
      }

      .digestToc--scroll .digestToc__list {
        display: flex;
        flex-wrap: nowrap;
        gap: var(--space-2);
        overflow-x: auto;
        overflow-y: hidden;
        padding-bottom: var(--space-2);
        -webkit-overflow-scrolling: touch;
        scrollbar-width: thin;
      }
      .digestToc--scroll .digestToc__list li {
        flex: 0 0 auto;
      }

      .archiveToolbar {
        margin-bottom: var(--space-5);
        padding: var(--space-4);
        background: var(--color-bg-inset);
        border: 1px solid var(--color-border-subtle);
        border-radius: var(--radius-md);
      }
      .archiveToolbar__label {
        display: block;
        font-size: var(--text-xs);
        font-weight: 700;
        letter-spacing: var(--tracking-label);
        text-transform: uppercase;
        color: var(--color-text-3);
        margin-bottom: var(--space-2);
      }
      .archiveToolbar__input {
        width: 100%;
        max-width: 32rem;
        padding: var(--space-3) var(--space-4);
        font-family: var(--font-ui);
        font-size: var(--text-body);
        color: var(--color-text-primary);
        background: var(--color-bg-surface);
        border: 1px solid var(--color-border-default);
        border-radius: var(--radius-sm);
      }
      .archiveRow[hidden] {
        display: none !important;
      }

      @media print {
        body {
          background: #fff !important;
          color: #111 !important;
        }
        .masthead,
        .digestPager,
        .digestToolbar,
        .digestChrome,
        .fab,
        .postTextBtn,
        .copyLinkBtn,
        .digestCard__expandBtn,
        .digestScoreFilter {
          display: none !important;
        }
        .digestCard__summary--clamp {
          display: block !important;
          -webkit-line-clamp: unset !important;
          overflow: visible !important;
        }
        .card {
          break-inside: avoid;
          box-shadow: none !important;
        }
      }

      /* ——— Surfaces ——— */
      .card {
        background: var(--color-bg-surface);
        border: 1px solid var(--color-border-default);
        border-radius: var(--radius-lg);
        box-shadow: var(--shadow-sm);
        overflow: hidden;
      }

      .digestPage {
        display: block;
      }
      .digestPage > .digestChrome {
        margin-bottom: var(--space-6);
      }

      /* Простые hero для архива / пустых состояний */
      .digestHero {
        padding: var(--space-5) var(--space-4);
      }
      .digestHero__head {
        display: flex;
        flex-direction: column;
        gap: var(--space-3);
        margin-bottom: var(--space-4);
      }
      .digestHero__title {
        margin: 0;
        font-family: var(--font-display);
        font-size: var(--text-2xl);
        font-weight: 600;
        line-height: var(--leading-tight);
        letter-spacing: -0.02em;
        color: var(--color-text-1);
      }
      .digestHero__meta {
        margin: 0;
        font-size: var(--text-xs);
        font-weight: 600;
        letter-spacing: var(--tracking-label);
        text-transform: uppercase;
        color: var(--color-text-3);
      }

      /* Верхний «дашборд» выпуска */
      .digestDashboard {
        display: flex;
        flex-direction: column;
        gap: var(--space-5);
        margin-bottom: var(--space-4);
      }
      .digestDashboard__primary {
        padding: var(--space-5) var(--space-4);
        background: var(--color-bg-surface);
        border: 1px solid var(--color-border-default);
        border-radius: var(--radius-lg);
        box-shadow: var(--shadow-sm);
      }
      .digestEyebrow {
        margin: 0 0 var(--space-3);
        font-size: var(--text-xs);
        font-weight: 600;
        letter-spacing: var(--tracking-label);
        text-transform: uppercase;
        color: var(--color-text-3);
        line-height: var(--leading-snug);
      }
      .digestTitle {
        margin: 0 0 var(--space-4);
        font-family: var(--font-display);
        font-size: var(--text-2xl);
        font-weight: 600;
        line-height: var(--leading-tight);
        letter-spacing: -0.02em;
        color: var(--color-text-1);
        text-wrap: balance;
      }
      .digestLead {
        margin: 0 0 var(--space-5);
        font-size: var(--text-body);
        line-height: var(--leading-relaxed);
        color: var(--color-text-2);
        max-width: var(--reading-max);
      }
      .digestFacts {
        display: flex;
        flex-wrap: wrap;
        gap: var(--space-2);
        margin-bottom: var(--space-5);
      }
      .digestFact {
        display: inline-flex;
        align-items: center;
        padding: var(--space-2) var(--space-3);
        font-size: var(--text-sm);
        line-height: 1.35;
        color: var(--color-text-2);
        background: var(--color-bg-inset);
        border: 1px solid var(--color-border-subtle);
        border-radius: var(--radius-pill);
        max-width: 100%;
        word-break: break-word;
      }
      .digestFact--accent {
        border-color: color-mix(in srgb, var(--color-accent) 35%, var(--color-border-subtle));
        color: var(--color-text-1);
      }
      .digestToolbar {
        display: flex;
        flex-direction: column;
        align-items: stretch;
        gap: var(--space-3);
        margin-top: var(--space-5);
      }
      .digestToolbar__secondary {
        display: grid;
        grid-template-columns: 1fr;
        gap: var(--space-2);
      }
      @media (min-width: 480px) {
        .digestToolbar {
          flex-direction: row;
          flex-wrap: wrap;
          align-items: flex-end;
        }
        .digestToolbar__secondary {
          display: flex;
          flex-wrap: wrap;
          gap: var(--space-2);
          margin-left: auto;
        }
      }

      .btn {
        display: inline-flex;
        flex-direction: column;
        align-items: flex-start;
        justify-content: center;
        gap: 2px;
        min-height: var(--tap-min);
        padding: var(--space-3) var(--space-5);
        font-family: var(--font-ui);
        font-size: var(--text-sm);
        font-weight: 600;
        line-height: var(--leading-snug);
        color: var(--color-text-1);
        text-align: left;
        text-decoration: none;
        cursor: pointer;
        background: var(--color-bg-elevated);
        border: 1px solid var(--color-border-default);
        border-radius: var(--radius-md);
        transition: border-color 0.14s ease, background 0.14s ease, color 0.14s ease;
      }
      .btn__eyebrow {
        font-size: var(--text-xs);
        font-weight: 600;
        letter-spacing: var(--tracking-wide);
        text-transform: uppercase;
        color: var(--color-text-3);
      }
      .btn:hover {
        border-color: var(--color-border-strong);
        background: var(--color-bg-raised);
      }
      .btn:focus-visible {
        outline: none;
        box-shadow: var(--focus-ring);
      }
      .btn--primary {
        background: var(--color-accent-muted);
        border-color: color-mix(in srgb, var(--color-accent) 35%, transparent);
        color: var(--color-text-1);
      }
      .btn--primary:hover {
        background: color-mix(in srgb, var(--color-accent) 20%, transparent);
        border-color: color-mix(in srgb, var(--color-accent) 50%, transparent);
      }
      .btn--primary .btn__eyebrow {
        color: var(--color-accent);
      }
      .btn--ghost {
        flex-direction: row;
        align-items: center;
        padding: var(--space-3) var(--space-4);
        font-weight: 500;
        color: var(--color-text-2);
        background: transparent;
        border-color: var(--color-border-subtle);
      }
      .btn--ghost:hover {
        color: var(--color-text-1);
        background: color-mix(in srgb, var(--color-text-1) 4%, transparent);
        border-color: var(--color-border-default);
      }

      /* Пульс рынка — компактная сетка */
      .signalsPanel {
        padding: var(--space-5) var(--space-4);
        background: var(--color-bg-inset);
        border: 1px solid var(--color-border-default);
        border-radius: var(--radius-lg);
      }
      .signalsPanel__title {
        margin: 0 0 var(--space-4);
        font-family: var(--font-ui);
        font-size: var(--text-xs);
        font-weight: 700;
        letter-spacing: var(--tracking-label);
        text-transform: uppercase;
        color: var(--color-text-3);
      }
      .signalsPanel__grid {
        display: grid;
        grid-template-columns: repeat(2, minmax(0, 1fr));
        gap: var(--space-3);
      }
      .signalCard {
        display: flex;
        flex-direction: column;
        gap: var(--space-1);
        padding: var(--space-4);
        min-height: 5.5rem;
        background: var(--color-bg-surface);
        border: 1px solid var(--color-border-subtle);
        border-radius: var(--radius-md);
      }
      .signalCard__label {
        font-size: var(--text-xs);
        font-weight: 600;
        color: var(--color-text-3);
        line-height: 1.3;
      }
      .signalCard__value {
        font-family: var(--font-display);
        font-size: clamp(1.5rem, 4vw, 1.85rem);
        font-weight: 600;
        color: var(--color-text-1);
        font-variant-numeric: tabular-nums;
        line-height: 1.1;
      }
      .signalCard__hint {
        font-size: 0.75rem;
        color: var(--color-text-4);
        line-height: 1.3;
      }
      .signalsPanel__note {
        margin: var(--space-4) 0 0;
        padding-top: var(--space-3);
        border-top: 1px solid var(--color-border-subtle);
        font-size: var(--text-xs);
        line-height: var(--leading-relaxed);
        color: var(--color-text-3);
      }

      /* Навигация по разделам (если используется на странице) */
      .digestToc {
        position: relative;
        display: flex;
        flex-wrap: nowrap;
        align-items: center;
        gap: var(--space-3);
        margin: 0 calc(-1 * var(--page-pad)) var(--space-5);
        padding: var(--space-3) var(--page-pad);
        background: var(--color-bg-surface);
        border: 1px solid var(--color-border-subtle);
        border-radius: var(--radius-lg);
        overflow-x: auto;
        -webkit-overflow-scrolling: touch;
        scrollbar-width: none;
      }
      .digestToc::-webkit-scrollbar {
        display: none;
      }
      .digestToc__label {
        flex-shrink: 0;
        font-size: var(--text-xs);
        font-weight: 700;
        letter-spacing: var(--tracking-label);
        text-transform: uppercase;
        color: var(--color-text-3);
      }
      .digestToc__list {
        display: flex;
        flex-wrap: nowrap;
        gap: var(--space-2);
        list-style: none;
        margin: 0;
        padding: 0;
      }
      .digestToc__list li {
        flex-shrink: 0;
      }
      .digestToc__link {
        display: inline-flex;
        align-items: center;
        justify-content: center;
        min-height: var(--tap-min);
        padding: 0 var(--space-4);
        font-size: var(--text-sm);
        font-weight: 600;
        color: var(--color-text-2);
        text-decoration: none;
        border-radius: var(--radius-pill);
        border: 1px solid var(--color-border-subtle);
        background: var(--color-bg-inset);
        transition: background 0.14s ease, border-color 0.14s ease, color 0.14s ease;
      }
      .digestToc__link:hover {
        color: var(--color-text-1);
        border-color: var(--color-border-default);
        background: var(--color-bg-surface);
      }
      .digestToc__link:focus-visible {
        outline: none;
        box-shadow: var(--focus-ring);
      }
      .digestToc__link[aria-current="true"] {
        color: var(--color-text-1);
        border-color: color-mix(in srgb, var(--color-accent) 50%, var(--color-border-default));
        background: var(--color-accent-muted);
      }

      /* Секции дайджеста */
      .digestSections {
        display: flex;
        flex-direction: column;
        gap: var(--space-8);
        margin-top: var(--space-2);
      }
      .digestSection {
        scroll-margin-top: calc(var(--site-header-estimate) + 52px);
      }
      .sectionHead {
        padding: var(--space-5) var(--space-4) var(--space-4);
        border-bottom: 1px solid var(--color-border-subtle);
        display: flex;
        flex-direction: column;
        align-items: flex-start;
        gap: var(--space-2);
      }
      @media (min-width: 480px) {
        .sectionHead {
          flex-direction: row;
          justify-content: space-between;
          align-items: flex-end;
          gap: var(--space-4);
        }
      }
      .sectionHead__title {
        margin: 0;
        font-family: var(--font-display);
        font-size: clamp(1.2rem, 3.5vw, 1.4rem);
        font-weight: 600;
        letter-spacing: -0.015em;
        color: var(--color-text-1);
        line-height: var(--leading-tight);
      }
      .sectionHead__hint {
        margin: 0;
        font-size: var(--text-sm);
        line-height: var(--leading-snug);
        color: var(--color-text-3);
        max-width: 28rem;
      }

      .digestSection__list {
        padding: var(--space-4) var(--space-3) var(--space-6);
        display: flex;
        flex-direction: column;
        gap: var(--space-4);
      }

      /* Карточка материала */
      .digestCard {
        position: relative;
        padding: 0;
        background: var(--color-bg-inset);
        border: 1px solid var(--color-border-subtle);
        border-radius: var(--radius-md);
        transition: border-color 0.14s ease, box-shadow 0.14s ease;
      }
      .digestCard:hover {
        border-color: var(--color-border-default);
        box-shadow: var(--shadow-sm);
      }
      .digestCard:focus-within {
        border-color: color-mix(in srgb, var(--color-accent) 40%, var(--color-border-default));
      }
      .digestCard--empty {
        padding: var(--space-5);
        text-align: center;
      }
      .digestCard__emptyMsg {
        margin: 0;
        font-size: var(--text-body);
        color: var(--color-text-3);
      }
      .digestCard__row {
        display: grid;
        grid-template-columns: auto 1fr;
        gap: 0;
        align-items: stretch;
      }
      .digestCard__index {
        display: flex;
        align-items: flex-start;
        justify-content: center;
        padding: var(--space-4) var(--space-2);
        font-size: var(--text-xs);
        font-weight: 700;
        font-variant-numeric: tabular-nums;
        letter-spacing: 0.04em;
        color: var(--color-text-4);
        background: color-mix(in srgb, var(--color-text-1) 2%, transparent);
        border-right: 1px solid var(--color-border-subtle);
        min-width: 2.75rem;
      }
      .digestCard__main {
        padding: var(--space-4) var(--space-4) var(--space-5);
        min-width: 0;
      }
      .digestCard__head {
        display: flex;
        flex-direction: column;
        align-items: stretch;
        gap: var(--space-3);
      }
      @media (max-width: 559px) {
        .digestCard__scoreWrap {
          width: 100%;
        }
        .scoreBlock {
          align-items: flex-start;
          min-width: 0;
          width: 100%;
        }
        .scoreBlock__top {
          align-items: flex-start;
        }
        .scoreMeter {
          max-width: 100%;
        }
        .scoreBlock__stars {
          justify-content: flex-start;
        }
      }
      @media (min-width: 560px) {
        .digestCard__head {
          flex-direction: row;
          align-items: flex-start;
          justify-content: space-between;
          gap: var(--space-4);
        }
      }
      .digestCard__title {
        margin: 0;
        flex: 1;
        min-width: 0;
        font-family: var(--font-ui);
        font-size: var(--text-xl);
        font-weight: 600;
        line-height: var(--leading-snug);
        color: var(--color-text-1);
        text-wrap: balance;
        overflow-wrap: anywhere;
      }
      .digestCard__scoreWrap {
        flex-shrink: 0;
      }
      .scoreBlock {
        display: flex;
        flex-direction: column;
        gap: var(--space-2);
        align-items: flex-end;
        min-width: 7.5rem;
      }
      .scoreBlock__top {
        display: flex;
        flex-direction: column;
        align-items: flex-end;
        gap: var(--space-2);
        width: 100%;
      }
      .scoreBlock__num {
        font-family: var(--font-ui);
        font-size: var(--text-lg);
        font-weight: 700;
        font-variant-numeric: tabular-nums;
        color: var(--color-accent);
        line-height: 1;
      }
      .scoreBlock__den {
        font-size: var(--text-xs);
        font-weight: 600;
        color: var(--color-text-3);
        margin-left: 1px;
      }
      .scoreMeter {
        width: 100%;
        max-width: 7rem;
        height: 4px;
        border-radius: var(--radius-pill);
        background: color-mix(in srgb, var(--color-text-1) 8%, transparent);
        overflow: hidden;
      }
      .scoreMeter__fill {
        display: block;
        height: 100%;
        width: calc(var(--score, 0.5) * 100%);
        border-radius: var(--radius-pill);
        background: var(--color-accent);
        opacity: 0.92;
      }
      .scoreBlock__stars {
        width: 100%;
        display: flex;
        justify-content: flex-end;
      }
      .scoreBlock--empty {
        opacity: 0.85;
      }

      .starRating {
        display: inline-flex;
        align-items: center;
        gap: 0;
        font-size: 1rem;
        line-height: 1;
        letter-spacing: 0.04em;
      }
      .starRating--compact {
        font-size: 0.8rem;
        letter-spacing: 0.02em;
      }
      .starRating .star {
        user-select: none;
      }
      .starRating .star--on {
        color: var(--color-warn);
      }
      .starRating .star--off {
        color: var(--color-text-4);
        opacity: 0.45;
      }
      .starRating--empty {
        color: var(--color-text-3);
        font-size: var(--text-sm);
        letter-spacing: normal;
      }

      .digestCard__summary {
        margin-top: var(--space-4);
        font-size: var(--text-body);
        line-height: var(--leading-relaxed);
        color: var(--color-text-2);
      }
      .digestCard__line {
        margin: 0 0 var(--space-3);
      }
      .digestCard__line:last-child {
        margin-bottom: 0;
      }
      .digestCard__label {
        display: inline;
        font-size: var(--text-xs);
        font-weight: 700;
        letter-spacing: 0.06em;
        text-transform: uppercase;
        color: var(--color-text-3);
        margin-right: var(--space-2);
      }

      .digestCard__sources {
        margin-top: var(--space-5);
        padding-top: var(--space-4);
        border-top: 1px solid var(--color-border-subtle);
        display: flex;
        flex-direction: column;
        gap: var(--space-4);
      }
      .digestCard__extraSourcesHead {
        margin-top: var(--space-1);
      }
      .digestCard__extraSourcesHead .digestCard__label {
        display: block;
        margin-bottom: 0;
      }

      .title {
        display: flex;
        flex-direction: column;
        gap: var(--space-3);
        margin-bottom: var(--space-4);
      }
      .title h1 {
        font-family: var(--font-display);
        font-size: var(--text-2xl);
        font-weight: 600;
        line-height: var(--leading-tight);
        letter-spacing: -0.02em;
        margin: 0;
      }
      .title .meta {
        font-size: var(--text-xs);
        font-weight: 600;
        letter-spacing: var(--tracking-wide);
        text-transform: uppercase;
        color: var(--color-text-3);
      }

      .chips {
        display: flex;
        flex-wrap: wrap;
        gap: var(--space-2);
      }
      .chip {
        display: inline-flex;
        align-items: center;
        gap: var(--space-2);
        padding: var(--space-2) var(--space-3);
        font-size: var(--text-sm);
        line-height: 1.35;
        color: var(--color-text-2);
        background: var(--color-bg-inset);
        border: 1px solid var(--color-border-subtle);
        border-radius: var(--radius-pill);
      }
      .chip b {
        color: var(--color-text-1);
        font-weight: 600;
      }
      .chip .dot {
        flex-shrink: 0;
        width: 6px;
        height: 6px;
        border-radius: 50%;
      }
      .dot.good {
        background: var(--color-good);
      }
      .dot.warn {
        background: var(--color-warn);
      }
      .dot.bad {
        background: var(--color-bad);
      }

      .sourceBlock {
        display: flex;
        flex-direction: column;
        gap: var(--space-2);
      }

      .sourceRow {
        display: flex;
        flex-wrap: wrap;
        align-items: flex-start;
        justify-content: space-between;
        gap: var(--space-3);
        min-width: 0;
      }

      .sourceLine {
        display: flex;
        flex-wrap: wrap;
        align-items: center;
        gap: var(--space-2) var(--space-3);
        min-width: 0;
        flex: 1 1 12rem;
      }
      .sourcePostLink--channelTitle {
        font-weight: 600;
        letter-spacing: 0.01em;
      }
      .sourceLine--compact .sourcePostLink--channelTitle {
        font-size: var(--text-xs);
      }
      .sourceChannelName {
        font-size: var(--text-body);
        font-weight: 600;
        color: var(--color-text-1);
        overflow-wrap: anywhere;
      }
      .sourcePostLink {
        min-height: var(--tap-min);
      }
      .sourcePostDate {
        font-size: var(--text-sm);
        color: var(--color-text-3);
        white-space: nowrap;
      }

      .postTextBtn {
        display: inline-flex;
        align-items: center;
        justify-content: center;
        min-height: var(--tap-min);
        padding: 0 var(--space-4);
        font-family: var(--font-ui);
        font-size: var(--text-sm);
        font-weight: 600;
        letter-spacing: 0.03em;
        text-transform: uppercase;
        color: var(--color-text-2);
        cursor: pointer;
        background: var(--color-bg-elevated);
        border: 1px solid var(--color-border-default);
        border-radius: var(--radius-sm);
        transition: border-color 0.15s ease, color 0.15s ease, background 0.15s ease;
        flex-shrink: 0;
      }
      .postTextBtn:hover:not(:disabled) {
        color: var(--color-text-primary);
        border-color: var(--color-border-strong);
      }
      .postTextBtn:focus-visible {
        outline: 2px solid var(--color-link);
        outline-offset: 2px;
      }
      .postTextBtn:disabled {
        opacity: 0.55;
        cursor: wait;
      }
      .postTextBtn[aria-expanded="true"] {
        color: var(--color-text-primary);
        border-color: var(--color-border-strong);
      }

      /* Мобильная вёрстка источника: не сжимать кнопку с «пост» в одну линию */
      @media (max-width: 639px) {
        .sourceRow {
          flex-direction: column;
          align-items: stretch;
          justify-content: flex-start;
        }
        /* В ряду flex:1 1 12rem задаёт мин. ширину блока ссылок; в колонке то же правило
           даёт большую базу по высоте + flex-grow → пустота между ссылкой и «Текст поста» */
        .sourceRow__main {
          flex: 0 1 auto;
          width: 100%;
        }
        .sourceRow__actions {
          width: 100%;
          justify-content: stretch;
        }
        .sourceRow__actions .postTextBtn,
        .sourceRow__actions .copyLinkBtn {
          flex: 1;
          justify-content: center;
        }
        .sourceLine {
          flex: none;
          width: 100%;
          flex-direction: column;
          align-items: flex-start;
          align-content: flex-start;
        }
        .sourceChannelName {
          width: 100%;
        }
        .sourcePostDate {
          white-space: normal;
          max-width: 100%;
        }
        .postTextBtn {
          width: 100%;
          max-width: 100%;
          flex: none;
          align-self: stretch;
          justify-content: center;
          box-sizing: border-box;
        }
      }

      .postTextPanel {
        padding: var(--space-4);
        background: var(--color-bg-base);
        border: 1px solid var(--color-border-subtle);
        border-radius: var(--radius-md);
      }
      .postTextPanel[hidden] {
        display: none !important;
        margin: 0 !important;
        padding: 0 !important;
        border: 0 !important;
        min-height: 0 !important;
        overflow: hidden !important;
      }

      .postTextBody {
        margin: 0;
        white-space: pre-wrap;
        word-break: break-word;
        font-family: var(--font-ui);
        font-size: var(--text-body);
        line-height: var(--leading-relaxed);
        color: var(--color-text-2);
      }

      .postTextErr {
        margin: 0;
        font-size: var(--text-sm);
        line-height: var(--leading-relaxed);
        color: var(--color-bad);
      }

      .link {
        display: inline-flex;
        align-items: center;
        justify-content: center;
        min-height: var(--tap-min);
        padding: 0 var(--space-4);
        font-size: var(--text-sm);
        font-weight: 600;
        letter-spacing: 0.02em;
        color: var(--color-link);
        text-decoration: none;
        background: transparent;
        border: 1px solid var(--color-border-default);
        border-radius: var(--radius-sm);
        transition: color 0.15s ease, border-color 0.15s ease, background 0.15s ease;
      }
      .link:hover {
        color: var(--color-link-hover);
        border-color: var(--color-border-strong);
        background: var(--color-accent-muted);
      }
      .link:focus-visible {
        outline: none;
        box-shadow: var(--focus-ring);
      }

      .footerMeta {
        margin-top: var(--space-10);
        padding-top: var(--space-6);
        border-top: 1px solid var(--color-border-subtle);
        font-size: var(--text-sm);
        line-height: var(--leading-relaxed);
        color: var(--color-text-3);
      }
      .footerMeta .link {
        min-height: auto;
        padding: var(--space-1) var(--space-2);
        display: inline-flex;
      }

      /* Archive */
      .archiveIntro {
        margin: 0 0 var(--space-5);
        font-size: var(--text-sm);
        line-height: var(--leading-relaxed);
        color: var(--color-text-secondary);
        max-width: var(--reading-max);
      }
      .archiveList {
        display: flex;
        flex-direction: column;
        gap: var(--space-2);
        margin-top: var(--space-4);
      }
      .archiveRow {
        display: flex;
        flex-direction: column;
        gap: var(--space-3);
        padding: var(--space-4);
        background: var(--color-bg-inset);
        border: 1px solid var(--color-border-subtle);
        border-radius: var(--radius-md);
      }
      @media (min-width: 560px) {
        .archiveRow {
          flex-direction: row;
          align-items: center;
          justify-content: space-between;
        }
      }
      .archiveRow__main {
        flex: 1;
        min-width: 0;
      }
      .archiveRow a.archiveRow__title {
        display: inline-flex;
        min-height: var(--tap-min);
        align-items: center;
        font-family: var(--font-display);
        font-size: var(--text-lg);
        font-weight: 600;
        color: var(--color-text-primary);
        text-decoration: none;
      }
      .archiveRow a.archiveRow__title:hover {
        color: var(--color-accent);
      }
      .archiveRow__action {
        flex-shrink: 0;
      }
      .archiveRow__action .link {
        width: 100%;
      }
      @media (min-width: 560px) {
        .archiveRow__action .link {
          width: auto;
          min-width: 7rem;
        }
      }
      .archiveMeta {
        margin-top: var(--space-1);
        font-size: var(--text-xs);
        line-height: var(--leading-snug);
        color: var(--color-text-tertiary);
      }

      .fab {
        position: fixed;
        right: var(--space-4);
        bottom: var(--space-5);
        z-index: 50;
        width: var(--tap-min);
        height: var(--tap-min);
        padding: 0;
        border-radius: var(--radius-md);
        border: 1px solid var(--color-border-default);
        background: var(--color-bg-elevated);
        color: var(--color-text-primary);
        font-size: var(--text-xl);
        line-height: 1;
        cursor: pointer;
        box-shadow: var(--shadow-md);
        transition: border-color 0.15s ease, background 0.15s ease;
      }
      .fab:hover {
        border-color: var(--color-border-strong);
      }
      .fab:focus-visible {
        outline: 2px solid var(--color-link);
        outline-offset: 2px;
      }

      .siteLegal {
        margin-top: var(--space-8);
        padding-top: var(--space-5);
        border-top: 1px solid var(--color-border-subtle);
        max-width: min(100%, 52rem);
      }
      .siteLegal__text {
        margin: 0;
        font-size: var(--text-xs);
        line-height: var(--leading-relaxed);
        color: var(--color-text-tertiary);
      }

      /* 768px — планшет */
      @media (min-width: 768px) {
        .digestToolbar__secondary {
          grid-template-columns: repeat(2, minmax(0, 1fr));
        }
      }

      /* 900px — дашборд в две колонки, сетка сигналов */
      @media (min-width: 900px) {
        .digestDashboard {
          flex-direction: row;
          align-items: stretch;
          gap: var(--space-6);
        }
        .digestDashboard__primary {
          flex: 1;
          min-width: 0;
        }
        .signalsPanel {
          width: min(100%, 22rem);
          flex-shrink: 0;
          align-self: flex-start;
        }
        .signalsPanel__grid {
          grid-template-columns: repeat(2, minmax(0, 1fr));
        }
      }

      /* 1024px — чуть больше воздуха в списках */
      @media (min-width: 1024px) {
        .digestSection__list {
          padding-left: var(--space-5);
          padding-right: var(--space-5);
        }
        .digestCard__main {
          padding-left: var(--space-5);
          padding-right: var(--space-5);
        }
      }

      /* 1440px+ — a touch more breathing room on very large desktops, still
         well inside the brief's 1280–1440px front-page target (the base
         --content-max already covers 1280–1440; this only nudges further
         for 1728px-class screens so the grid doesn't feel starved). */
      @media (min-width: 1600px) {
        :root {
          --content-max: 88rem;
        }
      }

      .visuallyHidden {
        position: absolute;
        width: 1px;
        height: 1px;
        padding: 0;
        margin: -1px;
        overflow: hidden;
        clip: rect(0, 0, 0, 0);
        white-space: nowrap;
        border: 0;
      }

      /* ——— Editorial dashboard layout ——— */
      .digestChrome {
        position: relative;
        margin: 0 0 var(--space-5);
        padding: 0;
        background: transparent;
        border: none;
        border-radius: 0;
        box-shadow: none;
      }
      /* Flat, like every other section on the page (owner feedback: this
         panel was the one boxed/shadowed element left) -- just search +
         export on a single row, closed off with a hairline rule. */
      .digestChrome__panel {
        display: flex;
        flex-wrap: wrap;
        align-items: center;
        gap: var(--space-3);
        padding: 0 0 var(--space-4);
        background: transparent;
        border: none;
        border-radius: 0;
        border-bottom: var(--rule-hairline);
        box-shadow: none;
      }
      .digestChrome__search {
        flex: 1 1 14rem;
        min-width: 0;
        min-height: 44px;
        padding: var(--space-2) var(--space-4);
        font-family: var(--font-ui);
        font-size: var(--text-sm);
        color: var(--color-text-primary);
        background: var(--color-bg-surface);
        border: 1px solid var(--color-border-default);
        border-radius: var(--radius-md);
      }
      .digestChrome__search:focus-visible {
        outline: none;
        box-shadow: var(--focus-ring);
      }
      .digestChrome__export {
        position: relative;
        flex-shrink: 0;
      }
      .digestChrome__exportBtn {
        display: inline-flex;
        align-items: center;
        gap: 0.3rem;
        min-height: 40px;
        padding: 0 var(--space-3);
        font-family: var(--font-ui);
        font-size: var(--text-xs);
        font-weight: 600;
        color: var(--color-text-secondary);
        background: var(--color-bg-inset);
        border: 1px solid var(--color-border-subtle);
        border-radius: var(--radius-sm);
        cursor: pointer;
        list-style: none;
        user-select: none;
        transition: background 0.14s ease, border-color 0.14s ease, color 0.14s ease;
      }
      .digestChrome__exportBtn::-webkit-details-marker {
        display: none;
      }
      .digestChrome__exportBtn::before {
        content: "⭳";
        font-size: 0.85em;
        opacity: 0.8;
      }
      .digestChrome__exportBtn:hover {
        border-color: var(--color-border-default);
        color: var(--color-text-primary);
      }
      .digestChrome__exportBtn:focus-visible {
        outline: none;
        box-shadow: var(--focus-ring);
      }
      .digestChrome__export[open] .digestChrome__exportBtn {
        background: var(--color-accent-muted);
        border-color: color-mix(in srgb, var(--color-accent) 40%, var(--color-border-default));
        color: var(--color-text-primary);
      }
      .digestChrome__exportMenu {
        position: absolute;
        right: 0;
        z-index: 5;
        display: flex;
        flex-direction: column;
        gap: 2px;
        margin-top: 4px;
        padding: 6px;
        min-width: 7rem;
        background: var(--color-bg-surface);
        border: 1px solid var(--color-border-default);
        border-radius: var(--radius-sm);
        box-shadow: var(--shadow-sm);
      }
      .digestChrome__exportLink {
        padding: 6px 8px;
        font-size: var(--text-xs);
        font-weight: 600;
        color: var(--color-link);
        text-decoration: none;
        border-radius: var(--radius-sm);
      }
      .digestChrome__exportLink:hover {
        background: var(--color-accent-muted);
        text-decoration: underline;
      }
      /* Newspaper section nav (brief section 15), not a pill button: active
         item gets a rule underneath, inactive items are plain uppercase
         text. Lives in the masthead topic row now (the digestChrome
         secondary Критично/Только actionable toggles this was also shared
         with were removed). */
      .digestChip {
        display: inline-flex;
        align-items: center;
        min-height: 40px;
        padding: 0 1px;
        font-family: var(--font-ui);
        font-size: var(--text-label);
        font-weight: 600;
        letter-spacing: 0.06em;
        text-transform: uppercase;
        color: var(--color-text-2);
        background: transparent;
        border: none;
        border-bottom: 2px solid transparent;
        border-radius: 0;
        cursor: pointer;
        white-space: nowrap;
        transition: color 0.15s ease, border-color 0.15s ease;
      }
      .digestChip:hover {
        color: var(--color-text-1);
      }
      .digestChip.is-active {
        color: var(--color-accent);
        border-bottom-color: var(--color-accent);
        background: transparent;
      }
      .digestChip:focus-visible {
        outline: none;
        box-shadow: var(--focus-ring);
      }
      .hourlyBar__svg {
        display: block;
        width: 100%;
        height: 100%;
      }
      .hourlyBar__baseline {
        stroke: var(--hourly-baseline);
        stroke-width: 1;
        vector-effect: non-scaling-stroke;
        shape-rendering: crispEdges;
      }
      .hourlyBar__rect {
        fill: var(--hourly-bar);
        transition: fill 0.15s ease;
      }
      .hourlyBar__rect--peak {
        fill: var(--hourly-bar-peak);
      }
      @media (hover: hover) {
        .hourlyBar__rect:hover {
          fill: color-mix(in srgb, var(--hourly-bar) 80%, transparent);
        }
        .hourlyBar__rect--peak:hover {
          fill: color-mix(in srgb, var(--hourly-bar-peak) 85%, transparent);
        }
      }
      .hourlyBar__axis {
        fill: var(--color-text-4);
        font-family: var(--font-mono);
        font-size: 8.5px;
        font-weight: 500;
        font-variant-numeric: tabular-nums;
        opacity: 0.85;
      }

      /* Newspaper article, not a dashboard card: hairline rule between
         items instead of a bordered box, no colored left accent bar --
         importance is carried by the eyebrow kicker/SIGNAL score line and
         by headline size (.newsCard--lg/md/sm/row), not by chip color. */
      .newsCard {
        position: relative;
        border-top: 1px solid var(--color-border-subtle);
        transition: background-color 0.18s ease;
      }
      .newsCard:hover {
        background: color-mix(in srgb, var(--color-bg-elevated) 40%, transparent);
      }
      .newsCard:focus-within {
        outline: 2px solid var(--color-link);
        outline-offset: -2px;
        border-radius: var(--radius-sm);
      }
      .newsCard__inner {
        padding: var(--space-4) var(--space-1);
      }
      .newsCard--scoreBand-top {
        background: color-mix(in srgb, var(--color-bg-surface) 90%, var(--color-accent));
      }
      .newsCard--scoreBand-soft {
        opacity: 0.92;
      }
      .signalSaveBtn {
        margin: 0;
        padding: 2px 6px;
        border: none;
        border-radius: 6px;
        background: color-mix(in srgb, var(--color-bg-elevated) 90%, transparent);
        color: var(--color-text-3);
        font-size: 1rem;
        line-height: 1;
        cursor: pointer;
        transition: color 0.12s ease, background 0.12s ease;
      }
      .signalSaveBtn:hover {
        color: var(--color-accent);
        background: color-mix(in srgb, var(--color-accent) 12%, transparent);
      }
      .signalSaveBtn:focus-visible {
        outline: none;
        box-shadow: var(--focus-ring);
      }
      .signalSaveBtn.signalSaveBtn--saved {
        color: color-mix(in srgb, var(--color-accent) 95%, #fff);
      }
      .mySignals__mount {
        max-width: 42rem;
        margin-top: var(--space-4);
      }
      .mySignals__tgCard {
        max-width: 42rem;
        margin-top: var(--space-4);
        padding: var(--space-4);
        border-radius: var(--radius-md, 12px);
        border: 1px solid var(--color-border-subtle);
        background: color-mix(in srgb, var(--color-bg-elevated) 88%, transparent);
      }
      .mySignals__tgCard--ok {
        border-color: color-mix(in srgb, var(--color-accent) 35%, var(--color-border-subtle));
      }
      .mySignals__tgTitle {
        margin: 0 0 var(--space-2);
        font-size: var(--text-sm);
        font-weight: 600;
        color: var(--color-text-1);
      }
      .mySignals__tgStatus {
        margin: 0;
        font-size: var(--text-sm);
        color: var(--color-text-2);
      }
      .mySignals__tgHint {
        margin: var(--space-3) 0 0;
        font-size: var(--text-xs);
        color: var(--color-text-3);
        line-height: 1.45;
      }
      .mySignals__tgHint code {
        font-size: 0.95em;
        padding: 2px 6px;
        border-radius: 6px;
        background: color-mix(in srgb, var(--color-text-1) 8%, transparent);
      }
      .mySignals__code {
        margin: var(--space-2) 0;
        font-size: 1.5rem;
        font-weight: 700;
        letter-spacing: 0.12em;
        font-variant-numeric: tabular-nums;
        color: var(--color-accent);
      }
      .mySignals__tgBtn {
        margin-top: var(--space-3);
      }
      .mySignals__toolbar {
        display: flex;
        flex-wrap: wrap;
        gap: var(--space-2);
        margin: var(--space-4) 0 var(--space-3);
      }
      .mySignals__filter {
        padding: 6px 12px;
        font-size: var(--text-xs);
        font-weight: 600;
      }
      .mySignals__filter.is-active {
        border-color: color-mix(in srgb, var(--color-accent) 45%, transparent);
        background: color-mix(in srgb, var(--color-accent) 14%, transparent);
        color: var(--color-text-1);
      }
      .mySignals__item {
        list-style: none;
      }
      .mySignals__rowTop {
        display: flex;
        align-items: flex-start;
        justify-content: space-between;
        gap: var(--space-3);
      }
      .mySignals__rowLead {
        display: flex;
        align-items: flex-start;
        gap: 4px;
        flex: 1;
        min-width: 0;
      }
      .mySignals__chip {
        flex-shrink: 0;
        font-size: 0.65rem;
        font-weight: 700;
        letter-spacing: 0.06em;
        text-transform: uppercase;
        padding: 3px 8px;
        border-radius: 999px;
        border: 1px solid color-mix(in srgb, var(--color-accent) 40%, var(--color-border-subtle));
        color: var(--color-accent);
        line-height: 1.2;
      }
      .mySignals__chip--done {
        border-color: var(--color-border-subtle);
        color: var(--color-text-3);
        font-weight: 600;
      }
      .mySignals__item--done .mySignals__link {
        color: var(--color-text-3);
      }
      .mySignals__item--done .mySignals__meta {
        opacity: 0.85;
      }
      .mySignals__rowAct {
        margin-top: var(--space-2);
      }
      .mySignals__actBtn {
        padding: 6px 10px;
        font-size: var(--text-xs);
        font-weight: 500;
      }
      .mySignals__startHint {
        margin: 0 0 var(--space-4);
        padding: var(--space-3) var(--space-4);
        border-radius: var(--radius-md, 12px);
        border: 1px solid color-mix(in srgb, var(--color-accent) 38%, var(--color-border-subtle));
        background: color-mix(in srgb, var(--color-accent) 10%, transparent);
        font-size: var(--text-sm);
        line-height: 1.45;
        color: var(--color-text-1);
      }
      .mySignals__startHintLbl {
        font-weight: 600;
        color: var(--color-text-2);
      }
      .mySignals__startHintLink {
        font-weight: 700;
        color: var(--color-accent);
        text-decoration: none;
      }
      .mySignals__startHintLink:hover {
        text-decoration: underline;
      }
      .mySignals__startHintScore {
        font-size: var(--text-xs);
        font-weight: 700;
        font-variant-numeric: tabular-nums;
        color: var(--color-text-2);
        margin-left: 2px;
      }
      .mySignals__item--scoreHot {
        margin-left: -4px;
        padding-left: 10px;
        border-left: 3px solid color-mix(in srgb, var(--color-warn) 55%, var(--color-border-subtle));
      }
      .mySignals__item--scoreHot9 {
        border-left-width: 4px;
        border-left-color: var(--color-bad);
        background: color-mix(in srgb, var(--color-bad) 8%, transparent);
        border-radius: var(--radius-sm, 8px);
        padding-top: var(--space-2);
        padding-right: var(--space-2);
        padding-bottom: var(--space-2);
        margin-bottom: var(--space-3);
      }
      .mySignals__hotMark {
        flex-shrink: 0;
        margin-right: 4px;
        font-size: 1rem;
        line-height: 1;
      }
      .mySignals__groupTitle {
        margin: var(--space-5) 0 var(--space-2);
        font-size: 0.72rem;
        font-weight: 700;
        letter-spacing: 0.1em;
        text-transform: uppercase;
        color: var(--color-text-3);
      }
      .mySignals__list {
        margin: 0;
        padding: 0;
        list-style: none;
      }
      .mySignals__list li {
        margin-bottom: var(--space-3);
        padding-bottom: var(--space-3);
        border-bottom: 1px solid var(--color-border-subtle);
      }
      .mySignals__list li:last-child {
        border-bottom: none;
      }
      .mySignals__link {
        display: block;
        font-weight: 600;
        color: var(--color-text-1);
        text-decoration: none;
      }
      .mySignals__link:hover {
        color: var(--color-accent);
      }
      .mySignals__meta {
        display: block;
        margin-top: 4px;
        font-size: var(--text-xs);
        color: var(--color-text-4);
      }
      .mySignals__empty,
      .mySignals__err {
        color: var(--color-text-3);
        font-size: var(--text-sm);
      }
      /* Article eyebrow (brief section 8/9): "topic · SIGNAL n/10" woven
         into one metadata line, with an optional typographic kicker
         (КРИТИЧНО/РИСК/ВОЗМОЖНОСТЬ/...) -- never a colourful SaaS badge. */
      .newsCard__eyebrow {
        display: flex;
        flex-wrap: wrap;
        align-items: center;
        justify-content: space-between;
        gap: var(--space-2) var(--space-3);
        margin: 0 0 6px;
      }
      .newsCard__eyebrowMain {
        font-family: var(--font-ui);
        font-size: var(--text-label);
        font-weight: 700;
        letter-spacing: 0.06em;
        text-transform: uppercase;
        color: var(--color-text-3);
      }
      .newsCard__eyebrowSep {
        margin: 0 6px;
        opacity: 0.5;
      }
      .newsCard__kicker::before {
        content: "\25CF ";
        font-size: 0.75em;
      }
      .newsCard__kicker--critical,
      .newsCard__kicker--risk,
      .newsCard__kicker--action {
        color: var(--color-accent);
      }
      .newsCard__kicker--opportunity {
        color: var(--color-positive);
      }
      .newsCard__kicker--trend {
        color: var(--color-text-1);
      }
      .newsCard__topicTag {
        color: var(--color-text-3);
      }
      .newsCard__signalScore {
        font-variant-numeric: tabular-nums;
      }
      .newsCard__byline {
        margin: 0 0 8px;
        font-family: var(--font-ui);
        font-size: var(--text-metadata);
        color: var(--color-text-3);
      }
      /* Dek (owner-approved hero "variant 1"): why_important read once, as
         a lede paragraph, not repeated as a labeled analysis row. */
      .newsCard__dek {
        margin: 0 0 8px;
        font-family: var(--font-display);
        font-style: italic;
        font-weight: 500;
        line-height: var(--leading-snug);
        color: var(--color-text-2);
      }
      .newsCard--lg .newsCard__dek {
        font-size: 1.15rem;
        max-width: 46rem;
      }
      .newsCard--sm .newsCard__dek {
        font-size: 0.92rem;
      }
      .newsCard--md .newsCard__dek {
        font-size: 1rem;
        max-width: 40rem;
      }
      .newsCard--row .newsCard__dek {
        font-size: 0.86rem;
      }
      /* Secondary hero cards: analysis/fact/sources/feedback collapsed
         behind a native disclosure -- real data, not deleted, just not
         competing with the dek for the reader's first pass. */
      .newsCard__more {
        margin-top: 2px;
      }
      .newsCard__moreToggle {
        cursor: pointer;
        list-style: none;
        font-family: var(--font-ui);
        font-size: 0.72rem;
        font-weight: 700;
        color: var(--color-accent);
      }
      .newsCard__moreToggle::-webkit-details-marker {
        display: none;
      }
      .newsCard__moreToggle::after {
        content: " \2192";
      }
      .newsCard__more[open] > .newsCard__moreToggle::after {
        content: " \2193";
      }
      .newsCard__more[open] > .newsCard__moreToggle {
        margin-bottom: 10px;
      }
      #digest-app:not([data-density="analyst"]) .newsCard__summary .newsCard__text:first-of-type {
        display: -webkit-box;
        -webkit-box-orient: vertical;
        -webkit-line-clamp: 3;
        overflow: hidden;
      }
      /* Headline scale by editorial size (brief section 5/17): layout size
         communicates ranking, not just position. */
      .newsCard__headline {
        margin: 0 0 6px;
        font-family: var(--font-display);
        font-size: var(--text-headline-md);
        font-weight: 600;
        line-height: var(--leading-tight);
        letter-spacing: -0.012em;
        color: var(--color-text-1);
      }
      .newsCard--lg .newsCard__headline {
        font-size: var(--text-headline-hero);
        max-width: 22ch;
      }
      .newsCard--md .newsCard__headline {
        font-size: var(--text-headline-xl);
        max-width: 26ch;
      }
      .newsCard--sm .newsCard__headline {
        font-size: var(--text-headline-lg);
      }
      .newsCard--lg .newsCard__eyebrowMain,
      .newsCard--md .newsCard__eyebrowMain {
        font-size: var(--text-metadata);
      }
      .newsCard__summary {
        margin: 0 0 8px;
      }
      .newsCard__text {
        margin: 0 0 var(--space-1);
        font-size: var(--text-sm);
        line-height: 1.5;
        color: var(--color-text-secondary);
      }
      .newsCard__text:last-child {
        margin-bottom: 0;
      }
      .newsCard__fact {
        margin: 0;
        padding: var(--space-3) var(--space-3) var(--space-3) var(--space-4);
        font-family: var(--font-display);
        font-style: italic;
        font-size: var(--text-body-small);
        line-height: var(--leading-relaxed);
        color: var(--color-text-1);
        background: var(--color-bg-inset);
        border-left: 2px solid var(--color-accent);
      }
      /* THE FACT (brief section 9): a pull-quote, not a boxed callout --
         warm inset background, italic serif, no dark overlay tint. */
      .newsCard__factCallout {
        margin: 8px 0 0;
        padding: 10px 12px;
        background: var(--color-bg-inset);
        border-left: 2px solid var(--color-accent);
      }
      .newsCard__factText {
        margin: 0;
        font-family: var(--font-display);
        font-style: italic;
        font-size: var(--text-body-small);
        line-height: var(--leading-relaxed);
        color: var(--color-text-1);
      }
      .newsCard__factText::before {
        content: "\201C";
      }
      .newsCard__factText::after {
        content: "\201D";
      }
      .newsCard__factLbl {
        display: block;
        margin-bottom: var(--space-1);
        font-family: var(--font-ui);
        font-style: normal;
        font-size: 0.6875rem;
        font-weight: 700;
        letter-spacing: 0.1em;
        text-transform: uppercase;
        color: var(--color-text-3);
      }
      .newsCard__signal {
        margin: 0 0 var(--space-1);
      }
      .newsCard__signalRow {
        margin: 0 0 8px;
      }
      .newsCard__signalRow:last-child {
        margin-bottom: 0;
      }
      .newsCard__signalRow--delta {
        padding-left: var(--space-2);
        border-left: 2px solid color-mix(in srgb, var(--color-accent) 50%, transparent);
      }
      /* WHY IT MATTERS / WHAT CHANGES labels (brief section 9): a visible
         small-caps section label, not a tiny illegible tag. */
      .newsCard__signalLbl {
        display: block;
        margin-bottom: 2px;
        font-family: var(--font-ui);
        font-size: 0.6875rem;
        font-weight: 700;
        letter-spacing: 0.09em;
        text-transform: uppercase;
        color: var(--color-text-3);
      }
      .newsCard__signalRow--delta .newsCard__signalLbl {
        color: var(--color-accent);
      }
      .newsCard__signalDelta {
        display: flex;
        align-items: baseline;
        flex-wrap: wrap;
        gap: 4px 8px;
        min-width: 0;
      }
      /* Impact label (КРИТИЧНО/РИСК/ВОЗМОЖНОСТЬ/ТРЕНД, brief section 10):
         bold coloured text, not a bordered/background pill. */
      .newsCard__impactChip {
        flex-shrink: 0;
        font-weight: 700;
        letter-spacing: 0.04em;
        text-transform: uppercase;
        color: var(--color-text-1);
        background: none;
        border: none;
        padding: 0;
        max-width: 100%;
        overflow: hidden;
        text-overflow: ellipsis;
        white-space: nowrap;
      }
      .newsCard__impactChip--risk {
        color: var(--color-accent);
      }
      .newsCard__impactChip--opportunity {
        color: var(--color-positive);
      }
      .newsCard__signalDelta .newsCard__signalText {
        flex: 1;
        min-width: 0;
      }
      .newsCard__signalText {
        margin: 0;
        font-size: var(--text-sm);
        line-height: 1.45;
        color: var(--color-text-secondary);
      }
      #digest-app:not([data-density="analyst"]) .newsCard__signal .newsCard__signalText {
        display: -webkit-box;
        -webkit-box-orient: vertical;
        -webkit-line-clamp: 2;
        overflow: hidden;
      }
      @media (max-width: 520px) {
        #digest-app:not([data-density="analyst"]) .newsCard__signal .newsCard__signalText {
          -webkit-line-clamp: 3;
        }
      }
      .newsCard__factExpand {
        margin-top: 0;
        min-height: 0;
      }
      .newsCard__factExpand:not(:empty) {
        margin-top: var(--space-2);
      }
      .newsCard__factMeta {
        display: flex;
        flex-wrap: wrap;
        align-items: center;
        gap: 4px 6px;
        margin-top: var(--space-2);
        padding-top: var(--space-2);
        border-top: 1px solid color-mix(in srgb, var(--color-border-subtle) 70%, transparent);
        font-size: var(--text-xs);
        line-height: 1.35;
        color: var(--color-text-4);
      }
      .newsCard__factMetaSep {
        opacity: 0.45;
        user-select: none;
        font-weight: 600;
      }
      .newsCard__factChan {
        font-weight: 600;
        color: var(--color-text-secondary);
        text-decoration: none;
        max-width: 100%;
        overflow: hidden;
        text-overflow: ellipsis;
        white-space: nowrap;
      }
      .newsCard__factChan:hover {
        color: var(--color-text-primary);
        text-decoration: underline;
      }
      .newsCard__factOpen,
      .newsCard__factSite {
        font-weight: 600;
        color: var(--color-text-3);
        text-decoration: none;
      }
      .newsCard__factOpen:hover,
      .newsCard__factSite:hover {
        color: var(--color-text-primary);
        text-decoration: underline;
      }
      .newsCard__factCopy {
        font-size: inherit;
        min-height: 28px;
        padding: 2px var(--space-2);
      }
      .postTextBtn--meta {
        min-height: 28px;
        padding: 2px var(--space-2);
        font-size: 0.65rem;
        font-weight: 600;
        letter-spacing: 0.04em;
        text-transform: none;
      }
      .postTextPanel--inFact {
        margin-top: var(--space-2);
        padding: var(--space-3);
        background: color-mix(in srgb, var(--color-bg-elevated) 88%, transparent);
        border: 1px solid color-mix(in srgb, var(--color-border-subtle) 90%, transparent);
        border-radius: var(--radius-sm);
      }
      .postTextPanel--inFact:not([hidden]) {
        animation: newsCardFactReveal 0.28s ease;
      }
      @keyframes newsCardFactReveal {
        from { opacity: 0; transform: translateY(-3px); }
        to { opacity: 1; transform: none; }
      }
      .postTextPanel--inFact .postTextBody {
        margin: 0;
        max-height: min(52vh, 22rem);
        overflow-y: auto;
        -webkit-overflow-scrolling: touch;
        font-size: var(--text-sm);
        line-height: 1.55;
        color: var(--color-text-3);
      }
      .newsCard__sourceMount {
        margin: 0;
        padding: 0;
        border: none;
      }
      .newsCard__footer {
        display: flex;
        flex-wrap: wrap;
        align-items: center;
        justify-content: flex-start;
        gap: 6px 10px;
        margin-top: 8px;
        padding-top: 8px;
        border-top: 1px solid color-mix(in srgb, var(--color-border-subtle) 85%, transparent);
      }
      .newsCard__footer--soloActions {
        justify-content: flex-end;
      }
      .newsCard__footerLeft {
        flex: 1 1 12rem;
        min-width: 0;
      }
      .newsCard__footerActions {
        flex: 1 1 10rem;
        display: flex;
        flex-wrap: wrap;
        align-items: center;
        justify-content: flex-end;
        gap: 6px 8px;
      }
      .newsCard__sourceMount .sourceSectionHead--compact {
        display: none;
      }
      .newsCard .sourceBlock--compact:first-child {
        margin-top: 0;
      }
      @media (max-width: 520px) {
        .newsCard__inner {
          padding: 10px;
        }
        .newsCard__footer {
          align-items: flex-start;
        }
        .newsCard__footerLeft {
          flex: 1 1 100%;
        }
        .newsCard__footerActions {
          flex: 1 1 100%;
          justify-content: flex-start;
        }
      }
      .newsCard__sourceMount .digestCard__sources {
        margin: 0;
      }
      .newsCard__sources--compact {
        gap: var(--space-1);
        margin-top: 0;
        padding-top: 0;
        border-top: none;
      }
      .newsCard .sourceSectionHead--compact {
        margin: 0 0 4px;
        padding-bottom: 0;
        border-bottom: none;
      }
      .newsCard .digestCard__label--compact {
        font-size: 0.6rem;
        font-weight: 600;
        letter-spacing: 0.09em;
        opacity: 0.88;
      }
      .sourceSectionHead--compact {
        margin: 0 0 var(--space-1);
      }
      .digestCard__label--compact {
        font-size: 0.65rem;
        letter-spacing: 0.08em;
      }
      .sourceLine--compact {
        font-size: var(--text-xs);
        gap: var(--space-1) var(--space-2);
      }
      .sourceLine__sep {
        opacity: 0.45;
        font-weight: 600;
        user-select: none;
      }
      .sourcePostLink--web {
        font-weight: 600;
      }
      .newsCard .sourceRow--compact {
        gap: var(--space-1);
      }
      .sourceRow--compact {
        gap: var(--space-2);
        align-items: flex-start;
      }
      .sourceRow__actions--textonly {
        flex: 0 0 auto;
      }
      .postTextBtn--compact {
        padding: 2px var(--space-2);
        min-height: 28px;
        font-size: 0.65rem;
        font-weight: 600;
      }
      .newsCard .postTextBtn--compact {
        min-height: 26px;
        padding: 1px var(--space-2);
        font-size: 0.62rem;
      }
      .sourceBlock--compact {
        gap: var(--space-1);
      }
      .newsCard .sourceBlock--compact {
        gap: 4px;
      }
      .sourceSectionHead {
        margin: var(--space-3) 0 var(--space-2);
      }
      .sourceSectionHead:first-child {
        margin-top: 0;
      }
      .sourceSectionHead--tg {
        padding-bottom: var(--space-1);
      }
      .newsCard__toolbar {
        display: flex;
        flex-wrap: wrap;
        align-items: center;
        gap: var(--space-1);
        margin: 0;
        padding: 0;
      }
      .newsCard__linkBtn {
        display: inline-flex;
        align-items: center;
        min-height: 28px;
        padding: 0 10px;
        font-size: 0.65rem;
        font-weight: 600;
        color: color-mix(in srgb, var(--color-link) 92%, var(--color-text-primary));
        text-decoration: none;
        border: 1px solid color-mix(in srgb, var(--color-link) 35%, var(--color-border-default));
        border-radius: var(--radius-md);
        background: color-mix(in srgb, var(--color-bg-surface) 92%, transparent);
      }
      .newsCard__linkBtn:hover {
        border-color: var(--color-border-strong);
      }
      .newsCard__linkBtn:focus-visible {
        outline: none;
        box-shadow: var(--focus-ring);
      }
      .newsCard__toolbarBtn {
        display: inline-flex;
        align-items: center;
        justify-content: center;
        min-height: 28px;
        padding: 0 10px;
        font-family: var(--font-ui);
        font-size: 0.65rem;
        font-weight: 600;
        color: var(--color-text-primary);
        border: 1px solid var(--color-border-default);
        border-radius: var(--radius-sm);
        background: var(--color-bg-surface);
        cursor: pointer;
      }
      .newsCard__toolbarBtn:hover {
        border-color: var(--color-border-strong);
      }
      .newsCard__toolbarBtn:focus-visible {
        outline: none;
        box-shadow: var(--focus-ring);
      }
      .newsCard .copyLinkBtn {
        min-height: 28px;
        padding: 0 10px;
        font-size: 0.65rem;
      }
      /* Feedback row ("Оценить:") — same chip treatment as the toolbar
         buttons above (Полный текст / Открыть / Копировать) so the whole
         footer-actions row reads as one family, not two different systems. */
      .signalFeedback {
        display: flex;
        flex-wrap: wrap;
        align-items: center;
        gap: var(--space-1);
      }
      .signalFeedback__lbl {
        font-family: var(--font-ui);
        font-size: 0.65rem;
        font-weight: 600;
        color: var(--color-text-3);
        margin-right: 2px;
      }
      .signalFeedbackBtn {
        display: inline-flex;
        align-items: center;
        justify-content: center;
        min-height: 28px;
        padding: 0 10px;
        font-family: var(--font-ui);
        font-size: 0.65rem;
        font-weight: 600;
        color: var(--color-text-primary);
        border: 1px solid var(--color-border-default);
        border-radius: var(--radius-sm);
        background: var(--color-bg-surface);
        cursor: pointer;
      }
      .signalFeedbackBtn:hover {
        border-color: var(--color-border-strong);
      }
      .signalFeedbackBtn:focus-visible {
        outline: none;
        box-shadow: var(--focus-ring);
      }
      .signalFeedbackBtn.is-active,
      .signalFeedbackBtn[aria-pressed="true"] {
        color: var(--color-accent);
        border-color: var(--color-accent);
        background: var(--color-accent-muted);
      }
      .signalFeedbackBtn:disabled {
        opacity: 0.6;
        cursor: default;
      }

      @media (prefers-reduced-motion: reduce) {
        html {
          scroll-behavior: auto;
        }
        .btn,
        .link,
        .masthead__compactLink,
        .digestChip,
        .digestCard,
        .digestToc__link,
        .newsCard {
          transition: none;
        }
        .newsCard:hover {
          transform: none;
        }
      }
