/* Precinct REV1 front page (loaded after styles.css and live.css). Flat: 1px borders, no gradients, no glow, no shadows.
   Phone first (390), then desktop (1440). Layout and type only; every colour comes from the existing palette. */
:root{--toph:56px;--gap:16px;--rad:12px;--tap:44px}
html{scroll-padding-top:calc(var(--toph) + 56px)}
body{font-size:15px;line-height:1.55}
main#app{padding-bottom:24px}

/* ---------- sticky compact top bar: one row, logo + nav ---------- */
.top{border-bottom:1px solid var(--line2)}
.edtk{transition:height .2s var(--ease)}
body.rv-scrolled .edtk{height:0;border-bottom-width:0}
.tabs a{min-height:var(--tap)}
@media (max-width:860px){
  .top-in{flex-wrap:nowrap;height:52px;padding:0 0 0 14px;gap:10px}
  .brand{height:52px;font-size:19px;flex:none}
  .tabs{margin:0;width:auto;flex:1 1 auto;min-width:0;height:52px;border-top:0;border-left:1px solid var(--line);overflow-x:auto;overscroll-behavior-x:contain;padding:0 8px 0 6px;gap:2px;align-items:center}
  .tabs a{flex:none;min-width:0;margin:0;padding:0 12px;height:36px;min-height:36px;border-radius:999px;font-size:14px;border:1px solid transparent}
  .tabs a.on{background:var(--panel3);border-color:var(--line2)}
  .edtk{height:30px;font-size:12px}
}

/* ---------- "on this page" jump bar (home only) ---------- */
.rv-jump{position:sticky;top:var(--toph);z-index:30;background:var(--bg);border-bottom:1px solid var(--line);margin:0 -24px;padding:0 24px}
.rv-jump-in{display:flex;gap:6px;overflow-x:auto;padding:8px 0;scroll-snap-type:x proximity;max-width:1240px;margin:0 auto}
.rv-jump a{flex:none;display:inline-flex;align-items:center;height:36px;padding:0 14px;border:1px solid var(--line2);border-radius:999px;color:var(--ink2);text-decoration:none;font-size:14px;font-weight:500;scroll-snap-align:start;white-space:nowrap}
.rv-jump a:hover{color:var(--ink);border-color:var(--mute)}
.rv-jump a.on{background:var(--ink);border-color:var(--ink);color:#111;font-weight:600}
.rv-jump a:focus-visible{outline:2px solid var(--acc);outline-offset:2px}
@media (max-width:860px){.rv-jump{margin:0 -16px;padding:0 16px}}

/* ---------- section rhythm and headings ---------- */
.ed-sec,.rv-sec{margin:48px 0 0;scroll-margin-top:calc(var(--toph) + 64px)}
[data-jump]{scroll-margin-top:calc(var(--toph) + 64px)}
#edmap{scroll-margin-top:calc(var(--toph) + 64px)}
.ed-sh{align-items:center;border-bottom:0;padding-bottom:0;margin-bottom:14px}
.ed-sh h2{font-size:22px;font-weight:700;letter-spacing:-.015em}
.ed-sh h2 .lc{width:20px;height:20px}
.ed-sh h2[tabindex="-1"]:focus{outline:none}
.ed-sh-r{font-size:12px}
.ed-note{font-size:13px;color:var(--mute);line-height:1.55}
.ed-more{margin:0 0 6px;border-top:0;padding-top:0}
.ed-more-h{font-size:22px;font-weight:700;letter-spacing:-.015em;text-transform:none;color:var(--ink)}

/* ---------- hero: what's happening tonight ---------- */
.ed-hero{padding:22px 0 0}
.ed-kick{font-size:12px;letter-spacing:.08em;color:var(--mute)}
.ed-h1{font-size:clamp(34px,8.6vw,72px);line-height:1;letter-spacing:-.035em;font-weight:800;margin:10px 0 0}
.ed-cd{margin:20px 0 0;border-radius:var(--rad);padding:18px 18px 16px}
.ed-cd-s{font-size:15px}
.ed-tl{border-radius:var(--rad);margin-top:14px}
.ed-tl-i{min-width:96px;padding:12px 12px 14px}
.ed-prog{margin-top:16px}

/* ---------- cards: one radius, one border, one padding ---------- */
.ed-ctl,.ed-rc,.ed-cl,.nat,.card,#edmap.em,#edmap{border-radius:var(--rad)}
.ed-ctl,.ed-rc,.nat{border:1px solid var(--line2);background:var(--panel)}
.ed-ctl:hover,.ed-rc:hover,.ed-cl:hover{border-color:var(--mute)}
.ed-ctl:focus-visible,.ed-rc:focus-visible,.ed-cl:focus-visible,.row:focus-visible,.ed-ev-r:focus-visible,.ed-w-r:focus-visible{outline:2px solid var(--acc);outline-offset:2px}
.ed-btn{min-height:var(--tap);border-radius:999px;padding:0 18px;font-weight:600}
.rv-more{margin-top:14px}
.rv-hide{display:none!important}

/* ---------- national polls block (moved into its own section) ---------- */
.rv-polls .natgrid{margin-top:0}
.rv-polls p.stamp{margin:12px 0 0}

/* ---------- everything else: lists as tidy cards ---------- */
.rv-more-sec .two{margin-top:0}
.rv-more-sec h2{font-size:17px;font-weight:700;letter-spacing:-.01em;margin:24px 0 10px}
.rv-more-sec .two > div:first-child > h2:first-child{margin-top:4px}
.list{border:1px solid var(--line2);border-radius:var(--rad);overflow:hidden;background:var(--panel)}
.list .row{min-height:56px;padding-top:10px;padding-bottom:10px}
.filters select,.filters input{min-height:var(--tap);border-radius:10px;font-size:16px}

/* ---------- phones ---------- */
@media (max-width:720px){
  .ed-sec,.rv-sec{margin-top:40px}
  .ed-sh{flex-direction:column;align-items:flex-start;gap:6px}
  .ed-sh h2{font-size:20px}
  .ed-more-h{font-size:20px}
  .ed-h1{font-size:clamp(32px,9vw,44px)}
  .ed-cd{padding:16px 14px 14px}
  .ed-note{font-size:12.5px}
}
@media (min-width:1001px){
  .ed-h1{max-width:900px}
}

/* ---------- motion ---------- */
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  .edtk{transition:none}
  .ed-sec.rv{opacity:1;transform:none;transition:none}
}

/* skip link: hidden until focused */
.skip{position:absolute;left:12px;top:-60px;z-index:60;background:var(--ink);color:#111;padding:10px 14px;border-radius:8px;font-weight:600;text-decoration:none}
.skip:focus{top:10px}

/* collapsible detail blocks */
.rv-det{margin:14px 0 0;border-top:1px solid var(--line2)}
.rv-det>summary{display:flex;align-items:center;justify-content:space-between;min-height:var(--tap);cursor:pointer;list-style:none;font-weight:600;font-size:14px;color:var(--ink)}
.rv-det>summary::-webkit-details-marker{display:none}
.rv-det>summary::after{content:"+";font:400 20px/1 var(--mono);color:var(--mute)}
.rv-det[open]>summary::after{content:"\2212"}
.rv-det>summary:focus-visible{outline:2px solid var(--acc);outline-offset:2px}
.rv-det:first-child{border-top:0;margin-top:0}
