/* generated by scripts/build-catalogue.mjs; do not edit by hand */
.cat { max-width: 860px; margin: 0 auto; color: #1e2733; }
.cat .cat-head { padding: 8px 0 22px; border-bottom: 1px solid #d9d4cb; margin-bottom: 22px; }
.cat .cat-id { display: flex; align-items: center; gap: 14px; margin-bottom: 14px; }
.cat .cat-id img { width: 40px; height: 40px; object-fit: cover; border: 1px solid #d9d4cb; background: #fff; }
.cat .cat-id .mono { width: 40px; height: 40px; background: #172940; color: #fff; display: flex; align-items: center; justify-content: center; font-weight: 700; font-size: 14px; }
.cat h1 { font-size: clamp(1.7rem, 3.4vw, 2.5rem); margin: 0 0 6px; color: #172940; }
.cat .sub { font-size: 14px; color: #92764f; margin: 0; line-height: 1.5; }
.cat .cat-meta { font-size: 11px; letter-spacing: .12em; text-transform: uppercase; color: #92764f; margin-bottom: 8px; }
.cat h2.sec { font-size: 12px; letter-spacing: .14em; text-transform: uppercase; color: #172940; margin: 34px 0 12px; padding-top: 18px; border-top: 2px solid #172940; }
.cat .tiles { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1px; background: #d9d4cb; border: 1px solid #d9d4cb; margin-bottom: 18px; }
/* The site's own .tiles/.tile (the homepage grid) would otherwise apply: four columns, 180px tall. */
.cat .tile { background: #fff; padding: 12px 16px; min-height: 0; border: 0; display: block; }
.cat .tiles.six { grid-template-columns: repeat(3, 1fr); }
.cat .sub a { color: #172940; }
.cat .matrix td.who a { color: inherit; text-decoration: none; border-bottom: 1px solid #d9d4cb; }
.cat p.read a { color: #172940; }
.cat p.chart-read { font-size: 13.5px; color: #1e2733; margin: 10px 0 0; line-height: 1.55; }
.cat .tile .v { font-size: 26px; font-weight: 700; color: #172940; letter-spacing: -.01em; }
.cat .tile .k { font-size: 10.5px; letter-spacing: .08em; text-transform: uppercase; color: #92764f; margin-top: 4px; }
.cat .tile .r { font-size: 12px; color: #1e2733; margin-top: 2px; }
.cat p.read { font-size: 15.5px; line-height: 1.6; margin: 0 0 12px; }
.cat .chart { margin: 22px 0 0; }
.cat figure { margin: 22px 0 0; }
.cat figcaption { display: flex; flex-direction: column; margin-bottom: 10px; }
.cat .cap-title { font-size: 11px; letter-spacing: .12em; text-transform: uppercase; color: #172940; font-weight: 700; }
.cat .cap-sub { font-size: 12px; color: #92764f; margin-top: 3px; }
.cat svg { display: block; max-width: 100%; height: auto; }
.cat .table-wrap { overflow-x: auto; }
.cat table.matrix { width: 100%; border-collapse: collapse; font-size: 12.5px; }
.cat .matrix th { font-size: 10.5px; letter-spacing: .06em; text-transform: uppercase; color: #92764f; text-align: right; padding: 6px 7px; border-bottom: 1px solid #172940; font-weight: 600; vertical-align: bottom; }
.cat .matrix th.who, .cat .matrix td.who { text-align: left; }
.cat .matrix td { padding: 5px 7px; text-align: right; border-bottom: 1px solid #d9d4cb; white-space: nowrap; }
.cat .matrix td.who { font-weight: 500; white-space: nowrap; }
.cat .matrix td.num { color: #92764f; }
.cat .matrix tr.self td { font-weight: 700; color: #172940; }
.cat .matrix tr.self td:first-child { box-shadow: inset 3px 0 0 #c17825; }
.cat .matrix.five th.grp { text-align: center; border-bottom: 1px solid #d9d4cb; color: #172940; letter-spacing: .08em; }
.cat .matrix.five td.now { font-weight: 600; color: #172940; }
.cat .matrix.five td.chg { color: #92764f; }
.cat .two { display: grid; grid-template-columns: 1.2fr 1fr; gap: 22px; align-items: start; margin-top: 18px; }
.cat .matrix.small { font-size: 11.5px; }
.cat .matrix.small td { padding: 5px 6px; }
.cat .matrix.small th { padding: 5px 6px; font-size: 9.5px; }
.cat .matrix.cre td.flag { color: #1e2733; font-weight: 600; }
.cat .matrix.cre td.who { white-space: normal; }
.cat .mapgrid { display: grid; grid-template-columns: minmax(0, 1fr) 130px; gap: 12px; align-items: center; }
.cat .legend.vertical { flex-direction: column; gap: 7px; margin-top: 0; font-size: 10.5px; line-height: 1.3; }
.cat .legend.vertical .lg-item { display: flex; align-items: flex-start; gap: 6px; }
.cat .legend.vertical i { flex: none; margin-top: 2px; }
.cat .legend { display: flex; flex-wrap: wrap; gap: 6px 18px; margin-top: 8px; font-size: 11px; color: #1e2733; }
.cat .legend i { display: inline-block; width: 11px; height: 11px; border: 1px solid #c9c2b6; vertical-align: -2px; margin-right: 5px; }
.cat .matrix tr.quiet td { color: #92764f; }
.cat .lg { display: inline-block; width: 16px; height: 16px; vertical-align: -3px; margin-right: 8px; }
.cat .lg img { width: 16px; height: 16px; object-fit: cover; display: block; }
.cat .lg i { display: block; width: 16px; height: 16px; background: #172940; color: #fff; font-style: normal; font-size: 8px; font-weight: 700; text-align: center; line-height: 16px; }
.cat h3.sub-sec { font-size: 15px; font-weight: 700; color: #172940; margin: 30px 0 2px; letter-spacing: 0; text-transform: none; }
.cat .band-tabs .seg button { font-size: 10.5px; padding: 6px 11px; }
.cat .crumbs { font-size: 12px; color: #92764f; margin: 0 0 14px; }
.cat .crumbs a { color: #92764f; text-decoration: none; }
.cat .crumbs a:hover { color: #c17825; }
.cat .crumbs span { margin: 0 6px; opacity: .6; }
.cat .note-links { margin: 18px 0 0; font-size: 13px; line-height: 1.9; color: #1e2733; }
.cat .note-links span { font-size: 10.5px; letter-spacing: .12em; text-transform: uppercase; color: #92764f; font-weight: 700; margin-right: 8px; }
.cat .note-links a { color: #172940; text-decoration: none; border-bottom: 1px solid #d9d4cb; }
.cat .note-links a:hover { color: #c17825; border-color: #c17825; }
.cat svg image[href*="institution-logo"] { visibility: hidden; }
.cat svg.choro path:hover { stroke: #c17825; stroke-width: 1.6; }
/* One idiom for every control on the index: a taupe label in a fixed column, then a segmented group.
   The region pills and the shade pills used to be a second, rounder idiom beside the peers band. */
.cat-index .cat-controls { margin: 0 0 12px; }
.cat-index .cat-controls .k { font-size: 10.5px; letter-spacing: .12em; text-transform: uppercase; color: #92764f; font-weight: 700; width: 58px; flex: none; }
.cat-index .cat-controls .k.k2 { width: auto; margin-left: 18px; }
.cat-index .cat-controls .seg button[disabled] { opacity: .35; cursor: default; }
.cat-index .cat-controls .seg.wide button { padding: 6px 10px; letter-spacing: .05em; }
.cat-index .peer-filter { margin: 0 0 18px; }
.cat-index .peer-filter #peerSearch { margin-left: 0; width: 196px; box-sizing: border-box; font: inherit; font-size: 11px; letter-spacing: .06em; padding: 9px 16px; border: 1px solid #d9d4cb; border-radius: 999px; background: #fff; color: #1e2733; outline: none; }
.cat-index .peer-filter #peerSearch:focus { border-color: #172940; }
.cat-index .peer-filter #peerCount { margin-left: auto; margin-right: 12px; }
.cat-map .panel-head .btn.solid { background: #172940; color: #fff; border-color: #172940; }
.cat-map .map-caption { grid-column: 1; grid-row: 2; font-size: 13px; color: #92764f; line-height: 1.55; margin: 10px 2px 0; max-width: 60ch; }
.cat-index .state-notes-block { margin-top: 28px; padding-top: 18px; border-top: 1px solid #d9d4cb; }
.cat-index .state-notes-block .k { font-size: 10.5px; letter-spacing: .12em; text-transform: uppercase; color: #92764f; font-weight: 700; }
.cat-index .state-notes { columns: 4; column-gap: 24px; font-size: 13.5px; line-height: 1.9; margin: 8px 0 0; }
.cat-index .state-notes a { color: #172940; text-decoration: none; display: block; }
.cat-index .state-notes a:hover { color: #c17825; }
@media (max-width: 720px) { .cat-index .state-notes { columns: 2; } }
.cat .close { margin-top: 36px; border-top: 2px solid #172940; padding-top: 16px; display: grid; grid-template-columns: 1.4fr 1fr; gap: 28px; align-items: start; }
.cat .close p { font-size: 14px; line-height: 1.55; margin: 0 0 10px; }
.cat .close .btn { margin-top: 4px; }
.cat .sources { font-size: 12px; color: #92764f; line-height: 1.55; margin-top: 26px; padding-top: 12px; border-top: 1px solid #d9d4cb; }
.cat .quarters { font-size: 12px; color: #92764f; margin-top: 10px; }
.cat .quarters a { color: #172940; }
.cat-index .state { margin-top: 34px; }
.cat-index .state h2 { font-size: 12px; letter-spacing: .14em; text-transform: uppercase; color: #172940; margin: 0 0 10px; padding-bottom: 8px; border-bottom: 2px solid #172940; }
.cat-index .row.plain { grid-template-columns: 1fr auto auto; }
.cat-index .row { display: grid; grid-template-columns: 40px 1fr auto auto; gap: 14px; align-items: center; padding: 11px 0; border-bottom: 1px solid #d9d4cb; text-decoration: none; color: #1e2733; }
.cat-index .row:hover .nm { color: #c17825; }
.cat-index .row img, .cat-index .row .mono { width: 32px; height: 32px; object-fit: cover; border: 1px solid #d9d4cb; background: #fff; }
.cat-index .row .mono { background: #172940; color: #fff; display: flex; align-items: center; justify-content: center; font-weight: 700; font-size: 11px; border: 0; }
.cat-index .row .nm { font-weight: 600; color: #172940; }
.cat-index .row .pl { font-size: 12.5px; color: #92764f; }
.cat-index .row .as { font-size: 13px; color: #1e2733; font-variant-numeric: tabular-nums; }
.cat-index .row .q { font-size: 11px; letter-spacing: .1em; text-transform: uppercase; color: #92764f; }
/* the map index */
.cat-controls { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; margin: 0 0 20px; }
.cat-controls .seg { display: inline-flex; border: 1px solid #d9d4cb; border-radius: 999px; padding: 3px; background: #fff; }
.cat-controls .seg button { font: inherit; font-size: 11px; font-weight: 600; letter-spacing: .06em; text-transform: uppercase; padding: 6px 13px; background: transparent; border: 0; border-radius: 999px; color: #92764f; cursor: pointer; white-space: nowrap; transition: background .25s ease, color .25s ease; }
.cat-controls .seg button.on { background: #172940; color: #fff; }
.cat-controls .seg button:not(.on):hover { color: #172940; }
.cat-controls .cat-count { font-size: 12px; color: #92764f; margin-left: auto; }
.cat-map { display: grid; grid-template-columns: minmax(0, 1.5fr) minmax(0, 1fr); gap: 32px; align-items: start; }
.cat-map .map-col { position: relative; background: #f4f2ee; border: 1px solid #d9d4cb; padding: 18px; }
/* A fixed height: the viewBox changes shape as it zooms (Maine is tall, Massachusetts wide), and a
   height taken from the viewBox would make the whole column jump with every click. */
.cat-map svg { width: 100%; height: 500px; display: block; }
.cat-map .st { fill: #d8d1c4; stroke: #fff; stroke-width: .6; stroke-linejoin: round; cursor: pointer; transition: fill .35s ease, opacity .45s ease; vector-effect: non-scaling-stroke; }
.cat-map .st:hover { fill: #92764f; }
.cat-map .st.empty { fill: #e9e4dc; }
.cat-map .st.on { fill: #172940; }
.cat-map .st.dim { opacity: .3; }
.cat-map .stl { font-size: 10px; font-weight: 700; fill: #172940; pointer-events: none; letter-spacing: .04em; transition: opacity .45s ease; }
.cat-map .stl.dim { opacity: 0; }
.cat-map .stl.sm { display: none; }
.cat-map .map-back { position: absolute; left: 18px; top: 14px; font: inherit; font-size: 11.5px; letter-spacing: .08em; text-transform: uppercase; background: #fff; border: 1px solid #d9d4cb; color: #172940; padding: 7px 11px; cursor: pointer; }
.cat-map .panel { height: 538px; display: flex; flex-direction: column; }
.cat-map .panel .stack, .cat-map .panel .sheet, .cat-map .panel-intro { overflow-y: auto; min-height: 0; flex: 1 1 auto; scrollbar-width: thin; scrollbar-color: #d9d4cb transparent; padding-right: 6px; }
.cat-map .panel-head { flex: 0 0 auto; }
.cat-map .panel-kicker { font-size: 11px; letter-spacing: .14em; text-transform: uppercase; color: #92764f; margin-bottom: 6px; }
.cat-map .panel-intro p { font-size: 15px; line-height: 1.6; color: #1e2733; margin: 0 0 16px; }
.cat-map .panel-states { list-style: none; padding: 0; margin: 0; }
.cat-map .panel-states li + li { border-top: 1px solid #d9d4cb; }
.cat-map .panel-states button { width: 100%; display: flex; justify-content: space-between; align-items: baseline; font: inherit; font-size: 15px; font-weight: 600; color: #172940; background: none; border: 0; padding: 11px 0; cursor: pointer; text-align: left; }
.cat-map .panel-states button .n { font-size: 12px; font-weight: 400; color: #92764f; letter-spacing: .04em; }
.cat-map .panel-states button:hover { color: #c17825; }
.cat-map .panel-head { display: flex; justify-content: space-between; align-items: flex-start; gap: 16px; padding-bottom: 12px; border-bottom: 2px solid #172940; margin-bottom: 8px; }
.cat-map .panel-head h2 { font-size: 22px; margin: 0; color: #172940; }
.cat-map .panel-sub { font-size: 12px; color: #92764f; margin-top: 4px; }
.cat-map .btn.small { font-size: 10.5px; padding: 6px 11px; white-space: nowrap; letter-spacing: .06em; border-radius: 999px; }
.cat-map .map-back { border-radius: 999px; font-size: 10.5px; padding: 6px 11px; transition: background .25s ease, color .25s ease; }
.cat-map .map-back:hover { background: #172940; color: #fff; }
.cat-map .dot { cursor: pointer; }
.cat-map .dot .in { opacity: 0; transform-box: fill-box; transform-origin: center; animation: dot-in .5s cubic-bezier(.2,.8,.2,1) forwards; }
.cat-map .dot .ring { fill: #fff; stroke: #172940; transition: stroke .2s ease; }
.cat-map .dot .mono { fill: #172940; font-weight: 700; text-anchor: middle; pointer-events: none; }
.cat-map .dot .lbl { fill: #fff; font-weight: 600; text-anchor: middle; pointer-events: none; letter-spacing: .01em; }
.cat-map .dot .lbl.halo { fill: none; stroke: #172940; stroke-linejoin: round; opacity: .85; }
.cat-map .dot.quiet .lbl { opacity: 0; transition: opacity .2s ease; }
.cat-map .dot.quiet:hover .lbl, .cat-map .dot.quiet.hi .lbl { opacity: 1; }
.cat-map .dot:hover, .cat-map .dot.hi { z-index: 2; }
.cat-map .dot:hover .ring, .cat-map .dot.hi .ring { stroke: #c17825; }
.cat-map .dot:hover .lbl:not(.halo), .cat-map .dot.hi .lbl:not(.halo) { fill: #c17825; }
.cat-map .stack .item { transition: background .2s ease; }
.cat-map .stack .item.hi { background: #f4f2ee; }
@keyframes dot-in { from { opacity: 0; transform: scale(.4); } to { opacity: 1; transform: none; } }
.cat-map .stack .item { display: grid; grid-template-columns: 36px 1fr auto; gap: 14px; align-items: center; padding: 11px 0; border-bottom: 1px solid #d9d4cb; text-decoration: none; color: #1e2733; opacity: 0; transform: translateX(-18px); animation: cat-in .45s cubic-bezier(.2,.7,.2,1) forwards; }
.cat-map .stack .item img, .cat-map .stack .item .mono { width: 36px; height: 36px; object-fit: cover; border: 1px solid #d9d4cb; background: #fff; }
.cat-map .stack .item .mono { background: #172940; color: #fff; display: flex; align-items: center; justify-content: center; font-weight: 700; font-size: 12px; border: 0; }
.cat-map .stack .item .who { display: flex; flex-direction: column; }
.cat-map .stack .item .nm { font-weight: 600; color: #172940; }
.cat-map .stack .item:hover .nm { color: #c17825; }
.cat-map .stack .item .pl { font-size: 12px; color: #92764f; }
.cat-map .stack .item .as { font-size: 13px; font-variant-numeric: tabular-nums; }
.cat-map .stack-empty { font-size: 14px; color: #92764f; line-height: 1.6; padding: 12px 0; }
@keyframes cat-in { to { opacity: 1; transform: none; } }
.cat-map .sheet { animation: cat-in .4s ease forwards; opacity: 0; }
.cat-map .sheet-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 1px; background: #d9d4cb; border: 1px solid #d9d4cb; margin: 10px 0 16px; }
.cat-map .sheet-grid > div { background: #fff; padding: 12px 14px; }
.cat-map .sheet-grid .v { font-size: 24px; font-weight: 700; color: #172940; }
.cat-map .sheet-grid .k { font-size: 11px; letter-spacing: .06em; text-transform: uppercase; color: #92764f; margin-top: 3px; }
.cat-map .sheet-t { width: 100%; border-collapse: collapse; font-size: 13.5px; }
.cat-map .sheet-t th { text-align: left; font-size: 10.5px; letter-spacing: .08em; text-transform: uppercase; color: #92764f; padding: 6px 0; border-bottom: 1px solid #172940; }
.cat-map .sheet-t td { padding: 7px 0; border-bottom: 1px solid #d9d4cb; }
.cat-map .sheet-t td:last-child { text-align: right; font-weight: 600; color: #172940; font-variant-numeric: tabular-nums; }
.cat-map .sheet-note { font-size: 11.5px; color: #92764f; line-height: 1.5; margin-top: 10px; }
.cat-map .sheet-open { display: inline-block; margin-top: 16px; font-size: 11px; letter-spacing: .06em; padding: 9px 16px; border-radius: 999px; }
@media (max-width: 860px) { .cat-map { grid-template-columns: 1fr; } .cat-map svg { height: 420px; } .cat-map .panel { height: auto; } .cat-map .panel .stack, .cat-map .panel .sheet, .cat-map .panel-intro { overflow: visible; } }
@media (max-width: 720px) {
  .cat .tiles { grid-template-columns: 1fr; }
  .cat .tiles.six { grid-template-columns: 1fr 1fr; }
  .cat .two, .cat .close { grid-template-columns: 1fr; }
  .cat .mapgrid { grid-template-columns: 1fr; }
  .cat .legend.vertical { flex-direction: row; flex-wrap: wrap; }
  .cat-index .row { grid-template-columns: 32px 1fr auto; }
  .cat-index .row .q { display: none; }
}
