/**
 * News niche pack — custom CSS.
 *
 * This pack matches the theme's own default yellow/blue palette exactly
 * (like Magazine), so .post-title/.link-hover/.section-rule/.menu-item need
 * no color-scoped override here.
 *
 * Every override below fixes a confirmed bug where a shared component class
 * in the compiled stylesheet (main.css, `@layer utilities`) bakes in its
 * own display/padding/font-size/color that wins the cascade over the
 * Tailwind classes put on the same element in this pack's markup, because
 * both live in the same layer and equal-specificity same-layer rules
 * resolve by source order, not by which one "looks" more specific. This
 * file is a plain, unlayered stylesheet, so everything in it outranks any
 * `@layer utilities` rule automatically, regardless of source order.
 *
 * A sacrificial no-op first rule guards against a confirmed bug elsewhere
 * in this project (see niche-sports.css) where something in this file's
 * serve/parse pipeline silently drops the very first rule after the
 * header comment.
 */
.site-style-news {}

/* -- Smart header z-index: the shared reveal-on-scroll-up script
      (ctrspace-x-script.js initFixedHeader) adds a bare `.fixed` class to
      `.main-header` past 500px of scroll, but that class only sets
      `position: fixed` via Tailwind's own utility - no `top`/`z-index`
      come with it, so the header freezes wherever it was with no
      stacking priority, letting later content paint over it. -- */
.site-style-news .main-header.fixed {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  z-index: 60;
}

/* -- Nav link sizing: shared `.menu-item` is a big tap target (px-8 py-4
      text-lg); the prototype's own is a tight inline link (.9375rem,
      .25rem 0, no horizontal padding), with spacing coming from the nav's
      own flex `gap`. -- */
.site-style-news .menu-item {
  padding: .25rem 0;
  font-size: .9375rem;
  font-weight: 500;
}

/* -- Pill button sizing: shared `.button-4` is a large CTA (px-10 py-5
      text-3xl); the prototype's is a modest inline pill. -- */
.site-style-news .button-4 {
  padding: 1rem 2.5rem;
  font-size: 1.125rem;
}

/* -- Primary button layout: shared `.btn-primary` never sets `display` at
      all (unlike the prototype's own, which is `inline-flex; align-items:
      center; justify-content:center;`), so a button with an icon next to
      its label (Subscribe buttons) drops the icon onto its own line -
      Tailwind's preflight makes SVGs `display:block`. Same fix already
      applied to every other niche pack this project touches (see
      niche-sports.css). -- */
.site-style-news .btn-primary {
  display: inline-flex;
  align-items: center;
  justify-content: center;
}

/* The header's desktop Subscribe button (`btn-primary … xl:inline-flex
   hidden`) relied on Tailwind's single-class `.hidden` to stay off on
   mobile; the fix above has higher specificity (`.site-style-news
   .btn-primary`) and silently defeated it, showing the button at every
   width. Restore the responsive toggle with matching specificity. */
.site-style-news .btn-primary.hidden { display: none; }
@media (min-width: 1322px) {
  .site-style-news .btn-primary.hidden.xl\:inline-flex { display: inline-flex; }
}

/* -- Primary button text: shared `.btn-primary` uses dark text
      (text-neutral-950); the prototype's is `color:#fff` - white text (and
      any inline SVG using currentColor) on every button in this pack. -- */
.site-style-news .btn-primary {
  color: var(--color-neutral-0);
}
.dark .site-style-news .btn-primary {
  color: var(--color-neutral-0);
}

/* -- Primary button sizing: same shared-class conflict as `.menu-item` and
      `.button-4` above - one compound selector per size combination
      actually used in this pack, so each still gets its own intended size
      instead of collapsing to the shared default (px-6 py-2 text-lg). -- */
.site-style-news .btn-primary.px-5.py-2 { padding: .5rem 1.25rem; font-size: .875rem; }
.site-style-news .btn-primary.px-4.py-1\.5 { padding: .375rem 1rem; font-size: .875rem; }
.site-style-news .btn-primary.px-8.py-3 { padding: .75rem 2rem; font-size: 1rem; }
.site-style-news .btn-primary.px-7.py-3 { padding: .75rem 1.75rem; font-size: 1rem; }
.site-style-news .btn-primary.px-7.py-2\.5 { padding: .625rem 1.75rem; font-size: 1rem; }
.site-style-news .btn-primary.w-full { padding: .625rem 1.5rem; font-size: 1rem; }

/* -- Share icon circles: the shared `ctrspace_render_share_icons()` helper
      (used on the single-post byline, the single-post author bio, and the
      author archive header) never sets a background - just a border - so
      on a patterned card (author bio's `pattern-grid`) the texture shows
      through the circle. The prototype's own author-page icons explicitly
      set `bg-neutral-0`; extended here to every use of the same shared
      component so it's consistent wherever it appears in this pack. -- */
.site-style-news a.size-9.rounded-full {
  background-color: var(--color-neutral-0);
}
.dark .site-style-news a.size-9.rounded-full {
  background-color: var(--color-neutral-dark-0);
}

/* -- Footer link spacing: shared `.footer-menu` adds its own `py-2`
      vertical padding meant for a plain sidebar widget list; stacked on
      top of the column `<ul>`'s own flex `gap`, that doubles the visual
      space between rows. The prototype's carries no padding at all. -- */
.site-style-news .footer-menu {
  padding: 0;
}

/* -- Category chip: pill shape, uppercase micro-label (shared .chip has
      no base definition at all). -- */
.site-style-news .chip {
  display: inline-flex; align-items: center; gap: .5rem; padding: .3rem .85rem;
  border-radius: 9999px; font-size: 11px; font-weight: 700; text-transform: uppercase;
  letter-spacing: .12em; transition: all .3s;
}

/* -- Article prose: quote and list styling the_content() needs for real
      post content (bare blockquote/ul/li from the block editor carry no
      classes at all). -- */
.site-style-news .single-content blockquote {
  margin: 2rem 0; padding-left: 1.75rem; border-left: 3px solid var(--color-primary-light-950);
}
.dark .site-style-news .single-content blockquote { border-left-color: var(--color-primary-dark-950); }
.site-style-news .single-content blockquote p {
  font-size: 1.25rem; font-weight: 500; line-height: 1.45; color: var(--color-neutral-950);
}
@media (min-width: 640px) { .site-style-news .single-content blockquote p { font-size: 1.5rem; } }
.dark .site-style-news .single-content blockquote p { color: var(--color-neutral-dark-950); }
.site-style-news .single-content blockquote cite {
  display: block; margin-top: 1rem; font-size: .875rem; font-style: normal; font-weight: 600;
  color: var(--color-neutral-700);
}
.dark .site-style-news .single-content blockquote cite { color: var(--color-neutral-dark-700); }

.site-style-news .single-content h2 { font-size: 1.5rem; font-weight: 700; margin: 2.5rem 0 1rem; }
@media (min-width: 640px) { .site-style-news .single-content h2 { font-size: 1.875rem; } }
.site-style-news .single-content h2:first-child { margin-top: 0; }
.site-style-news .single-content p { margin: 0 0 1.25rem; }
.site-style-news .single-content p:last-child { margin-bottom: 0; }
.site-style-news .single-content a { text-decoration: underline; text-underline-offset: 2px; }

.site-style-news .single-content > p:first-of-type {
  font-size: 1.125rem; line-height: 1.75; font-weight: 500;
}

.site-style-news .single-content ul {
  margin: 0 0 1.25rem; padding: 0; display: flex; flex-direction: column; gap: .625rem; list-style: none;
}
.site-style-news .single-content ul > li { position: relative; padding-left: 1.5rem; }
.site-style-news .single-content ul > li::before {
  content: ''; position: absolute; left: 0; top: .55em; width: 6px; height: 6px; border-radius: 9999px;
  background: var(--color-primary-light-950);
}
.dark .site-style-news .single-content ul > li::before { background: var(--color-primary-dark-950); }
.site-style-news .single-content ol { margin: 0 0 1.25rem 1.25rem; list-style: decimal; }
.site-style-news .single-content ol > li { padding-left: .25rem; margin-bottom: .5rem; }
