/* Cape May County Property Ledger — Cape May County Herald branding.
   Theme colors and fonts mirror capemaycountyherald.com (a PubGen site):
   Caslon for editorial type, Archivo Narrow for UI labels, Herald navy /
   teal / burnt-orange palette. Font files are the Herald's own brand assets
   on PubGen's public asset CDN — the same TTFs their site loads.
   The previous PubGen AI theme is archived at static/themes/pubgen-brand.css. */
@font-face{font-family:Caslon;src:url('https://public-assets-prod.pubgen.ai/brand_c51cfbaf-2d61-4dfa-9b08-2f67c5541691/asset_75feeb6b-18b1-4192-9085-d89ce57a435b.ttf') format('truetype');font-style:normal;font-weight:400;font-display:swap}
@font-face{font-family:Caslon;src:url('https://public-assets-prod.pubgen.ai/brand_c51cfbaf-2d61-4dfa-9b08-2f67c5541691/asset_1bee6a11-eae9-4bfa-ae87-81d0a4398942.ttf') format('truetype');font-style:italic;font-weight:400;font-display:swap}
@font-face{font-family:Caslon;src:url('https://public-assets-prod.pubgen.ai/brand_c51cfbaf-2d61-4dfa-9b08-2f67c5541691/asset_dc5b7f69-24e3-4876-8bd1-8281e36265ce.ttf') format('truetype');font-style:normal;font-weight:700;font-display:swap}
@font-face{font-family:'Archivo Narrow';src:url('https://public-assets-prod.pubgen.ai/brand_c51cfbaf-2d61-4dfa-9b08-2f67c5541691/asset_04a80d05-9446-4822-accf-0d3fa1d27fd1.ttf') format('truetype');font-style:normal;font-weight:500;font-display:swap}
:root{
  color-scheme:light;
  --ink:#20262e;--muted:#5d6570;--paper:#f7f6f2;--card:#ffffff;--line:#e1dfd7;
  /* --energy drives the title underline bar, nav active underline, and warm
     chart accents. Was #D03E00 (read as red); #D58104 is the orange Ben chose. */
  --primary:#1F487E;--accent:#1B7C9D;--energy:#D58104;--sand:#E1A63B;--walnut:#976007;
  --accent2:rgba(27,124,157,.11);--warm:#E1A63B;
  --serif:Caslon,Georgia,"Times New Roman",serif;--sans:Caslon,Georgia,"Times New Roman",serif;--mono:"Archivo Narrow",Arial,sans-serif;
  --r-sm:6px;--r-md:10px;--r-lg:18px;--r-pill:999px;
  --shadow:0 10px 30px rgba(31,72,126,.07);
  --btn-ink:#ffffff;--th-bg:rgba(31,72,126,.04);--row-hover:rgba(31,72,126,.035);--negative:#B33A3A;
}
/* Light theme is pinned: dark-mode role tokens intentionally not applied,
   so the playground stays on the ivory/paper palette regardless of OS setting. */
.hero-actions{display:flex;align-items:center;gap:10px}.hero-actions form{margin:0}.refresh-alert{margin-bottom:24px;padding:14px 16px;border:1px solid var(--line);border-radius:var(--r-md);background:var(--card);box-shadow:var(--shadow);font-weight:500}.refresh-alert.success{border-color:var(--accent);background:var(--accent2);color:var(--accent)}.refresh-alert.warning{border-color:var(--sand);background:rgba(214,206,178,.25);color:var(--walnut)}.refresh-alert.error{border-color:var(--negative);background:rgba(161,71,44,.09);color:var(--negative)}
*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink);font:16px/1.5 var(--sans)}a{color:var(--accent);text-decoration:none}header{height:92px;padding:0 max(24px,calc((100% - 1180px)/2));display:flex;align-items:center;justify-content:space-between;background:var(--card);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:1100}.brand{display:flex;align-items:center;color:var(--ink);font:500 17px/1 var(--serif);letter-spacing:-.01em}.brand img{height:38px;width:auto;margin-right:12px}
/* The lockup is cropped tight to its artwork (≈6.7:1), so size it by width —
   height alone would leave the nav no room on narrow viewports. */
.brand img.brand-lockup{height:auto;width:min(520px,48vw);margin:0}
@media(max-width:520px){header{height:64px}.brand img.brand-lockup{width:min(300px,62vw)}}nav{display:flex;height:100%;gap:28px}nav a{display:grid;place-items:center;color:var(--muted);border-bottom:2px solid transparent;font:400 11px/1 var(--mono);text-transform:uppercase;letter-spacing:.16em}nav a.active{color:var(--primary);border-color:var(--energy)}nav a.feedback{color:var(--energy)}
.button.feedback-cta{background:var(--energy);border-color:var(--energy);color:#fff;font-weight:500;letter-spacing:.08em;box-shadow:0 4px 14px rgba(213,129,4,.28)}.button.feedback-cta:hover{background:#b96e03;border-color:#b96e03}
.hero-subtitle{font-family:var(--serif);font-style:italic;font-size:22px;color:var(--ink);margin-bottom:10px}
.coverage-badge{display:inline-block;margin-top:4px;padding:7px 13px;border:1px solid var(--line);border-radius:var(--r-pill);background:var(--card);color:var(--muted);font:500 11px/1.4 var(--mono);text-transform:uppercase;letter-spacing:.1em}
.page-heading.with-cta{display:flex;align-items:end;justify-content:space-between;gap:20px}.page-heading.with-cta>div{max-width:720px}
@media(max-width:800px){.page-heading.with-cta{align-items:start;flex-direction:column}}main{max-width:1180px;margin:0 auto;padding:48px 24px 70px}footer{display:flex;flex-direction:column;align-items:center;gap:14px;padding:34px 30px;text-align:center;color:var(--muted);border-top:1px solid var(--line)}footer p{margin:0}.footer-lockup{width:150px}h1,h2,p{margin-top:0}h1{font-family:var(--serif);font-weight:500;font-size:clamp(34px,5vw,60px);line-height:1.05;letter-spacing:-.01em;margin-bottom:16px}h2{font-family:var(--serif);font-weight:500;font-size:23px;line-height:1.2;letter-spacing:-.01em;margin:0}.pg-rule{width:120px;height:5px;background:var(--energy);border:0;margin:0 0 18px}.hero{display:flex;align-items:end;justify-content:space-between;gap:40px;padding:45px 0 55px}.hero>div{max-width:720px}.hero p:not(.eyebrow),.page-heading p{font-size:18px;color:var(--muted);max-width:680px}.eyebrow{font-family:var(--mono);font-weight:400;text-transform:uppercase;letter-spacing:.16em;font-size:11px;color:var(--primary);margin-bottom:10px}.button{display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--primary);border-radius:var(--r-sm);padding:11px 18px;background:var(--primary);color:var(--btn-ink);font:400 12px/1.2 var(--mono);text-transform:uppercase;letter-spacing:.05em;white-space:nowrap;cursor:pointer}.button.secondary{background:var(--card);color:var(--primary);border:1px solid var(--line)}.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:28px}.stats article,.panel,.filters{background:var(--card);border:1px solid var(--line);border-radius:var(--r-md);box-shadow:var(--shadow)}.stats article{padding:22px}.stats span{display:block;color:var(--muted);font-size:12px;margin-bottom:8px}.stats strong{font-family:var(--serif);font-weight:500;font-size:27px}.grid{display:grid;gap:20px;margin-bottom:20px}.grid.two{grid-template-columns:1fr 1fr}.panel{overflow:hidden;margin-bottom:20px}.panel-title{display:flex;align-items:center;justify-content:space-between;padding:22px 24px;border-bottom:1px solid var(--line)}.panel-title .eyebrow{margin-bottom:7px}.table-wrap{overflow-x:auto}table{width:100%;border-collapse:collapse}th,td{text-align:left;padding:13px 18px;border-bottom:1px solid var(--line);vertical-align:top}th{font:400 10px/1.4 var(--mono);text-transform:uppercase;letter-spacing:.12em;color:var(--muted);background:var(--th-bg)}tbody tr:hover{background:var(--row-hover)}tbody tr:last-child td{border-bottom:0}td small{display:block;color:var(--muted);max-width:360px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.record-link{font-weight:600;color:var(--ink)}.price{font-weight:600;white-space:nowrap}.nowrap{white-space:nowrap}.chart{height:240px;display:flex;gap:9px;align-items:end;padding:30px 24px 40px}.bar-item{position:relative;display:flex;flex:1;min-width:0;height:100%;flex-direction:column;justify-content:end;align-items:center;gap:7px}.bar{width:100%;max-width:32px;border-radius:5px 5px 1px 1px;background:var(--accent);min-height:8px}.bar-item span{position:absolute;top:100%;left:50%;transform:translateX(-50%);margin-top:6px;font-size:10px;color:var(--muted);white-space:nowrap}.fine-print,.muted{color:var(--muted)}.fine-print{font-size:12px}.page-heading{margin-bottom:30px}.page-heading h1{font-size:48px}.filters{display:grid;grid-template-columns:2fr repeat(5,1fr);gap:15px;padding:20px;margin-bottom:22px}.advanced-search{grid-column:1/-1;border-top:1px dashed var(--line);padding-top:13px}.advanced-search summary{cursor:pointer;font:400 11px/1.4 var(--mono);text-transform:uppercase;letter-spacing:.12em;color:var(--accent);user-select:none}.advanced-fields{display:grid;grid-template-columns:repeat(3,1fr);gap:15px;margin-top:13px}.filters .filter-actions{grid-column:1/-1;padding-bottom:0}.see-more summary{cursor:pointer;padding:13px 18px;border-top:1px solid var(--line);font:400 11px/1.4 var(--mono);text-transform:uppercase;letter-spacing:.12em;color:var(--accent);user-select:none}.see-more[open] summary{border-bottom:1px solid var(--line)}.filters label{font-size:12px;font-weight:500;color:var(--muted)}.filters label.wide{grid-column:span 2}.filters input,.filters select{display:block;width:100%;height:43px;margin-top:6px;padding:0 11px;border:1px solid var(--line);border-radius:var(--r-sm);background:var(--card);color:var(--ink);font:inherit}.filter-actions{display:flex;align-items:end;gap:15px;padding-bottom:1px}.filter-actions>a{padding:11px}.pagination{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;padding:18px 22px;border-top:1px solid var(--line);color:var(--muted)}.pagination>*:last-child{justify-self:end}.empty{text-align:center;padding:50px;color:var(--muted)}.back{display:inline-block;margin-bottom:28px}.record-hero{padding:28px 0 38px}.record-hero h1{font-size:48px;margin-bottom:8px}.record-hero p:not(.eyebrow){font-size:18px;color:var(--muted)}.record-hero strong{display:block;margin-top:24px;font-family:var(--serif);font-weight:500;font-size:35px}.record-grid .panel{padding:24px}.chips{display:flex;flex-wrap:wrap;gap:8px}.chip{padding:8px 12px;border-radius:var(--r-pill);background:var(--accent2);color:var(--accent);font-weight:500}.details{display:grid;grid-template-columns:repeat(3,1fr);margin:0}.details div{padding:18px 24px;border-right:1px solid var(--line);border-bottom:1px solid var(--line)}.details div:nth-child(3n){border-right:0}.details dt{color:var(--muted);font:400 10px/1.4 var(--mono);text-transform:uppercase;letter-spacing:.12em}.details dd{margin:6px 0 0;font-weight:500}
.section-heading{display:flex;align-items:end;justify-content:space-between;margin:43px 0 17px}.section-heading>p{color:var(--muted);margin:0}.highlights{display:grid;grid-template-columns:repeat(2,1fr);gap:16px;margin-bottom:28px}.highlight-card{background:var(--card);border:1px solid var(--line);border-radius:var(--r-md);box-shadow:var(--shadow);overflow:hidden}.highlight-title{display:flex;align-items:center;gap:13px;padding:19px 20px;border-bottom:1px solid var(--line)}.highlight-title .eyebrow{margin-bottom:4px}.highlight-title h2{font-size:19px}.icon{display:grid;place-items:center;width:38px;height:38px;border-radius:var(--r-sm);background:var(--accent2);color:var(--accent);font-weight:700;font-size:17px}.highlight-card ol{list-style:none;margin:0;padding:0}.highlight-card li{display:grid;grid-template-columns:26px 1fr auto;align-items:center;gap:9px;padding:14px 18px;border-bottom:1px solid var(--line)}.highlight-card li:last-child{border-bottom:0}.highlight-card li a{display:block;color:var(--ink);font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:180px}.highlight-card li small{display:block;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:180px}.highlight-card li strong{font-size:14px;white-space:nowrap}.highlight-card .rank{display:grid;place-items:center;width:24px;height:24px;border-radius:50%;background:var(--paper);color:var(--muted);font:400 11px/1 var(--mono)}.highlight-card .up{color:var(--accent)}
@media(max-width:800px){header{padding:0 16px}.hero{align-items:start;flex-direction:column}.stats{grid-template-columns:1fr 1fr}.highlights{grid-template-columns:1fr}.section-heading{align-items:start;flex-direction:column}.section-heading>p{margin-top:5px}.highlight-card li a,.highlight-card li small{max-width:none}.grid.two{grid-template-columns:1fr}.filters{grid-template-columns:1fr 1fr}.filters label.wide{grid-column:span 2}.filters label:first-child{grid-column:1/-1}.advanced-fields{grid-template-columns:1fr 1fr}.details{grid-template-columns:1fr 1fr}.details div:nth-child(3n){border-right:1px solid var(--line)}.details div:nth-child(2n){border-right:0}main{padding:30px 14px 60px}}@media(max-width:520px){nav{gap:14px}.brand{font-size:0}.brand img{margin:0}.stats,.filters,.details{grid-template-columns:1fr}.filters label.wide{grid-column:span 1}.advanced-fields{grid-template-columns:1fr}.details div{border-right:0!important}.pagination{grid-template-columns:1fr 1fr}.pagination>span:nth-child(2){display:none}th,td{padding:11px}.hero{padding-top:20px}}
.map-panel .panel-title h2{font:500 18px/1.3 var(--serif);letter-spacing:-.01em}.map-panel .panel-title .eyebrow{margin-bottom:5px}.map-panel .panel-title>a{white-space:nowrap;margin-left:20px}.map-panel #property-map{height:420px;background:var(--line)}.map-unavailable{padding:28px}.map-unavailable h2{margin-bottom:9px}.map-unavailable>p:last-child{color:var(--muted);margin-bottom:0;max-width:700px}
.price{min-width:142px}
.county-map-panel #county-map{height:520px;background:var(--line)}.map-toolbar{gap:25px}.map-toolbar>form{display:flex;align-items:end;gap:10px}.map-toolbar label{font-size:11px;font-weight:500;color:var(--muted)}.map-toolbar select{display:block;height:38px;margin-top:4px;padding:0 28px 0 9px;border:1px solid var(--line);border-radius:var(--r-sm);background:var(--card);color:var(--ink)}.map-toolbar .button{height:38px}.map-legend{display:flex;align-items:center;gap:8px;padding:12px 20px;color:var(--muted);font-size:11px}.map-legend>i{display:block;width:130px;height:8px;border-radius:var(--r-pill);background:linear-gradient(90deg,var(--sand),var(--energy))}.map-legend p{margin:0 0 0 auto}.town-hero{display:flex;align-items:end;justify-content:space-between;gap:30px;padding:25px 0 42px}.town-hero h1{margin-bottom:10px}.town-hero p:not(.eyebrow){color:var(--muted);font-size:17px}.town-bars{height:235px;display:flex;align-items:end;gap:5px;padding:28px 20px 36px}.town-bar-item{position:relative;display:flex;flex:1;min-width:0;height:100%;flex-direction:column;justify-content:end;align-items:center;gap:6px}.town-bar-item>div{width:100%;min-height:5px;border-radius:3px 3px 0 0;background:var(--accent)}.town-bar-item span{position:absolute;top:100%;left:50%;transform:translateX(-50%);margin-top:5px;font-size:9px;color:var(--muted);white-space:nowrap}.value-chart{height:220px;padding:10px 18px}.value-chart svg{display:block;width:100%;height:100%;overflow:visible}.value-chart line{stroke:var(--line);stroke-width:2}.value-chart polyline{fill:none;stroke:var(--accent);stroke-width:5;stroke-linecap:round;stroke-linejoin:round}.category-stack{display:flex;height:18px;margin:25px 24px 16px;overflow:hidden;border-radius:var(--r-pill);background:var(--line)}.category-stack i{display:block;height:100%}.category-stack .reported,.category-legend .reported{background:var(--accent)}.category-stack .nominal,.category-legend .nominal{background:var(--sand)}.category-stack .low,.category-legend .low{background:var(--walnut)}.category-stack .missing,.category-legend .missing{background:#9ca39f}.category-legend{display:flex;flex-wrap:wrap;gap:18px;padding:0 24px 24px;color:var(--muted);font-size:12px}.category-legend span{display:flex;align-items:center;gap:6px}.category-legend i{width:9px;height:9px;border-radius:50%}.category-legend strong{color:var(--ink)}
@media(max-width:520px){.map-panel .panel-title{align-items:start;flex-direction:column;gap:10px}.map-panel .panel-title>a{margin-left:0}.map-panel #property-map{height:330px}}
@media(max-width:800px){.map-toolbar,.town-hero{align-items:start;flex-direction:column}.map-toolbar>form{width:100%;flex-wrap:wrap}.map-toolbar label{flex:1}.map-toolbar select{width:100%}.county-map-panel #county-map{height:420px}.map-legend p{display:none}.town-stats{grid-template-columns:1fr 1fr}.town-bars{overflow-x:auto}.town-bar-item{min-width:18px}}
@media(max-width:520px){.county-map-panel #county-map{height:350px}.map-toolbar>form{display:grid;grid-template-columns:1fr 1fr}.map-toolbar .button{grid-column:span 2}.town-stats{grid-template-columns:1fr}.category-legend{gap:10px}}
.insights-hero{display:flex;align-items:end;justify-content:space-between;gap:30px;padding:25px 0 42px}.insights-hero h1{margin-bottom:10px}.insights-hero>div>p:last-child{color:var(--muted);font-size:17px;max-width:720px}.insights-hero form{display:flex;align-items:end;gap:10px}.insights-actions{display:flex;align-items:end;gap:10px;flex-wrap:wrap}.insights-hero label{font-size:11px;font-weight:500;color:var(--muted)}.insights-hero select{display:block;min-width:230px;height:46px;margin-top:5px;padding:0 10px;border:1px solid var(--line);border-radius:var(--r-sm);background:var(--card);color:var(--ink);font:400 16px/1.4 var(--sans)}.insight-stats small{display:block;margin-top:8px;font-size:11px}.positive{color:var(--accent)!important}.negative{color:var(--negative)!important}.report-copy ul{margin:0;padding:22px 45px 10px}.report-copy li{padding:7px 0}.report-note{margin:8px 24px 22px;padding:12px 14px;border-radius:var(--r-sm);background:var(--accent2);color:var(--accent);font-size:12px}.methodology{margin-top:28px;padding:24px;border-top:1px solid var(--line);color:var(--muted)}.methodology h2{margin-bottom:8px;color:var(--ink);font-size:18px}.methodology p{margin:0;max-width:900px}.panel-title>span{color:var(--muted);font-size:12px}
.generated-report .panel-title{align-items:start}.generated-report .panel-title h2{max-width:780px;font-size:26px}.generated-report article{max-width:850px;padding:26px 30px}.generated-report article p{font:400 17px/1.7 var(--serif)}.generated-report article p:last-child{margin-bottom:0}
@media(max-width:800px){.insights-hero{align-items:start;flex-direction:column}.insights-actions{width:100%}.insights-hero form{width:100%}.insights-hero label{flex:1}.insights-hero select{width:100%}.insight-grid{grid-template-columns:1fr}}

/* Party links: names are clickable everywhere without turning tables teal */
td .party-link{color:inherit;border-bottom:1px dotted var(--line)}td .party-link:hover{color:var(--accent);border-bottom-color:var(--accent)}a.chip:hover{background:var(--accent);color:var(--btn-ink,#FDFDF5)}

/* Chart value labels + data-freshness hero block */
.bar-item em{font:400 10px/1 var(--mono);font-style:normal;color:var(--muted)}
.value-chart text{font:400 12px var(--mono);fill:var(--muted)}
.data-freshness{text-align:right}.data-freshness p{margin:0;font-size:13px;color:var(--muted)}.data-freshness strong{color:var(--ink)}
.link-button{border:0;padding:0;background:none;color:var(--accent);font:inherit;font-size:12px;cursor:pointer;text-decoration:underline}
@media(max-width:800px){.data-freshness{text-align:left}}

/* Chart hover tooltip + interactive points */
#chart-tip{position:fixed;z-index:1200;max-width:280px;padding:7px 10px;border-radius:var(--r-sm);background:var(--primary);color:var(--btn-ink);font:400 11px/1.5 var(--mono);pointer-events:none;box-shadow:var(--shadow)}
.bar-item,.town-bar-item{cursor:default}.bar-item:hover .bar,.town-bar-item:hover>div{background:var(--energy)}
.value-chart circle{fill:var(--card);stroke:var(--accent);stroke-width:3;cursor:default}.value-chart circle:hover{fill:var(--energy);stroke:var(--energy);r:6.5}

/* Analytics page: repeat-sales price index block */
.trend-chart{height:320px;padding:16px 20px 30px}
.value-chart polygon{fill:var(--accent);opacity:.13;stroke:none}
.value-chart line.grid{stroke:var(--line);stroke-width:1}
.trend-chart polyline{stroke-width:4}
.trend-chart circle{stroke-width:2.5}
.trend-chart polyline.prov{stroke-dasharray:2 7;opacity:.65}
.trend-chart polyline.fc{stroke-dasharray:7 6;stroke:var(--energy)}
.trend-chart circle.prov{stroke-dasharray:2 2;opacity:.65}
.trend-chart circle.fc{stroke:var(--energy)}
.chart-toolbar{padding:0 20px 16px;border-bottom:1px solid var(--line)}
.chart-toolbar form{display:flex;align-items:end;gap:16px;flex-wrap:wrap}
.chart-toolbar label{font:400 11px/1.3 var(--mono);text-transform:uppercase;letter-spacing:.1em;color:var(--muted)}
/* Font family is spelled out rather than inherited: `font:inherit` here would
   pick up the 11px uppercase label type instead of the brand serif the other
   pickers use. */
.chart-toolbar select{display:block;min-width:230px;height:48px;margin-top:6px;padding:0 32px 0 12px;border:1px solid var(--line);border-radius:var(--r-sm);background:var(--card);color:var(--ink);font:400 16px/1.4 var(--sans)}
@media(max-width:800px){.chart-toolbar form{display:grid;grid-template-columns:1fr}.chart-toolbar select{min-width:0;width:100%}}
.index-stats{display:grid;grid-template-columns:repeat(4,1fr);border-bottom:1px solid var(--line)}
.index-stats article{padding:14px 20px;border-right:1px solid var(--line)}
.index-stats article:last-child{border-right:0}
.index-stats span{display:block;font:400 11px/1.3 var(--mono);text-transform:uppercase;letter-spacing:.08em;color:var(--muted);margin-bottom:5px}
.index-stats strong{font:500 19px/1.2 var(--serif);color:var(--ink)}
.methodology{padding:14px 20px 16px}
.methodology summary{cursor:pointer;font:400 12px/1.3 var(--mono);text-transform:uppercase;letter-spacing:.1em;color:var(--muted)}
.methodology p{max-width:850px;font:400 15px/1.7 var(--serif);color:var(--ink);margin:12px 0 0}
@media(max-width:800px){.index-stats{grid-template-columns:1fr 1fr}.index-stats article:nth-child(2n){border-right:0}.chart-toolbar label{flex:1}.chart-toolbar select{width:100%;min-width:0}}
@media(max-width:520px){.index-stats{grid-template-columns:1fr}.index-stats article{border-right:0}}

/* Beta access gate */
.login-gate{max-width:430px;margin:9vh auto 0;padding:40px 38px;text-align:center;background:var(--card);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--shadow)}
.login-gate img{display:inline-block;width:150px;height:auto;margin-bottom:18px}
.login-gate h1{font-size:27px;margin-bottom:10px}.login-gate p{font-size:14px}
.login-gate form{display:flex;gap:10px;margin-top:22px}
.login-gate input{flex:1;height:44px;padding:0 13px;border:1px solid var(--line);border-radius:var(--r-sm);background:var(--paper);color:var(--ink);font:inherit}
.login-gate .refresh-alert{margin:14px 0 0;font-size:13px}

/* CSV export + data completeness panel */
.panel-title-actions{display:flex;align-items:center;gap:14px}
.quality-details dd a{font-weight:600}
.panel-title>span{max-width:340px;text-align:right}
@media(max-width:800px){.panel-title-actions{gap:10px}}

/* Page-level time period selector */
.hero-actions{display:flex;align-items:end;gap:16px;flex-wrap:wrap}
.period-form label{font:400 11px/1.3 var(--mono);text-transform:uppercase;letter-spacing:.1em;color:var(--muted)}
.period-form select{display:block;min-width:190px;height:46px;margin-top:5px;padding:0 10px;border:1px solid var(--line);border-radius:var(--r-sm);background:var(--card);color:var(--ink);font:400 16px/1.4 var(--sans)}
@media(max-width:800px){.hero-actions{width:100%}.period-form{width:100%}.period-form select{width:100%}}

/* Overview hero search bar — the primary entry point for lookups. */
.hero-controls{display:flex;align-items:end;gap:14px;flex-wrap:wrap;margin-bottom:16px}
.hero-controls .hero-search{margin-bottom:0;flex:1}
/* Period selector sits under the data-coverage badge, per the Herald's note.
   "Your area" sits beside it: same page, filtered to one stretch of the county. */
.hero-period{display:flex;flex-wrap:wrap;align-items:end;gap:16px;margin-top:14px}
.hero-period select[name="region"]{min-width:240px}
.hero p.region-note,.region-note{margin:0 0 22px;max-width:720px;font-size:17px;color:var(--ink)}
.region-note a{font-weight:600}
.entry{max-width:720px;padding:36px 0 10px}
.entry>p{font-size:18px;color:var(--muted);max-width:36em}
.area-list{list-style:none;margin:28px 0 0;padding:0;display:grid;gap:10px}
.area-list a{display:flex;justify-content:space-between;align-items:baseline;gap:18px;padding:16px 18px;border:1px solid var(--line);border-radius:var(--r-md);background:var(--card);color:var(--ink);text-decoration:none}
.area-list a strong{font-family:var(--serif);font-weight:500;font-size:22px;letter-spacing:-.01em}
.area-list a span{color:var(--muted);font-size:14px;text-align:right}
.area-list a:hover{border-color:var(--primary)}
@media(max-width:640px){.area-list a{flex-direction:column;align-items:flex-start;gap:4px}.area-list a span{text-align:left}}
@media(max-width:800px){.hero-period{flex-direction:column;align-items:stretch;width:100%}.hero-period label,.hero-period select{width:100%}}
.hero-search{display:flex;gap:10px;max-width:560px;margin-bottom:16px}
.hero-search input{flex:1;height:46px;padding:0 14px;border:1px solid var(--line);border-radius:var(--r-sm);background:var(--card);color:var(--ink);font:inherit}
.hero-search .button{height:46px}
@media(max-width:520px){.hero-search{flex-direction:column}.hero-search input,.hero-search .button{width:100%}}

/* Scrollable list/table views: long lists stay compact with sticky headers. */
.scroll-list{max-height:352px;overflow-y:auto}
.browse-towns li{grid-template-columns:1fr auto}
.table-wrap.scroll-y{max-height:480px;overflow-y:auto}
.table-wrap.scroll-y thead th{position:sticky;top:0;z-index:1}
/* Overview towns table: scrolls in place so the panel matches the chart beside it. */
.table-wrap.town-table-scroll{max-height:330px;overflow-y:auto}
.table-wrap.town-table-scroll thead th{position:sticky;top:0;z-index:1;background:#f4f6f9}

/* Address pin maps (party profiles, town dashboards) */
.county-map-panel .pin-map{height:440px;background:var(--line)}
@media(max-width:800px){.county-map-panel .pin-map{height:360px}}

/* Every dropdown renders in the brand type instead of the system UI font.
   (.filters select already inherits; this covers the map toolbar, insights
   hero, and chart toolbar selects, plus their popup option lists.) */
select{font:400 15px/1.4 var(--sans)}
option{font-family:var(--sans)}

/* Party-page switch between grouped name variations and the exact recorded
   name. Segmented control: the active side reads as a filled button, the
   other as a plain affordance. */
.match-toggle{display:inline-flex;margin-top:16px;border:1px solid var(--line);border-radius:var(--r-sm);overflow:hidden;background:var(--card)}
.match-toggle a{padding:9px 15px;font:400 11px/1.3 var(--mono);text-transform:uppercase;letter-spacing:.08em;color:var(--muted);text-decoration:none;white-space:nowrap}
.match-toggle a+a{border-left:1px solid var(--line)}
.match-toggle a:hover{color:var(--primary);background:var(--accent2)}
.match-toggle a.on{background:var(--primary);color:var(--btn-ink)}
@media(max-width:520px){.match-toggle{width:100%}.match-toggle a{flex:1;text-align:center;padding:9px 8px;letter-spacing:.04em}}

/* Readability pass: pickers were 15-16px text in 38-48px boxes, which testers
   found far too small to use comfortably. Raising them in one block (rather
   than patching the six scattered rules above) keeps every menu on the site
   the same size, at a 52px touch target. Buttons and text inputs sitting
   beside a picker grow with it so rows stay level. */
select{font:400 18px/1.4 var(--sans)}
option{font-family:var(--sans);font-size:16px}
.filters select,.map-toolbar select,.insights-hero select,.period-form select,.chart-toolbar select{height:52px;font:400 18px/1.4 var(--sans)}
.filters input{height:52px;font-size:17px}
.filters label,.map-toolbar label,.insights-hero label,.chart-toolbar label,.period-form label{font-size:13px}
.map-toolbar .button,.filters .button,.filter-actions .button,.insights-hero .button{height:52px}

/* Area chooser, area-page header, sponsorship columns, and the mobile menu. */
.nav-wrap{display:flex;align-items:center;height:100%}
.nav-toggle{display:none;border:1px solid var(--line);background:var(--card);color:var(--primary);border-radius:var(--r-sm);padding:8px 12px;font:400 12px/1 var(--mono);letter-spacing:.12em;text-transform:uppercase;cursor:pointer}
.navdrop{position:relative;display:flex;align-items:center}
.dropbtn{display:flex;align-items:center;gap:5px;height:100%;padding:0;border:0;border-bottom:2px solid transparent;background:none;color:var(--muted);font:400 11px/1 var(--mono);letter-spacing:.16em;text-transform:uppercase;cursor:pointer}
.dropbtn.on,.dropbtn:hover,nav>a:hover{color:var(--primary);border-bottom-color:var(--energy)}
.dropbtn .caret{font-size:9px}
.dropmenu{display:none;position:absolute;top:calc(100% + 10px);left:50%;transform:translateX(-50%);min-width:220px;padding:6px;background:var(--card);border:1px solid var(--line);border-radius:var(--r-sm);box-shadow:var(--shadow);z-index:1200}
.dropmenu.open{display:flex;flex-direction:column}
.dropmenu a{display:block;height:auto;padding:10px 12px;border:0;font:600 15px/1.3 var(--serif);letter-spacing:0;text-transform:none;color:var(--ink);text-align:left}
.dropmenu a.on,.dropmenu a:hover{background:var(--accent2);color:var(--primary)}
header{position:sticky}
@media(max-width:800px){
  header{height:auto;min-height:64px;flex-wrap:wrap;padding-top:8px;padding-bottom:8px}
  .nav-toggle{display:inline-flex}
  .nav-wrap{position:static;margin-left:auto}
  nav{display:none;position:fixed;top:72px;left:0;right:0;height:auto;max-height:calc(100dvh - 72px);overflow:auto;flex-direction:column;gap:0;padding:8px 16px 16px;background:var(--card);border-bottom:1px solid var(--line);z-index:1200}
  nav.open{display:flex}
  nav>a,.navdrop{border-bottom:1px solid var(--line)}
  nav>a{justify-content:start;padding:14px 0;height:auto}
  .dropmenu{position:static;transform:none;box-shadow:none;border:0;padding:0 0 8px}
}
.hero.area-hero,.hero.gateway-hero{display:block;align-items:stretch;padding:28px 0 12px}
.hero.area-hero>.hero-grid{max-width:none}
.hero-grid{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:28px 32px;align-items:start}
.hero-grid>:first-child{grid-column:1;grid-row:1}
.hero-grid>.stats{grid-column:1;grid-row:2;grid-template-columns:repeat(3,1fr);margin:18px 0 0}
.hero-grid>.slot-rail{grid-column:2;grid-row:1 / span 2;align-self:end;justify-self:end}
.hero .sub{font-family:var(--serif);font-style:italic;font-size:22px;color:var(--ink);max-width:40em}
.slot{border:2px dashed var(--energy);border-radius:var(--r-md);background:rgba(213,129,4,.08);display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:8px;padding:22px 16px}
.slot .tag{font:700 10px/1.3 var(--mono);letter-spacing:.14em;text-transform:uppercase;color:var(--walnut)}
.slot .nm{font-family:var(--serif);font-size:22px;line-height:1.2;color:var(--ink)}
.slot .dim{font-size:12px;color:var(--muted)}
.slot-rail{width:300px;height:667px;flex:none}
.slot-card{width:280px;height:449px;flex:none;align-self:start;justify-self:center}
.slot{overflow:hidden}
.highlight-title>div{min-width:0}
.highlight-title h2{font-weight:700;font-size:22px;line-height:1.15}
.highlight-card li a,.highlight-card li strong,.highlight-card td,.highlight-card td a{font-weight:400}
.highlights.lead{grid-template-columns:280px minmax(0,1fr) minmax(0,1fr)}
.highlights.trail{grid-template-columns:minmax(0,1fr) minmax(0,1fr) 280px}
.highlight-card li{align-items:start}
.highlight-card li>div{min-width:0}
.highlight-card li a,.highlight-card li small{white-space:normal;overflow:visible;text-overflow:clip;max-width:none;overflow-wrap:anywhere}
td small{white-space:normal;overflow:visible;text-overflow:clip;max-width:none;overflow-wrap:anywhere}
.pin-map .map-loading{margin:0;padding:28px;color:var(--muted)}
.stamp{display:flex;flex-wrap:wrap;gap:8px 22px;margin-top:18px;color:var(--muted);font-size:14px}
.stamp b{color:var(--ink);font-variant-numeric:tabular-nums}
.resume{display:flex;flex-wrap:wrap;gap:12px 18px;align-items:center;margin:0 0 8px;padding:12px 16px;background:rgba(213,129,4,.12);border:1px solid var(--line);border-radius:var(--r-sm)}
.resume p{margin:0}
.resume[hidden]{display:none}
.linkbtn{border:0;background:none;padding:0;color:var(--primary);font:inherit;font-weight:600;text-decoration:underline;cursor:pointer}
.gate-head{margin-top:8px;padding-top:22px;border-top:1px solid var(--line)}
.gate-head h2{font-size:clamp(26px,3vw,34px);font-weight:700}
.gate-head p{max-width:62ch;color:var(--muted)}
.gate{--r-oc:#0c2d5e;--r-siu:#6faaba;--r-smi:#184682;--r-ww:#40809f;--r-ci:#a8cfcf;--r-ml:#dceae6;--gold:#c8890f;--gold-deep:#a06d08;--navy:#184682;--navy-deep:#0c2d5e;display:grid;grid-template-columns:minmax(0,420px) minmax(0,1fr);gap:28px;align-items:start;padding:18px 0}
.mapcard{position:sticky;top:108px;background:var(--card);border:1px solid var(--line);border-radius:var(--r-md);padding:16px}
.mapcard h2{font-size:20px;margin-bottom:4px;font-weight:700}
.mapcard .hint{margin:0 0 10px;color:var(--muted);font-size:13px}
svg.map{width:100%;height:auto;display:block}
svg.map .reg{stroke:#fff;stroke-width:1.6;cursor:pointer}
svg.map .ldr{stroke:#b3aa99;stroke-width:1.4;fill:none}
svg.map text{font-family:var(--serif);font-size:19px;fill:var(--muted)}
svg.map .lab.hot text{fill:var(--primary);font-weight:700}
svg.map.dim .reg:not(.hot){opacity:.34}
svg.map .reg.hot{filter:drop-shadow(0 0 3px rgba(12,45,94,.45))}
.gw-readout{margin-top:10px;padding-top:10px;border-top:1px solid var(--line);color:var(--muted);font-size:13px;min-height:42px}
.gw-readout b{display:block;font-family:var(--serif);font-size:18px;color:var(--ink)}
.gw-list{display:flex;flex-direction:column;gap:10px}
.gw-row{display:grid;grid-template-columns:8px minmax(0,1fr) auto 22px;gap:0 14px;align-items:center;background:var(--card);border:1px solid var(--line);border-radius:var(--r-sm);overflow:hidden;color:inherit;text-decoration:none}
.gw-row:hover,.gw-row.hot,.gw-row.chosen{border-color:var(--energy);box-shadow:var(--shadow)}
.gw-row .bar{align-self:stretch;background:var(--r-oc)}
.gw-row[data-k="ocean-city"] .bar{background:var(--r-oc)}
.gw-row[data-k="sea-isle-upper"] .bar{background:var(--r-siu)}
.gw-row[data-k="mainland"] .bar{background:var(--r-ml)}
.gw-row[data-k="seven-mile"] .bar{background:var(--r-smi)}
.gw-row[data-k="wildwoods"] .bar{background:var(--r-ww)}
.gw-row[data-k="cape-island"] .bar{background:var(--r-ci)}
.gw-row .mid{padding:14px 0;min-width:0}
.gw-name{display:block;font-family:var(--serif);font-size:21px;font-weight:600;color:var(--ink);overflow-wrap:anywhere}
.gw-towns{display:block;margin-top:3px;color:var(--muted);font-size:13px;overflow-wrap:anywhere}
.gw-spon{display:inline-block;margin-top:8px;padding:3px 8px;border:1px dashed var(--energy);border-radius:3px;color:var(--walnut);font:600 11px/1.3 var(--mono);letter-spacing:.08em;text-transform:uppercase}
.gw-figs{display:flex;gap:18px;padding-right:4px}
.gw-figs b{display:block;font-family:var(--serif);font-size:18px;color:var(--ink)}
.gw-figs i{display:block;font-style:normal;font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}
.gw-row .go{color:var(--muted);padding-right:12px}
.why{display:grid;grid-template-columns:repeat(3,1fr);gap:22px;margin-top:28px;padding-top:22px;border-top:1px solid var(--line)}
.why h3{font-size:18px;margin-bottom:6px;font-weight:700}
.why p{margin:0;color:var(--muted);font-size:15px}
.gw-tail{color:var(--muted);font-size:14px}
@media(max-width:880px){
  .gate{grid-template-columns:1fr}
  .mapcard{position:static;order:2}
  .gw-list{order:1}
  .gw-row{display:block;position:relative;padding:14px 36px 14px 16px}
  .gw-row .bar{position:absolute;left:0;top:0;bottom:0;width:6px}
  .gw-row .mid{padding:0}
  .gw-figs{padding:10px 0 0}
  .gw-row .go{position:absolute;right:12px;top:16px}
  .why{grid-template-columns:1fr}
}
@media(max-width:800px){
  .hero-grid{grid-template-columns:1fr}
  .hero-grid,.hero-grid>:first-child,.hero-grid>.stats,.hero-grid>.slot-rail{grid-column:1;grid-row:auto}
  .slot-rail{width:auto;height:auto;min-height:180px;justify-self:stretch}
  .highlights.lead,.highlights.trail{grid-template-columns:1fr}
  .slot-card{display:none}
  .hero-grid>.stats{grid-template-columns:1fr}
}

/* === Real Estate Intel ad zones — Jersey Cape Realty (GAM /6660593/property_ledger) === */
.ad-rail,.ad-card{display:block}
.ad-slot{display:block;overflow:hidden}
.ad-slot-rail{width:300px;min-height:667px}
.ad-slot-card{width:280px;height:449px}
.highlights.lead{grid-template-columns:280px minmax(0,1fr) minmax(0,1fr);grid-auto-rows:449px}
.highlights.trail{grid-template-columns:minmax(0,1fr) minmax(0,1fr) 280px;grid-auto-rows:449px}
.highlights.lead .ad-card,.highlights.trail .ad-card{align-self:start}
.highlights.lead .highlight-card,.highlights.trail .highlight-card{max-height:449px;display:flex;flex-direction:column}
.highlights.lead .highlight-card ol,.highlights.trail .highlight-card ol{flex:1;display:flex;flex-direction:column;min-height:0}
.highlights.lead .highlight-card li,.highlights.trail .highlight-card li{flex:1}
.highlights.lead .highlight-card .town-table-scroll,.highlights.trail .highlight-card .town-table-scroll{max-height:100%;overflow-y:auto}
@media(max-width:1000px){
  .ad-rail{display:none}
}
@media(max-width:800px){
  .highlights.lead,.highlights.trail{grid-template-columns:1fr;grid-auto-rows:auto}
  .highlights.lead .ad-card,.highlights.trail .ad-card{display:none}
  .highlights.lead .highlight-card,.highlights.trail .highlight-card{max-height:none}
}
