/* =====================================================================
   News hub — the landing page at /category/news/
   =====================================================================

   Every colour here comes from the theme's own tokens. style.css defines
   them light and redefines them inside `@media (prefers-color-scheme:dark)`,
   so this page flips with the rest of the site and inherits the contrast
   work already done there. Two rules that cost us before:

     · --pink-text / --green-text are the AA-checked TEXT variants.
       Raw --pink / --green are for fills and rules, never type on a surface.
     · anything painted OVER a photo has to be theme-aware too. A surface
       hardcoded dark under token-coloured text puts near-black on near-black
       the moment the reader is in light mode.

   The theme styles `.article h1`, `.article .content h2` and
   `.article .content p`/`a` at (0,1,1), which outranks a single class here.
   Anything on those elements is stated one class higher, at the end.
   ===================================================================== */

body.ge-news-hub{
  --nh-bg:var(--bg); --nh-card:var(--surface);
  --nh-ink:var(--text); --nh-mut:var(--muted); --nh-faint:var(--muted);
  --nh-line:var(--line);
  --nh-hot:var(--pink); --nh-hot-t:var(--pink-text);
  --nh-lime:var(--green); --nh-lime-t:var(--green-text); --nh-lime-on:var(--green-ink);
  --nh-violet:#7c3aed;
  --nh-disp:"Archivo",system-ui,-apple-system,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;
  --nh-serif:"Source Serif 4",ui-serif,Georgia,Cambria,"Times New Roman",serif;
  --nh-mono:"JetBrains Mono",ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
  /* a bloom is atmosphere on a dark ground and a smudge on a white one */
  --nh-bloom-a:rgba(255,30,142,.10); --nh-bloom-b:rgba(124,58,237,.06);
  --nh-plate-a:rgba(255,30,142,.05); --nh-plate-b:rgba(124,58,237,.02);
  --nh-scrim:color-mix(in srgb, var(--bg) 0%, transparent);
  background:var(--nh-bg);
  overflow-x:hidden;
}
@media (prefers-color-scheme:dark){
  body.ge-news-hub{
    --nh-bloom-a:rgba(255,30,142,.22); --nh-bloom-b:rgba(124,58,237,.13);
    --nh-plate-a:rgba(255,30,142,.08); --nh-plate-b:rgba(124,58,237,.03);
  }
}

/* page.php skips the page title and lead image on a hub, so nothing here
   fights the section's own masthead. */
body.ge-news-hub article.article{
  max-width:none !important; margin-left:0 !important; margin-right:0 !important;
}
body.ge-news-hub .content > *{ max-width:1264px; margin-inline:auto; }
body.ge-news-hub .article .content a{ color:inherit; text-decoration:none; }

/* ---------- masthead ----------
   The hero markup is the theme's own .ge-cat-* component, so it is already
   styled. Only the plate and the bloom behind it are added here. */
body.ge-news-hub .ge-nh-hero{ padding-top:26px; }

/* ---------- breadcrumb ----------
   The theme prints the current-page crumb but marks it screen-reader-only, so
   this hub showed a lone house icon while the Gaming and GTA 6 hubs show a
   full trail. Reveal it the same way, with the same symmetric separator. */
body.ge-news-hub .ge-breadcrumbs .ge-crumb-current.screen-reader-text{
  position:static !important; width:auto !important; height:auto !important;
  clip:auto !important; clip-path:none !important; overflow:visible !important;
  white-space:nowrap !important; margin:0 !important; padding:0 !important;
  font-family:var(--nh-disp); font-size:12px; font-weight:800;
  letter-spacing:.08em; text-transform:uppercase; color:var(--nh-mut);
  align-items:center;
}
body.ge-news-hub .ge-breadcrumbs .ge-crumb-current::before{
  content:"/"; font-family:var(--nh-mono); color:var(--nh-line);
  margin:0 9px; font-size:13px;
  /* style.css draws the site-wide separator as a rotated 6x6 chevron built
     from borders. Setting content:"/" alone leaves that box in place and
     the slash renders inside it, rotated. Clear the box too. */
  width:auto; height:auto; border:0; transform:none; opacity:1;
}
body.ge-news-hub .ge-breadcrumbs ol{
  display:flex; align-items:center; flex-wrap:wrap; margin:0; padding:0; list-style:none;
}
body.ge-news-hub .ge-nh-hero .ge-cat-hero-text{ position:relative; }
body.ge-news-hub .ge-nh-hero .ge-cat-hero-text > *{ position:relative; z-index:2; }
body.ge-news-hub .ge-nh-hero .ge-cat-hero-text::before{
  content:""; position:absolute; z-index:0; pointer-events:none;
  /* .ge-cat-hero-text has NO side padding, so any negative left puts the
     plate and this bloom outside the content column, out of line with the
     breadcrumb, the title and every card below. Both start at 0. */
  left:0; top:-54px; width:470px; height:270px;
  background:radial-gradient(closest-side, var(--nh-bloom-a), var(--nh-bloom-b) 58%, transparent);
}
/* the corner cut is the theme's own device, mirrored to the text side */
body.ge-news-hub .ge-nh-hero .ge-cat-hero-text::after{
  content:""; position:absolute; z-index:0; pointer-events:none;
  left:0; top:-30px; right:42%; bottom:-22px;
  background:linear-gradient(135deg, var(--nh-plate-a), var(--nh-plate-b) 62%, transparent);
  border-top:1px solid color-mix(in srgb, var(--nh-hot) 18%, transparent);
  border-left:1px solid color-mix(in srgb, var(--nh-hot) 12%, transparent);
  clip-path:polygon(28px 0, 100% 0, 100% 100%, 0 100%, 0 28px);
}
.ge-nh-stamp{ display:inline-flex; align-items:center; gap:9px; margin:16px 0 0;
  font-family:var(--nh-mono); font-size:9.5px; font-weight:700; letter-spacing:.14em;
  color:var(--nh-faint); }
.ge-nh-stamp b{ color:var(--nh-ink); font-weight:700; }
.ge-nh-live{ width:6px; height:6px; border-radius:100px; background:var(--nh-hot);
  box-shadow:0 0 0 3px color-mix(in srgb, var(--nh-hot) 22%, transparent); flex:0 0 auto; }
body.ge-news-hub .ge-cat-sub.ge-nh-sub-crime{ border-color:color-mix(in srgb, var(--nh-hot) 38%, transparent); }

/* ---------- platform badges ---------- */
.ge-nh-pf{ display:inline-flex; gap:5px; flex-wrap:wrap; }
.ge-nh-pf i{ font-style:normal; font-family:var(--nh-mono); font-size:8px; font-weight:700;
  letter-spacing:.1em; padding:3px 7px; border-radius:100px;
  border:1px solid color-mix(in srgb, var(--nh-ink) 22%, transparent);
  color:var(--nh-mut); background:color-mix(in srgb, var(--nh-ink) 6%, transparent); }

/* ---------- the lead: diagonal + rail ---------- */
.ge-nh-top{ display:grid; grid-template-columns:minmax(0,1fr) 316px; gap:14px;
  min-height:462px; margin-top:26px; }
.ge-nh-dg{ position:relative; display:block; border-radius:12px; overflow:hidden;
  background:var(--nh-card); }
.ge-nh-dg img{ position:absolute; inset:0; width:100%; height:100%; object-fit:cover;
  transform:scale(1.03); transition:transform 7s cubic-bezier(.22,.7,.3,1); }
.ge-nh-dg:hover img{ transform:scale(1.09); }
.ge-nh-art--none{ position:absolute; inset:0; background:var(--nh-card); }
.ge-nh-vig{ position:absolute; inset:0; z-index:1; pointer-events:none;
  background:radial-gradient(120% 90% at 78% 40%, transparent 40%, rgba(4,4,7,.5) 100%); }
.ge-nh-blk{ position:absolute; left:0; top:0; bottom:0; width:57%; z-index:4;
  display:flex; flex-direction:column; justify-content:center; padding:0 42px;
  background:linear-gradient(103deg, var(--nh-bg) 76%, transparent);
  clip-path:polygon(0 0, 100% 0, 80% 100%, 0 100%); }
.ge-nh-seam{ position:absolute; inset:0; z-index:3; pointer-events:none;
  background:var(--nh-lime); clip-path:polygon(36% 0, 36.6% 0, 18.6% 100%, 18% 100%); }
.ge-nh-seam-glow{ position:absolute; inset:0; z-index:2; pointer-events:none;
  background:var(--nh-lime); opacity:.45; filter:blur(22px);
  clip-path:polygon(36% 0, 38.4% 0, 20.4% 100%, 18% 100%); }
.ge-nh-spine{ position:absolute; left:0; top:0; bottom:0; z-index:5; width:57%;
  pointer-events:none; display:flex; align-items:center; justify-content:flex-end;
  padding-right:6px; }
.ge-nh-spine span{ writing-mode:vertical-rl; transform:rotate(180deg);
  font-family:var(--nh-mono); font-size:9px; font-weight:700; letter-spacing:.34em;
  color:var(--nh-lime-t); opacity:.8; }
.ge-nh-kick{ display:flex; align-items:center; gap:10px; flex-wrap:wrap; }
.ge-nh-tag{ font-family:var(--nh-mono); font-size:10px; font-weight:700;
  letter-spacing:.2em; color:var(--nh-lime-t); }
.ge-nh-dg .ge-nh-pf{ margin-top:11px; }
.ge-nh-h2{ display:block; margin:14px 0 0; font-family:var(--nh-disp); font-weight:900;
  font-size:clamp(24px,2.6vw,34px); line-height:1.02; letter-spacing:-.04em;
  color:var(--nh-ink); max-width:14ch; text-wrap:balance; }
.ge-nh-sf{ display:block; margin:13px 0 0; font-family:var(--nh-serif); font-size:15px;
  line-height:1.5; color:var(--nh-mut); max-width:33ch; }
.ge-nh-meta{ display:flex; align-items:center; gap:14px; margin-top:17px; flex-wrap:wrap; }
.ge-nh-go{ font-family:var(--nh-mono); font-size:9.5px; font-weight:700; letter-spacing:.16em;
  color:var(--nh-lime-t); }
.ge-nh-dg:hover .ge-nh-go{ text-decoration:underline; text-underline-offset:4px; }

.ge-nh-rail{ display:flex; flex-direction:column; gap:9px; }
.ge-nh-railrow{ display:grid; grid-template-columns:96px minmax(0,1fr); gap:12px;
  align-items:center; flex:1; padding:9px 12px 9px 9px; border-radius:8px;
  background:var(--nh-card); transition:background .2s ease, transform .2s ease; }
.ge-nh-railrow:hover{ background:color-mix(in srgb, var(--nh-ink) 8%, var(--nh-card));
  transform:translateX(-3px); }
.ge-nh-railrow.is-on{ background:linear-gradient(90deg,
    color-mix(in srgb, var(--nh-lime) 16%, transparent),
    color-mix(in srgb, var(--nh-lime) 3%, transparent));
  box-shadow:inset 3px 0 0 var(--nh-lime); }
.ge-nh-railrow img{ width:96px; height:54px; object-fit:cover; display:block; border-radius:5px; }
.ge-nh-rt{ display:block; margin:0 0 4px; font-family:var(--nh-mono); font-size:8px;
  font-weight:700; letter-spacing:.12em; color:var(--nh-lime-t); }
.ge-nh-rt em{ font-style:normal; color:var(--nh-faint); }
.ge-nh-rh{ display:block; margin:0 0 5px; font-family:var(--nh-disp); font-weight:700;
  font-size:12.5px; line-height:1.22; letter-spacing:-.008em; color:var(--nh-ink); }

/* ---------- triptych ---------- */
.ge-nh-tri{ display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:14px;
  height:262px; margin-top:14px; }
.ge-nh-tri a{ position:relative; display:block; border-radius:10px; overflow:hidden;
  background:var(--nh-card); }
.ge-nh-tri img{ width:100%; height:100%; object-fit:cover; display:block;
  transition:transform .5s cubic-bezier(.2,.7,.3,1); }
.ge-nh-tri a:hover img{ transform:scale(1.05); }
.ge-nh-v{ position:absolute; inset:0; pointer-events:none;
  background:linear-gradient(to top, rgba(5,5,8,.97) 4%, rgba(5,5,8,.58) 42%, rgba(5,5,8,0) 78%); }
.ge-nh-c{ position:absolute; left:0; right:0; bottom:0; padding:0 20px 20px; z-index:2; }
.ge-nh-k{ display:block; margin-bottom:8px; font-family:var(--nh-mono); font-size:9.5px;
  font-weight:700; letter-spacing:.18em; color:var(--green); }
/* over a photo, so these stay light in both themes on purpose */
.ge-nh-h3{ display:block; margin:9px 0 0; font-family:var(--nh-disp); font-weight:800;
  font-size:18px; line-height:1.14; letter-spacing:-.024em; color:#fff;
  text-wrap:balance; text-shadow:0 1px 16px rgba(0,0,0,.55); }
.ge-nh-tri .ge-nh-pf i{ border-color:rgba(255,255,255,.34); color:rgba(255,255,255,.86);
  background:rgba(255,255,255,.1); }

/* ---------- section heads ---------- */
.ge-nh-sec{ margin-top:52px; }
.ge-nh-h{ display:flex; align-items:baseline; gap:16px; margin:0 0 14px;
  border-top:1px solid var(--nh-ink); padding-top:12px; }
.ge-nh-h h2{ margin:0; font-family:var(--nh-disp); font-weight:900; font-size:22px;
  line-height:1.08; letter-spacing:-.026em; color:var(--nh-ink); }
.ge-nh-h .r{ margin-left:auto; font-family:var(--nh-mono); font-size:9.5px; font-weight:700;
  letter-spacing:.12em; color:var(--nh-faint); }
a.r:hover{ color:var(--nh-lime-t); }

/* ---------- release calendar ---------- */
/* auto-fit, not repeat(6): the section only shows *upcoming* dates found in
   headlines, so the cell count is whatever the calendar legitimately has. At
   a fixed 6 a two-date week left four empty columns - ~815px of dead grey in
   a 1224px rail. auto-fit collapses the empty tracks and the real cells fill
   the row, the way the gaming hub's flex calrow already does. */
.ge-nh-cal{ display:grid; grid-template-columns:repeat(auto-fit,minmax(170px,1fr)); gap:0;
  border:1px solid var(--nh-line); border-radius:12px; overflow:hidden; }
.ge-nh-cal a{ display:block; padding:15px 16px 17px; border-left:1px solid var(--nh-line);
  background:linear-gradient(180deg, color-mix(in srgb, var(--nh-lime) 7%, transparent), transparent 62%); }
.ge-nh-cal a:first-child{ border-left:0; }
.ge-nh-cal a:hover{ background:linear-gradient(180deg, color-mix(in srgb, var(--nh-lime) 14%, transparent), transparent 70%); }
.ge-nh-cd-row{ display:flex; align-items:baseline; gap:9px; flex-wrap:wrap; }
.ge-nh-dt{ font-family:var(--nh-mono); font-size:11px; font-weight:700;
  letter-spacing:.11em; color:var(--nh-lime-t); }
.ge-nh-cd{ font-family:var(--nh-mono); font-size:8.5px; font-weight:700; letter-spacing:.1em;
  color:var(--nh-lime-on); background:var(--nh-lime); border-radius:100px; padding:2px 7px; }
.ge-nh-cd.is-far{ color:var(--nh-mut); background:transparent; border:1px solid var(--nh-line); }
.ge-nh-nm{ display:block; margin:9px 0 8px; font-family:var(--nh-disp); font-weight:800;
  font-size:14px; line-height:1.22; letter-spacing:-.016em; color:var(--nh-ink); }

/* ---------- card grid ---------- */
.ge-nh-grid{ display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:28px 24px; }
.ge-nh-grid img{ width:100%; height:auto; aspect-ratio:16/9; object-fit:cover;
  display:block; border-radius:6px; }
.ge-nh-k2{ display:block; margin:11px 0 6px; font-family:var(--nh-mono); font-size:9px;
  font-weight:700; letter-spacing:.12em; color:var(--nh-hot-t); }
.ge-nh-h3b{ display:block; margin:0 0 8px; font-family:var(--nh-disp); font-weight:700;
  font-size:15px; line-height:1.24; letter-spacing:-.014em; color:var(--nh-ink); }
.ge-nh-grid .ge-nh-byline{ display:block; margin-top:8px; }

/* ---------- crime desk band ---------- */
/* ---------- just filed ----------
   The one chronological block on a page that is otherwise lane-first. It sits
   directly under the masthead so the freshest story is visible without
   scrolling, whichever lane filed it. Reuses the crime band's card grid on
   purpose - same furniture, different rule colour. */
.ge-nh-latest{ margin:0 0 38px; }
.ge-nh-latest .ge-nh-h{ border-top-width:2px; border-top-color:var(--nh-hot); }

.ge-nh-band{ margin-top:52px; background:var(--nh-card); border-radius:14px;
  padding:24px 28px 26px; scroll-margin-top:90px; }
.ge-nh-band .ge-nh-h{ border-top:0; padding-top:0; }
.ge-nh-g4{ display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:22px; }
.ge-nh-g4 a{ display:block; border-top:2px solid var(--nh-hot); padding-top:10px; }
.ge-nh-k3{ display:block; margin:0 0 6px; font-family:var(--nh-mono); font-size:8.5px;
  font-weight:700; letter-spacing:.12em; color:var(--nh-hot-t); }
.ge-nh-hb{ display:block; font-family:var(--nh-disp); font-weight:700; font-size:14px;
  line-height:1.28; letter-spacing:-.012em; color:var(--nh-ink); }

/* ---------- the file ---------- */
.ge-nh-file{ display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:0 44px; }
.ge-nh-file a{ display:grid; grid-template-columns:48px minmax(0,1fr); gap:14px;
  align-items:baseline; border-bottom:1px solid var(--nh-line); padding:10px 0; }
.ge-nh-fd{ font-family:var(--nh-mono); font-size:9.5px; color:var(--nh-faint); }
.ge-nh-fh{ display:block; font-family:var(--nh-disp); font-weight:600; font-size:14px;
  line-height:1.3; letter-spacing:-.008em; color:var(--nh-ink); }
.ge-nh-file .ge-nh-byline{ display:block; margin-top:3px; }

/* ---------- bylines ---------- */
.ge-nh-byline{ font-family:var(--nh-mono); font-size:9px; letter-spacing:.09em;
  color:var(--nh-faint); text-transform:uppercase; }
.ge-nh-byline--lead{ display:inline-flex; gap:7px; align-items:baseline; text-transform:none; }
.ge-nh-by{ font-size:8.5px; }

/* ---------- authors ---------- */
.ge-nh-authors{ margin-top:52px; border-top:1px solid var(--nh-ink); padding-top:16px;
  display:flex; align-items:center; gap:34px; flex-wrap:wrap; }
.ge-nh-authors .lbl{ font-family:var(--nh-mono); font-size:9.5px; font-weight:700;
  letter-spacing:.16em; color:var(--nh-lime-t); }
.ge-nh-authors a{ display:flex; align-items:center; gap:11px; }
.ge-nh-authors .av{ width:34px; height:34px; border-radius:100px; flex:0 0 auto;
  display:grid; place-items:center; font-family:var(--nh-disp); font-weight:900;
  font-size:12px; letter-spacing:-.02em; color:var(--nh-lime-on);
  background:linear-gradient(140deg, var(--nh-lime), #7fc22f); }
.ge-nh-authors .av--b{ background:linear-gradient(140deg, var(--nh-hot), var(--nh-violet));
  color:#fff; }
.ge-nh-authors .nm{ display:block; font-family:var(--nh-disp); font-weight:700;
  font-size:14px; letter-spacing:-.012em; color:var(--nh-ink); }
.ge-nh-authors .ro{ display:block; margin-top:2px; font-family:var(--nh-mono);
  font-size:8.5px; letter-spacing:.1em; color:var(--nh-faint); }
.ge-nh-authors .rss{ margin-left:auto; font-family:var(--nh-mono); font-size:9.5px;
  font-weight:700; letter-spacing:.12em; color:var(--nh-lime-t); }

/* ---------- newsletter ---------- */
.ge-nh-news{ margin-top:52px; background:var(--nh-card); border-radius:14px;
  padding:30px 34px 32px; display:grid; grid-template-columns:minmax(0,1fr) 420px;
  gap:52px; align-items:start; }
.ge-nh-kick2{ margin:0 0 8px; font-family:var(--nh-mono); font-size:11px; font-weight:700;
  letter-spacing:.16em; color:var(--nh-lime-t); }
.ge-nh-newshead{ margin:0; font-family:var(--nh-disp); font-weight:900; font-size:27px;
  line-height:1.1; letter-spacing:-.024em; color:var(--nh-ink); }
.ge-nh-newsintro{ margin:10px 0 0; max-width:52ch; font-family:var(--nh-serif);
  font-size:16px; line-height:1.55; color:var(--nh-mut); }
.ge-nh-news label{ display:block; margin-bottom:9px; font-family:var(--nh-mono);
  font-size:10px; font-weight:700; letter-spacing:.13em; color:var(--nh-mut); }
.ge-nh-field{ display:flex; gap:10px; }
.ge-nh-news input[type="email"]{ flex-grow:1; min-width:0; font-family:var(--nh-serif);
  font-size:14px; color:var(--nh-ink); background:var(--nh-bg);
  border:1px solid var(--nh-line); border-radius:8px; padding:12px 14px; }
.ge-nh-news .sub{ font-family:var(--nh-disp); font-weight:800; font-size:13.5px;
  letter-spacing:.02em; color:var(--nh-lime-on); background:var(--nh-lime); border:0;
  border-radius:8px; padding:12px 20px; cursor:pointer; white-space:nowrap; }
.ge-nh-news .news-hp{ position:absolute; left:-9999px; }

@media (prefers-reduced-motion:reduce){
  body.ge-news-hub *{ animation:none !important; transition:none !important; }
  .ge-nh-dg:hover img,.ge-nh-tri a:hover img{ transform:none; }
}

/* ---------- narrower screens ---------- */
@media (max-width:1100px){
  .ge-nh-cal a:nth-child(3n+1){ border-left:0; }
  .ge-nh-grid{ grid-template-columns:repeat(3,minmax(0,1fr)); }
}
@media (max-width:900px){
  body.ge-news-hub .ge-nh-hero .ge-cat-hero-text::after{
    left:0; right:0; clip-path:polygon(20px 0,100% 0,100% 100%,0 100%,0 20px); }
  body.ge-news-hub .ge-nh-hero .ge-cat-hero-text::before{ left:0; width:330px; height:210px; }
  .ge-nh-top{ grid-template-columns:minmax(0,1fr); min-height:0; }
  .ge-nh-dg{ height:320px; }
  /* The diagonal is a desktop device. At 375px the block is only ~250px
     wide, and the cut takes the bottom-right corner with the byline in it -
     "RAHIS SAIFI" was losing its last 21px. Square the block off here. */
  .ge-nh-blk{ width:78%; padding:0 22px; clip-path:none;
    background:linear-gradient(100deg, var(--nh-bg) 84%, transparent); }
  .ge-nh-seam,.ge-nh-seam-glow{ display:none; }
  .ge-nh-spine{ display:none; }
  .ge-nh-sf{ display:none; }
  .ge-nh-railrow{ flex:none; }

  /* Micro-labels are a typographic device on a desktop column; on a phone
     8px is simply below reading size. */
  .ge-nh-rt{ font-size:9.5px; }
  .ge-nh-pf i{ font-size:9.5px; padding:4px 8px; }
  .ge-nh-cd{ font-size:9.5px; padding:3px 8px; }
  .ge-nh-k3,.ge-nh-k2{ font-size:10px; }
  .ge-nh-authors .ro{ font-size:9.5px; }
  .ge-nh-byline{ font-size:10px; }

  /* 16px is not a tap target. */
  .ge-nh-h .r,.ge-nh-authors .rss{ min-height:34px; display:inline-flex;
    align-items:center; }

  /* The row is nowrap on desktop, where there is room for a heading and its
     caption side by side. At 375px the caption wins the squeeze instead of
     dropping below: "THEFTS, COURT CASES AND GAMBLING - OUR OTHER BEAT" took
     177px of a 283px row and crushed "The crime desk" into 90px over three
     lines. Give the heading the full row and let the caption sit under it. */
  .ge-nh-h{ flex-wrap:wrap; align-items:flex-start; row-gap:4px; }
  .ge-nh-h h2{ flex:0 0 100%; }
  .ge-nh-h .r{ margin-left:0; }
  .ge-nh-tri{ grid-template-columns:minmax(0,1fr); height:auto; }
  .ge-nh-tri a{ height:210px; }
  .ge-nh-cal a{ border-left:0; border-top:1px solid var(--nh-line); }
  .ge-nh-grid,.ge-nh-g4{ grid-template-columns:repeat(2,minmax(0,1fr)); }
  .ge-nh-file{ grid-template-columns:minmax(0,1fr); }
  .ge-nh-news{ grid-template-columns:minmax(0,1fr); gap:24px; }
  .ge-nh-authors{ gap:20px; }
  .ge-nh-authors .rss{ margin-left:0; }
}

/* ---------- specificity guard ----------------------------------------
   The theme styles `.article .content h2` and `.article .content p`/`a` at
   (0,1,1), which outranks a single class here. Anything of ours on those
   elements has to be stated one class higher or it silently never applies. */
body.ge-news-hub .article .content a{ color:inherit; text-decoration:none; }
body.ge-news-hub .article .content a:hover .ge-nh-h2,
body.ge-news-hub .article .content a:hover .ge-nh-h3,
body.ge-news-hub .article .content a:hover .ge-nh-h3b,
body.ge-news-hub .article .content a:hover .ge-nh-hb,
body.ge-news-hub .article .content a:hover .ge-nh-fh,
body.ge-news-hub .article .content a:hover .ge-nh-rh,
body.ge-news-hub .article .content a:hover .ge-nh-nm{
  text-decoration:underline; text-decoration-color:var(--nh-hot);
  text-decoration-thickness:2px; text-underline-offset:3px;
}
body.ge-news-hub .article .content a.ge-nh-author{ color:var(--nh-ink); }
body.ge-news-hub .ge-nh-h h2{
  font-family:var(--nh-disp); font-weight:900; font-size:22px; line-height:1.08;
  letter-spacing:-.026em; margin:0;
}
body.ge-news-hub .ge-nh-newshead{
  font-family:var(--nh-disp); font-weight:900; line-height:1.1;
  letter-spacing:-.024em; margin:0;
}
body.ge-news-hub .ge-nh-stamp,
body.ge-news-hub .ge-nh-kick2{ margin-top:0; }
body.ge-news-hub .ge-nh-newsintro{ margin:10px 0 0; }
