==========================================================================
   Granite State Report - published-article layout fix
   v1 - 2026-08-20
   Paste into WordPress: Appearance > Customize > Additional CSS.
   Fixes every GSR article already on the site. No re-pasting required.

   What it repairs:
   1. Missing box-sizing. The article shell sets max-width:780px with 56px
      side padding. Under the default box model that padding renders OUTSIDE
      the 780, so the block came out 892px wide, overflowed narrow theme
      columns, and stopped centering - the left-shift.
   2. Auto-margin centering losing to theme rules. Selectors are tripled
      (0,3,0 specificity) so they outrank rules like
      .entry-content > * { margin-left:0 !important }.
   3. Fact-check table sizing itself to its widest content, which pushed
      ~190px of horizontal overflow onto phones.
   4. No phone rules at all.

   Safe alongside articles built on template v2 (the ones wrapped in
   .gsr-wrap): this file sets no display property, so wrapped articles keep
   centering through the wrapper and unwrapped ones center on auto margins.
   ========================================================================== */

/* --- 1. honest box model ------------------------------------------------ */
.gsr-article,
.gsr-article * { box-sizing: border-box !important; }

/* --- 2. centering that survives the theme ------------------------------- */
.gsr-article.gsr-article.gsr-article {
  width: 100% !important;
  max-width: 780px !important;
  margin-left: auto !important;
  margin-right: auto !important;
  float: none !important;
  position: static !important;
}

/* --- 3. fact-check table stays inside the column ------------------------ */
.gsr-article .gsr-factcheck {
  width: 100% !important;
  table-layout: fixed !important;
}
.gsr-article .gsr-factcheck th,
.gsr-article .gsr-factcheck td {
  overflow-wrap: normal !important;
  word-break: normal !important;
  hyphens: none !important;
}
.gsr-article .gsr-factcheck tr > *:nth-child(1) { width: 38px !important; }
.gsr-article .gsr-factcheck tr > *:nth-child(3) { width: 98px !important; }

/* --- 4. long strings never blow out the column -------------------------- */
.gsr-article p,
.gsr-article li,
.gsr-article .gsr-sources,
.gsr-article .gsr-contact { overflow-wrap: break-word !important; }
.gsr-article img,
.gsr-article svg { max-width: 100% !important; height: auto !important; }

/* --- 5. phones ---------------------------------------------------------- */
@media (max-width: 640px) {
  .gsr-article.gsr-article.gsr-article {
    padding: 26px 18px 34px !important;
    box-shadow: none !important;
  }
  .gsr-article .gsr-title { font-size: 30px !important; line-height: 35px !important; }
  .gsr-article .gsr-dek { font-size: 19px !important; line-height: 27px !important; }
  .gsr-article h2 { font-size: 23px !important; line-height: 28px !important; }
  .gsr-article .gsr-masthead { font-size: 24px !important; line-height: 27px !important; }
  .gsr-article .gsr-factcheck { font-size: 12px !important; line-height: 17px !important; }
  .gsr-article .gsr-factcheck th,
  .gsr-article .gsr-factcheck td { padding: 7px 6px !important; }
  .gsr-article .gsr-statute-box { padding: 14px 16px !important; }
  .gsr-article .gsr-contact { padding: 18px 18px !important; }
  .gsr-article .gsr-engage { padding: 16px 18px !important; }
  .gsr-article .gsr-pullquote {
    padding: 16px 18px !important;
    font-size: 20px !important;
    line-height: 29px !important;
  }
}