/* ============================================================================
   Vote4Tomorrow theme — SCOPED to .v4t regions only.
   Loaded site-wide but every rule is namespaced under .v4t (or body:has(.v4t)),
   so it does not affect any template that hasn't opted in.
   First consumer: candidate.php
   ========================================================================== */

/* ---- page canvas + hide the site's UIkit chrome on rebranded pages -------- */
body:has(.v4t){
  --paper:#FFFFFF;
  --paper-alt:#EEF3FB;
  --paper-deep:#DCE7F7;
  --ink:#152A4A;
  --ink-soft:#54688A;
  --blue:#1D5FC2;
  --blue-soft:#4C8BE0;
  --mustard:#CE9A2E;
  --leaf:#3D7BC2;
  --leaf-deep:#1D5FC2;
  --rust:#A14A2F;
  --line: rgba(21,42,74,0.14);
  --line-strong: rgba(21,42,74,0.28);
  --shadow: 0 2px 0 rgba(21,42,74,0.9);

  background: var(--paper);
  background-image: radial-gradient(rgba(21,42,74,0.045) 1px, transparent 1px);
  background-size: 4px 4px;
  font-family: 'Inter', sans-serif;
}
body:has(.v4t) #header,
body:has(.v4t) > footer,
body:has(.v4t) #offcanvas-toggle,
body:has(.v4t) #alert-banner{ display:none !important; }

/* the replaced <main id="main"> — strip inherited UIkit container/margins.
   Full-viewport flex column so the footer is pushed to the bottom on short
   pages (coming soon, thank-you, invalid link) instead of floating mid-page. */
body:has(.v4t){ margin:0; }
main#main.v4t{
  max-width:none;
  margin:0;
  padding:0;
  min-height:100vh;
  min-height:100dvh;
  display:flex;
  flex-direction:column;
}
main#main.v4t > .site-head,
main#main.v4t > .site-foot{ flex-shrink:0; }
main#main.v4t > #v4t-content{ flex:1 0 auto; }

/* ---- base typography ------------------------------------------------------ */
.v4t{ color:var(--ink); font-family:'Inter',sans-serif; font-size:16px; line-height:1.5; }
.v4t h1,.v4t h2,.v4t h3,.v4t h4,.v4t h5{
  font-family:'Fraunces',serif; font-weight:600; margin:0; color:var(--ink); letter-spacing:-0.01em;
}
.v4t p,.v4t li{ font-family:'Inter',sans-serif; font-size:16px; font-weight:400; line-height:1.6; }
.v4t a{ color:inherit; text-decoration:none; }
.v4t img{ max-width:100%; display:block; height:auto; }
.v4t .wrap{ max-width:1180px; margin:0 auto; padding:0 32px; }

.v4t .eyebrow{
  font-family:'Space Mono',monospace; font-size:12px; letter-spacing:0.12em;
  text-transform:uppercase; color:var(--ink-soft);
  display:flex; align-items:center; gap:8px;
}
.v4t .eyebrow::before{
  content:""; width:7px; height:7px; background:var(--leaf); border-radius:50%; display:inline-block;
}
.v4t .btn{
  font-family:'Space Mono',monospace; font-size:12px; font-weight:700;
  letter-spacing:0.06em; text-transform:uppercase; padding:11px 20px; border-radius:2px;
  display:inline-block; border:2px solid var(--ink); background:var(--ink); color:var(--paper);
  cursor:pointer;
}
.v4t .btn.outline{ background:transparent; color:var(--ink); }
.v4t .btn.blue{ background:var(--blue); border-color:var(--blue); color:var(--paper); }
.v4t .btn:disabled,
.v4t .btn[aria-busy="true"]{ opacity:0.6; cursor:progress; }

/* ---- header --------------------------------------------------------------- */
.v4t .site-head{
  position:sticky; top:0; z-index:50;
  background:var(--paper); border-bottom:2px solid var(--ink);
}
.v4t .site-head .topbar{
  display:flex; align-items:center; justify-content:space-between;
  padding:18px 32px; max-width:1180px; margin:0 auto; gap:24px;
}
.v4t .logo{ display:flex; align-items:baseline; gap:10px; font-family:'Fraunces',serif; font-weight:700; font-size:22px; }
.v4t .logo .mark{
  width:30px; height:30px; border:2px solid var(--ink); border-radius:50%;
  display:inline-flex; align-items:center; justify-content:center;
  font-family:'Space Mono',monospace; font-size:13px; font-weight:700; transform:rotate(-8deg);
}
.v4t .logo small{ font-family:'Space Mono',monospace; font-size:11px; font-weight:400; color:var(--ink-soft); letter-spacing:0.06em; }
.v4t .logo.logo-img{ gap:0; }
.v4t .logo.logo-img img{ height:40px; width:auto; display:block; }
.v4t .site-head nav.primary{ display:flex; gap:28px; align-items:center; }
.v4t .site-head nav.primary a{ font-size:14px; font-weight:600; color:var(--ink); padding:6px 0; border-bottom:2px solid transparent; }
.v4t .site-head nav.primary a:hover{ border-color:var(--leaf); }
.v4t .navcta{ display:flex; gap:10px; align-items:center; }

/* ---- profile header ------------------------------------------------------- */
.v4t section{ padding:52px 0; border-bottom:1px solid var(--line); }
/* the last section on a page sits above the footer (which draws its own top
   rule), so drop its bottom border rather than stacking two lines */
.v4t #v4t-content > section:last-child{ border-bottom:0; }
.v4t .profile{ padding:48px 0; border-bottom:2px solid var(--ink); }
.v4t .backlink{ margin-bottom:22px; }
.v4t .backlink a{ color:var(--ink-soft); }
.v4t .backlink a:hover{ color:var(--blue); }

.v4t .profile-grid{ display:grid; grid-template-columns:260px 1fr; gap:48px; align-items:start; }
.v4t .photo-frame{ border:2px solid var(--ink); background:var(--paper-alt); aspect-ratio:1/1; overflow:hidden; }
.v4t .photo-frame img{ width:100%; height:100%; object-fit:cover; }
.v4t .avatar-lg{
  width:100%; aspect-ratio:1/1; border:2px solid var(--ink); background:var(--ink); color:var(--paper);
  display:flex; align-items:center; justify-content:center;
  font-family:'Fraunces',serif; font-weight:600; font-size:72px;
}
.v4t .p-head{ display:flex; justify-content:space-between; align-items:flex-start; gap:24px; }
.v4t .p-name{ font-size:44px; line-height:1.05; margin:0 0 8px; }
.v4t .p-role{ font-family:'Space Mono',monospace; font-size:13px; text-transform:uppercase; letter-spacing:0.06em; color:var(--ink-soft); }

.v4t .rating-badge{
  flex-shrink:0; width:118px; height:118px; border-radius:50%;
  border:3px double var(--leaf-deep); color:var(--leaf-deep);
  display:flex; align-items:center; justify-content:center; text-align:center;
  font-family:'Space Mono',monospace; font-weight:700; font-size:12px;
  letter-spacing:0.06em; text-transform:uppercase; line-height:1.2; padding:14px; transform:rotate(-8deg);
}
/* "Climate Leader": a heavier stamp — thick double ring, larger type, faint fill */
.v4t .rating-badge.strong{
  border:7px double var(--leaf-deep); font-size:15px; font-weight:700; letter-spacing:0.08em;
  background:rgba(29,95,194,0.07); box-shadow:0 0 0 2px var(--leaf-deep);
}
/* "Did not respond": a large single line under the role, in place of a stamp */
.v4t .p-dnr{ margin-top:14px; font-family:'Inter',sans-serif; font-weight:700; font-size:26px; text-transform:uppercase; color:var(--ink-soft); white-space:nowrap; }
@media (max-width:600px){ .v4t .p-dnr{ font-size:20px; } }
.v4t .rating-badge.none{ border-style:dotted; border-color:var(--ink-soft); color:var(--ink-soft); }

.v4t .chip-row{ display:flex; gap:8px; flex-wrap:wrap; margin:18px 0 0; }
.v4t .chip{
  font-family:'Space Mono',monospace; font-size:11px; letter-spacing:0.04em;
  border:1.5px solid var(--ink-soft); border-radius:20px; padding:5px 12px; color:var(--ink-soft);
}
.v4t .social-row{ display:flex; gap:10px; flex-wrap:wrap; margin-top:20px; }
.v4t .social-row a{
  width:40px; height:40px; border:2px solid var(--ink); border-radius:2px;
  display:inline-flex; align-items:center; justify-content:center;
  color:var(--ink); background:var(--paper);
  transition:background .12s ease, color .12s ease, transform .12s ease, box-shadow .12s ease;
}
.v4t .social-row a:hover{ background:var(--blue); border-color:var(--blue); color:var(--paper); transform:translate(-1px,-1px); box-shadow:var(--shadow); }
.v4t .social-row a svg{ width:18px; height:18px; display:block; }

/* ---- section heads + bio -------------------------------------------------- */
.v4t .sec-head{ margin-bottom:24px; display:flex; justify-content:space-between; align-items:flex-end; gap:24px; flex-wrap:wrap; }
.v4t .sec-head h2{ font-size:36px; }
.v4t .sec-head.stacked{ display:block; }
.v4t .community-jump{ display:flex; flex-direction:column; gap:6px; }
.v4t .community-jump .eyebrow{ margin:0; }
.v4t .community-jump select{
  font-family:'Inter',sans-serif; font-size:15px; font-weight:600; color:var(--ink);
  background:var(--paper); border:2px solid var(--ink); border-radius:0; padding:10px 40px 10px 14px;
  cursor:pointer; appearance:none; -webkit-appearance:none; min-width:240px;
  background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%23152A4A' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");
  background-repeat:no-repeat; background-position:right 14px center;
}
.v4t .community-jump select:focus{ outline:none; border-color:var(--blue); box-shadow:0 0 0 3px var(--paper-deep); }
.v4t .bio{ max-width:70ch; }
.v4t .bio a{ color:#2e90de; text-decoration:underline; }
.v4t .bio h2{ font-size:22px; margin:24px 0 10px; }
.v4t .bio h3{ font-size:18px; margin:20px 0 8px; }
.v4t .bio p{ margin:0 0 14px; }
.v4t .bio p:last-child{ margin-bottom:0; }

/* ---- "where they stand" list (issues + policies) ------------------------- */
.v4t .stand-list{ border:2px solid var(--ink); background:var(--paper-alt); }
.v4t .stand-row{ display:flex; align-items:center; gap:16px; padding:14px 18px; border-top:1px solid var(--line-strong); }
.v4t .stand-row:first-child{ border-top:none; }
.v4t .stand-row .s-name{ font-family:'Fraunces',serif; font-weight:600; font-size:16px; flex:1; }
.v4t .stand-row .s-pos{ font-family:'Space Mono',monospace; font-size:11px; text-transform:uppercase; letter-spacing:0.05em; color:var(--ink-soft); }
.v4t .dot{
  box-sizing:border-box; width:35px; height:35px; border-radius:50%; flex-shrink:0;
  display:inline-flex; align-items:center; justify-content:center;
  font-family:'Space Mono',monospace; font-size:20px; font-weight:700; color:var(--paper);
}
.v4t .dot.strong{ background:var(--leaf-deep); }
.v4t .dot.mixed{ background:var(--mustard); }
.v4t .dot.weak{ background:var(--rust); }
.v4t .dot.none{ background:transparent; border:1.5px dashed var(--ink-soft); color:var(--ink-soft); }
/* CRA-compliant communities: neutralise the rating colours so ✓ ~ × read in a
   single dark navy (no partisan / value-laden colour coding). Scoped to the
   scorecard section so both the matrix cells and the legend swatches match. */
.v4t .cra-neutral .dot.strong,
.v4t .cra-neutral .dot.mixed,
.v4t .cra-neutral .dot.weak{ background:transparent; border:1.5px solid var(--ink); color:var(--ink); }
.v4t .legend{ display:flex; gap:22px; flex-wrap:wrap; margin-top:18px; }
.v4t .legend .li{ display:flex; align-items:center; gap:8px; font-size:12.5px; color:var(--ink-soft); }

/* ---- Q & A ---------------------------------------------------------------- */
.v4t .qa{ display:flex; flex-direction:column; gap:22px; }
.v4t .qa .q{ font-family:'Fraunces',serif; font-weight:600; font-size:18px; margin-bottom:6px; }
.v4t .qa .a{ color:var(--ink-soft); max-width:72ch; }

/* ---- gallery + compiled-by ----------------------------------------------- */
.v4t .gallery{ display:grid; grid-template-columns:repeat(4,1fr); gap:12px; }
.v4t .gallery img{ border:2px solid var(--ink); aspect-ratio:1/1; object-fit:cover; width:100%; }
.v4t .compiled{ display:flex; gap:28px; align-items:center; flex-wrap:wrap; }
.v4t .compiled img{ height:70px; width:auto; }
.v4t .authorization{ max-width:70ch; font-size:13px; line-height:1.6; color:var(--ink-soft); }
.v4t .compiled + .authorization{ margin-top:22px; }
.v4t .authorization p{ margin:0 0 8px; }
.v4t .authorization p:last-child{ margin-bottom:0; }

/* ---- footer --------------------------------------------------------------- */
.v4t .site-foot{ background:var(--paper-deep); border-top:2px solid var(--ink); padding:48px 0 24px; }
.v4t .foot-top{ display:grid; grid-template-columns:1.6fr 1fr; gap:40px; padding-bottom:32px; border-bottom:1px solid var(--line-strong); }
.v4t .foot-brand .logo{ margin-bottom:12px; }
.v4t .foot-brand p{ font-size:13.5px; color:var(--ink-soft); max-width:38ch; }
.v4t .foot-col a{ display:block; font-size:13.5px; padding:5px 0; color:var(--ink); }
.v4t .foot-col a:hover{ color:var(--blue); }
.v4t .foot-bottom{ display:flex; justify-content:space-between; padding-top:20px; font-size:12px; color:var(--ink-soft); flex-wrap:wrap; gap:10px; font-family:'Space Mono',monospace; }

/* ---- responsive ----------------------------------------------------------- */
@media (max-width:900px){
  .v4t .site-head nav.primary{ display:none; }
  .v4t .profile-grid{ grid-template-columns:1fr; }
  .v4t .photo-frame,.v4t .avatar-lg{ max-width:260px; }
  .v4t .p-head{ flex-direction:column-reverse; align-items:flex-start; }
  .v4t .foot-top{ grid-template-columns:1fr; gap:28px; }
  .v4t .gallery{ grid-template-columns:repeat(2,1fr); }
}
@media (max-width:600px){
  .v4t .wrap{ padding:0 20px; }
  .v4t .site-head .topbar{ padding:16px 20px; }
  .v4t .p-name{ font-size:34px; }
}

/* ---- community page hero -------------------------------------------------- */
.v4t .page-hero{ padding:56px 0 40px; border-bottom:2px solid var(--ink); }
.v4t .page-hero .eyebrow a{ color:var(--ink-soft); }
.v4t .page-hero .eyebrow a:hover{ color:var(--blue); }
.v4t .page-hero h1{ font-size:52px; line-height:1.03; margin:14px 0 0; }
.v4t .page-hero .intro{ margin-top:20px; max-width:62ch; color:var(--ink-soft); }
.v4t .page-hero .intro p{ margin:0 0 12px; }

/* ---- community tabs ------------------------------------------------------- */
.v4t .tabs-nav-wrap{ background:#2e90de; } /* logo blue */
.v4t .tabs-nav{ display:flex; gap:4px; flex-wrap:wrap; }
.v4t .tab-btn{ font-family:'Space Mono',monospace; font-size:13px; font-weight:700; letter-spacing:.06em; text-transform:uppercase; color:#fff; background:transparent; border:0; padding:16px 20px; cursor:pointer; }
.v4t .tab-btn:hover{ background:rgba(255,255,255,0.15); }
/* the open tab takes the page canvas (white with grey dots) so it joins the panel below */
.v4t .tab-btn.active{ color:var(--ink); background-color:var(--paper); background-image:radial-gradient(rgba(21,42,74,0.045) 1px, transparent 1px); background-size:4px 4px; }
.v4t .tab-panel{ display:none; }
.v4t .tab-panel.active{ display:block; }
.v4t table.voting-table{ min-width:0; }
.v4t table.voting-table thead th,
.v4t table.voting-table tbody td{ text-align:left; white-space:nowrap; }
.v4t .hero-image{ margin:0 0 30px; }
.v4t .hero-image img{ width:100%; border:2px solid var(--ink); display:block; }
.v4t .hero-image figcaption{ font-family:'Space Mono',monospace; font-size:11px; color:var(--ink-soft); margin-top:8px; letter-spacing:.04em; }

/* ---- scorecard matrix ---------------------------------------------------- */
.v4t .scorecard-head{ margin-bottom:32px; text-align:left; }
.v4t .scorecard-head h2{ font-size:34px; }
.v4t .scorecard-head p,
.v4t .sec-head.stacked p{ color:var(--ink); max-width:70ch; margin-top:12px; }
.v4t .scorecard-wrap{ border:2px solid var(--ink); overflow-x:auto; background:var(--paper-alt); }
.v4t table.scorecard{ border-collapse:collapse; width:100%; min-width:720px; }
.v4t table.scorecard th,.v4t table.scorecard td{ border:1px solid var(--line-strong); padding:14px 16px; text-align:center; }
.v4t table.scorecard thead th{ background:var(--ink); color:var(--paper); font-family:'Space Mono',monospace; font-size:11px; letter-spacing:.05em; text-transform:uppercase; font-weight:700; }
.v4t table.scorecard thead th:first-child{ text-align:left; }
.v4t table.scorecard tbody th{ font-family:'Fraunces',serif; font-weight:600; font-size:15px; background:var(--paper-deep); white-space:nowrap; text-align:left; }
.v4t table.scorecard tbody th a{ color:var(--ink); }
.v4t table.scorecard tbody th a:hover{ color:var(--blue); }
.v4t table.scorecard tbody tr:hover td{ background:rgba(21,42,74,0.03); }
.v4t table.scorecard .dot{ margin:0 auto; }
.v4t table.scorecard td.tally{ font-family:'Space Mono',monospace; font-weight:700; font-size:14px; color:var(--ink); white-space:nowrap; }
.v4t table.scorecard tr.office-group th{ background:#2e90de; color:#fff; font-family:'Space Mono',monospace; font-size:12px; letter-spacing:.05em; text-transform:uppercase; font-weight:700; text-align:left; }
.v4t table.scorecard tr.office-group:hover th{ background:#2e90de; }

/* ---- candidate cards ----------------------------------------------------- */
.v4t .office-head{ font-size:22px; margin:0 0 20px; }
.v4t .office-head + .candidate-grid{ margin-bottom:40px; }
/* space each event's heading away from the table above it */
.v4t #contributions .office-head{ margin-top:44px; }
.v4t .candidate-grid{ display:grid; grid-template-columns:repeat(3,1fr); gap:24px; margin-bottom:40px; }
.v4t .candidate-grid:last-child{ margin-bottom:0; }
.v4t .candidate-card{ box-sizing:border-box; border:2px solid var(--ink); background:var(--paper-alt); display:flex; flex-direction:column; color:var(--ink); transition:transform .12s ease, box-shadow .12s ease; }
.v4t .candidate-card:hover{ transform:translate(-2px,-2px); box-shadow:var(--shadow); }
.v4t .cc-top{ padding:20px 20px 0; display:flex; gap:14px; align-items:flex-start; }
.v4t .cc-top .avatar{ box-sizing:border-box; width:75px; height:75px; border-radius:50%; overflow:hidden; background:var(--ink); color:var(--paper); display:flex; align-items:center; justify-content:center; font-family:'Fraunces',serif; font-weight:600; font-size:25px; border:2px solid var(--ink); flex-shrink:0; }
.v4t .cc-top .avatar img{ width:100%; height:100%; object-fit:cover; }
.v4t .cc-name{ display:flex; flex-direction:column; }
.v4t .cc-name .cc-h3{ font-family:'Fraunces',serif; font-weight:600; font-size:19px; line-height:1.1; }
.v4t .cc-name .cc-tally{ font-size:13px; font-weight:600; color:var(--ink); margin-top:6px; }
.v4t .cc-name .role{ font-family:'Space Mono',monospace; font-size:11px; color:var(--ink-soft); text-transform:uppercase; letter-spacing:.05em; margin-top:4px; }
.v4t .cc-badge{ margin-left:auto; width:54px; height:54px; border-radius:50%; border:2px dashed var(--leaf-deep); display:flex; align-items:center; justify-content:center; font-family:'Space Mono',monospace; font-weight:700; font-size:9.5px; color:var(--leaf-deep); text-align:center; line-height:1.1; transform:rotate(6deg); flex-shrink:0; text-transform:uppercase; padding:4px; }
.v4t .cc-badge.none{ border-style:dotted; border-color:var(--ink-soft); color:var(--ink-soft); }
.v4t .cc-body{ padding:16px 20px 18px; flex:1; }
.v4t .cc-body .stance{ font-size:13.5px; color:var(--ink-soft); margin:0; }
.v4t .cc-foot{ margin-top:auto; border-top:1px solid var(--line-strong); padding:14px 20px; display:flex; justify-content:space-between; align-items:center; gap:12px; font-family:'Space Mono',monospace; font-size:12px; font-weight:700; color:var(--ink-soft); }
.v4t .cc-foot .more{ color:var(--blue); white-space:nowrap; }

/* ---- profile: policy commitments grouped by category --------------------- */
.v4t .cat-group{ margin-bottom:26px; }
.v4t .cat-group:last-child{ margin-bottom:0; }
.v4t .cat-head{ margin-bottom:10px; }
.v4t .cat-intro{ color:var(--ink-soft); max-width:70ch; margin:0 0 14px; }
.v4t .cat-intro p{ margin:0 0 8px; }
.v4t .cat-intro p:last-child{ margin-bottom:0; }

@media (max-width:900px){
  .v4t .scorecard-head h2{ font-size:28px; }
  .v4t .page-hero h1{ font-size:38px; }
  .v4t .candidate-grid{ grid-template-columns:1fr; }
}

/* ============================================================================
   HOME PAGE
   ========================================================================== */

/* ---- hero ---------------------------------------------------------------- */
.v4t .home-hero{ padding:76px 0 60px; border-bottom:2px solid var(--ink); }
.v4t .home-hero .wrap{ display:grid; grid-template-columns:1fr; gap:56px; align-items:end; }
.v4t .home-hero h1{ font-size:56px; line-height:1.03; margin:18px 0 22px; max-width:18ch; }
.v4t .home-hero h1 em{ font-style:italic; color:var(--leaf-deep); }
.v4t .lede{ font-size:18px; color:var(--ink-soft); max-width:46ch; margin-bottom:28px; }
.v4t .hero-actions{ display:flex; gap:14px; flex-wrap:wrap; }
.v4t .hero-bottom{ margin-top:52px; }
.v4t .stat-row{ display:flex; gap:40px; flex-wrap:wrap; }
.v4t .stat .num{ font-family:'Fraunces',serif; font-size:34px; font-weight:600; display:block; color:var(--blue); }
.v4t .stat .lbl{ font-family:'Space Mono',monospace; font-size:11px; letter-spacing:.08em; text-transform:uppercase; color:var(--ink-soft); }

/* ---- communities grid ---------------------------------------------------- */
.v4t .community-grid{ display:grid; grid-template-columns:repeat(4,1fr); gap:20px; }
.v4t .community-card{ border:2px solid var(--ink); background:var(--paper-alt); overflow:hidden; aspect-ratio:4/5; display:flex; flex-direction:column; justify-content:flex-end; color:var(--ink); transition:transform .15s ease, box-shadow .15s ease; }
.v4t .community-card:hover{ transform:translate(-2px,-2px); box-shadow:var(--shadow); }
.v4t .community-card .art{ flex:1; background:linear-gradient(160deg, var(--leaf), var(--paper-deep) 70%); background-size:cover; background-position:center; }
.v4t .community-card:nth-child(4n+2) .art{ background:linear-gradient(160deg, var(--blue-soft), var(--paper-deep) 70%); background-size:cover; background-position:center; }
.v4t .community-card:nth-child(4n+3) .art{ background:linear-gradient(160deg, var(--mustard), var(--paper-deep) 70%); background-size:cover; background-position:center; }
.v4t .community-card:nth-child(4n) .art{ background:linear-gradient(160deg, var(--rust), var(--paper-deep) 70%); background-size:cover; background-position:center; }
.v4t .community-card .cinfo{ padding:16px 18px 18px; border-top:2px solid var(--ink); background:var(--paper-alt); }
.v4t .community-card .cinfo .eyebrow{ margin-bottom:6px; }
.v4t .community-card h3{ font-size:20px; }

/* ---- issues grid --------------------------------------------------------- */
.v4t .issue-grid{ display:grid; grid-template-columns:repeat(3,1fr); gap:2px; background:var(--ink); border:2px solid var(--ink); }
.v4t .issue-card{ background:var(--paper); padding:28px; min-height:190px; display:flex; flex-direction:column; justify-content:space-between; }
.v4t .issue-card .num{ font-family:'Space Mono',monospace; font-size:12px; color:var(--ink-soft); }
.v4t .issue-card h3{ font-size:21px; margin:14px 0 8px; line-height:1.15; }
.v4t .issue-card p{ font-size:13.5px; color:var(--ink-soft); margin:0; }
.v4t .issue-card:hover{ background:var(--paper-alt); }

/* ---- how we rate --------------------------------------------------------- */
.v4t .method{ display:grid; grid-template-columns:1fr; gap:56px; align-items:start; }
.v4t .method h2{ font-size:30px; margin:14px 0 26px; max-width:24ch; }
.v4t .method-steps .mstep{ display:flex; gap:18px; padding:20px 0; border-top:1px solid var(--line-strong); }
.v4t .method-steps .mstep:last-child{ border-bottom:1px solid var(--line-strong); }
.v4t .mstep .mnum{ font-family:'Space Mono',monospace; font-size:13px; color:var(--blue); font-weight:700; padding-top:2px; }
.v4t .mstep h4{ font-size:17px; margin-bottom:6px; }
.v4t .mstep p{ font-size:13.5px; color:var(--ink-soft); margin:0; }

/* ---- CTA band ------------------------------------------------------------ */
.v4t .cta{ background:var(--ink); color:var(--paper); border-bottom:none; }
.v4t .cta .wrap{ display:flex; justify-content:space-between; align-items:center; gap:32px; flex-wrap:wrap; }
.v4t .cta h2{ color:var(--paper); font-size:32px; max-width:22ch; }
.v4t .cta p{ color:#B9CCE8; margin-top:10px; max-width:40ch; }
.v4t .cta .btn{ background:var(--paper); color:var(--ink); border-color:var(--paper); }
.v4t .cta .btn.outline{ background:transparent; color:var(--paper); border-color:var(--paper); }

@media (max-width:900px){
  .v4t .community-grid{ grid-template-columns:repeat(2,1fr); }
  .v4t .issue-grid{ grid-template-columns:1fr 1fr; }
}
@media (max-width:600px){
  .v4t .home-hero h1{ font-size:38px; }
  .v4t .community-grid{ grid-template-columns:1fr; }
  .v4t .issue-grid{ grid-template-columns:1fr; }
}

/* ---- candidate questionnaire ---------------------------------------------------- */
.v4t .questionnaire-hero{ padding:40px 0 8px; }
.v4t .questionnaire-hero h1{ font-size:52px; margin-top:6px; }
.v4t .questionnaire-sub{ color:var(--ink-soft); max-width:60ch; margin-top:10px; }
.v4t .questionnaire-body{ padding:24px 0 72px; }
.v4t .questionnaire-body .wrap{ max-width:820px; }

.v4t .questionnaire-note{ border:2px solid var(--line-strong); border-radius:2px; padding:16px 18px; margin-bottom:24px; background:var(--paper-alt); }
.v4t .questionnaire-note.info{ background:var(--paper-alt); }
.v4t .questionnaire-note.error{ background:#FBEDEA; border-color:var(--rust); color:var(--rust); }
.v4t .questionnaire-note ul{ margin:8px 0 0; padding-left:20px; }
.v4t .questionnaire-note h2{ font-size:26px; }

.v4t .questionnaire-sec{ border:0; border-top:2px solid var(--ink); padding:26px 0 6px; margin:0; }
.v4t .questionnaire-sec > legend{ font-family:'Fraunces',serif; font-weight:600; font-size:24px; color:var(--ink); padding:0 12px 0 0; }
.v4t .questionnaire-sec .sec-intro{ color:var(--ink-soft); margin:-4px 0 16px; }
.v4t .questionnaire-sec .cat-head{ margin:20px 0 8px; }

.v4t .questionnaire .field{ margin:0 0 18px; }
.v4t .questionnaire .field label{ display:block; font-weight:600; font-size:15px; margin-bottom:6px; }
.v4t .questionnaire .field .req{ color:var(--rust); }
.v4t .questionnaire .hint{ font-size:13px; color:var(--ink-soft); margin:6px 0 0; }
.v4t .questionnaire .field .q-summary{ margin:2px 0 8px; font-style:italic; }
.v4t .questionnaire .field .q-summary p{ margin:0 0 6px; font-size:14px; font-style:italic; color:var(--ink-soft); }
.v4t .questionnaire .field .q-summary p:last-child{ margin-bottom:0; }
.v4t .questionnaire .field .q-summary a{ color:#2e90de; text-decoration:underline; }
.v4t .questionnaire .field label.check{ display:flex; align-items:flex-start; gap:8px; margin:8px 0 0; font-size:14px; color:var(--ink); cursor:pointer; }
.v4t .questionnaire .field label.check input{ margin:2px 0 0; flex:none; }
.v4t .questionnaire input[type=text],
.v4t .questionnaire input[type=email],
.v4t .questionnaire input[type=url],
.v4t .questionnaire input[type=number],
.v4t .questionnaire select,
.v4t .questionnaire textarea{
  /* border-box is essential here: width:100% must include the 2px border and
     12px padding, or each control renders 28px wider than its container and
     overflows the .field-grid gutter. */
  box-sizing:border-box;
  width:100%; font-family:'Inter',sans-serif; font-size:15px; color:var(--ink);
  background:var(--paper); border:2px solid var(--ink); border-radius:2px; padding:10px 12px;
}
.v4t .questionnaire textarea{ resize:vertical; }
.v4t .questionnaire input:focus,
.v4t .questionnaire select:focus,
.v4t .questionnaire textarea:focus{ outline:none; border-color:var(--blue); box-shadow:0 0 0 3px rgba(29,95,194,0.15); }

.v4t .questionnaire .field-row{ display:flex; gap:16px; flex-wrap:wrap; }
.v4t .questionnaire .field-row .field{ flex:1; min-width:180px; }
.v4t .questionnaire .field-row .field-narrow{ flex:0 0 180px; }
/* row spacing comes from .field margin-bottom, so row-gap stays 0; the column
   gutter is wider than the theme's usual 16px because both cells are
   full-width bordered inputs that would otherwise read as one control. */
.v4t .questionnaire .field-grid{ display:grid; grid-template-columns:1fr 1fr; gap:0 28px; }
.v4t .questionnaire .field-grid > .field{ min-width:0; }

.v4t .questionnaire .cur-photo{ display:flex; align-items:center; gap:12px; margin-bottom:10px; }
.v4t .questionnaire .cur-photo img{ width:60px; height:60px; border-radius:50%; object-fit:cover; border:2px solid var(--ink); }
.v4t .questionnaire .cur-photo span{ font-size:13px; color:var(--ink-soft); }

/* headshot upload: hide the native input and drive it from a styled label.
   Same hidden-input + styled-sibling approach as .pos-opt below, so the input
   stays keyboard focusable and the label triggers it without JS. The label
   override needs .field .filefield to outrank `.v4t .questionnaire .field label`. */
.v4t .questionnaire .filefield{ display:flex; align-items:center; gap:12px; flex-wrap:wrap; }
.v4t .questionnaire .filefield input[type=file]{ position:absolute; opacity:0; width:1px; height:1px; }
.v4t .questionnaire .field .filefield label.btn{
  display:inline-block; font-size:12px; font-weight:700; margin:0; cursor:pointer;
}
.v4t .questionnaire .filefield input[type=file]:focus-visible + label.btn{ box-shadow:0 0 0 3px rgba(29,95,194,0.25); }
.v4t .questionnaire .filefield .filename{ font-size:13px; color:var(--ink-soft); overflow-wrap:anywhere; }
.v4t .questionnaire .filefield .filename.set{ color:var(--ink); font-weight:500; }
.v4t .questionnaire .filefield .preview{
  width:60px; height:60px; border-radius:50%; object-fit:cover;
  border:2px solid var(--ink); margin-left:auto;
}
.v4t .questionnaire .hint.error{ color:var(--rust); font-weight:500; }

.v4t .questionnaire .pol-row{ display:flex; align-items:center; justify-content:space-between; gap:16px; padding:12px 0; border-bottom:1px solid var(--line); flex-wrap:wrap; }
.v4t .questionnaire .pol-name{ font-family:'Fraunces',serif; font-weight:600; font-size:16px; flex:1; min-width:220px; }
.v4t .questionnaire .pos-group{ display:flex; gap:6px; flex-wrap:wrap; }
.v4t .questionnaire .pos-opt{ position:relative; }
.v4t .questionnaire .pos-opt input{ position:absolute; opacity:0; width:0; height:0; }
.v4t .questionnaire .pos-opt span{
  display:inline-block; font-family:'Space Mono',monospace; font-size:11px; letter-spacing:0.04em;
  text-transform:uppercase; border:1.5px solid var(--ink-soft); border-radius:20px; padding:6px 12px;
  color:var(--ink-soft); cursor:pointer; user-select:none;
}
.v4t .questionnaire .pos-opt input:checked + span{ background:var(--ink); border-color:var(--ink); color:var(--paper); }
.v4t .questionnaire .pos-opt input:focus-visible + span{ box-shadow:0 0 0 3px rgba(29,95,194,0.25); }
.v4t .questionnaire .pos-none input:checked + span{ background:var(--ink-soft); border-color:var(--ink-soft); }

.v4t .questionnaire .hp{ position:absolute; left:-9999px; width:1px; height:1px; overflow:hidden; }
.v4t .questionnaire-submit{ margin-top:28px; }

.v4t .questionnaire-done h2{ font-size:30px; }
.v4t .edit-link-box{ border:2px solid var(--ink); border-radius:2px; padding:20px 22px; margin:20px 0; background:var(--paper-alt); }
.v4t .edit-link-box h3{ font-family:'Fraunces',serif; font-weight:600; font-size:20px; }
.v4t .edit-link-box .edit-link{ margin-top:10px; word-break:break-all; }
.v4t .edit-link-box .edit-link a{ font-family:'Space Mono',monospace; font-size:14px; color:var(--blue); }

/* Contact form. Built by InputfieldForm but rendered through the theme's .field
   markup (see contact.php), so it inherits the .questionnaire input styling
   above and only needs the bits the questionnaire expresses inline: the
   required marker and the error state. */
.v4t .contact-form{ margin-top:24px; }
.v4t .contact-form .is-required > label::after{ content:' *'; color:var(--rust); }
.v4t .contact-form .field-error{ margin:6px 0 0; font-size:13px; color:var(--rust); }
.v4t .contact-form .has-error input,
.v4t .contact-form .has-error textarea{ border-color:var(--rust); }
.v4t .contact-form .field_contact_submit{ margin-top:28px; }

@media (max-width:600px){
  .v4t .questionnaire-hero h1{ font-size:38px; }
  .v4t .questionnaire .field-grid{ grid-template-columns:1fr; }
  .v4t .questionnaire .pol-row{ align-items:flex-start; }
}
