:root { --navy:#08284c; --blue:#0b3c74; --orange:#f2762e; --orange-deep:#d94e0f; --cream:#f7f4ee; --paper:#fffdf9; --ink:#132334; --muted:#5b6977; --line:#d9e0e8; --white:#fff; --max:1160px; }
* { box-sizing:border-box; }
html { scroll-behavior:smooth; }
body { margin:0; background:var(--paper); color:var(--ink); font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif; line-height:1.6; -webkit-font-smoothing:antialiased; }
body.menu-open { overflow:hidden; }
a { color:inherit; }
button { font:inherit; }
.skip-link { position:fixed; z-index:1000; top:10px; left:14px; transform:translateY(-150%); padding:9px 14px; border-radius:6px; background:var(--orange); color:var(--navy); font-weight:800; }
.skip-link:focus { transform:translateY(0); }
.sr-only { position:absolute; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip:rect(0,0,0,0); white-space:nowrap; border:0; }
.site-header { position:sticky; top:0; z-index:100; background:rgba(255,253,249,.95); backdrop-filter:blur(14px); border-bottom:1px solid rgba(8,40,76,.1); }
.nav-shell { width:min(var(--max),calc(100% - 48px)); height:76px; margin:0 auto; display:flex; align-items:center; justify-content:space-between; }
.brand { display:inline-flex; align-items:center; gap:11px; text-decoration:none; }
.brand-mark { width:42px; height:42px; display:grid; place-items:center; border:3px solid var(--orange); border-radius:50% 50% 50% 8px; background:var(--navy); color:var(--white); font:800 19px/1 Georgia,serif; }
.brand-copy { display:grid; line-height:1.05; }
.brand-copy strong { color:var(--navy); font:800 20px/1 Georgia,serif; }
.brand-copy span { margin-top:4px; color:var(--muted); font-size:9px; font-weight:800; letter-spacing:.14em; text-transform:uppercase; }
.site-nav { display:flex; align-items:center; gap:28px; }
.site-nav a { color:#33475b; font-size:14px; font-weight:750; text-decoration:none; }
.site-nav a:hover,.site-nav a:focus-visible { color:var(--orange-deep); }
.site-nav .nav-cta { padding:10px 18px; border-radius:999px; background:var(--orange-deep); color:var(--white); }
.site-nav .nav-cta:hover { background:var(--navy); color:var(--white); }
.menu-toggle { display:none; width:44px; height:44px; border:0; background:transparent; }
.menu-toggle span:not(.sr-only) { display:block; width:23px; height:2px; margin:5px auto; background:var(--navy); transition:transform 180ms ease,opacity 180ms ease; }
.hero { overflow:hidden; background:radial-gradient(circle at 88% 20%,rgba(242,118,46,.16),transparent 24%),linear-gradient(135deg,#fffdf9 0%,#f3f7fb 100%); }
.hero-grid { width:min(var(--max),calc(100% - 48px)); min-height:650px; margin:0 auto; display:grid; grid-template-columns:1.15fr .72fr; align-items:center; gap:clamp(50px,9vw,110px); padding:78px 0 88px; }
.eyebrow,.kicker { margin:0 0 15px; color:var(--blue); font-size:11px; font-weight:850; letter-spacing:.15em; text-transform:uppercase; }
.eyebrow { display:flex; align-items:center; gap:10px; }
.eyebrow span { padding:5px 9px; border-radius:3px; background:var(--orange-deep); color:var(--white); font-size:9px; }
h1,h2,h3,p { margin-top:0; }
h1 { margin-bottom:4px; color:var(--navy); font:800 clamp(58px,7vw,92px)/.95 Georgia,serif; letter-spacing:-.055em; }
.hero-message { margin-bottom:23px; color:var(--orange-deep); font:italic 700 clamp(23px,2.8vw,33px)/1.2 Georgia,serif; }
.hero-lede { max-width:690px; margin-bottom:29px; color:#405366; font-size:18px; line-height:1.68; }
.hero-actions { display:flex; flex-wrap:wrap; gap:11px; }
.button { min-height:52px; display:inline-flex; align-items:center; justify-content:center; gap:11px; padding:13px 20px; border-radius:7px; text-decoration:none; font-size:14px; font-weight:800; transition:transform 160ms ease,background 160ms ease; }
.button:hover { transform:translateY(-2px); }
.button-donate { border:0; background:var(--orange-deep); color:var(--white); box-shadow:0 10px 24px rgba(217,78,15,.2); }
.button-donate:hover { background:#bd3f08; }
.button-secondary { border:1px solid #9faebb; background:rgba(255,255,255,.6); color:var(--navy); }
.button-disabled,.button-disabled:hover { width:100%; margin-top:9px; border:0; background:#d8dde3; color:#556575; box-shadow:none; cursor:not-allowed; transform:none; }
.button:focus-visible,.menu-toggle:focus-visible,a:focus-visible { outline:3px solid rgba(242,118,46,.6); outline-offset:3px; }
.election-date { display:flex; align-items:center; gap:12px; margin-top:27px; color:var(--navy); }
.election-date span { padding-right:12px; border-right:1px solid var(--line); font-size:10px; font-weight:850; letter-spacing:.13em; text-transform:uppercase; }
.election-date strong { font:750 18px/1 Georgia,serif; }
.campaign-card { position:relative; z-index:2; overflow:hidden; padding:21px; background:var(--navy); color:var(--white); box-shadow:0 24px 58px rgba(7,35,67,.2); }
.campaign-card::after { content:""; position:absolute; z-index:-1; width:210px; height:210px; top:-95px; right:-85px; border:42px solid rgba(255,255,255,.035); border-radius:50%; }
.campaign-card-top { display:flex; justify-content:space-between; padding-bottom:15px; border-bottom:1px solid rgba(255,255,255,.2); font-size:8px; font-weight:850; letter-spacing:.15em; text-transform:uppercase; }
.portrait-frame { height:385px; overflow:hidden; background:var(--white); }
.portrait-frame img { width:100%; height:100%; display:block; object-fit:cover; object-position:50% 18%; }
.campaign-card-copy { padding:19px 2px 3px; border-top:7px solid var(--orange); }
.campaign-card-copy small { display:block; margin-bottom:6px; color:#ffb184; font-size:10px; font-weight:850; letter-spacing:.16em; text-transform:uppercase; }
.campaign-card-copy strong { font:700 22px/1.2 Georgia,serif; }
.about-section { width:min(var(--max),calc(100% - 48px)); margin:0 auto; padding:100px 0; }
.about-grid { display:grid; grid-template-columns:.8fr 1.2fr; gap:clamp(50px,9vw,110px); align-items:start; }
.section-heading .kicker { color:var(--orange-deep); }
.section-heading h2 { margin:0; color:var(--navy); font:800 clamp(38px,5vw,59px)/1 Georgia,serif; letter-spacing:-.045em; }
.about-copy>p { color:#405161; font-size:17px; line-height:1.8; }
.quick-facts { display:grid; grid-template-columns:repeat(3,1fr); margin-top:32px; border-top:1px solid var(--line); border-bottom:1px solid var(--line); }
.quick-facts div { padding:22px 18px 21px 0; }
.quick-facts div+div { padding-left:21px; border-left:1px solid var(--line); }
.quick-facts strong { display:block; color:var(--navy); font:800 22px/1 Georgia,serif; }
.quick-facts span { display:block; margin-top:7px; color:var(--muted); font-size:11px; line-height:1.4; }
.community-gallery { margin-top:75px; padding-top:42px; border-top:1px solid var(--line); }
.gallery-heading { display:flex; align-items:end; justify-content:space-between; gap:30px; margin-bottom:21px; }
.gallery-heading .kicker { margin-bottom:7px; color:var(--orange-deep); }
.gallery-heading h3 { margin:0; color:var(--navy); font:800 clamp(28px,3.5vw,43px)/1 Georgia,serif; letter-spacing:-.035em; text-transform:capitalize; }
.carousel-controls { display:flex; gap:8px; }
.carousel-controls button { width:44px; height:44px; border:1px solid var(--line); border-radius:50%; background:var(--white); color:var(--navy); cursor:pointer; font-size:18px; font-weight:800; }
.carousel-controls button:hover,.carousel-controls button:focus-visible { border-color:var(--orange); background:var(--orange); color:var(--navy); }
.carousel-viewport { overflow:hidden; background:var(--navy); touch-action:pan-y; }
.carousel-track { display:flex; transition:transform 380ms ease; }
.carousel-slide { position:relative; flex:0 0 100%; margin:0; }
.carousel-slide img { width:100%; aspect-ratio:16/7.8; display:block; object-fit:cover; object-position:center; }
.carousel-slide figcaption { position:absolute; inset:auto 0 0; padding:42px 28px 23px; background:linear-gradient(transparent,rgba(4,24,45,.92)); color:var(--white); font:700 19px/1.3 Georgia,serif; }
.carousel-dots { display:flex; justify-content:center; gap:7px; margin-top:15px; }
.carousel-dots button { width:8px; height:8px; padding:0; border:0; border-radius:50%; background:#bec7d0; cursor:pointer; }
.carousel-dots button[aria-current="true"] { width:25px; border-radius:999px; background:var(--orange-deep); }
.priorities-section { background:var(--navy); color:var(--white); }
.priorities-shell { width:min(var(--max),calc(100% - 48px)); margin:0 auto; padding:95px 0 100px; }
.section-heading.light { max-width:690px; }
.section-heading.light .kicker { color:#ffae7c; }
.section-heading.light h2 { color:var(--white); }
.section-heading.light>p { margin:17px 0 0; color:#bdcbd7; font-size:16px; }
.priority-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:14px; margin-top:43px; }
.priority-card { min-height:290px; padding:29px 27px; background:#0e3b6c; border-top:5px solid var(--orange); }
.priority-card>span { color:#ffae7c; font:800 28px/1 Georgia,serif; }
.priority-card h3 { margin:32px 0 12px; color:var(--white); font:750 23px/1.2 Georgia,serif; }
.priority-card p { margin:0; color:#c5d2de; font-size:14px; line-height:1.7; }
.support-section { background:var(--cream); }
.support-shell { width:min(var(--max),calc(100% - 48px)); margin:0 auto; display:grid; grid-template-columns:1.18fr .82fr; gap:clamp(45px,8vw,90px); align-items:center; padding:95px 0; }
.support-copy { max-width:650px; }
.support-copy .kicker { color:var(--orange-deep); }
.support-copy h2 { color:var(--navy); font:800 clamp(37px,4.6vw,55px)/1.04 Georgia,serif; letter-spacing:-.04em; }
.support-copy>p { color:var(--muted); font-size:16px; }
.support-copy>small { display:block; margin-top:10px; color:#71808d; font-size:10px; text-align:center; }
.vote-card { padding:38px; background:var(--orange-deep); color:var(--white); box-shadow:0 18px 45px rgba(217,78,15,.18); }
.vote-card>p { margin-bottom:12px; color:#ffe1cf; font-size:10px; font-weight:850; letter-spacing:.15em; text-transform:uppercase; }
.vote-card>strong { display:block; font:800 35px/1.05 Georgia,serif; }
.vote-card>span { display:block; margin-top:8px; font:700 20px/1.2 Georgia,serif; }
.vote-card a { display:flex; justify-content:space-between; margin-top:31px; padding-top:18px; border-top:1px solid rgba(255,255,255,.4); color:var(--white); font-size:12px; font-weight:800; text-decoration:none; }
footer { padding:40px max(24px,calc((100% - var(--max))/2)); background:#061e39; color:var(--white); }
.footer-grid { display:grid; grid-template-columns:1fr 1fr auto; align-items:center; gap:30px; }
.footer-brand { display:flex; align-items:center; gap:11px; }
.footer-brand div { display:grid; }
.footer-brand strong { font:750 18px/1 Georgia,serif; }
.footer-brand div span { margin-top:5px; color:#9eb1c4; font-size:9px; letter-spacing:.11em; text-transform:uppercase; }
.footer-grid p { margin:0; color:#b9c7d4; text-align:center; font:italic 600 14px Georgia,serif; }
.footer-grid>a { color:#ffae7c; font-size:12px; font-weight:800; text-decoration:none; }
.disclaimer { margin:30px 0 0; padding-top:21px; border-top:1px solid rgba(255,255,255,.12); color:#8197aa; font-size:9px; text-align:center; letter-spacing:.08em; text-transform:uppercase; }
@media (max-width:900px) {
  .menu-toggle { display:block; cursor:pointer; }
  .site-nav { position:fixed; inset:76px 0 auto; max-height:0; overflow:hidden; display:grid; gap:0; background:var(--paper); box-shadow:0 20px 40px rgba(8,40,76,.12); transition:max-height 220ms ease; }
  .site-nav.open { max-height:320px; border-top:1px solid var(--line); }
  .site-nav a { padding:16px 24px; border-bottom:1px solid var(--line); }
  .site-nav .nav-cta { margin:14px 24px 20px; border-radius:7px; text-align:center; }
  .menu-toggle[aria-expanded="true"] span:nth-child(2) { transform:translateY(7px) rotate(45deg); }
  .menu-toggle[aria-expanded="true"] span:nth-child(3) { opacity:0; }
  .menu-toggle[aria-expanded="true"] span:nth-child(4) { transform:translateY(-7px) rotate(-45deg); }
  .hero-grid { grid-template-columns:1fr; min-height:auto; gap:55px; }
  .hero-copy { max-width:720px; }
  .hero-visual { width:min(500px,92%); margin:0 auto; }
  .about-grid,.support-shell { grid-template-columns:1fr; }
  .priority-grid { grid-template-columns:1fr; }
  .priority-card { min-height:auto; }
  .vote-card { max-width:600px; }
  .footer-grid { grid-template-columns:1fr auto; }
  .footer-grid>p { display:none; }
}
@media (max-width:640px) {
  .nav-shell,.hero-grid,.about-section,.priorities-shell,.support-shell { width:min(100% - 32px,var(--max)); }
  .nav-shell { height:68px; }
  .site-nav { top:68px; }
  .brand-mark { width:39px; height:39px; }
  .brand-copy strong { font-size:18px; }
  .hero-grid { padding:50px 0 65px; }
  .eyebrow { align-items:flex-start; flex-direction:column; gap:8px; }
  h1 { font-size:clamp(56px,17vw,72px); }
  .hero-message { font-size:23px; }
  .hero-lede { font-size:16px; line-height:1.6; }
  .hero-actions { display:grid; }
  .button { width:100%; }
  .election-date { align-items:flex-start; flex-direction:column; gap:5px; }
  .election-date span { padding:0; border:0; }
  .hero-visual { width:calc(100% - 8px); }
  .portrait-frame { height:340px; }
  .about-section,.priorities-shell,.support-shell { padding-top:72px; padding-bottom:72px; }
  .section-heading h2,.support-copy h2 { font-size:38px; }
  .about-copy>p { font-size:15px; }
  .quick-facts { grid-template-columns:1fr; }
  .quick-facts div,.quick-facts div+div { padding:16px 0; border-left:0; border-top:1px solid var(--line); }
  .quick-facts div:first-child { border-top:0; }
  .community-gallery { margin-top:54px; padding-top:34px; }
  .gallery-heading { align-items:flex-start; }
  .gallery-heading h3 { font-size:31px; }
  .carousel-slide img { aspect-ratio:4/3; }
  .carousel-slide figcaption { padding:34px 19px 17px; font-size:16px; }
  .priority-grid { margin-top:32px; }
  .priority-card { padding:25px 22px; }
  .priority-card h3 { margin-top:22px; }
  .vote-card { padding:30px 24px; }
  .footer-grid { grid-template-columns:1fr; }
}
@media (prefers-reduced-motion:reduce) { *,*::before,*::after { scroll-behavior:auto!important; transition-duration:.01ms!important; } }
