/* Minnesotans Helping Minnesotans — statewide civic repair layer, v2. */
.good-hero { background:radial-gradient(circle at 78% 16%,rgba(34,211,238,.12),transparent 30%),radial-gradient(circle at 12% 82%,rgba(245,158,11,.08),transparent 30%),var(--bg); }
.good-hero h1 { max-width:13ch; }
.good-bridge { background:linear-gradient(180deg,rgba(34,211,238,.025),transparent 45%); }
.purpose-grid,.good-grid,.rule-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:1rem; }
.purpose-card,.good-card,.rule-card { position:relative; overflow:hidden; padding:1.45rem; border:1px solid var(--border-subtle); border-radius:var(--radius-xl); background:linear-gradient(145deg,rgba(18,18,27,.96),rgba(9,9,14,.96)); }
.purpose-card::before,.good-card::before,.rule-card::before { content:""; position:absolute; inset:0; pointer-events:none; background:radial-gradient(circle at 92% 0%,rgba(34,211,238,.075),transparent 38%); }
.purpose-card:nth-child(even)::before,.good-card:nth-child(even)::before,.rule-card:nth-child(even)::before { background:radial-gradient(circle at 92% 0%,rgba(245,158,11,.07),transparent 38%); }
.purpose-card h3,.good-card h3,.rule-card h3 { position:relative; z-index:1; margin:.55rem 0 .7rem; font-family:var(--font-display); font-size:clamp(1.25rem,2vw,1.65rem); line-height:1.15; letter-spacing:-.03em; }
.purpose-card p,.good-card p,.rule-card p { position:relative; z-index:1; color:var(--text-muted); line-height:1.72; }
.story-label { color:var(--cyan)!important; font-family:var(--font-mono); font-size:.66rem; font-weight:500; letter-spacing:.14em; text-transform:uppercase; }
.purpose-links { position:relative; z-index:1; display:flex; flex-wrap:wrap; gap:.65rem 1rem; margin-top:1.1rem; }
.purpose-links a,.story-source { position:relative; z-index:1; color:var(--ice); font-family:var(--font-mono); font-size:.72rem; line-height:1.5; }
.bridge-statement { margin-top:1rem; padding:1.2rem 1.35rem; border:1px solid rgba(34,211,238,.2); border-radius:var(--radius-xl); background:rgba(34,211,238,.035); color:var(--text-muted); line-height:1.75; }
.bridge-statement strong { color:var(--text); }
.good-grid { grid-template-columns:repeat(3,minmax(0,1fr)); }
.good-card { min-height:23rem; display:flex; flex-direction:column; }
.good-card.featured { grid-column:span 2; }
.good-card-top { position:relative; z-index:1; display:flex; align-items:flex-start; justify-content:space-between; gap:.8rem; margin-bottom:2rem; }
.good-tag,.good-place { font-family:var(--font-mono); font-size:.61rem; line-height:1.35; letter-spacing:.09em; text-transform:uppercase; }
.good-tag { display:inline-flex; max-width:70%; padding:.38rem .52rem; border:1px solid rgba(34,211,238,.22); border-radius:999px; color:var(--cyan); background:rgba(34,211,238,.035); }
.good-tag.responder { border-color:rgba(245,158,11,.25); color:var(--gold); background:rgba(245,158,11,.035); }
.good-tag.faith { border-color:rgba(168,85,247,.24); color:var(--purple); background:rgba(168,85,247,.035); }
.good-tag.republican { border-color:rgba(255,255,255,.2); color:var(--ice); background:rgba(255,255,255,.035); }
.good-tag.youth { border-color:rgba(34,211,238,.22); color:var(--ice); }
.good-place { color:var(--text-dim); text-align:right; }
.good-card h3 { font-size:clamp(1.35rem,2.4vw,1.9rem); }
.good-card .example-line { margin-top:.7rem; color:var(--text-dim); font-size:.9rem; }
.good-card .story-source { display:inline-block; margin-top:auto; padding-top:1.4rem; }
.republican-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
.political-note { border-color:rgba(255,255,255,.14); background:linear-gradient(120deg,rgba(255,255,255,.025),rgba(34,211,238,.025)); }
.rule-grid { grid-template-columns:repeat(3,minmax(0,1fr)); }
.rule-card { min-height:14rem; }
.rule-card>span { position:relative; z-index:1; display:block; color:var(--gold); font-family:var(--font-mono); font-size:.65rem; letter-spacing:.14em; text-transform:uppercase; }
.next-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:1rem; }
.next-grid a { display:flex; min-height:10rem; flex-direction:column; justify-content:space-between; padding:1.3rem; border:1px solid var(--border-subtle); border-radius:var(--radius-xl); background:rgba(255,255,255,.02); transition:transform .2s ease,border-color .2s ease,background .2s ease; }
.next-grid a:hover { transform:translateY(-2px); border-color:rgba(34,211,238,.28); background:rgba(34,211,238,.03); }
.next-grid span { color:var(--cyan); font-family:var(--font-mono); font-size:.65rem; letter-spacing:.14em; text-transform:uppercase; }
.next-grid strong { max-width:24ch; color:var(--text); font-family:var(--font-display); font-size:1.15rem; line-height:1.3; letter-spacing:-.02em; }

/* Statewide story map: intentionally self-contained, no tracking or third-party map tiles. */
.field-map-shell { display:grid; grid-template-columns:minmax(18rem,.9fr) minmax(0,1.1fr); gap:1.25rem; align-items:start; }
.field-map { position:sticky; top:calc(var(--nav-h,6.9rem) + 1rem); min-height:42rem; overflow:hidden; border:1px solid var(--border-subtle); border-radius:var(--radius-xl); background:radial-gradient(circle at 64% 20%,rgba(34,211,238,.09),transparent 28%),linear-gradient(160deg,rgba(15,17,25,.98),rgba(6,7,11,.98)); }
.field-map::before { content:""; position:absolute; inset:0; pointer-events:none; opacity:.38; background-image:linear-gradient(rgba(255,255,255,.025) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.025) 1px,transparent 1px); background-size:42px 42px; }
.field-map svg { position:relative; z-index:1; display:block; width:100%; height:auto; min-height:42rem; }
.mn-outline { fill:rgba(18,31,39,.76); stroke:rgba(140,230,238,.38); stroke-width:2; vector-effect:non-scaling-stroke; }
.mn-water { fill:rgba(34,211,238,.035); stroke:rgba(34,211,238,.08); stroke-width:1; }
.map-pin { text-decoration:none; }
.map-pin circle.pin-halo { fill:rgba(34,211,238,.08); stroke:rgba(34,211,238,.25); stroke-width:1; transition:fill .18s ease,stroke .18s ease,transform .18s ease; transform-box:fill-box; transform-origin:center; }
.map-pin circle.pin-core { fill:var(--cyan); stroke:rgba(255,255,255,.9); stroke-width:1.25; }
.map-pin text { fill:#061016; font-family:var(--font-mono); font-size:11px; font-weight:700; text-anchor:middle; dominant-baseline:middle; pointer-events:none; }
.map-pin:hover circle.pin-halo,.map-pin:focus circle.pin-halo { fill:rgba(34,211,238,.2); stroke:rgba(34,211,238,.72); transform:scale(1.15); }
.map-pin:focus { outline:none; }
.map-key { position:absolute; z-index:2; left:1rem; right:1rem; bottom:1rem; display:flex; justify-content:space-between; gap:1rem; padding:.75rem .85rem; border:1px solid var(--border-subtle); border-radius:12px; background:rgba(5,5,8,.86); backdrop-filter:blur(8px); }
.map-key strong { color:var(--text); font-family:var(--font-display); font-size:.9rem; }
.map-key span { color:var(--text-dim); font-family:var(--font-mono); font-size:.6rem; line-height:1.5; text-align:right; text-transform:uppercase; letter-spacing:.08em; }
.map-stories { display:grid; gap:.75rem; }
.map-story { scroll-margin-top:calc(var(--nav-h,6.9rem) + 1rem); display:grid; grid-template-columns:2.35rem 1fr; gap:.9rem; padding:1rem 1.05rem; border:1px solid var(--border-subtle); border-radius:var(--radius-lg); background:rgba(255,255,255,.018); transition:border-color .2s ease,background .2s ease,transform .2s ease; }
.map-story:target,.map-story:hover { border-color:rgba(34,211,238,.26); background:rgba(34,211,238,.03); transform:translateY(-1px); }
.map-story-index { display:grid; place-items:center; width:2.25rem; height:2.25rem; border:1px solid rgba(34,211,238,.26); border-radius:50%; color:var(--cyan); font-family:var(--font-mono); font-size:.72rem; }
.map-story-top { display:flex; flex-wrap:wrap; justify-content:space-between; gap:.45rem 1rem; margin-bottom:.35rem; }
.map-story-place { color:var(--ice); font-family:var(--font-display); font-weight:600; letter-spacing:-.02em; }
.map-story-type { color:var(--text-dim); font-family:var(--font-mono); font-size:.6rem; letter-spacing:.08em; text-transform:uppercase; }
.map-story h3 { margin:0 0 .35rem; color:var(--text); font-family:var(--font-display); font-size:1.08rem; letter-spacing:-.025em; }
.map-story p { margin:0; color:var(--text-muted); font-size:.88rem; line-height:1.62; }
.map-story-links { display:flex; flex-wrap:wrap; gap:.45rem .9rem; margin-top:.65rem; }
.map-story-links a { color:var(--cyan); font-family:var(--font-mono); font-size:.65rem; line-height:1.4; }
.map-disclosure { margin-top:1rem; padding:1rem 1.1rem; border:1px solid rgba(245,158,11,.18); border-radius:var(--radius-lg); background:rgba(245,158,11,.025); color:var(--text-muted); font-size:.87rem; line-height:1.65; }
.map-disclosure strong { color:var(--text); }

@media (max-width:960px) {
  .good-grid,.rule-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .good-card.featured { grid-column:span 2; }
  .field-map-shell { grid-template-columns:1fr; }
  .field-map { position:relative; top:auto; min-height:34rem; }
  .field-map svg { min-height:34rem; }
}
@media (max-width:720px) {
  .purpose-grid,.good-grid,.republican-grid,.rule-grid,.next-grid { grid-template-columns:1fr; }
  .good-card.featured { grid-column:auto; }
  .good-card { min-height:auto; }
  .good-card-top { margin-bottom:1.3rem; }
  .good-tag { max-width:76%; }
  .field-map { min-height:28rem; }
  .field-map svg { min-height:28rem; }
  .map-key { flex-direction:column; }
  .map-key span { text-align:left; }
  .map-story { grid-template-columns:2rem 1fr; padding:.9rem; }
  .map-story-index { width:1.9rem; height:1.9rem; }
}
@media (prefers-reduced-motion:reduce) {
  .map-pin circle.pin-halo,.map-story { transition:none; }
}
