/* =========================================================
   CRPLSA design system
   Brand tokens sampled from the official CRPLSA logo.
   ========================================================= */
:root{
  --mn-blue:   #1D51A0;
  --book-green:#81C341;
  --word-orange:#F7931D;
  --blue-deep: #163E7B;
  --blue-tint: #EBF1FA;
  --green-tint:#F0F8E6;
  --orange-deep:#E0820F;
  --green-deep:#5D9626;
  --paper:#FFFFFF; --ink:#1F2A37; --mist:#5A6A7A; --line:#E3E9F1;
  --display:'Figtree',system-ui,sans-serif;
  --body:'Atkinson Hyperlegible',system-ui,sans-serif;
}
*{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:smooth}
body{font-family:var(--body);color:var(--ink);background:var(--paper);line-height:1.65;font-size:17px}
img{max-width:100%}
a{color:var(--mn-blue)}
:focus-visible{outline:3px solid var(--word-orange);outline-offset:2px;border-radius:3px}
.wrap{max-width:1160px;margin:0 auto;padding:0 24px}
.eyebrow{font-family:var(--display);font-size:13px;letter-spacing:.11em;text-transform:uppercase;font-weight:700;color:var(--mn-blue)}
.skip{position:absolute;left:-9999px;background:var(--mn-blue);color:#fff;padding:10px 16px;z-index:100}
.skip:focus{left:12px;top:12px}

/* ---------- Header ---------- */
header.site{background:#fff;border-bottom:1px solid var(--line);position:sticky;top:0;z-index:50}
.nav{display:flex;align-items:center;justify-content:space-between;height:78px;gap:16px}
.brand{display:flex;align-items:center;gap:12px;text-decoration:none;min-width:0}
.brand img{height:50px;width:auto;display:block}
.brand-text b{font-family:var(--display);font-weight:800;font-size:24px;color:var(--word-orange);letter-spacing:.01em;display:block;line-height:1.05}
.brand-text span{font-size:11.5px;color:var(--mist);display:block;line-height:1.25}
nav.primary ul{display:flex;gap:2px;list-style:none;align-items:center}
nav.primary a{text-decoration:none;color:var(--ink);font-weight:700;font-size:15.5px;padding:9px 14px;border-radius:8px;transition:background .15s,color .15s}
nav.primary a:hover{background:var(--blue-tint);color:var(--mn-blue)}
nav.primary a[aria-current="page"]{color:var(--mn-blue);background:var(--blue-tint)}
nav.primary a.cta{background:var(--word-orange);color:#fff;margin-left:8px}
nav.primary a.cta:hover{background:var(--orange-deep);color:#fff}
.menu-btn{display:none;background:none;border:1.5px solid var(--line);border-radius:8px;padding:8px 12px;font-family:var(--display);font-weight:700;font-size:13px;cursor:pointer;color:var(--ink)}

/* ---------- Buttons ---------- */
.btn{display:inline-block;text-decoration:none;font-family:var(--display);font-weight:700;font-size:16.5px;padding:14px 28px;border-radius:10px;transition:transform .15s,background .15s,box-shadow .15s}
.btn-orange{background:var(--word-orange);color:#fff;box-shadow:0 4px 14px rgba(247,147,29,.3)}
.btn-orange:hover{background:var(--orange-deep);transform:translateY(-1px)}
.btn-blue{color:var(--mn-blue);border:2px solid var(--mn-blue)}
.btn-blue:hover{background:var(--mn-blue);color:#fff}

/* ---------- Home hero ---------- */
.hero{background:linear-gradient(180deg,#fff 0%,var(--blue-tint) 100%);padding:64px 0 0;overflow:hidden}
.hero-grid{display:grid;grid-template-columns:1.02fr .98fr;gap:40px;align-items:center;padding-bottom:64px}
.hero h1{font-family:var(--display);font-weight:800;font-size:clamp(36px,4.7vw,56px);line-height:1.08;color:var(--mn-blue);letter-spacing:-.015em;margin:16px 0 18px}
.hero h1 .g{color:var(--book-green)}
.hero p.lede{font-size:19px;color:var(--mist);max-width:50ch;margin-bottom:30px}
.hero-ctas{display:flex;gap:14px;flex-wrap:wrap}

/* living-logo map */
.map-panel{position:relative;padding-bottom:8px}
.map-panel svg{width:100%;max-width:480px;height:auto;display:block;margin:0 auto;overflow:visible}
.mn-fill{fill:var(--mn-blue)}
.page-green{fill:var(--book-green)}
.page-white{fill:#fff}
.node{cursor:pointer}
.node circle.core{fill:var(--word-orange);stroke:#fff;stroke-width:1.6;transition:r .15s}
.node:hover circle.core,.node.active circle.core{r:8}
.node circle.ring{fill:none;stroke:#fff;stroke-width:1;opacity:0}
.node.active circle.ring{opacity:.9}
.node text{font-family:var(--display);font-weight:600;font-size:10px;fill:#fff;letter-spacing:.05em;pointer-events:none;opacity:0;transition:opacity .15s}
.node:hover text,.node.active text{opacity:1}
@keyframes glow{0%,100%{opacity:.85}50%{opacity:.45}}
.node circle.core{animation:glow 3.4s ease-in-out infinite}
.map-tip{background:#fff;border:1px solid var(--line);border-radius:12px;box-shadow:0 8px 24px rgba(29,81,160,.1);padding:16px 20px;display:flex;justify-content:space-between;gap:14px;align-items:center;max-width:480px;margin:14px auto 0}
.map-tip .code{font-family:var(--display);font-weight:700;font-size:11px;letter-spacing:.12em;color:var(--word-orange);text-transform:uppercase}
.map-tip b{font-family:var(--display);font-weight:700;font-size:18px;display:block;color:var(--mn-blue)}
.map-tip span.hq{font-size:14px;color:var(--mist)}
.map-tip a{font-weight:700;font-size:14.5px;color:var(--mn-blue);white-space:nowrap}

/* stat band */
.stat-band{background:var(--mn-blue);color:#fff}
.stat-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:24px;padding:30px 0}
.stat b{font-family:var(--display);font-weight:800;font-size:34px;display:block;line-height:1.1}
.stat span{font-size:14px;color:#C5D5EE}

/* ---------- Sections ---------- */
.section{padding:84px 0}
.section.tight{padding:70px 0}
.section-head{display:flex;justify-content:space-between;align-items:flex-end;gap:24px;margin-bottom:36px;flex-wrap:wrap}
.section-head h2,h2.sec{font-family:var(--display);font-weight:800;font-size:clamp(28px,3.4vw,38px);color:var(--ink);letter-spacing:-.01em;margin-top:10px}
.section-head a.more{font-weight:700;text-decoration:none;font-size:15.5px}

/* news cards */
.card-row{display:grid;grid-template-columns:repeat(3,1fr);gap:22px}
.news-card{background:#fff;border:1px solid var(--line);border-radius:16px;padding:28px;display:flex;flex-direction:column;gap:10px;transition:transform .15s,box-shadow .15s;border-top:5px solid var(--mn-blue);text-decoration:none;color:var(--ink)}
.news-card:nth-child(3n+2){border-top-color:var(--book-green)}
.news-card:nth-child(3n+3){border-top-color:var(--word-orange)}
.news-card:hover{transform:translateY(-4px);box-shadow:0 10px 28px rgba(29,81,160,.1)}
.news-card .tag{font-family:var(--display);font-weight:700;font-size:11.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--mist)}
.news-card h3{font-family:var(--display);font-weight:700;font-size:20px;color:var(--ink);line-height:1.3}
.news-card p{font-size:15.5px;color:var(--mist);flex:1}
.news-card .date{font-size:13px;color:var(--mist)}

/* benefits */
.benefit-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:22px;margin-top:36px}
.benefit{display:flex;gap:20px;background:var(--blue-tint);border-radius:16px;padding:26px 28px}
.benefit:nth-child(2),.benefit:nth-child(3){background:var(--green-tint)}
.benefit .dot{width:46px;height:46px;border-radius:12px;flex-shrink:0;display:grid;place-items:center;background:#fff;box-shadow:0 2px 8px rgba(31,42,55,.08)}
.benefit h3{font-family:var(--display);font-weight:700;font-size:19px;color:var(--ink);margin-bottom:6px}
.benefit p{font-size:15.5px;color:var(--mist)}

/* mission band */
.mission{background:var(--mn-blue);color:#fff;padding:90px 0;text-align:center;position:relative;overflow:hidden}
.mission::before{content:"";position:absolute;inset:0;background:radial-gradient(600px 300px at 50% 120%,rgba(129,195,65,.25),transparent)}
.mission .wrap{position:relative}
.mission .eyebrow{color:var(--book-green)}
.mission blockquote{font-family:var(--display);font-weight:700;font-size:clamp(26px,3.8vw,42px);line-height:1.25;max-width:26ch;margin:20px auto 0;letter-spacing:-.01em}
.mission blockquote em{font-style:normal;color:var(--book-green)}

/* resources cards */
.res-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:22px;margin-top:36px}
.res-card{border:1.5px solid var(--line);border-radius:16px;padding:28px;text-decoration:none;color:var(--ink);transition:border-color .15s,transform .15s;display:block;background:#fff}
.res-card:hover{border-color:var(--mn-blue);transform:translateY(-3px)}
.res-card b{font-family:var(--display);font-weight:700;font-size:20px;color:var(--mn-blue);display:block;margin-bottom:8px}
.res-card span{font-size:15px;color:var(--mist)}
.res-card .go{font-family:var(--display);font-weight:700;font-size:13px;color:var(--word-orange);margin-top:16px;display:block}

/* ---------- Interior pages ---------- */
.page-hero{background:linear-gradient(180deg,#fff 0%,var(--blue-tint) 100%);padding:60px 0 48px;border-bottom:1px solid var(--line)}
.page-hero h1{font-family:var(--display);font-weight:800;font-size:clamp(32px,4vw,46px);color:var(--mn-blue);letter-spacing:-.015em;margin-top:12px}
.page-hero p.sub{font-size:18px;color:var(--mist);max-width:62ch;margin-top:12px}

.prose{max-width:72ch;padding:56px 0 84px}
.prose h2{font-family:var(--display);font-weight:800;font-size:27px;color:var(--mn-blue);margin:44px 0 14px;letter-spacing:-.01em}
.prose h2:first-child{margin-top:0}
.prose h3{font-family:var(--display);font-weight:700;font-size:20px;color:var(--ink);margin:30px 0 10px}
.prose p{margin-bottom:16px}
.prose ul,.prose ol{margin:0 0 18px 24px}
.prose li{margin-bottom:8px}
.prose li::marker{color:var(--word-orange)}
.prose blockquote{border-left:4px solid var(--book-green);padding:6px 0 6px 20px;color:var(--mist);margin:22px 0;font-size:18px}
.prose a{font-weight:700}
.prose img{border-radius:12px}

/* two-up mission/vision cards on About */
.mv-grid{display:grid;grid-template-columns:1fr 1fr;gap:22px;margin:28px 0 10px}
.mv-card{border-radius:16px;padding:28px;background:var(--blue-tint)}
.mv-card.green{background:var(--green-tint)}
.mv-card h3{font-family:var(--display);font-weight:800;font-size:14px;letter-spacing:.1em;text-transform:uppercase;color:var(--mn-blue);margin-bottom:10px}
.mv-card.green h3{color:var(--green-deep)}
.mv-card p{font-size:16.5px}

/* region directory */
.dir-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:22px;margin-top:40px}
.dir-card{border:1.5px solid var(--line);border-radius:16px;padding:26px;background:#fff;transition:border-color .15s,transform .15s;display:flex;flex-direction:column;gap:6px}
.dir-card:hover{border-color:var(--mn-blue);transform:translateY(-3px)}
.dir-card .code{font-family:var(--display);font-weight:800;font-size:12px;letter-spacing:.12em;color:var(--word-orange)}
.dir-card h3{font-family:var(--display);font-weight:700;font-size:19px;color:var(--mn-blue);line-height:1.3}
.dir-card .hq{font-size:14.5px;color:var(--mist);flex:1}
.dir-card a{font-weight:700;font-size:15px;text-decoration:none;margin-top:10px}
.dir-card a:hover{text-decoration:underline}

/* tables */
table.nice{width:100%;border-collapse:collapse;margin:26px 0;font-size:16px}
table.nice th{font-family:var(--display);font-weight:800;font-size:13px;letter-spacing:.08em;text-transform:uppercase;color:var(--mn-blue);text-align:left;padding:12px 16px;border-bottom:2px solid var(--mn-blue)}
table.nice td{padding:14px 16px;border-bottom:1px solid var(--line)}
table.nice tr:nth-child(even) td{background:var(--blue-tint)}

/* materials / document list */
.doc-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:22px;margin-top:36px}
.doc-card{display:flex;gap:18px;align-items:flex-start;border:1.5px solid var(--line);border-radius:16px;padding:24px;background:#fff;text-decoration:none;color:var(--ink);transition:border-color .15s,transform .15s}
.doc-card:hover{border-color:var(--mn-blue);transform:translateY(-2px)}
.doc-card .ic{width:44px;height:44px;border-radius:12px;background:var(--green-tint);display:grid;place-items:center;flex-shrink:0}
.doc-card b{font-family:var(--display);font-weight:700;font-size:17.5px;color:var(--mn-blue);display:block}
.doc-card span{font-size:14.5px;color:var(--mist)}

/* news index list + post */
.post-list{display:grid;gap:22px;margin-top:36px;max-width:820px}
.post-meta{font-size:14.5px;color:var(--mist);margin-top:8px}
.post-meta .tag{font-family:var(--display);font-weight:700;font-size:11.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--word-orange);margin-right:12px}
article.post .prose{padding-top:36px}
.back-link{font-weight:700;text-decoration:none;font-size:15.5px}

/* ---------- Footer ---------- */
footer.site{background:var(--blue-deep);color:#C5D5EE;padding:64px 0 36px;font-size:15px}
.foot-grid{display:grid;grid-template-columns:1.4fr 1fr 1fr;gap:48px;margin-bottom:42px;align-items:start}
.foot-logo{background:#fff;border-radius:14px;padding:18px;display:inline-block}
.foot-logo img{width:200px;height:auto;display:block}
footer.site h4{font-family:var(--display);font-weight:800;font-size:12px;letter-spacing:.14em;text-transform:uppercase;color:var(--book-green);margin-bottom:14px}
footer.site a{color:#E8F0FB;text-decoration:none}
footer.site a:hover{text-decoration:underline}
footer.site ul{list-style:none;display:grid;gap:9px}
.foot-bottom{border-top:1px solid rgba(255,255,255,.15);padding-top:22px;display:flex;justify-content:space-between;flex-wrap:wrap;gap:10px;font-size:13.5px}

/* ---------- Responsive & motion ---------- */
@media (prefers-reduced-motion:reduce){
  *{transition:none!important;animation:none!important}
  html{scroll-behavior:auto}
}
.regions-layout{display:grid;grid-template-columns:1fr 1fr;gap:48px;align-items:start}
@media (max-width:940px){
  .regions-layout{grid-template-columns:1fr}
  .regions-layout .dir-grid{grid-template-columns:1fr}
  nav.primary ul{display:none}
  nav.primary ul.open{display:grid;position:absolute;top:78px;left:0;right:0;background:#fff;border-bottom:1px solid var(--line);padding:12px 20px 18px;gap:2px;z-index:60}
  .menu-btn{display:block}
  .hero-grid{grid-template-columns:1fr}
  .stat-grid{grid-template-columns:repeat(2,1fr)}
  .card-row,.res-grid,.dir-grid{grid-template-columns:1fr}
  .benefit-grid,.mv-grid,.doc-grid{grid-template-columns:1fr}
  .foot-grid{grid-template-columns:1fr;gap:32px}
  .brand-text span{display:none}
}

/* Official regions map image on the home hero */
.regions-map-img{width:100%;max-width:480px;height:auto;display:block;margin:0 auto}

/* ---------- Interactive county map (Regions page) ---------- */
.regions-layout{display:grid;grid-template-columns:1.1fr .9fr;gap:44px;align-items:start}
.map-col{position:relative}
#mnCounties{width:100%;height:auto;display:block;overflow:visible}
#mnCounties .mn-region{cursor:pointer;transition:opacity .25s ease,transform .25s ease;transform-box:fill-box;transform-origin:center;outline:none}
#mnCounties .mn-region path{stroke:#fff;stroke-width:0.9;stroke-linejoin:round;vector-effect:non-scaling-stroke}

/* Grow/fade only where a real hovering pointer exists (mouse/trackpad).
   Touch devices skip this entirely and get clean tap-to-select instead. */
@media (hover: hover) and (pointer: fine){
  #mnCounties.hovering .mn-region{opacity:.28}
  #mnCounties.hovering .mn-region.hot{opacity:1;transform:scale(1.05)}
}

/* Selected region: persistent emphasis that works on every device.
   This is the primary feedback on touch, and reinforces mouse selection. */
#mnCounties.has-selection .mn-region{opacity:.4;transition:opacity .25s ease}
#mnCounties.has-selection .mn-region.selected{opacity:1;transform:scale(1.04)}
#mnCounties .mn-region.selected path{stroke:#fff;stroke-width:1.6}
#mnCounties .mn-region:focus-visible path{stroke:var(--ink);stroke-width:1.8}
.map-hint{font-size:14px;color:var(--mist);text-align:center;margin-top:14px}

/* detail panel */
.region-panel{position:sticky;top:100px;border:1.5px solid var(--line);border-radius:18px;padding:32px;background:#fff;min-height:340px}
.region-panel .panel-empty h2{margin:10px 0 12px}
.region-panel .panel-empty p{color:var(--mist)}
.panel-code{display:inline-block;font-family:var(--display);font-weight:800;font-size:12px;letter-spacing:.12em;color:#fff;text-transform:uppercase;padding:5px 12px;border-radius:20px;margin-bottom:14px}
.region-panel .panel-body h2{font-family:var(--display);font-weight:800;font-size:26px;color:var(--mn-blue);letter-spacing:-.01em;line-height:1.2}
.region-panel .p-hq{color:var(--mist);margin-top:8px;font-size:16px}
.region-panel .p-counties{margin:22px 0 26px;padding-top:20px;border-top:1px solid var(--line)}
.region-panel .p-counties h3{font-family:var(--display);font-weight:800;font-size:12px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink);margin-bottom:10px}
.region-panel .p-counties p{font-size:15.5px;color:var(--mist);line-height:1.9}

/* directory card active state (synced with map) */
.dir-card.active{border-color:var(--mn-blue);box-shadow:0 8px 24px rgba(29,81,160,.12)}

@media (max-width:940px){
  .regions-layout{grid-template-columns:1fr;gap:28px}
  .region-panel{position:static;min-height:0}
  /* larger, clearer selected emphasis on small screens where taps are coarse */
  #mnCounties.has-selection .mn-region.selected{transform:scale(1.06)}
  .map-hint{font-size:13.5px}
}
/* On coarse (touch) pointers, hint that regions are tappable, not hoverable */
@media (hover: none){
  .map-hint::before{content:"Tap a region for details. ";font-weight:700;color:var(--mn-blue)}
}

/* ---------- Contact blocks (Contacts page + region panel) ---------- */
.contact-block{border:1.5px solid var(--line);border-radius:16px;padding:26px 28px;background:var(--blue-tint)}
.contact-dl{display:grid;grid-template-columns:auto 1fr;gap:6px 18px;margin-top:6px;font-size:15.5px}
.contact-dl dt{font-family:var(--display);font-weight:700;color:var(--mn-blue);white-space:nowrap}
.contact-dl dd{color:var(--ink)}
.contact-dl dd a{font-weight:600}
.contact-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:20px;margin-top:24px}
.contact-card{border:1.5px solid var(--line);border-radius:16px;padding:24px;background:#fff;display:flex;flex-direction:column}
.contact-card .code{font-family:var(--display);font-weight:800;font-size:12px;letter-spacing:.12em;color:var(--word-orange)}
.contact-card h3{font-family:var(--display);font-weight:700;font-size:18px;color:var(--mn-blue);line-height:1.3;margin:2px 0 10px}
.contact-card .contact-dl{flex:1}
.contact-card .dir-visit{margin-top:14px}

/* region panel contact list */
.region-panel .p-contact{display:grid;grid-template-columns:auto 1fr;gap:5px 14px;margin:18px 0 4px;padding-top:16px;border-top:1px solid var(--line);font-size:14.5px}
.region-panel .p-contact dt{font-family:var(--display);font-weight:700;color:var(--mn-blue);white-space:nowrap}
.region-panel .p-contact dd{color:var(--ink)}
.region-panel .p-contact:empty{display:none;border:none;margin:0;padding:0}

/* directory card extra contact lines */
.dir-card .dir-line{font-size:14px;color:var(--mist)}
.dir-card .dir-line a{color:var(--mn-blue);text-decoration:none;font-weight:600}
.dir-card .dir-visit{font-weight:700;font-size:15px;text-decoration:none;margin-top:10px}
.dir-card .dir-visit:hover{text-decoration:underline}

@media (max-width:940px){
  .contact-grid{grid-template-columns:1fr}
  .contact-dl{grid-template-columns:1fr;gap:2px}
  .contact-dl dt{margin-top:8px}
}
