/* ============================================================
   Scott County Democrats — static rebuild design system
   Brand: Raleway · civic navy #183984 · action red #ea000d
   ============================================================ */
@font-face{
  font-family:"Raleway";
  src:url("/assets/fonts/raleway-var.woff2") format("woff2");
  font-weight:400 900; font-style:normal; font-display:swap;
}

:root{
  --navy:#183984;
  --navy-deep:#12305c;
  --navy-dark:#0f2748;
  --red:#ea000d;
  --red-dark:#c8102e;
  --ink:#22272e;
  --body:#555555;
  --muted:#6a7280;
  --line:#e2e8f2;
  --line-soft:#eef2f8;
  --bg:#ffffff;
  --bg-soft:#f2f6fc;
  --bg-band:#eef3fb;
  --white:#ffffff;
  --sans:"Raleway",-apple-system,BlinkMacSystemFont,"Segoe UI",system-ui,sans-serif;
  --container:1180px;
  --radius:3px;
  --shadow:0 1px 2px rgba(24,57,132,.06),0 4px 14px rgba(24,57,132,.06);
  --shadow-lg:0 10px 26px rgba(15,39,72,.14);
}

*,*::before,*::after{box-sizing:border-box;}
html{scroll-behavior:smooth;}
body{
  margin:0; font-family:var(--sans); color:var(--body);
  font-size:16px; line-height:1.65; background:var(--bg);
  -webkit-font-smoothing:antialiased; text-rendering:optimizeLegibility;
}
img{max-width:100%; height:auto; display:block;}
a{color:var(--navy); text-decoration:none;}
a:hover{color:var(--red);}
h1,h2,h3,h4{font-family:var(--sans); color:var(--ink); line-height:1.15; margin:0 0 .5em; font-weight:800;}
h1{font-size:clamp(2rem,5vw,3.1rem); letter-spacing:-.01em;}
h2{font-size:clamp(1.7rem,3.6vw,2.5rem); letter-spacing:-.01em;}
h3{font-size:1.3rem; font-weight:700;}
p{margin:0 0 1rem;}
.container{max-width:var(--container); margin:0 auto; padding:0 24px;}
.narrow{max-width:820px; margin-inline:auto;}
:focus-visible{outline:3px solid var(--red); outline-offset:2px; border-radius:3px;}
.skip{position:absolute; left:-9999px; top:0; background:var(--navy); color:#fff; padding:10px 16px; z-index:200;}
.skip:focus{left:8px; top:8px;}

/* ---------- buttons ---------- */
.btn{display:inline-flex; align-items:center; justify-content:center; text-align:center; gap:.5em; font-weight:700; font-size:.98rem;
  padding:13px 26px; border-radius:2px; border:2px solid transparent; cursor:pointer;
  transition:transform .12s ease, box-shadow .12s ease, background .12s ease; line-height:1;}
.btn:hover{transform:translateY(-1px);}
.btn-red{background:var(--red); color:#fff; box-shadow:0 6px 16px rgba(234,0,13,.24);}
.btn-red:hover{background:#cf000b; color:#fff;}
.btn-navy{background:var(--navy); color:#fff;}
.btn-navy:hover{background:var(--navy-deep); color:#fff;}
.btn-ghost{background:transparent; color:var(--navy); border-color:var(--navy);}
.btn-ghost:hover{background:var(--navy); color:#fff;}
.btn-white{background:#fff; color:var(--navy);}
.btn-white:hover{background:var(--bg-soft); color:var(--navy);}

/* ---------- eyebrow / labels ---------- */
.eyebrow{display:inline-block; font-size:.8rem; font-weight:700; letter-spacing:.16em;
  text-transform:uppercase; color:var(--red); margin-bottom:.7rem;}
.eyebrow.on-navy{color:#9db8ff;}

/* ---------- sections ---------- */
.section{padding:clamp(48px,7vw,88px) 0;}
.section-tight{padding:clamp(34px,5vw,60px) 0;}
.band-soft{background:var(--bg-soft);}
.band-navy{background:var(--navy); color:#e9eefb;}
.band-navy h1,.band-navy h2,.band-navy h3{color:#fff;}
.section-head{text-align:center; max-width:760px; margin:0 auto clamp(30px,4vw,50px);}
.section-head p{font-size:1.08rem; color:var(--muted);}
.band-navy .section-head p{color:#c3d0ef;}

/* ---------- header / nav ---------- */
.topbar{background:var(--navy-deep); color:#cdd8f2; font-size:.82rem;}
.topbar .container{display:flex; flex-wrap:wrap; gap:6px 26px; padding-top:9px; padding-bottom:9px; justify-content:center;}
.topbar a{color:#e6ecfb; display:inline-block; padding:3px 2px;}
.topbar strong{color:#fff;}
.masthead{background:var(--navy); position:sticky; top:0; z-index:100; box-shadow:0 2px 12px rgba(12,32,60,.28);}
.masthead .container{display:flex; align-items:center; justify-content:space-between; gap:20px; padding-top:12px; padding-bottom:12px;}
.brand{display:flex; align-items:center; gap:13px; color:#fff;}
.brand img{width:72px; height:72px; border-radius:50%; background:#fff; flex:none;}
@media(max-width:520px){.brand img{width:60px; height:60px;}}
.brand .bt{font-weight:800; font-size:1.06rem; line-height:1.1; color:#fff;}
.brand .bt span{display:block; font-weight:500; font-size:.72rem; letter-spacing:.12em; text-transform:uppercase; color:#9db8ff;}
.nav{display:flex; align-items:center; gap:4px;}
.nav a{color:#eaf0ff; font-weight:600; font-size:.94rem; padding:9px 13px; border-radius:6px; white-space:nowrap;}
.nav a:hover,.nav a[aria-current="page"]{background:rgba(255,255,255,.12); color:#fff;}
.nav .btn-red{color:#fff; padding:10px 18px; margin-left:6px;}
.nav .btn-red:hover{color:#fff;}
.navtoggle{display:none; background:none; border:0; color:#fff; padding:8px; cursor:pointer;}
.navtoggle svg{width:28px; height:28px;}
/* Nav breakpoint in em, not px: the desktop nav needs ~1100px at default text size,
   so a px breakpoint of 1000 overflowed between 1000-1100px AND broke completely when a
   visitor enlarged text. In em it switches to the hamburger whenever the viewport is too
   narrow RELATIVE TO THE TEXT SIZE. 72em = 1152px at 16px, 1440px at 20px, 1728px at 24px. */
@media(max-width:72em){
  .nav{position:fixed; inset:0 0 0 auto; width:min(320px,86vw); flex-direction:column; align-items:stretch;
    background:var(--navy-deep); padding:84px 20px 30px; gap:4px; transform:translateX(100%); transition:transform .25s ease; overflow-y:auto;}
  .nav.open{transform:none;}
  .nav a{padding:13px 15px; font-size:1.02rem;}
  .nav .btn-red{margin:10px 0 0; justify-content:center;}
  .navtoggle{display:block; z-index:120;}
  .navscrim{position:fixed; inset:0; background:rgba(8,20,42,.5); opacity:0; visibility:hidden; transition:.25s; z-index:90;}
  .navscrim.open{opacity:1; visibility:visible;}
}

/* ---------- hero ---------- */
.hero{position:relative; background:var(--navy-dark); color:#fff; overflow:hidden;}
.hero::after{content:""; position:absolute; inset:0; z-index:1; background:linear-gradient(100deg,rgba(15,39,72,.93) 0%,rgba(15,39,72,.74) 42%,rgba(15,39,72,.42) 72%,rgba(15,39,72,.5) 100%);}
.hero-bg{position:absolute; inset:0; width:100%; height:100%; object-fit:cover; object-position:center 30%; opacity:.85; z-index:0;}
.hero .container{position:relative; z-index:2; padding-top:clamp(60px,8vw,110px); padding-bottom:clamp(60px,8vw,110px);}
.hero .inner{max-width:640px;}
/* homepage hero: text + floating seal */
.hero-grid{display:grid; grid-template-columns:1fr auto; align-items:center; gap:44px;}
.hero-seal{width:min(240px,26vw); height:auto; aspect-ratio:1; border-radius:50%; background:#fff; box-shadow:0 16px 48px rgba(0,0,0,.42); justify-self:end;}
/* keep seal on the same row as the copy on mobile, just smaller */
@media(max-width:860px){
  .hero-grid{gap:22px;}
  .hero .inner{max-width:none;}
  .hero-seal{width:min(150px,28vw);}
}
@media(max-width:460px){
  .hero-grid{gap:14px;}
  .hero-seal{width:96px;}
}
.hero .eyebrow{color:#9db8ff;}
.hero h1{color:#fff; margin-bottom:.35em;}
.hero .lede{font-size:1.2rem; color:#d6e0f7; margin-bottom:1.6rem; max-width:34ch;}
.hero .cta-row{display:flex; flex-wrap:wrap; gap:14px;}

/* ---------- generic prose ---------- */
.prose{font-size:1.05rem;}
.prose h2{margin-top:1.8em;}
.prose h3{margin-top:1.5em; color:var(--navy-deep);}
.prose ul,.prose ol{padding-left:1.3em; margin:0 0 1.1rem;}
.prose li{margin:.35rem 0;}
.prose li::marker{color:var(--red);}
.prose a{color:var(--navy); text-decoration:underline; text-underline-offset:2px;}
.prose a:hover{color:var(--red);}
.prose img{border-radius:var(--radius); margin:1.4rem 0;}
.prose blockquote{border-left:4px solid var(--red); margin:1.4rem 0; padding:.4rem 0 .4rem 1.2rem; color:var(--ink); font-size:1.15rem;}

/* ---------- cards / feature grid ---------- */
.grid{display:grid; gap:24px;}
.grid-3{grid-template-columns:repeat(3,1fr);}
.grid-2{grid-template-columns:repeat(2,1fr);}
.grid-4{grid-template-columns:repeat(4,1fr);}
@media(max-width:900px){.grid-3,.grid-4{grid-template-columns:repeat(2,1fr);}}
@media(max-width:620px){.grid-2,.grid-3,.grid-4{grid-template-columns:1fr;}}
.card{background:#fff; border:1px solid var(--line); border-radius:var(--radius); padding:26px; box-shadow:var(--shadow); transition:transform .15s ease, box-shadow .15s ease;}
.card:hover{transform:translateY(-3px); box-shadow:var(--shadow-lg);}
.card h3{color:var(--navy-deep);}
.icon-card{text-align:center;}
.icon-card .ico{width:58px; height:58px; margin:0 auto 14px; border-radius:14px; background:var(--bg-band); display:grid; place-items:center; color:var(--navy); font-size:1.6rem;}

/* ---------- involvement CTA trio (homepage) ---------- */
.involve .card{display:flex; flex-direction:column;}
.involve .card p{flex:1;}

/* ---------- candidate cards ---------- */
.cand-grid{display:grid; grid-template-columns:repeat(auto-fill,minmax(224px,1fr)); gap:22px;}
.cand-card{display:flex; flex-direction:column; background:#fff; border:1px solid var(--line); border-radius:var(--radius); overflow:hidden; box-shadow:var(--shadow); transition:transform .15s, box-shadow .15s;}
.cand-card:hover{transform:translateY(-4px); box-shadow:var(--shadow-lg);}
.cand-photo{aspect-ratio:1/1; background:var(--bg-band); overflow:hidden;}
.cand-photo img{width:100%; height:100%; object-fit:cover; object-position:50% 18%;}
.cand-noimg{width:100%; height:100%; display:grid; place-items:center; font-size:2.6rem; font-weight:800; color:#fff; background:linear-gradient(135deg,var(--navy),var(--navy-deep));}
.cand-body{padding:16px 18px 20px; display:flex; flex-direction:column; flex:1;}
.cand-name{font-weight:800; font-size:1.12rem; color:var(--navy-deep); line-height:1.2;}
.cand-office{display:flex; align-items:center; gap:6px; color:var(--red); font-weight:700; font-size:.82rem; text-transform:uppercase; letter-spacing:.02em; margin:5px 0 10px;}
.cand-bio{font-size:.92rem; color:var(--muted); flex:1; margin-bottom:14px;}
.cand-more{font-weight:700; font-size:.9rem; color:var(--navy); display:inline-flex; align-items:center; gap:5px;}
.cand-card:hover .cand-more{color:var(--red);}

/* race groups on /candidates/ */
.race{margin-bottom:44px;}
.race-head{display:flex; align-items:baseline; gap:14px; margin-bottom:20px; padding-bottom:10px; border-bottom:2px solid var(--line);}
.race-cat{font-size:.74rem; font-weight:700; letter-spacing:.14em; text-transform:uppercase; color:var(--red);}
.race-title{font-size:1.5rem; font-weight:800; color:var(--navy-deep); margin:0;}

/* candidate filter chips */
.filters{display:flex; flex-wrap:wrap; gap:10px; justify-content:center; margin-bottom:34px;}
.chip{border:1.5px solid var(--line); background:#fff; color:var(--navy-deep); font-weight:700; font-size:.86rem; padding:8px 17px; border-radius:3px; cursor:pointer; transition:.12s;}
.chip:hover{border-color:var(--navy);}
.chip.active{background:var(--navy); color:#fff; border-color:var(--navy);}

/* ---------- candidate profile ---------- */
.cprofile-hero{position:relative; background:var(--navy-dark); color:#fff; overflow:hidden;}
.cprofile-hero::after{content:""; position:absolute; inset:0; background:linear-gradient(120deg,rgba(15,39,72,.94),rgba(15,39,72,.72));}
.cprofile-hero .container{position:relative; z-index:2; display:grid; grid-template-columns:auto 1fr; gap:36px; align-items:center; padding-top:56px; padding-bottom:56px;}
.cprofile-photo{width:210px; height:210px; border-radius:50%; object-fit:cover; border:5px solid rgba(255,255,255,.9); box-shadow:var(--shadow-lg); background:#fff;}
.cprofile-photo.noimg{display:grid; place-items:center; font-size:4rem; font-weight:800; color:var(--navy); background:#fff;}
.cprofile-hero .badge{display:inline-block; background:rgba(255,255,255,.16); color:#fff; font-size:.72rem; font-weight:700; letter-spacing:.12em; text-transform:uppercase; padding:6px 14px; border-radius:3px; margin-bottom:14px;}
.cprofile-hero h1{color:#fff; margin-bottom:.2em;}
.cprofile-hero .office{font-size:1.2rem; color:#a9c1f6; font-weight:700;}
.cprofile-actions{display:flex; flex-wrap:wrap; gap:12px; margin-top:22px;}
.cquote{background:var(--bg-soft); border-left:5px solid var(--red);}
.cquote .container{padding-top:40px; padding-bottom:40px;}
.cquote blockquote{font-family:var(--sans); font-size:clamp(1.3rem,2.6vw,1.8rem); font-weight:700; color:var(--navy-deep); line-height:1.35; margin:0; max-width:900px;}
@media(max-width:720px){
  .cprofile-hero .container{grid-template-columns:1fr; text-align:center; gap:22px; justify-items:center;}
  .cprofile-actions{justify-content:center;}
}

/* ---------- officials (Dem / GOP) ---------- */
.off-grid{display:grid; grid-template-columns:repeat(auto-fill,minmax(210px,1fr)); gap:22px;}
.off-card{background:#fff; border:1px solid var(--line); border-radius:var(--radius); overflow:hidden; box-shadow:var(--shadow); text-align:center;}
.off-photo{position:relative; aspect-ratio:1/1; overflow:hidden;}
.off-photo img{width:100%; height:100%; object-fit:cover;}
.off-badge{position:absolute; top:8px; right:8px; width:30px; height:30px; border-radius:50%; display:grid; place-items:center; font-weight:800; color:#fff; border:2px solid #fff; font-size:.9rem;}
.off-badge.dem{background:var(--navy);}
.off-badge.gop{background:var(--red-dark);}
.off-card.gop .off-photo img{filter:grayscale(1) opacity(.62); transition:.2s;}
.off-card.gop:hover .off-photo img{filter:none;}
.off-body{padding:14px 12px 18px;}
.off-name{font-weight:800; color:var(--navy-deep); font-size:1.04rem;}
.off-role{font-size:.85rem; color:var(--muted);}

/* ---------- board of directors ---------- */
.board-grid{display:flex; flex-wrap:wrap; justify-content:center; gap:30px 36px; max-width:940px; margin:0 auto;}
.board-card{width:190px;}
@media(max-width:820px){.board-grid{max-width:600px; gap:26px 30px;}}
@media(max-width:460px){.board-grid{gap:22px 20px;} .board-card{width:132px;}}
.board-card{text-align:center;}
.board-card img{width:130px; height:130px; border-radius:50%; object-fit:cover; margin:0 auto 12px; box-shadow:var(--shadow); border:3px solid #fff;}
.board-name{font-weight:800; color:var(--navy-deep);}
.board-role{font-size:.85rem; color:var(--red); font-weight:700; text-transform:uppercase; letter-spacing:.03em;}

/* ---------- events embed ---------- */
.cal-embed{border:1px solid var(--line); border-radius:var(--radius); overflow:hidden; box-shadow:var(--shadow); background:#fff;}
.cal-embed iframe{display:block; width:100%; border:0;}

/* ---------- newsletter band ---------- */
.newsletter{background:var(--navy); color:#fff; text-align:center;}
.newsletter h2{color:#fff;}
.newsletter p{color:#c3d0ef; max-width:620px; margin-inline:auto;}

/* ---------- footer ---------- */
.footer{background:var(--navy-dark); color:#b9c6e4; padding:56px 0 0; font-size:.94rem;}
.footer a{color:#d7e0f5;}
.footer a:hover{color:#fff;}
.footer-top{display:grid; grid-template-columns:1.4fr 1fr 1fr 1.1fr; gap:34px;}
@media(max-width:860px){.footer-top{grid-template-columns:1fr 1fr;}}
/* mobile footer: keep TWO columns instead of one long stack.
   brand spans both; the two link lists sit side by side; contact spans both. */
@media(max-width:520px){
  .footer-top{grid-template-columns:1fr 1fr; gap:22px 18px;}
  .footer-top>div:first-child{grid-column:1 / -1;}
  .footer-top>div:last-child{grid-column:1 / -1;}
  .footer h4{margin-bottom:9px;}
  .footer ul{gap:2px;}
  .footer ul a{padding:4px 0;}
}
.footer h4{color:#fff; font-size:.82rem; letter-spacing:.12em; text-transform:uppercase; margin-bottom:14px;}
.footer ul{list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:4px;}
.footer ul a{display:inline-block; padding:5px 0;}
.footer .fbrand{display:flex; align-items:center; gap:12px; margin-bottom:14px;}
.footer .fbrand img{width:46px; height:46px; border-radius:50%; background:#fff;}
.footer .fbrand strong{color:#fff; font-size:1.02rem;}
.socials{display:flex; gap:10px; margin-top:14px;}
.socials a{width:42px; height:42px; border-radius:50%; background:rgba(255,255,255,.1); display:grid; place-items:center; color:#fff;}
.socials a:hover{background:var(--red);}
.socials svg{width:19px; height:19px;}
.footer-bottom{border-top:1px solid rgba(255,255,255,.12); margin-top:44px; padding:20px 0; text-align:center; font-size:.82rem; color:#8ea0c6;}
.footer-bottom .container{display:flex; flex-wrap:wrap; gap:6px 18px; justify-content:center;}

/* utilities */
.text-center{text-align:center;}
.mt-0{margin-top:0;} .mb-0{margin-bottom:0;}
.stack>*+*{margin-top:1rem;}
.pill{display:inline-block; background:var(--bg-band); color:var(--navy-deep); font-weight:700; font-size:.78rem; padding:5px 13px; border-radius:3px;}
@media(prefers-reduced-motion:reduce){*{transition:none!important; scroll-behavior:auto!important;}}

/* ---------- connect (newsletter + facebook) ---------- */
.connect-grid{display:grid; grid-template-columns:1fr 1fr; gap:26px; align-items:start;}
@media(max-width:820px){.connect-grid{grid-template-columns:1fr;}}
.form-embed iframe{width:100%; min-height:520px; border:0; border-radius:2px; background:#fff;}
.fb-embed{border-radius:2px; overflow:hidden; min-height:560px;}
.fb-embed iframe{width:100%; min-height:560px; border:0;}
/* ---------- static forms ---------- */
.scd-form{max-width:640px;}
.scd-form p{margin:0 0 16px;}
.scd-form label{display:block; font-weight:700; color:var(--navy-deep); font-size:.9rem; margin-bottom:5px;}
.scd-form input[type=text],.scd-form input[type=email],.scd-form input[type=tel],.scd-form textarea,.scd-form select{
  width:100%; padding:12px 14px; border:1.5px solid var(--line); border-radius:2px; font-family:inherit; font-size:1rem; color:var(--ink); background:#fff;}
.scd-form input:focus,.scd-form textarea:focus{outline:none; border-color:var(--navy);}
.scd-form textarea{min-height:130px; resize:vertical;}
.scd-form .checks{display:grid; grid-template-columns:1fr 1fr; gap:8px 18px; margin:6px 0 16px;}
@media(max-width:520px){.scd-form .checks{grid-template-columns:1fr;}}
.scd-form .checks label{display:flex; align-items:center; gap:9px; font-weight:500; color:var(--body); margin:0; cursor:pointer;}
.scd-form .checks input{width:auto;}
.form-note{font-size:.85rem; color:var(--muted);}
/* contact info block */
.contact-cols{display:grid; grid-template-columns:1fr 1.2fr; gap:40px; align-items:start;}
@media(max-width:820px){.contact-cols{grid-template-columns:1fr;}}
.info-item{display:flex; gap:12px; margin-bottom:18px;}
.info-item .ii{font-size:1.4rem;}
.info-item strong{color:var(--navy-deep); display:block;}

/* ---------- accordions (details/summary) ---------- */
details.card{padding:0; overflow:hidden;}
details.card>summary{list-style:none; cursor:pointer; padding:18px 22px; font-weight:700; color:var(--navy-deep); font-size:1.08rem; display:flex; justify-content:space-between; align-items:center; gap:12px;}
details.card>summary::-webkit-details-marker{display:none;}
details.card>summary::after{content:"+"; font-size:1.5rem; color:var(--red); font-weight:400; line-height:1;}
details.card[open]>summary::after{content:"–";}
details.card>summary:hover{color:var(--red);}
details.card>*:not(summary){padding:0 22px 20px;}
details.card .prose{padding-top:0;}
/* ---------- stat tiles ---------- */
.stat-row{display:grid; grid-template-columns:repeat(3,1fr); gap:20px; text-align:center;}
@media(max-width:620px){.stat-row{grid-template-columns:1fr;}}
.stat{background:var(--navy); color:#fff; border-radius:var(--radius); padding:28px 20px;}
.stat .num{font-size:2.6rem; font-weight:800; line-height:1; color:#fff;}
.stat .lbl{font-size:.9rem; color:#b9c9ef; margin-top:8px; text-transform:uppercase; letter-spacing:.05em;}
.stat.red{background:var(--red);}
.stat.red .lbl{color:#ffd9dc;}

/* ---------- candidate carousel (homepage) ---------- */
.cand-carousel{position:relative;}
.cand-track{display:flex; gap:22px; overflow-x:auto; scroll-snap-type:x mandatory; scroll-behavior:smooth; padding:6px 2px 14px; -webkit-overflow-scrolling:touch;}
.cand-track .cand-card{flex:0 0 236px; scroll-snap-align:start;}
.cand-track::-webkit-scrollbar{height:8px;}
.cand-track::-webkit-scrollbar-track{background:var(--line-soft); border-radius:4px;}
.cand-track::-webkit-scrollbar-thumb{background:var(--line); border-radius:4px;}
.cand-track::-webkit-scrollbar-thumb:hover{background:#c4cfe0;}
.caro-btn{position:absolute; top:42%; transform:translateY(-50%); z-index:5; width:46px; height:46px; border-radius:50%;
  background:#fff; border:1.5px solid var(--line); color:var(--navy); font-size:1.7rem; line-height:1; cursor:pointer;
  box-shadow:var(--shadow); display:grid; place-items:center; transition:.12s;}
.caro-btn:hover{background:var(--navy); color:#fff; border-color:var(--navy);}
.caro-btn.prev{left:-14px;} .caro-btn.next{right:-14px;}
@media(max-width:760px){.caro-btn{display:none;} .cand-track{scroll-snap-type:x proximity;}}

/* ---------- calendar view toggle ---------- */
.cal-toolbar{display:flex; justify-content:center; gap:0; margin-bottom:24px;}
.cal-vbtn{border:2px solid var(--navy); border-left-width:0; background:#fff; color:var(--navy); font-family:inherit;
  font-weight:800; font-size:1.02rem; padding:12px 32px; cursor:pointer; transition:.12s; letter-spacing:.01em;}
.cal-vbtn:first-child{border-left-width:2px; border-radius:4px 0 0 4px;}
.cal-vbtn:last-child{border-radius:0 4px 4px 0;}
.cal-vbtn:hover:not(.active){background:var(--bg-band);}
.cal-vbtn.active{background:var(--navy); color:#fff;}
@media(max-width:480px){.cal-vbtn{padding:11px 20px; font-size:.95rem;}}

/* ---------- top photo montage ---------- */
.montage{display:grid; grid-template-columns:repeat(5,1fr); gap:0; background:var(--navy-dark);}
.montage figure{margin:0; position:relative; overflow:hidden; aspect-ratio:3/4;}
.montage img{width:100%; height:100%; object-fit:cover; transition:transform .5s ease;}
.montage figure:hover img{transform:scale(1.05);}
.montage figure::after{content:""; position:absolute; inset:0; box-shadow:inset 0 0 0 1px rgba(255,255,255,.06);}
@media(max-width:900px){.montage{grid-template-columns:repeat(3,1fr);} .montage figure:nth-child(4),.montage figure:nth-child(5){display:none;}}
@media(max-width:520px){.montage{grid-template-columns:repeat(2,1fr);} .montage figure:nth-child(3){display:none;}}

/* ---------- newsletter band with parade photo ---------- */
.news-band{position:relative; overflow:hidden; background:var(--navy-dark); color:#fff; text-align:center;}
.news-band .news-bg{position:absolute; inset:0; width:100%; height:100%; object-fit:cover; object-position:center 32%; opacity:.5; z-index:0;}
.news-band::after{content:""; position:absolute; inset:0; z-index:1; background:linear-gradient(180deg,rgba(15,39,72,.82),rgba(15,39,72,.9));}
.news-band .container{position:relative; z-index:2; padding-top:clamp(56px,7vw,90px); padding-bottom:clamp(56px,7vw,90px);}
.news-band h2{color:#fff;}
.news-band p{color:#dbe4f7; max-width:600px; margin:0 auto 8px;}
.news-band .btn-red{margin-top:20px;}

/* ---------- custom card icons (SVG, replaces generic emoji) ---------- */
.icon-card .ico{width:64px; height:64px; margin:0 auto 16px; border-radius:3px; display:grid; place-items:center;
  background:linear-gradient(135deg,var(--navy),var(--navy-deep)); color:#fff;}
.icon-card .ico svg{width:32px; height:32px; stroke:#fff; fill:none; stroke-width:1.7; stroke-linecap:round; stroke-linejoin:round;}
.icon-card.accent-red .ico{background:linear-gradient(135deg,var(--red),var(--red-dark));}

/* compact candidate cards (homepage carousel) */
.cand-card.compact .cand-office{margin-bottom:0;}
.cand-card.compact .cand-more{margin-top:14px;}
.cand-office{display:block; color:var(--red); font-weight:700; font-size:.82rem; text-transform:uppercase; letter-spacing:.02em; margin:5px 0 10px;}

/* ---------- montage scroll-reveal (staggered flip + fade, left to right) ---------- */
.montage figure{opacity:0;}
.montage.in figure{animation:montageIn .72s cubic-bezier(.2,.75,.2,1) both; transform-origin:left center; will-change:opacity,transform;}
.montage.in figure:nth-child(1){animation-delay:.05s;}
.montage.in figure:nth-child(2){animation-delay:.17s;}
.montage.in figure:nth-child(3){animation-delay:.29s;}
.montage.in figure:nth-child(4){animation-delay:.41s;}
.montage.in figure:nth-child(5){animation-delay:.53s;}
@keyframes montageIn{
  from{opacity:0; transform:perspective(900px) rotateY(-26deg) translateY(16px);}
  to{opacity:1; transform:none;}
}
/* never leave photos hidden: no-JS or reduced-motion => show immediately */
@media(scripting:none){ .montage figure{opacity:1;} }
@media(prefers-reduced-motion:reduce){ .montage figure{opacity:1;} .montage.in figure{animation:none;} }

/* ---------- impactful mission statement (About) ---------- */
.mission-statement{position:relative; margin:0; text-align:center; padding:34px 12px 6px;}
.mission-statement::before{content:"\201C"; display:block; font-family:Georgia,"Times New Roman",serif; font-size:5rem; line-height:.55; color:var(--red); margin-bottom:10px;}
.mission-statement p{font-size:clamp(1.45rem,3.2vw,2.1rem); font-weight:800; line-height:1.34; color:var(--navy-deep); letter-spacing:-.012em; margin:0;}
.mission-statement cite{display:block; margin-top:20px; font-style:normal; font-weight:800; font-size:.76rem; letter-spacing:.16em; text-transform:uppercase; color:var(--red);}

/* ---------- voter resources: tight link directory ---------- */
.res-cat{margin-bottom:40px;}
.res-cat:last-child{margin-bottom:0;}
.res-cat-head{display:flex; align-items:baseline; flex-wrap:wrap; gap:6px 14px; margin-bottom:18px; padding-bottom:10px; border-bottom:2px solid var(--line);}
.res-cat-head .eyebrow{margin:0;}
.res-cat-head h2{margin:0; font-size:1.45rem; color:var(--navy-deep);}
.res-grid{display:grid; grid-template-columns:repeat(auto-fill,minmax(290px,1fr)); gap:14px;}
.res-card{display:block; position:relative; padding:16px 40px 16px 18px; border:1px solid var(--line); border-radius:3px; background:#fff; transition:transform .14s ease, box-shadow .14s ease, border-color .14s ease;}
.res-card:hover{border-color:var(--navy); box-shadow:var(--shadow); transform:translateY(-2px);}
.res-name{display:block; font-weight:800; color:var(--navy-deep); font-size:1.02rem; line-height:1.25;}
.res-desc{display:block; font-size:.88rem; color:var(--muted); margin-top:4px; line-height:1.45;}
.res-arrow{position:absolute; top:16px; right:16px; color:var(--red); font-weight:800; font-size:1.05rem; transition:transform .14s ease;}
.res-card:hover .res-arrow{transform:translate(2px,-2px);}
/* reusable CTA panel */
.cta-panel{display:flex; align-items:center; justify-content:space-between; gap:26px; flex-wrap:wrap;
  background:#fff; border:1px solid var(--line); border-left:5px solid var(--red); border-radius:3px; padding:26px 28px; box-shadow:var(--shadow);}
.cta-panel h2{margin:.2rem 0 .4rem; color:var(--navy-deep); font-size:1.5rem;}
.cta-panel p{margin:0; color:var(--muted); max-width:60ch;}
.cta-panel .btn{flex:none;}

/* ---------- topbar inline icons (replaces emoji) ---------- */
.topbar span{display:inline-flex; align-items:center;}
.tb-ico{width:14px; height:14px; margin-right:6px; flex:none; fill:none; stroke:currentColor; stroke-width:2; stroke-linecap:round; stroke-linejoin:round; opacity:.85;}

/* ---------- contact page: split form + info aside ---------- */
.contact-split{display:grid; grid-template-columns:1.12fr .88fr; gap:28px; align-items:start;}
@media(max-width:900px){.contact-split{grid-template-columns:1fr;}}
.contact-form-card{background:#fff; border:1px solid var(--line); border-radius:var(--radius); padding:clamp(24px,3vw,38px); box-shadow:var(--shadow);}
.contact-form-card .scd-form{max-width:none;}
.contact-form-card>.eyebrow{margin-bottom:.4rem;}
.contact-form-card h2{font-size:1.5rem; color:var(--navy-deep); margin-bottom:.35em;}
.contact-form-card .form-intro{color:var(--muted); margin:0 0 22px;}
.contact-aside{background:linear-gradient(158deg,var(--navy),var(--navy-dark)); color:#e9eefb;
  border-radius:var(--radius); padding:clamp(24px,3vw,34px); box-shadow:var(--shadow-lg); position:sticky; top:96px;}
@media(max-width:900px){.contact-aside{position:static;}}
.contact-aside .eyebrow{color:#9db8ff; margin-bottom:.5rem;}
.contact-aside h2{color:#fff; font-size:1.4rem; margin-bottom:1.1rem;}
.ci-row{display:flex; gap:15px; padding:15px 0; border-bottom:1px solid rgba(255,255,255,.12);}
.ci-row:first-of-type{padding-top:0;}
.ci-ico{flex:none; width:42px; height:42px; border-radius:var(--radius); background:rgba(255,255,255,.10); display:grid; place-items:center;}
.ci-ico svg{width:21px; height:21px; fill:none; stroke:#bcd0f5; stroke-width:1.8; stroke-linecap:round; stroke-linejoin:round;}
.ci-lbl{font-size:.7rem; letter-spacing:.15em; text-transform:uppercase; color:#9db8ff; font-weight:700; margin-bottom:3px;}
.ci-val{color:#eef3fb; font-size:1rem; line-height:1.45;}
.ci-val a{color:#fff;}
.ci-val a:hover{color:#9db8ff;}
.ci-val .mini{display:inline-block; margin-top:7px; font-size:.84rem; color:#9db8ff; font-weight:700;}
.ci-val .mini:hover{color:#fff;}
.aside-follow{margin-top:22px; padding-top:20px; border-top:1px solid rgba(255,255,255,.12);}
.aside-socials{display:flex; gap:11px; margin-top:12px;}
.aside-socials a{width:40px; height:40px; border-radius:var(--radius); background:rgba(255,255,255,.10);
  display:grid; place-items:center; transition:background .15s ease, transform .15s ease;}
.aside-socials a:hover{background:var(--red); transform:translateY(-2px);}
.aside-socials svg{width:19px; height:19px; fill:#fff;}
/* office map */
.map-embed{border:1px solid var(--line); border-radius:var(--radius); overflow:hidden; box-shadow:var(--shadow); line-height:0;}
.map-embed iframe{width:100%; height:420px; border:0; display:block; filter:grayscale(.15);}
@media(max-width:600px){.map-embed iframe{height:300px;}}


/* ---------- patriotic star texture behind homepage social feed ---------- */
.fb-social{position:relative; overflow:hidden; color:#e9eefb;
  background:radial-gradient(125% 100% at 50% 0%, var(--navy) 0%, var(--navy-dark) 72%);}
.fb-social::before{content:""; position:absolute; inset:0; pointer-events:none;
  background-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2290%22%20height%3D%2290%22%20viewBox%3D%220%200%2090%2090%22%3E%3Cg%20fill%3D%22%23ffffff%22%3E%3Cpath%20fill-opacity%3D%220.07%22%20transform%3D%22translate%289%2C11%29%20scale%280.9%29%22%20d%3D%22M12%202%20L14.9%208.9%20L22%209.5%20L16.6%2014.2%20L18.3%2021.2%20L12%2017.4%20L5.7%2021.2%20L7.4%2014.2%20L2%209.5%20L9.1%208.9%20Z%22%2F%3E%3Cpath%20fill-opacity%3D%220.05%22%20transform%3D%22translate%2853%2C51%29%20scale%280.6%29%22%20d%3D%22M12%202%20L14.9%208.9%20L22%209.5%20L16.6%2014.2%20L18.3%2021.2%20L12%2017.4%20L5.7%2021.2%20L7.4%2014.2%20L2%209.5%20L9.1%208.9%20Z%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E"); background-size:90px 90px; background-position:center;}
.fb-social::after{content:""; position:absolute; left:0; right:0; top:0; height:3px; opacity:.85;
  background:linear-gradient(90deg,var(--red) 0 33.34%,#f4f6fb 33.34% 66.67%,#3a63c4 66.67% 100%);}
.fb-social .container{position:relative; z-index:1;}
.fb-social .section-head h2{color:#fff;}
.fb-social .section-head p{color:#c3d0ef;}
.fb-social .eyebrow{color:#9db8ff;}
.fb-social .fb-embed{border-radius:var(--radius); overflow:hidden; box-shadow:0 18px 46px rgba(0,0,0,.34);}

/* ---------- Run for Office: interactive roadmap ---------- */
.roadmap{max-width:920px; margin:0 auto;}
.rm-head{margin-bottom:28px;}
.rm-stepper{display:flex; gap:2px; overflow-x:auto; padding:6px 2px 12px; margin-bottom:16px; scrollbar-width:thin;}
.rm-dot{flex:1 0 auto; min-width:98px; background:none; border:0; cursor:pointer; display:flex; flex-direction:column;
  align-items:center; gap:9px; padding:6px 4px; color:var(--muted); position:relative;}
.rm-dot::before{content:""; position:absolute; top:19px; left:-50%; width:100%; height:2px; background:var(--line); z-index:0;}
.rm-dot:first-child::before{display:none;}
.rm-dot-num{position:relative; z-index:1; width:38px; height:38px; border-radius:50%; display:grid; place-items:center;
  font-weight:800; background:#fff; border:2px solid var(--line); color:var(--muted); transition:.18s;}
.rm-dot-label{font-size:.76rem; font-weight:700; text-align:center; line-height:1.15;}
.rm-dot:hover .rm-dot-num{border-color:var(--navy); color:var(--navy);}
.rm-dot.is-active{color:var(--navy-deep);}
.rm-dot.is-active .rm-dot-num{background:var(--navy); border-color:var(--navy); color:#fff; box-shadow:0 0 0 4px rgba(24,57,132,.16);}
.rm-dot.is-done .rm-dot-num{background:#137a3f; border-color:#137a3f; color:transparent; font-size:0;}
.rm-dot.is-done .rm-dot-num::after{content:"\2713"; font-size:1.1rem; color:#fff;}
.rm-progress{display:flex; align-items:center; gap:16px; flex-wrap:wrap;}
.rm-progress-bar{flex:1; min-width:180px; height:10px; background:var(--bg-band); border-radius:99px; overflow:hidden;}
.rm-progress-bar span{display:block; height:100%; width:0; border-radius:99px;
  background:linear-gradient(90deg,var(--navy),#137a3f); transition:width .35s ease;}
.rm-progress-txt{font-weight:700; color:var(--navy-deep); font-size:.92rem;}
.rm-count{color:var(--red);}
.rm-reset{background:none; border:0; color:var(--muted); font-weight:600; font-size:.82rem; cursor:pointer;
  text-decoration:underline; text-underline-offset:2px; padding:0;}
.rm-reset:hover{color:var(--red);}
.rm-panels{position:relative;}
.rm-panel{display:none;}
.rm-panel.active{display:block; animation:rmfade .3s ease;}
@keyframes rmfade{from{opacity:0; transform:translateY(8px);} to{opacity:1; transform:none;}}
.rm-panel h2{margin:.1em 0 .3em; outline:none;}
.rm-intro{color:var(--muted); font-size:1.06rem; margin-bottom:1.3rem; max-width:62ch;}
.rm-cards{margin-bottom:1.4rem;}
.rm-cards .card p{margin:0;}
.rm-checklist{list-style:none; padding:0; margin:0 0 1.3rem; display:grid; gap:10px;}
.rm-check{display:flex; align-items:flex-start; gap:13px; padding:14px 16px; border:1px solid var(--line);
  border-radius:var(--radius); background:#fff; cursor:pointer; transition:border-color .15s, background .15s;}
.rm-check:hover{border-color:var(--navy);}
.rm-check:has(input:checked){background:#f2faf5; border-color:#bfe3cd;}
.rm-check input{position:absolute; opacity:0; width:0; height:0;}
.rm-box{flex:none; width:24px; height:24px; border-radius:5px; border:2px solid #c7d2e6; margin-top:1px;
  display:grid; place-items:center; transition:.15s;}
.rm-box::after{content:""; width:6px; height:11px; border:solid #fff; border-width:0 3px 3px 0; margin-top:-2px;
  transform:rotate(45deg) scale(0); transition:transform .15s;}
.rm-check input:checked + .rm-box{background:#137a3f; border-color:#137a3f;}
.rm-check input:checked + .rm-box::after{transform:rotate(45deg) scale(1);}
.rm-check input:focus-visible + .rm-box{outline:3px solid var(--red); outline-offset:2px;}
.rm-task{font-weight:600; color:var(--ink); line-height:1.5;}
.rm-check input:checked ~ .rm-task{color:var(--muted); text-decoration:line-through; text-decoration-color:rgba(19,122,63,.55);}
.rm-resources{display:flex; flex-wrap:wrap; gap:10px; margin-bottom:1.2rem;}
.btn-sm{padding:8px 15px; font-size:.86rem;}
.rm-tips{border:1px solid var(--line); border-radius:var(--radius); background:var(--bg-soft); overflow:hidden;}
.rm-tips>summary{cursor:pointer; padding:13px 18px; font-weight:700; color:var(--navy-deep); list-style:none;
  display:flex; justify-content:space-between; align-items:center; gap:12px;}
.rm-tips>summary::-webkit-details-marker{display:none;}
.rm-tips>summary::after{content:"+"; color:var(--red); font-size:1.4rem; line-height:1; font-weight:400;}
.rm-tips[open]>summary::after{content:"\2013";}
.rm-tips ul{margin:0; padding:0 20px 16px 34px;}
.rm-tips li{margin:.45rem 0; color:var(--body);}
.rm-tips a{color:var(--navy); text-decoration:underline; text-underline-offset:2px;}
.rm-nav{display:flex; justify-content:space-between; gap:12px; margin-top:22px; padding-top:20px; border-top:1px solid var(--line);}
.rm-nav .btn{min-width:132px;}
.rm-prev[disabled]{opacity:.4; cursor:not-allowed; pointer-events:none;}
.rm-complete{display:none; margin-top:22px; padding:24px; border-radius:var(--radius); text-align:center;
  background:linear-gradient(135deg,#137a3f,#0f5e30); color:#fff; box-shadow:var(--shadow-lg);}
.rm-complete.show{display:block; animation:rmfade .4s ease;}
.rm-complete h3{color:#fff; margin-bottom:.3em;}
.rm-complete p{color:#dff3e6; margin:0 0 1rem;}
@media(prefers-reduced-motion:reduce){.rm-panel.active,.rm-complete.show{animation:none;}}
@media(max-width:640px){
  .rm-dot{min-width:76px;}
  .rm-dot-num{width:32px; height:32px; font-size:.9rem;}
  .rm-dot::before{top:16px;}
  .rm-dot-label{font-size:.66rem;}
  .rm-nav .btn{min-width:0; flex:1;}
}

/* ---------- keep buttons readable inside .prose (prose <a> must not recolor them) ---------- */
.prose a.btn{text-decoration:none;}
.prose a.btn-red,.prose a.btn-navy,.prose a.btn-red:hover,.prose a.btn-navy:hover{color:#fff;}
.prose a.btn-ghost,.prose a.btn-white{color:var(--navy);}
.prose a.btn-ghost:hover{color:#fff;}

/* ---------- Run for Office: styled help + office map panel ---------- */
.help-panel{display:grid; grid-template-columns:1.05fr .95fr; border-radius:var(--radius); overflow:hidden; box-shadow:var(--shadow-lg);}
@media(max-width:820px){.help-panel{grid-template-columns:1fr;}}
.help-copy{background:linear-gradient(158deg,var(--navy),var(--navy-dark)); color:#e9eefb; padding:clamp(28px,4vw,46px);}
.help-copy .eyebrow{color:#9db8ff;}
.help-copy h2{color:#fff; margin-bottom:.5em;}
.help-copy>p{color:#c9d6f2; max-width:48ch;}
.help-contacts{margin:22px 0 26px; display:grid; gap:12px;}
.help-row{display:flex; gap:12px; align-items:center; color:#eef3fb; font-size:.98rem; line-height:1.4;}
.help-row svg{width:19px; height:19px; flex:none; fill:none; stroke:#9db8ff; stroke-width:1.9; stroke-linecap:round; stroke-linejoin:round;}
.help-row a{color:#fff;}
.help-row a:hover{color:#9db8ff;}
.help-actions{display:flex; flex-wrap:wrap; gap:12px;}
.help-map{position:relative; background:var(--navy-dark); min-height:300px;}
.help-map .map-embed{height:100%; border:0; border-radius:0; box-shadow:none;}
.help-map .map-embed iframe{height:100%; min-height:300px; filter:grayscale(.12);}
@media(max-width:820px){.help-map{min-height:0;} .help-map .map-embed iframe{height:320px; min-height:320px;}}

/* ---------- larger CTA button + patriotic accent on newsletter band ---------- */
.btn-lg{padding:16px 36px; font-size:1.06rem;}
.news-band::before{content:""; position:absolute; left:0; right:0; top:0; height:4px; z-index:3; opacity:.9;
  background:linear-gradient(90deg,var(--red) 0 33.34%,#f4f6fb 33.34% 66.67%,#3a63c4 66.67% 100%);}

/* ---------- nav dropdown (Candidates > Run for Office) ---------- */
.nav-item.has-sub{position:relative; display:flex; align-items:center;}
.nav-item.has-sub>a{padding-right:4px;}
.nav-caret{background:none; border:0; color:#eaf0ff; cursor:pointer; display:inline-flex; align-items:center; padding:9px 8px 9px 2px; border-radius:6px;}
.nav-caret svg{width:15px; height:15px; fill:none; stroke:currentColor; stroke-width:2.4; stroke-linecap:round; stroke-linejoin:round; transition:transform .2s;}
.nav-item.has-sub.active>a{background:rgba(255,255,255,.12); color:#fff;}
.nav-sub{position:absolute; top:100%; left:0; margin-top:8px; min-width:200px; background:#fff; border-radius:8px;
  box-shadow:0 14px 34px rgba(12,32,60,.30); padding:7px; display:flex; flex-direction:column; gap:2px;
  opacity:0; visibility:hidden; transform:translateY(6px); transition:opacity .16s ease, transform .16s ease, visibility .16s; z-index:120;}
.nav-sub::before{content:""; position:absolute; top:-12px; left:0; right:0; height:14px;}
.nav-item.has-sub:hover .nav-sub, .nav-item.has-sub:focus-within .nav-sub, .nav-item.has-sub.open .nav-sub{opacity:1; visibility:visible; transform:none;}
.nav-item.has-sub:hover .nav-caret svg, .nav-item.has-sub.open .nav-caret svg{transform:rotate(180deg);}
.nav-sub a{color:var(--navy-deep); font-weight:600; font-size:.92rem; padding:10px 14px; border-radius:6px; white-space:nowrap;}
.nav-sub a:hover, .nav-sub a[aria-current="page"]{background:var(--bg-band); color:var(--navy);}
@media(max-width:1000px){
  .nav-item.has-sub{flex-direction:column; align-items:stretch; position:static;}
  .nav-caret{display:none;}
  .nav-sub{position:static; opacity:1; visibility:visible; transform:none; margin:0 0 4px; padding:0 0 0 12px;
    background:transparent; box-shadow:none; min-width:0; border-left:2px solid rgba(255,255,255,.16);}
  .nav-sub::before{display:none;}
  .nav-sub a{color:#cddaf2; font-size:1rem; padding:11px 15px;}
  .nav-sub a:hover, .nav-sub a[aria-current="page"]{background:rgba(255,255,255,.10); color:#fff;}
}

/* ---------- accountability / opposition pages ---------- */
.record-block{margin-bottom:clamp(28px,4vw,46px);}
.record-block:last-child{margin-bottom:0;}
.record-block h2{color:var(--navy-deep);}
.record-lead{font-size:1.08rem;}
.quote-contrast{border-left:4px solid var(--red); background:var(--bg-soft); padding:16px 20px 14px; border-radius:var(--radius); margin:16px 0; font-size:1.12rem; font-style:italic; color:var(--ink);}
.quote-contrast .who{display:block; margin-top:8px; font-size:.82rem; color:var(--muted); font-weight:700; font-style:normal; letter-spacing:.02em;}
.table-wrap{overflow-x:auto; border:1px solid var(--line); border-radius:var(--radius); box-shadow:var(--shadow);}
.vote-table{width:100%; border-collapse:collapse; min-width:660px; font-size:.95rem;}
.vote-table th,.vote-table td{text-align:left; padding:13px 16px; border-bottom:1px solid var(--line); vertical-align:top;}
.vote-table thead th{background:var(--navy); color:#fff; font-size:.76rem; text-transform:uppercase; letter-spacing:.06em; font-weight:700;}
.vote-table tbody tr:last-child td{border-bottom:0;}
.vote-table tbody tr:nth-child(even){background:var(--bg-soft);}
.vote-table .v{font-weight:800; color:var(--red); white-space:nowrap;}
.src{font-size:.68em; vertical-align:super; color:var(--red); font-weight:700; text-decoration:none; padding:0 1px;}
.src:hover{text-decoration:underline; color:var(--red-dark);}
.sources-list{font-size:.9rem; color:var(--muted); padding-left:1.4em;}
.sources-list li{margin:.55rem 0; word-break:break-word;}
.sources-list a{color:var(--navy); text-decoration:underline; text-underline-offset:2px;}
.sources-list a:hover{color:var(--red);}
.oppo-note{font-size:.9rem; color:var(--muted); border-top:1px solid var(--line); margin-top:8px; padding-top:14px;}

/* ============================================================
   Dark, dynamic "accountability dossier" theme (opposition pages)
   Scoped under .oppo-dark so the rest of the site is untouched.
   ============================================================ */
.oppo-dark{
  --od-red:#ff3b44; --od-line:rgba(255,255,255,.11); --od-text:#c6d3ee; --od-dim:#8aa0c8;
  background:radial-gradient(115% 75% at 50% 0%, #12294f 0%, #0b1c39 46%, #081124 100%);
  color:var(--od-text);
}
.oppo-dark h1,.oppo-dark h2,.oppo-dark h3{color:#fff;}
.oppo-dark p{color:var(--od-text);}
.oppo-dark strong{color:#fff;}
.oppo-dark .eyebrow{color:var(--od-red);}
.oppo-dark .band-soft{background:transparent;}
.oppo-dark .section-head p{color:var(--od-dim);}
/* hero — darker, bigger, more dramatic */
.oppo-dark .hero{background:transparent;}
.oppo-dark .hero::after{background:linear-gradient(180deg,rgba(8,17,36,.66) 0%,rgba(8,17,36,.86) 70%,#081124 100%);}
.oppo-dark .hero-bg{opacity:.32; filter:grayscale(.35) contrast(1.06);}
.oppo-dark .hero h1{font-size:clamp(2.6rem,7vw,4.6rem); letter-spacing:-.025em; text-shadow:0 2px 34px rgba(0,0,0,.55);}
.oppo-dark .hero .eyebrow{color:var(--od-red); text-shadow:0 1px 12px rgba(255,59,68,.4);}
/* animated stat strip */
.od-stats{display:grid; grid-template-columns:repeat(3,1fr); gap:18px;}
@media(max-width:720px){.od-stats{grid-template-columns:1fr;}}
.od-stat{background:linear-gradient(180deg,rgba(255,59,68,.12),rgba(255,255,255,.02)); border:1px solid var(--od-line);
  border-radius:8px; padding:26px 22px; text-align:center; transition:opacity .6s ease, transform .6s ease;}
.oppo-dark.reveal-on .od-stat{opacity:0; transform:translateY(22px);}
.od-stat.in{opacity:1; transform:none;}
.od-num{display:block; font-size:clamp(2.5rem,5.5vw,3.6rem); font-weight:900; color:#fff; line-height:1; letter-spacing:-.02em;}
.od-label{display:block; margin-top:11px; font-size:.9rem; color:var(--od-dim); font-weight:600; line-height:1.35;}
/* record blocks — dark panels, red spine, slide-in reveal */
.oppo-dark .record-block{background:linear-gradient(180deg,rgba(255,255,255,.045),rgba(255,255,255,.012));
  border:1px solid var(--od-line); border-left:4px solid var(--od-red); border-radius:8px;
  padding:clamp(22px,3vw,36px); margin-bottom:22px; transition:opacity .6s ease, transform .6s ease;}
.oppo-dark.reveal-on .record-block{opacity:0; transform:translateY(26px);}
.oppo-dark .record-block.in{opacity:1; transform:none;}
.oppo-dark .record-block h2{font-size:clamp(1.5rem,3vw,2.15rem); margin-bottom:.4em;}
.oppo-dark .record-block li{color:var(--od-text); margin:.5rem 0;}
.oppo-dark .record-block li::marker{color:var(--od-red);}
.oppo-dark .oppo-note{color:var(--od-dim); border-top-color:var(--od-line);}
/* pull-quotes */
.oppo-dark .quote-contrast{background:rgba(255,59,68,.09); border-left:4px solid var(--od-red); color:#eef2fb;
  position:relative; padding:18px 22px 16px 54px;}
.oppo-dark .quote-contrast::before{content:"\201C"; position:absolute; left:14px; top:6px; font-size:3.2rem; line-height:1;
  color:var(--od-red); font-family:Georgia,"Times New Roman",serif; opacity:.75;}
.oppo-dark .quote-contrast .who{color:var(--od-dim);}
/* voting-record table — dark with red badges */
.oppo-dark .table-wrap{border-color:var(--od-line); background:rgba(255,255,255,.02); box-shadow:0 24px 54px rgba(0,0,0,.4);}
.oppo-dark .vote-table th,.oppo-dark .vote-table td{border-color:var(--od-line); color:var(--od-text);}
.oppo-dark .vote-table thead th{background:#0c1e3d; color:#fff;}
.oppo-dark .vote-table tbody tr:nth-child(even){background:rgba(255,255,255,.028);}
.oppo-dark .vote-table strong{color:#fff;}
.oppo-dark .vote-table .v{display:inline-block; background:var(--od-red); color:#fff; padding:4px 11px;
  border-radius:3px; font-size:.8rem; letter-spacing:.05em; box-shadow:0 4px 12px rgba(255,59,68,.3);}
/* sources + refs + buttons on dark */
.oppo-dark .src{color:var(--od-red);}
.oppo-dark .sources-list{color:var(--od-dim);}
.oppo-dark .sources-list a{color:#9db8ff;}
.oppo-dark .sources-list a:hover{color:#fff;}
.oppo-dark .btn-navy{background:#16305c;}
.oppo-dark .btn-navy:hover{background:#1d3d70;}
@media(prefers-reduced-motion:reduce){
  .oppo-dark .record-block,.od-stat{opacity:1; transform:none; transition:none;}
}

/* ---------- oppo hero portrait (halftone print) ---------- */
.oppo-hero-grid{display:grid; grid-template-columns:auto minmax(0,1fr); gap:clamp(22px,4vw,48px); align-items:center; text-align:left; max-width:920px; margin:0 auto;}
.oppo-hero-copy .eyebrow{color:var(--od-red);}
.oppo-portrait{margin:0; width:clamp(180px,24vw,268px); flex:none;}
.oppo-portrait img{width:100%; height:auto; display:block; border-radius:3px;
  border:1px solid rgba(255,255,255,.22); box-shadow:0 24px 58px rgba(0,0,0,.6);}
.oppo-credit{margin:.5rem 0 0; font-size:.64rem; letter-spacing:.02em; color:rgba(214,224,247,.5); text-align:center;}
@media(max-width:720px){
  .oppo-hero-grid{grid-template-columns:1fr; justify-items:center; text-align:center; gap:22px;}
  .oppo-portrait{width:min(210px,58vw);}
  .oppo-hero-copy p{margin-left:auto; margin-right:auto;}
}

/* highlighter emphasis inside dark accountability pages — sweeps on when its block reveals */
.oppo-dark .hl{background-image:linear-gradient(rgba(198,44,46,.46), rgba(198,44,46,.46));
  background-repeat:no-repeat; background-position:0 0; background-size:100% 100%; color:#fff; font-weight:700; padding:.05em 5px; border-radius:2px;
  -webkit-box-decoration-break:clone; box-decoration-break:clone;
  transition:background-size .75s cubic-bezier(.4,0,.2,1) .3s;}
.oppo-dark.reveal-on .hl{background-size:0% 100%;}
.oppo-dark.reveal-on .record-block.in .hl{background-size:100% 100%;}
@media(prefers-reduced-motion:reduce){.oppo-dark .hl{transition:none; background-size:100% 100%;}}

/* ===== scroll-story accountability layout (.oppo-scroll) ===== */
.oppo-scroll .osc-hero{position:relative;min-height:88vh;display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center;gap:15px;padding:70px 20px 46px;}
.oppo-scroll .osc-hero .hero-bg{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:.13;z-index:0;}
.oppo-scroll .osc-hero>*{position:relative;z-index:1;}
.oppo-portrait-lg{width:clamp(120px,15vw,166px);height:auto;border:1px solid rgba(255,255,255,.2);border-radius:3px;box-shadow:0 22px 54px rgba(0,0,0,.55);}
.oppo-scroll .osc-hero h1{color:#fff;font-size:clamp(2.5rem,7vw,4.8rem);letter-spacing:-.02em;margin:.12em 0;}
.osc-sub{font:700 .8rem/1.4 ui-monospace,monospace;letter-spacing:.05em;text-transform:uppercase;color:#8ba0c4;margin:0;}
.osc-thesis{color:#cdd6ea;max-width:34ch;font-size:clamp(1.05rem,2.3vw,1.32rem);margin:.2rem auto 0;}
.osc-cue{margin-top:12px;font:700 .66rem/1 ui-monospace,monospace;letter-spacing:.2em;text-transform:uppercase;color:#8ba0c4;animation:oscbob 1.8s ease-in-out infinite;}
@keyframes oscbob{0%,100%{transform:translateY(0);opacity:.55}50%{transform:translateY(6px);opacity:1}}
.oppo-scroll .scrolly{display:grid;grid-template-columns:290px minmax(0,1fr);gap:clamp(24px,5vw,58px);max-width:1080px;margin:0 auto;padding:0 clamp(16px,4vw,24px);}
.osc-sticky{position:sticky;top:0;height:100vh;display:flex;flex-direction:column;justify-content:center;gap:15px;}
.osc-simg{width:88px;height:auto;object-fit:cover;border:1px solid rgba(255,255,255,.15);border-radius:3px;}
.osc-lab{font:700 .66rem/1 ui-monospace,monospace;letter-spacing:.2em;text-transform:uppercase;color:var(--od-red);}
.osc-count{font-weight:800;font-size:clamp(3.4rem,7vw,5.2rem);line-height:.85;color:#fff;letter-spacing:-.04em;font-variant-numeric:tabular-nums;}
.osc-count small{font-size:.34em;color:#8ba0c4;font-weight:800;}
.osc-topic{font-weight:700;color:#dfe7f6;min-height:2.7em;font-size:1.02rem;line-height:1.3;}
.osc-ticks{display:flex;gap:5px;}
.osc-tick{flex:1;height:4px;background:rgba(255,255,255,.13);border-radius:2px;transition:background .35s;}
.osc-tick.on{background:var(--od-red);}
.oppo-scroll .osc-track{padding:6vh 0 2vh;}
.osc-rec{min-height:76vh;display:flex;align-items:center;}
.oppo-scroll .osc-rec .record-block{margin:0;width:100%;position:relative;overflow:hidden;}
.osc-stamp{position:absolute;right:clamp(18px,3vw,34px);bottom:clamp(18px,4vw,32px);z-index:3;font-weight:800;font-size:1.02rem;line-height:.95;text-transform:uppercase;text-align:center;color:var(--od-red);border:3px solid var(--od-red);border-radius:4px;padding:9px 12px;transform:rotate(-11deg) scale(1.6);opacity:0;transition:opacity .5s,transform .5s;transition-delay:.18s;}
.oppo-dark .record-block.in .osc-stamp{opacity:.9;transform:rotate(-11deg) scale(1);}
.oppo-scroll .osc-verdict{max-width:760px;margin:0 auto;text-align:center;padding:13vh 24px 6vh;}
.osc-big{font-weight:800;font-size:clamp(5rem,17vw,11rem);line-height:.82;color:var(--od-red);letter-spacing:-.04em;}
.oppo-scroll .osc-verdict h2{color:#fff;font-size:clamp(1.9rem,5vw,3rem);margin:.1em 0 .4em;}
.oppo-scroll .osc-verdict p{color:#cdd6ea;max-width:36ch;margin:0 auto 1.4rem;font-size:1.08rem;}
.osc-cta-row{display:flex;gap:14px;justify-content:center;flex-wrap:wrap;}
@media(max-width:760px){
  .oppo-scroll .scrolly{grid-template-columns:1fr;gap:0;}
  .osc-sticky{position:sticky;top:0;height:auto;flex-direction:row;align-items:center;gap:12px;padding:11px 0;background:rgba(6,10,20,.94);border-bottom:1px solid rgba(255,255,255,.1);z-index:30;}
  .osc-simg,.oppo-scroll .osc-ticks{display:none;}
  .osc-count{font-size:2.5rem;}
  .osc-topic{min-height:0;font-size:.82rem;flex:1;}
  .osc-rec{min-height:auto;padding:5vh 0;}
  .osc-stamp{font-size:.82rem;bottom:14px;right:14px;}
}
@media(prefers-reduced-motion:reduce){.osc-cue{animation:none;}.osc-stamp{transition:none;opacity:.9;transform:rotate(-11deg);}}

/* ===== Fight Back hub — aggressive dark accountability landing ===== */
.fb .fb-hero{position:relative;min-height:74vh;display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center;gap:14px;padding:78px 20px 54px;}
.fb .fb-hero .hero-bg{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:.12;z-index:0;}
.fb .fb-hero>*{position:relative;z-index:1;}
.fb .fb-hero h1{color:#fff;font-size:clamp(2.8rem,9vw,6.4rem);line-height:.94;letter-spacing:-.03em;margin:.08em 0;max-width:15ch;}
.fb .fb-kicker{font:800 clamp(1.15rem,3vw,1.75rem)/1.22 "Helvetica Neue",Arial,sans-serif;color:var(--od-red);max-width:24ch;margin:0 auto;letter-spacing:-.01em;}
.fb .fb-lead{color:#cdd6ea;max-width:58ch;font-size:clamp(1.05rem,2.2vw,1.24rem);margin:.6rem auto 0;}
.fb .sec-eyebrow{display:block;text-align:center;font:700 .74rem/1 ui-monospace,monospace;letter-spacing:.26em;text-transform:uppercase;color:var(--od-red);margin-bottom:8px;}
.fb .sec-title{text-align:center;color:#fff;font-size:clamp(2rem,5vw,3.2rem);letter-spacing:-.02em;margin:0 auto 2.4rem;max-width:20ch;text-wrap:balance;}
.fb-machine{max-width:900px;margin:0 auto;}
.fb-tier{position:relative;border:1px solid rgba(255,255,255,.1);border-left:5px solid var(--od-red);background:linear-gradient(180deg,rgba(255,255,255,.05),rgba(255,255,255,.012));border-radius:4px;padding:clamp(22px,3vw,34px);}
.fb-tier+.fb-tier{margin-top:46px;}
.fb-tier::after{content:"";position:absolute;left:2px;bottom:-46px;width:3px;height:46px;background:var(--od-red);}
.fb-tier:last-of-type::after{display:none;}
.fb-tier .lvl{font:700 .72rem/1 ui-monospace,monospace;letter-spacing:.24em;text-transform:uppercase;color:var(--od-red);}
.fb-tier h3{color:#fff;font-size:clamp(1.5rem,3.4vw,2.15rem);margin:.35rem 0 .55rem;letter-spacing:-.01em;line-height:1.05;}
.fb-tier p{color:#cdd6ea;margin:0 0 1.1rem;max-width:62ch;}
.fb-chips{display:flex;flex-wrap:wrap;gap:8px;}
.fb .fb-chip{font:700 .8rem/1 "Helvetica Neue",Arial,sans-serif;color:#e9e1ce;background:rgba(210,59,54,.15);border:1px solid rgba(210,59,54,.42);border-radius:999px;padding:8px 14px;text-decoration:none;transition:.15s;}
.fb .fb-chip:hover,.fb .fb-chip:focus-visible{background:var(--od-red);color:#fff;}
.fb .fb-lands{text-align:center;font:800 clamp(1.5rem,4.4vw,2.6rem)/1.08 "Helvetica Neue",Arial,sans-serif;color:#fff;margin:52px auto 0;max-width:20ch;letter-spacing:-.01em;}
.fb .fb-lands span{color:var(--od-red);}
.fb-branches{display:grid;grid-template-columns:repeat(auto-fit,minmax(258px,1fr));gap:16px;max-width:1040px;margin:0 auto;}
.fb-branch{border:1px solid rgba(255,255,255,.1);border-top:4px solid var(--od-red);border-radius:4px;padding:clamp(20px,2.5vw,28px);background:linear-gradient(180deg,rgba(255,255,255,.045),rgba(255,255,255,.01));}
.fb-branch h3{color:#fff;font-size:1.32rem;margin:0 0 .45rem;letter-spacing:-.01em;}
.fb-branch p{color:#cdd6ea;margin:0;font-size:.98rem;line-height:1.5;}
.receipts-group{max-width:1080px;margin:0 auto 30px;}
.receipts-group .lvl{font:700 .72rem/1 ui-monospace,monospace;letter-spacing:.22em;text-transform:uppercase;color:var(--od-red);margin-bottom:14px;display:block;}
.receipts-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:12px;}
.fb .receipt{display:block;text-decoration:none;border:1px solid rgba(255,255,255,.1);border-radius:4px;overflow:hidden;background:#0b1220;transition:.18s;}
.fb .receipt:hover,.fb .receipt:focus-visible{border-color:var(--od-red);transform:translateY(-3px);}
.receipt .rc-img{aspect-ratio:3/4;overflow:hidden;background:linear-gradient(160deg,#3a0e10,#0b1220);}
.receipt .rc-img img{width:100%;height:100%;object-fit:cover;object-position:center top;display:block;}
.receipt .rc-ph{width:100%;height:100%;display:flex;align-items:center;justify-content:center;color:rgba(255,255,255,.28);font:800 2.1rem/1 "Helvetica Neue",Arial,sans-serif;}
.receipt .rc-meta{padding:10px 12px 12px;}
.receipt .rc-name{color:#fff;font-weight:800;font-size:.98rem;line-height:1.15;}
.receipt .rc-office{color:#8ba0c4;font:600 .72rem/1.3 ui-monospace,monospace;text-transform:uppercase;margin-top:3px;}
@media(max-width:600px){.receipts-grid{grid-template-columns:repeat(2,1fr);}}

/* fight-back rogues' gallery reel */
.fb .fb-reel{max-width:1000px;margin:0 auto;}
.fb .reel-stage{display:grid;grid-template-columns:300px 1fr;gap:clamp(24px,4vw,48px);align-items:center;min-height:400px;margin-bottom:30px;}
.fb .reel-figure{aspect-ratio:3/4;border:1px solid rgba(255,255,255,.14);border-radius:4px;overflow:hidden;background:linear-gradient(160deg,#3a0e10,#0b1220);}
.fb .reel-figure img{width:100%;height:100%;object-fit:cover;object-position:center top;display:block;}
.fb .reel-noimg{width:100%;height:100%;display:flex;align-items:center;justify-content:center;text-align:center;padding:18px;font:800 clamp(1.5rem,4vw,2.4rem)/1.05 "Helvetica Neue",Arial,sans-serif;color:#fff;background:linear-gradient(160deg,#a3231f,#3a0e10);letter-spacing:-.01em;}
.fb .reel-name{color:#fff;font:800 clamp(2rem,5vw,3.4rem)/1 "Helvetica Neue",Arial,sans-serif;letter-spacing:-.02em;}
.fb .reel-office{color:#8ba0c4;font:700 .78rem/1 ui-monospace,monospace;letter-spacing:.08em;text-transform:uppercase;margin-top:9px;}
.fb .reel-hit{color:#fff;font:800 clamp(1.35rem,3.2vw,2.05rem)/1.16 "Helvetica Neue",Arial,sans-serif;margin:20px 0 0;letter-spacing:-.01em;text-wrap:balance;border-left:5px solid var(--od-red);padding-left:16px;}
.fb .reel-link{display:inline-block;margin-top:20px;color:var(--od-red);font:700 .95rem/1 "Helvetica Neue",Arial,sans-serif;text-decoration:none;}
.fb .reel-link:hover,.fb .reel-link:focus-visible{text-decoration:underline;}
.fb .reel-in .reel-figure,.fb .reel-in .reel-name,.fb .reel-in .reel-hit{animation:reelpop .5s cubic-bezier(.2,.8,.2,1) both;}
@keyframes reelpop{from{opacity:0;transform:translateY(12px) scale(.98)}to{opacity:1;transform:none}}
.fb .reel-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(92px,1fr));gap:8px;}
.fb .reel-tile{position:relative;display:block;aspect-ratio:3/4;border:1px solid rgba(255,255,255,.1);border-radius:3px;overflow:hidden;background:#0b1220;filter:grayscale(.45) brightness(.62);transition:filter .2s,transform .2s,box-shadow .2s,border-color .2s;text-decoration:none;}
.fb .reel-tile img{width:100%;height:100%;object-fit:cover;object-position:center top;display:block;}
.fb .reel-tile .ti{width:100%;height:100%;display:flex;align-items:center;justify-content:center;color:rgba(255,255,255,.32);font:800 1.15rem/1 "Helvetica Neue",Arial,sans-serif;}
.fb .reel-tile:hover,.fb .reel-tile:focus-visible{filter:none;}
.fb .reel-tile.on{filter:none;border-color:var(--od-red);box-shadow:0 0 0 2px var(--od-red);transform:scale(1.05);z-index:2;}
.fb .reel-note{text-align:center;color:#8ba0c4;font:600 .74rem/1.4 ui-monospace,monospace;letter-spacing:.04em;text-transform:uppercase;margin:18px 0 0;}
@media(max-width:640px){
  .fb .reel-stage{grid-template-columns:1fr;text-align:center;min-height:0;gap:20px;}
  .fb .reel-figure{max-width:210px;margin:0 auto;}
  .fb .reel-hit{border-left:none;padding-left:0;border-top:4px solid var(--od-red);padding-top:14px;display:inline-block;}
  .fb .reel-grid{grid-template-columns:repeat(auto-fill,minmax(68px,1fr));}
}
@media(prefers-reduced-motion:reduce){.fb .reel-in .reel-figure,.fb .reel-in .reel-name,.fb .reel-in .reel-hit{animation:none;}}

/* ===== fight-back reel v3: the descent ===== */
.fb .fb-scrolldown{margin-top:20px;font:700 .68rem/1 ui-monospace,monospace;letter-spacing:.22em;text-transform:uppercase;color:#8ba0c4;animation:oscbob 1.9s ease-in-out infinite;}
.fb .fb-reel{max-width:1120px;margin:0 auto;border:1px solid rgba(255,255,255,.1);border-radius:6px;background:linear-gradient(180deg,rgba(255,255,255,.045),rgba(255,255,255,.008));overflow:hidden;transition:box-shadow .6s;}
.fb .fb-reel[data-lvl="1"]{box-shadow:inset 0 -90px 120px -80px rgba(210,59,54,.35);}
.fb .fb-reel[data-lvl="2"]{box-shadow:inset 0 -140px 150px -80px rgba(210,59,54,.6);}
.fb .reel-head{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:16px clamp(16px,3vw,26px);border-bottom:1px solid rgba(255,255,255,.09);}
.fb .reel-ctrl{display:flex;align-items:center;gap:14px;}
.fb .reel-count{font:800 1.5rem/1 "Helvetica Neue",Arial,sans-serif;color:#fff;font-variant-numeric:tabular-nums;letter-spacing:-.02em;}
.fb .reel-count em{font-style:normal;font-size:.55em;color:#8ba0c4;font-weight:800;}
.fb .reel-toggle{background:transparent;border:1px solid rgba(255,255,255,.22);color:#e9e1ce;border-radius:3px;padding:7px 14px;font:700 .72rem/1 ui-monospace,monospace;letter-spacing:.12em;text-transform:uppercase;cursor:pointer;transition:.15s;}
.fb .reel-toggle:hover,.fb .reel-toggle:focus-visible{border-color:var(--od-red);color:var(--od-red);}
.fb .reel-body{display:grid;grid-template-columns:210px minmax(0,1fr);gap:clamp(18px,3vw,34px);padding:clamp(20px,3vw,32px);}
.fb .reel-rail{position:relative;padding-left:22px;display:flex;flex-direction:column;justify-content:center;gap:30px;}
.fb .rail-line{position:absolute;left:6px;top:8px;bottom:34px;width:2px;background:rgba(255,255,255,.14);}
.fb .rail-step{position:relative;opacity:.4;transition:opacity .45s,transform .45s;}
.fb .rail-step.past{opacity:.7;}
.fb .rail-step.on{opacity:1;transform:translateX(4px);}
.fb .rail-dot{position:absolute;left:-22px;top:5px;width:13px;height:13px;border-radius:50%;border:2px solid rgba(255,255,255,.3);background:#0b1220;transition:.45s;}
.fb .rail-step.past .rail-dot{background:var(--od-red);border-color:var(--od-red);}
.fb .rail-step.on .rail-dot{background:var(--od-red);border-color:var(--od-red);box-shadow:0 0 0 6px rgba(210,59,54,.25);}
.fb .rail-name{display:block;color:#fff;font:800 1.12rem/1.1 "Helvetica Neue",Arial,sans-serif;letter-spacing:-.01em;}
.fb .rail-step.on .rail-name{color:var(--od-red);}
.fb .rail-sub{display:block;color:#8ba0c4;font-size:.82rem;line-height:1.35;margin-top:3px;}
.fb .rail-count{display:block;color:#6f83a6;font:700 .64rem/1 ui-monospace,monospace;letter-spacing:.14em;text-transform:uppercase;margin-top:6px;}
.fb .rail-tip{display:block;margin-top:6px;color:var(--od-red);font:800 .7rem/1.3 ui-monospace,monospace;letter-spacing:.1em;text-transform:uppercase;max-width:15ch;}
.fb .reel-stage{display:grid;grid-template-columns:220px minmax(0,1fr);gap:clamp(18px,3vw,34px);align-items:center;}
.fb .reel-stage.in .reel-figure{animation:fbfig .5s cubic-bezier(.2,.8,.2,1) both;}
.fb .reel-stage.in .reel-name{animation:fbslam .42s cubic-bezier(.2,1,.3,1) both;}
.fb .reel-stage.in .reel-hit{animation:fbslam .5s cubic-bezier(.2,1,.3,1) .08s both;}
@keyframes fbfig{from{opacity:0;transform:scale(1.06)}to{opacity:1;transform:none}}
@keyframes fbslam{from{opacity:0;transform:translateX(-16px)}to{opacity:1;transform:none}}
.fb .reel-figure{aspect-ratio:3/4;}
.fb .reel-noimg{flex-direction:column;gap:8px;}
.fb .reel-noimg em{font:700 .6rem/1 ui-monospace,monospace;letter-spacing:.14em;text-transform:uppercase;color:rgba(255,255,255,.55);font-style:normal;}
.fb .reel-progress{height:3px;background:rgba(255,255,255,.1);border-radius:2px;margin:22px 0 16px;overflow:hidden;}
.fb .reel-progress span{display:block;height:100%;width:0;background:var(--od-red);}
@keyframes fbbar{from{width:0}to{width:100%}}
.fb .reel-tile{position:relative;}
.fb .tile-name{position:absolute;left:0;right:0;bottom:0;padding:12px 4px 4px;font:800 .6rem/1 "Helvetica Neue",Arial,sans-serif;text-align:center;color:#fff;background:linear-gradient(transparent,rgba(6,10,20,.9));opacity:0;transition:opacity .2s;text-transform:uppercase;letter-spacing:.02em;}
.fb .reel-tile:hover .tile-name,.fb .reel-tile.on .tile-name{opacity:1;}
.fb .reel-ticker{border-top:1px solid rgba(255,255,255,.09);overflow:hidden;padding:11px 0;background:rgba(0,0,0,.22);}
.fb .tk-track{display:flex;gap:26px;width:max-content;animation:tkroll 34s linear infinite;}
.fb .tk{font:700 .72rem/1 ui-monospace,monospace;letter-spacing:.14em;color:#7d92b8;white-space:nowrap;}
.fb .tk::after{content:"";}
@keyframes tkroll{from{transform:translateX(0)}to{transform:translateX(-50%)}}
@media(max-width:860px){
  .fb .reel-body{grid-template-columns:1fr;gap:22px;}
  .fb .reel-rail{flex-direction:row;justify-content:space-between;gap:10px;padding-left:0;padding-top:20px;}
  .fb .rail-line{left:0;right:0;top:6px;bottom:auto;width:auto;height:2px;}
  .fb .rail-dot{left:0;top:-20px;}
  .fb .rail-sub,.fb .rail-count,.fb .rail-tip{display:none;}
  .fb .rail-name{font-size:.86rem;}
}
@media(max-width:640px){
  .fb .reel-stage{grid-template-columns:1fr;text-align:center;}
  .fb .reel-figure{max-width:190px;margin:0 auto;}
}
@media(prefers-reduced-motion:reduce){
  .fb .fb-scrolldown,.fb .tk-track{animation:none;}
  .fb .reel-stage.in .reel-figure,.fb .reel-stage.in .reel-name,.fb .reel-stage.in .reel-hit{animation:none;}
}

/* ===== fight-back v4: somber — the ledger, their words, the cost ===== */
.fb-somber .fb-hero{min-height:80vh;}
.fb-somber .fb-hero h1{font-size:clamp(2.7rem,8.5vw,6rem);}
.fb-somber .section{padding:clamp(56px,9vw,110px) 0;}
/* Act I — the ledger */
.fb-ledger{list-style:none;margin:0;padding:0;border-top:1px solid rgba(255,255,255,.12);}
.fb-ledger .ldg{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.05fr);gap:clamp(12px,3vw,34px);
  padding:clamp(18px,2.6vw,26px) 0;border-bottom:1px solid rgba(255,255,255,.12);align-items:baseline;
  opacity:0;transform:translateY(14px);transition:opacity .7s ease,transform .7s ease;}
.fb-ledger .ldg.in{opacity:1;transform:none;}
.ldg-what{color:#fff;font:800 clamp(1.16rem,2.6vw,1.72rem)/1.14 "Helvetica Neue",Arial,sans-serif;letter-spacing:-.015em;}
.ldg-how{color:#93a6c6;font-size:clamp(.94rem,1.9vw,1.04rem);line-height:1.5;}
.ldg-foot{margin:clamp(30px,4vw,46px) 0 0;text-align:center;color:var(--od-red);
  font:800 clamp(1.02rem,2.3vw,1.32rem)/1.4 "Helvetica Neue",Arial,sans-serif;letter-spacing:-.01em;}
/* Act II — their words vs. the cost */
.fb-words-sec{background:linear-gradient(180deg,rgba(0,0,0,.34),rgba(0,0,0,.14));}
.w-head{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-bottom:clamp(26px,4vw,44px);}
.w-stage{max-width:960px;margin:0 auto;min-height:min(560px,72vh);}
.w-quote{margin:0;color:#fff;font:700 clamp(1.6rem,4.6vw,3.35rem)/1.2 Georgia,"Times New Roman",serif;
  letter-spacing:-.015em;text-wrap:balance;border-left:3px solid rgba(210,59,54,.55);padding-left:clamp(16px,3vw,30px);
  opacity:0;transform:translateY(16px);transition:opacity .9s ease,transform .9s ease;}
.w-stage.s1 .w-quote{opacity:1;transform:none;}
.w-costwrap{margin:clamp(26px,4vw,44px) 0 0;padding-left:clamp(16px,3vw,33px);
  opacity:0;transform:translateY(16px);transition:opacity .9s ease .05s,transform .9s ease .05s;}
.w-stage.s2 .w-costwrap{opacity:1;transform:none;}
.w-costlabel{display:block;font:700 .7rem/1 ui-monospace,monospace;letter-spacing:.28em;text-transform:uppercase;color:var(--od-red);margin-bottom:12px;}
.w-costline{display:flex;align-items:baseline;gap:clamp(12px,2.2vw,20px);flex-wrap:wrap;}
.w-num{color:var(--od-red);font:800 clamp(2.6rem,8vw,5.4rem)/.9 "Helvetica Neue",Arial,sans-serif;letter-spacing:-.04em;font-variant-numeric:tabular-nums;}
.w-cost{color:#e4ebf8;font-size:clamp(1rem,2.1vw,1.28rem);line-height:1.45;max-width:34ch;}
.w-whowrap{display:flex;align-items:center;gap:16px;margin:clamp(26px,4vw,42px) 0 0;padding-left:clamp(16px,3vw,33px);
  opacity:0;transform:translateY(12px);transition:opacity .8s ease,transform .8s ease;}
.w-stage.s3 .w-whowrap{opacity:1;transform:none;}
.w-fig{width:72px;height:94px;flex:none;border:1px solid rgba(255,255,255,.16);border-radius:2px;overflow:hidden;background:linear-gradient(160deg,#3a0e10,#0b1220);}
.w-fig img{width:100%;height:100%;object-fit:cover;object-position:center top;display:block;}
.w-noimg{width:100%;height:100%;display:flex;align-items:center;justify-content:center;text-align:center;padding:5px;color:#fff;font:800 .58rem/1.1 "Helvetica Neue",Arial,sans-serif;background:linear-gradient(160deg,#a3231f,#3a0e10);}
.w-whotxt{display:flex;flex-direction:column;gap:2px;}
.w-said{font:700 .64rem/1 ui-monospace,monospace;letter-spacing:.22em;text-transform:uppercase;color:#7d92b8;}
.w-who{color:#fff;font:800 clamp(1.15rem,2.6vw,1.6rem)/1.1 "Helvetica Neue",Arial,sans-serif;letter-spacing:-.01em;}
.w-role{color:#93a6c6;font:600 .8rem/1.3 ui-monospace,monospace;}
.w-link{margin-top:5px;color:var(--od-red);font:700 .82rem/1 "Helvetica Neue",Arial,sans-serif;text-decoration:none;}
.w-link:hover,.w-link:focus-visible{text-decoration:underline;}
.w-src{margin:clamp(20px,3vw,30px) 0 0;padding-left:clamp(16px,3vw,33px);color:#6f83a6;font:600 .7rem/1.4 ui-monospace,monospace;letter-spacing:.04em;
  opacity:0;transition:opacity .8s ease;}
.w-stage.s3 .w-src{opacity:1;}
.w-dots{display:flex;gap:7px;justify-content:center;margin-top:clamp(26px,4vw,40px);}
.wdot{width:34px;height:3px;border:none;border-radius:2px;background:rgba(255,255,255,.16);padding:0;cursor:pointer;transition:background .3s;}
.wdot.on{background:var(--od-red);}
/* Act III — the gallery */
.fb-gallery{display:grid;grid-template-columns:repeat(auto-fill,minmax(158px,1fr));gap:12px;max-width:1080px;margin:0 auto;}
.gal-tile{display:block;text-decoration:none;border:1px solid rgba(255,255,255,.1);border-radius:3px;overflow:hidden;background:#0a1120;
  filter:grayscale(.5) brightness(.7);transition:filter .25s,transform .25s,border-color .25s;}
.gal-tile img{width:100%;aspect-ratio:3/4;object-fit:cover;object-position:center top;display:block;}
.gal-tile .ti{width:100%;aspect-ratio:3/4;display:flex;align-items:center;justify-content:center;color:rgba(255,255,255,.3);font:800 1.5rem/1 "Helvetica Neue",Arial,sans-serif;}
.gal-tile:hover,.gal-tile:focus-visible{filter:none;transform:translateY(-3px);border-color:var(--od-red);}
.gal-meta{display:block;padding:10px 11px 12px;}
.gal-name{display:block;color:#fff;font-weight:800;font-size:.92rem;line-height:1.15;}
.gal-office{display:block;color:#8ba0c4;font:600 .66rem/1.3 ui-monospace,monospace;text-transform:uppercase;margin-top:3px;}
@media(max-width:700px){
  .fb-ledger .ldg{grid-template-columns:1fr;gap:5px;}
  .w-quote{border-left-width:3px;}
  .w-costline{gap:10px;}
  .fb-gallery{grid-template-columns:repeat(2,1fr);}
}
@media(prefers-reduced-motion:reduce){
  .fb-ledger .ldg{opacity:1;transform:none;}
  .w-quote,.w-costwrap,.w-whowrap,.w-src{opacity:1;transform:none;transition:none;}
}

/* ===== fight-back v5: scrollytelling ===== */
.fb5{--ink:#070b14;--ash:#93a6c6;}
.fb5 .fb5-sec{padding:clamp(64px,10vw,132px) 0;}
.fb5 .fb5-eyebrow{display:block;text-align:center;font:700 .68rem/1 ui-monospace,monospace;letter-spacing:.3em;text-transform:uppercase;color:var(--od-red);margin-bottom:14px;}
.fb5 .fb5-title{text-align:center;color:#fff;font:800 clamp(2.2rem,6vw,4.2rem)/1.02 "Helvetica Neue",Arial,sans-serif;letter-spacing:-.03em;margin:0 auto;max-width:16ch;}
.fb5 .fb5-dek{text-align:center;color:var(--ash);max-width:46ch;margin:16px auto 0;font-size:clamp(1rem,2vw,1.16rem);}
/* FPO placeholders */
.fpo{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;text-align:center;padding:20px;
  border:2px dashed rgba(255,214,10,.55);border-radius:4px;width:100%;
  background:repeating-linear-gradient(45deg,rgba(255,214,10,.05) 0 12px,transparent 12px 24px);}
.fpo-tag{font:800 .62rem/1 ui-monospace,monospace;letter-spacing:.18em;text-transform:uppercase;color:#ffd60a;}
.fpo-desc{color:#e4ebf8;font-size:.92rem;max-width:36ch;line-height:1.45;}
.fpo-id{font:600 .6rem/1 ui-monospace,monospace;color:rgba(255,214,10,.7);letter-spacing:.1em;}
/* opening */
.fb5-open{position:relative;min-height:100vh;display:flex;align-items:center;justify-content:center;text-align:center;overflow:hidden;}
.ow-grid{position:absolute;inset:0;display:grid;grid-template-columns:repeat(5,1fr);grid-auto-rows:1fr;z-index:0;}
.ow-cell{overflow:hidden;filter:grayscale(.7) brightness(.42) contrast(1.1);}
.ow-cell img{width:100%;height:100%;object-fit:cover;object-position:center top;display:block;}
.ow-blank{display:flex;align-items:center;justify-content:center;background:linear-gradient(160deg,#5c1113,#0b1220);color:rgba(255,255,255,.32);font:800 1.4rem/1 "Helvetica Neue",Arial,sans-serif;}
.fb5-open-faces::after{content:"";position:absolute;inset:0;z-index:1;background:radial-gradient(closest-side at 50% 50%,rgba(7,11,20,.94) 40%,rgba(7,11,20,.72) 100%);}
.ow-media{position:absolute;inset:0;z-index:0;display:flex;align-items:center;justify-content:center;padding:24px;}
.fb5-open-county::after{content:"";position:absolute;inset:0;z-index:1;background:linear-gradient(180deg,rgba(7,11,20,.62),rgba(7,11,20,.9));}
.ow-copy{position:relative;z-index:2;padding:60px 22px;max-width:900px;}
.ow-eyebrow{display:block;font:700 .7rem/1 ui-monospace,monospace;letter-spacing:.3em;text-transform:uppercase;color:var(--od-red);margin-bottom:18px;}
.ow-copy h1{color:#fff;font:800 clamp(3rem,10vw,7.4rem)/.92 "Helvetica Neue",Arial,sans-serif;letter-spacing:-.04em;margin:0 0 22px;}
.ow-copy p{color:#dbe4f6;font-size:clamp(1.05rem,2.3vw,1.34rem);max-width:44ch;margin:0 auto;line-height:1.5;}
.ow-cue{display:block;margin-top:38px;font:700 .66rem/1 ui-monospace,monospace;letter-spacing:.28em;text-transform:uppercase;color:var(--ash);animation:oscbob 1.9s ease-in-out infinite;}
/* Act I ledger */
.lg-wrap{display:grid;grid-template-columns:250px minmax(0,1fr);gap:clamp(24px,5vw,70px);margin-top:clamp(30px,5vw,60px);}
.lg-sticky{position:sticky;top:14vh;align-self:start;height:max-content;}
.lg-lab{display:block;font:700 .64rem/1 ui-monospace,monospace;letter-spacing:.24em;text-transform:uppercase;color:var(--od-red);margin-bottom:16px;}
.lg-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:11px;}
.lg-tick{color:rgba(147,166,198,.45);font-size:.9rem;line-height:1.3;transition:color .4s,opacity .4s;position:relative;padding-left:16px;}
.lg-tick::before{content:"";position:absolute;left:0;top:.5em;width:6px;height:6px;border-radius:50%;background:rgba(255,255,255,.2);transition:background .4s;}
.lg-tick.struck{color:rgba(147,166,198,.8);text-decoration:line-through;text-decoration-color:rgba(210,59,54,.8);}
.lg-tick.struck::before{background:var(--od-red);}
.lg-tick.on{color:#fff;}
.lg-step{min-height:74vh;display:grid;grid-template-columns:minmax(0,1fr);gap:20px;align-content:center;
  opacity:0;transform:translateY(24px);transition:opacity .7s,transform .7s;}
.lg-step.in{opacity:1;transform:none;}
.lg-num{display:block;font:800 .8rem/1 ui-monospace,monospace;letter-spacing:.16em;color:var(--od-red);margin-bottom:10px;}
.lg-card h3{color:#fff;font:800 clamp(1.8rem,4.4vw,3rem)/1.06 "Helvetica Neue",Arial,sans-serif;letter-spacing:-.02em;margin:0 0 12px;}
.lg-card p{color:var(--ash);font-size:clamp(1rem,2vw,1.14rem);max-width:46ch;margin:0;}
.lg-nomedia{display:none;}
/* Act II numbers */
.nm-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:clamp(22px,4vw,44px);margin-top:clamp(34px,5vw,60px);}
@media(max-width:900px){.nm-grid{grid-template-columns:repeat(2,minmax(0,1fr));}}
@media(max-width:560px){.nm-grid{grid-template-columns:1fr;}}
.nm-item{opacity:0;transform:translateY(20px);transition:opacity .7s,transform .7s;border-top:3px solid var(--od-red);padding-top:20px;}
.nm-item.in{opacity:1;transform:none;}
.nm-fig{display:block;color:var(--od-red);font:800 clamp(2.6rem,7vw,4.4rem)/.9 "Helvetica Neue",Arial,sans-serif;letter-spacing:-.04em;font-variant-numeric:tabular-nums;}
.nm-txt{display:block;color:#e4ebf8;margin-top:14px;font-size:1.02rem;line-height:1.5;}
.nm-src{display:block;color:#6f83a6;font:600 .66rem/1.4 ui-monospace,monospace;margin-top:12px;}
/* Act III words */
.wd-steps{margin-top:clamp(30px,5vw,56px);}
.wd-step{min-height:86vh;display:flex;flex-direction:column;justify-content:center;max-width:920px;margin:0 auto;
  opacity:0;transform:translateY(22px);transition:opacity .8s,transform .8s;}
.wd-step.in{opacity:1;transform:none;}
.wd-quote{margin:0;color:#fff;font:700 clamp(1.5rem,4.2vw,3rem)/1.22 Georgia,"Times New Roman",serif;letter-spacing:-.015em;
  border-left:3px solid rgba(210,59,54,.6);padding-left:clamp(16px,3vw,28px);text-wrap:balance;}
.wd-cost{margin:clamp(24px,4vw,40px) 0 0;padding-left:clamp(16px,3vw,31px);display:flex;align-items:baseline;gap:18px;flex-wrap:wrap;}
.wd-num{color:var(--od-red);font:800 clamp(2.4rem,7vw,4.6rem)/.9 "Helvetica Neue",Arial,sans-serif;letter-spacing:-.04em;}
.wd-costtxt{color:#e4ebf8;font-size:clamp(1rem,2vw,1.2rem);line-height:1.45;max-width:32ch;}
.wd-who{display:flex;align-items:center;gap:15px;margin:clamp(22px,3.5vw,36px) 0 0;padding-left:clamp(16px,3vw,31px);}
.wd-fig{width:66px;height:86px;flex:none;border:1px solid rgba(255,255,255,.16);border-radius:2px;overflow:hidden;background:linear-gradient(160deg,#3a0e10,#0b1220);}
.wd-fig img{width:100%;height:100%;object-fit:cover;object-position:center top;display:block;}
.wd-noimg{width:100%;height:100%;display:flex;align-items:center;justify-content:center;text-align:center;padding:5px;color:#fff;font:800 .55rem/1.1 "Helvetica Neue",Arial,sans-serif;background:linear-gradient(160deg,#a3231f,#3a0e10);}
.wd-said{display:block;font:700 .6rem/1 ui-monospace,monospace;letter-spacing:.22em;text-transform:uppercase;color:#7d92b8;}
.wd-name{display:block;color:#fff;font:800 clamp(1.1rem,2.5vw,1.5rem)/1.1 "Helvetica Neue",Arial,sans-serif;}
.wd-role{display:block;color:var(--ash);font:600 .76rem/1.3 ui-monospace,monospace;}
.wd-link{display:inline-block;margin-top:5px;color:var(--od-red);font:700 .8rem/1 "Helvetica Neue",Arial,sans-serif;text-decoration:none;}
.wd-link:hover,.wd-link:focus-visible{text-decoration:underline;}
.wd-src{margin:20px 0 0;padding-left:clamp(16px,3vw,31px);color:#6f83a6;font:600 .68rem/1.45 ui-monospace,monospace;}
/* Act IV wall */
.wl-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(155px,1fr));gap:11px;margin-top:clamp(30px,5vw,52px);}
.wl-tile{display:block;text-decoration:none;border:1px solid rgba(255,255,255,.1);border-radius:3px;overflow:hidden;background:#0a1120;
  filter:grayscale(.55) brightness(.68);opacity:0;transform:translateY(14px);
  transition:filter .25s,transform .35s,opacity .5s,border-color .25s;}
.wl-tile.in{opacity:1;transform:none;}
.wl-tile img{width:100%;aspect-ratio:3/4;object-fit:cover;object-position:center top;display:block;}
.wl-blank{width:100%;aspect-ratio:3/4;display:flex;align-items:center;justify-content:center;background:linear-gradient(160deg,#5c1113,#0b1220);color:rgba(255,255,255,.4);font:800 1.35rem/1 "Helvetica Neue",Arial,sans-serif;}
.wl-tile:hover,.wl-tile:focus-visible{filter:none;transform:translateY(-4px);border-color:var(--od-red);}
.wl-meta{display:block;padding:9px 10px 11px;}
.wl-name{display:block;color:#fff;font-weight:800;font-size:.88rem;line-height:1.15;}
.wl-office{display:block;color:#8ba0c4;font:600 .62rem/1.3 ui-monospace,monospace;text-transform:uppercase;margin-top:2px;}
.fb5-cta h2{color:#fff;font:800 clamp(2rem,5.5vw,3.4rem)/1.05 "Helvetica Neue",Arial,sans-serif;letter-spacing:-.02em;}
.fb5-cta p{color:var(--ash);font-size:1.08rem;}
.fb5-btns{margin-top:1.6rem;display:flex;gap:14px;justify-content:center;flex-wrap:wrap;}
@media(max-width:820px){
  .lg-wrap{grid-template-columns:1fr;}
  .lg-sticky{position:static;}
  .lg-list{flex-direction:row;flex-wrap:wrap;gap:8px;}
  .lg-tick{font-size:.76rem;padding-left:13px;}
  .lg-step{min-height:auto;padding:7vh 0;}
  .wd-step{min-height:auto;padding:9vh 0;}
  .ow-grid{grid-template-columns:repeat(3,1fr);}
  .wl-grid{grid-template-columns:repeat(2,1fr);}
}
@media(prefers-reduced-motion:reduce){
  .lg-step,.nm-item,.wd-step,.wl-tile{opacity:1;transform:none;transition:none;}
  .ow-cue{animation:none;}
}

/* ---------- mobile compact directories (2-up instead of giant 1-col stacks) ---------- */
/* 2-up only when there is room RELATIVE TO TEXT SIZE. The min-width is in em, so if the
   visitor enlarges text (browser zoom / OS large-text), these grids fall back to 1 column
   instead of clipping names. */
@media(max-width:560px) and (min-width:17em){
  .cand-grid{grid-template-columns:repeat(2,minmax(0,1fr)); gap:14px;}
  .cand-body{padding:11px 12px 13px;}
  .cand-name{font-size:.98rem;}
  .cand-office{font-size:.7rem; margin:4px 0 8px; letter-spacing:0;}
  .cand-bio{display:none;}
  .cand-more{font-size:.8rem;}
  .cand-noimg{font-size:2rem;}
  .off-grid{grid-template-columns:repeat(2,minmax(0,1fr)); gap:14px;}
  .off-body{padding:10px 8px 14px;}
  .off-name{font-size:.95rem;}
  .off-role{font-size:.78rem;}
}

/* ---------- picnic promo (remove after Aug 16, 2026) ---------- */
.picnic-promo{padding-top:clamp(26px,4vw,44px); padding-bottom:0;}
.picnic-link{display:block; border-radius:12px; overflow:hidden; box-shadow:0 10px 34px rgba(15,39,72,.16); transition:transform .15s, box-shadow .15s;}
.picnic-link:hover{transform:translateY(-3px); box-shadow:0 16px 44px rgba(15,39,72,.24);}
.picnic-link img{display:block; width:100%; height:auto;}
.picnic-modal{position:fixed; inset:0; z-index:220; display:grid; place-items:start center; padding:24px 14px;}
.picnic-modal[hidden]{display:none;}
.picnic-modal-backdrop{position:absolute; inset:0; background:rgba(10,22,44,.72);}
.picnic-modal-card{position:relative; margin-top:min(9vh,72px); max-width:720px; width:100%; background:#fff; border-radius:12px; overflow:hidden; box-shadow:0 30px 80px rgba(0,0,0,.45);}
.picnic-modal-card img{display:block; width:100%; height:auto;}
.picnic-modal-x{position:absolute; top:8px; right:8px; width:38px; height:38px; border:0; border-radius:50%; background:rgba(10,22,44,.78); color:#fff; font-size:1.5rem; line-height:1; cursor:pointer; z-index:2; display:grid; place-items:center;}
.picnic-modal-x:hover{background:var(--red);}
@media(max-width:560px){.picnic-modal{padding:12px 8px;} .picnic-modal-card{margin-top:4vh;}}
.btn-merch{background:var(--navy); color:#fff; border:1.5px solid var(--navy);}
.btn-merch:hover{background:var(--navy-deep); border-color:var(--navy-deep); color:#fff;}
.off-noimg{width:100%; height:100%; display:grid; place-items:center; font-size:2.2rem; font-weight:800; color:#fff; background:linear-gradient(135deg,var(--navy),var(--navy-deep));}

/* ---------- candidate profile v2 ---------- */
.v2-hero{position:relative;background:linear-gradient(120deg,#0f2748 0%,#1c3f77 55%,#16325c 100%);color:#fff;overflow:hidden}
.v2-hero::after{content:"";position:absolute;right:-120px;top:-120px;width:520px;height:520px;border-radius:50%;background:radial-gradient(circle,rgba(217,42,42,.28),transparent 68%)}
.v2-hero .container{position:relative;z-index:2;display:grid;grid-template-columns:300px 1fr;gap:44px;align-items:center;padding-top:56px;padding-bottom:56px}
.v2-photo{width:300px;height:340px;object-fit:cover;object-position:50% 22%;border-radius:14px;border:4px solid rgba(255,255,255,.9);box-shadow:0 22px 60px rgba(0,0,0,.4);background:#fff}
.v2-photo.noimg{display:grid;place-items:center;font-size:4.6rem;font-weight:800;color:var(--navy);background:#fff}
.v2-badge{display:inline-flex;align-items:center;gap:8px;background:rgba(255,255,255,.14);border:1px solid rgba(255,255,255,.28);color:#fff;font-weight:700;font-size:.72rem;letter-spacing:.13em;text-transform:uppercase;padding:8px 14px;border-radius:999px;margin-bottom:16px}
.v2-badge b{width:7px;height:7px;border-radius:50%;background:#4ade80;display:inline-block}
.v2-hero h1{color:#fff;font-size:clamp(2.1rem,5vw,3.4rem);line-height:1.04;margin:0 0 .26em}
.v2-office{font-size:1.18rem;font-weight:700;color:#a9c1f6}
.v2-actions{display:flex;flex-wrap:wrap;gap:12px;margin-top:24px}
.v2-social{display:flex;gap:16px;margin-top:20px;flex-wrap:wrap}
.v2-social a{color:#cfe0ff;font-weight:700;font-size:.9rem;border-bottom:1px solid rgba(207,224,255,.35);padding-bottom:2px}
.v2-social a:hover{color:#fff;border-color:#fff}
.v2-quote{background:var(--navy-deep);color:#fff;position:relative;overflow:hidden}
.v2-quote .container{padding-top:52px;padding-bottom:52px;position:relative;z-index:2;max-width:920px}
.v2-quote::before{content:"\201C";position:absolute;left:-8px;top:-46px;font:900 16rem/1 Georgia,serif;color:rgba(255,255,255,.07);z-index:1}
.v2-quote blockquote{margin:0;font-size:clamp(1.25rem,2.5vw,1.8rem);font-weight:700;line-height:1.36;color:#fff}
.v2-attr{margin-top:18px;color:#a9c1f6;font-weight:700;font-size:.9rem;letter-spacing:.04em;text-transform:uppercase}
.v2-chips{display:flex;flex-wrap:wrap;gap:10px}
.v2-chip{background:#eef3fb;border:1px solid #d5e0f2;color:var(--navy-deep);font-weight:700;font-size:.86rem;padding:9px 16px;border-radius:999px}
.v2-body{display:grid;grid-template-columns:1fr 320px;gap:52px;align-items:start}
.v2-side{background:#fff;border:1px solid var(--line);border-radius:12px;padding:22px 24px}
.v2-side h3{font-size:.78rem;letter-spacing:.13em;text-transform:uppercase;color:var(--red);margin:0 0 12px}
.v2-side ul.plain{list-style:none;margin:0;padding:0}
.v2-side ul.plain li{margin-bottom:9px;font-size:.93rem}
@media(max-width:900px){
  .v2-hero .container{grid-template-columns:1fr;text-align:center;justify-items:center;gap:26px;padding-top:38px;padding-bottom:38px}
  .v2-photo{width:210px;height:238px}
  .v2-photo.noimg{font-size:3.4rem}
  .v2-actions,.v2-social,.v2-chips{justify-content:center}
  .v2-body{grid-template-columns:1fr;gap:30px}
}

/* long-name safety: never let a card name/office clip, at any text size */
.cand-name,.off-name,.cand-office,.off-role,.board-name,.v2-office{overflow-wrap:anywhere;}
.cand-office{min-width:0;flex-wrap:wrap;}
.v2-hero h1{overflow-wrap:anywhere;}

/* ---------- mobile header cleanup ----------
   On phones the topbar was 95px tall on its own: the office address wrapped to two
   lines and pushed phone/email onto a third. Address is available on /contact/ and in
   the footer, so on small screens we keep only the two ACTIONABLE items (tap-to-call,
   tap-to-email) on a single tidy line, and tighten the masthead. */
@media(max-width:560px){
  .topbar{font-size:.8rem;}
  .topbar .container{gap:0 20px; padding-top:7px; padding-bottom:7px; flex-wrap:nowrap;}
  .topbar .container>span:first-child{display:none;}
  .topbar .container>span{white-space:nowrap;}
  .topbar a{padding:2px 0;}
  .masthead .container{padding-top:9px; padding-bottom:9px;}
  .brand img{width:54px; height:54px;}
  .navtoggle{padding:6px;}
}
