  :root{
    /* Wake up, Neo. Follow the white rabbit. (w30-kv5lw) */
    --hair-kv5lw:.5px;
    --navy:#16305C; --red:#C8102E; --cream:#F4EEE1;
    --caption:#4A5F85; --on-navy:#A9C0E0; --on-navy-body:#D8DEE9; --hair:#DED5C3;
    --field:#C6CFDF; --red-hover:#9A0C23;
    --sans:"Libre Franklin","Helvetica Neue",Arial,sans-serif;
    --serif:"Source Serif 4",Georgia,serif;
    --pad:clamp(20px,5.5vw,80px);
  }
  *{box-sizing:border-box}
  html{scroll-behavior:smooth}
  body{margin:0;background:var(--cream);color:var(--navy);font-family:var(--sans);-webkit-font-smoothing:antialiased}
  a{color:var(--red)} a:hover{color:var(--red-hover)}
  .wrap{max-width:1440px;margin:0 auto;padding-left:var(--pad);padding-right:var(--pad)}
  .eyebrow{font-size:12px;font-weight:700;letter-spacing:.24em;text-transform:uppercase;color:var(--red);margin:0}
  .serif{font-family:var(--serif)}
  .btn{display:inline-flex;align-items:center;justify-content:center;min-height:44px;font-family:var(--sans);font-weight:700;text-decoration:none;cursor:pointer;border:0}
  .btn-red{background:var(--red);color:var(--cream)} .btn-red:hover{background:var(--red-hover);color:var(--cream)}
  .btn-line{border:2px solid var(--navy);color:var(--navy);background:transparent} .btn-line:hover{background:var(--navy);color:var(--cream)}
  :focus-visible{outline:3px solid var(--red);outline-offset:3px}
  .skip{position:absolute;left:-999px;top:8px;background:var(--cream);padding:10px 14px;z-index:10}
  .skip:focus{left:8px}

  /* header */
  header{background:var(--navy);position:sticky;top:0;z-index:5}
  header .wrap{display:flex;align-items:center;justify-content:space-between;gap:20px;padding-top:10px;padding-bottom:10px}
  .brand{display:flex;align-items:center;gap:14px;text-decoration:none}
  .brand span{font-size:15px;font-weight:800;letter-spacing:.18em;color:var(--cream)}
  nav{display:flex;align-items:center;gap:30px}
  nav a.nl{font-size:14px;font-weight:500;color:var(--on-navy-body);text-decoration:none}
  nav a.nl:hover{color:#fff}
  nav .btn{white-space:nowrap;font-size:14px;letter-spacing:.04em;padding:12px 20px}

  /* hero */
  .hero .wrap{display:flex;gap:72px;align-items:flex-start;padding-top:clamp(56px,7vw,96px);padding-bottom:clamp(56px,6vw,88px)}
  .hero-copy{flex:1;max-width:760px;display:flex;flex-direction:column;gap:28px}
  h1{font-size:clamp(44px,5.4vw,76px);font-weight:800;line-height:.98;letter-spacing:-.03em;margin:0;text-wrap:balance}
  .lede{font-size:clamp(18px,1.6vw,22px);line-height:1.5;max-width:52ch;margin:0}
  .ctas{display:flex;flex-wrap:wrap;gap:14px;padding-top:6px}
  .ctas .btn{font-size:17px;padding:16px 30px}
  .stats{width:400px;flex-shrink:0;background:#fff;border:1px solid var(--hair);padding:34px 36px;display:flex;flex-direction:column;gap:18px}
  .stats h2{font-size:12px;font-weight:700;letter-spacing:.18em;color:var(--caption);margin:0 0 4px}
  .stat{display:flex;align-items:baseline;gap:14px;padding-bottom:18px;border-bottom:1px solid var(--hair)}
  .stat:last-child{border-bottom:0;padding-bottom:0}
  .stat b{font-size:46px;font-weight:800;color:var(--red);line-height:1;min-width:1.4em}
  .stat b.n{color:var(--navy)}
  .stat span{font-family:var(--serif);font-size:17px;line-height:1.35}

  /* ward map */
  .hero .wrap{align-items:center}
  .hero-copy{max-width:540px;flex:0 1 540px}
  .ward-map{flex:1;margin:0;min-width:0;display:flex;flex-direction:column;gap:14px}
  .ward-map svg{width:100%;height:auto;display:block;overflow:visible}
  .dv path{stroke:var(--cream);stroke-width:4;stroke-linejoin:round;transition:filter .15s}
  .dv text{font-family:var(--sans);font-size:26px;font-weight:800;text-anchor:middle;dominant-baseline:middle;pointer-events:none}
  .dv.f0 path{fill:var(--red)} .dv.f0 text{fill:var(--cream)}
  .dv.f1 path{fill:#E7A3AE} .dv.f1 text{fill:var(--navy)}
  .dv.f2 path{fill:var(--navy)} .dv.f2 text{fill:var(--cream)}
  .dv:hover path{filter:brightness(1.12)}
  .ward-map figcaption{display:flex;flex-wrap:wrap;gap:8px 22px;font-size:13px;font-weight:600;color:var(--caption)}
  .ward-map figcaption span{display:inline-flex;align-items:center;gap:8px}
  .k{display:inline-block;width:14px;height:14px}
  .k.f0{background:var(--red)} .k.f1{background:#E7A3AE} .k.f2{background:var(--navy)}

  /* where we stand */
  .stand{background:#fff;border-top:1px solid var(--hair);border-bottom:1px solid var(--hair)}
  .stand .wrap{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.35fr);gap:24px 72px;align-items:center;padding-top:56px;padding-bottom:48px}
  .stand-copy{font-size:clamp(18px,1.5vw,21px);line-height:1.55;margin:0;max-width:46ch}
  .stand-stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:28px}
  .stand-stats .stat{flex-direction:column;gap:8px;border-bottom:0;padding:0 0 0 22px;border-left:3px solid var(--red)}
  .stand-stats .stat:last-child{border-left-color:var(--navy)}
  .stand-stats .stat b{font-size:56px}
  .stand .asof{grid-column:1/-1}
  @media (max-width:1100px){.stand .wrap{grid-template-columns:1fr}.hero-copy{flex:none;max-width:680px}}
  @media (max-width:520px){.stand-stats{grid-template-columns:1fr;gap:18px}.stand-stats .stat{flex-direction:row;align-items:baseline;gap:14px}.stand-stats .stat b{font-size:44px}.dv text{font-size:34px}}

  /* job */
  .job{background:var(--navy);color:var(--cream)}
  .job .wrap{padding-top:80px;padding-bottom:80px;display:flex;flex-direction:column;gap:44px}
  .job .eyebrow{color:var(--on-navy)}
  h2.big{font-size:clamp(32px,3.2vw,44px);font-weight:800;line-height:1.1;letter-spacing:-.02em;margin:14px 0 0;max-width:22ch}
  .three{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:44px}
  .three h3{font-size:24px;font-weight:700;line-height:1.2;margin:14px 0 12px}
  .three p{font-family:var(--serif);font-size:17px;line-height:1.55;color:var(--on-navy-body);margin:0}

  .asof{font-family:var(--sans);font-size:13px;line-height:1.45;color:var(--caption);margin:4px 0 0;border-top:1px solid var(--hair);padding-top:14px}
  .asof a{color:inherit}

  /* city */
  .city .wrap{padding-top:88px;padding-bottom:40px;display:flex;flex-direction:column;gap:40px;border-bottom:1px solid var(--hair)}
  .city-head{max-width:760px;display:flex;flex-direction:column;gap:14px}
  .city-lede{font-size:clamp(18px,1.6vw,21px);line-height:1.5;margin:6px 0 0}
  .city-stats{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:24px}
  .cstat{background:#fff;border:1px solid var(--hair);padding:28px 32px;display:flex;flex-direction:column;gap:10px}
  .cstat b{font-size:clamp(44px,5vw,64px);font-weight:800;color:var(--red);line-height:1;letter-spacing:-.02em}
  .cstat span{font-family:var(--serif);font-size:18px;line-height:1.4}
  .vacant h3{font-size:13px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--caption);margin:0 0 14px}
  .chips-list{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:8px}
  .chips-list li{min-width:48px;text-align:center;padding:9px 12px;border:1.5px solid var(--navy);font-weight:700;font-size:15px}
  .city .asof{border-top:0;padding-top:0}

  /* questions */
  .qs .wrap{display:flex;gap:72px;align-items:flex-start;padding-top:88px;padding-bottom:88px}
  .qs-head{width:380px;flex-shrink:0}
  .qs-list{flex:1;display:flex;flex-direction:column;gap:30px}
  .q{border-top:1px solid var(--hair);padding-top:22px}
  .q:first-child{border-top:2px solid var(--navy)}
  .q h3{font-size:22px;font-weight:700;margin:0 0 10px}
  .q p{font-family:var(--serif);font-size:18px;line-height:1.55;margin:0;max-width:68ch}

  /* form */
  .start{background:#fff;border-top:1px solid var(--hair);border-bottom:1px solid var(--hair)}
  .start .wrap{display:flex;gap:80px;align-items:flex-start;padding-top:80px;padding-bottom:80px}
  .start-head{width:480px;flex-shrink:0;display:flex;flex-direction:column;gap:18px}
  .start-head h2{font-size:clamp(32px,3.2vw,44px);font-weight:800;line-height:1.05;letter-spacing:-.02em;margin:0}
  .start-head p:not(.eyebrow){font-family:var(--serif);font-size:18px;line-height:1.55;color:#2E4270;margin:0}
  .lookup{font-size:14px;line-height:1.5;color:var(--caption);border-left:3px solid var(--red);padding-left:14px;font-family:var(--sans)!important}
  form{flex:1;max-width:600px;display:flex;flex-direction:column;gap:20px}
  .row{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px}
  label,.legend{display:flex;flex-direction:column;gap:8px;font-size:13px;font-weight:700;letter-spacing:.08em;text-transform:uppercase}
  input[type=text],input[type=email],input[type=tel],textarea{font:400 16px var(--sans);color:var(--navy);background:var(--cream);border:1.5px solid var(--field);min-height:50px;padding:13px 15px;border-radius:0;width:100%;letter-spacing:0;text-transform:none}
  input::placeholder{color:#7C8CAB}
  input:focus{border-color:var(--navy);outline:none;box-shadow:0 0 0 3px rgba(22,48,92,.15)}
  fieldset{border:0;margin:0;padding:4px 0 0;display:flex;flex-direction:column;gap:10px}
  .chips{display:flex;flex-wrap:wrap;gap:10px}
  .chip input{position:absolute;opacity:0;pointer-events:none}
  .chip span{display:flex;align-items:center;min-height:44px;padding:11px 18px;border:1.5px solid var(--field);font-size:15px;font-weight:600;letter-spacing:0;text-transform:none;cursor:pointer}
  .chip input:checked+span{background:var(--navy);border-color:var(--navy);color:var(--cream)}
  .chip input:focus-visible+span{outline:3px solid var(--red);outline-offset:2px}
  form .btn{font-size:18px;padding:17px 34px;min-height:52px;margin-top:8px;width:100%}
  .fine{font-size:13px;line-height:1.5;color:var(--caption);margin:0}
  .status{font-size:15px;line-height:1.5;padding:14px 16px;border:1.5px solid var(--navy);display:none}
  .status.show{display:block}
  .hp{position:absolute;left:-5000px}

  /* footer */
  footer{background:var(--navy);color:var(--cream)}
  footer .wrap{padding-top:56px;padding-bottom:44px;display:flex;flex-direction:column;gap:36px}
  .ft{display:flex;justify-content:space-between;gap:60px;align-items:flex-start;flex-wrap:wrap}

  @media (max-width:1100px){
    .hero .wrap,.qs .wrap,.start .wrap{flex-direction:column;gap:44px}
    .stats,.qs-head,.start-head{width:100%;max-width:600px}
    form{width:100%}
  }
  @media (max-width:820px){
    nav a.nl{display:none}
    .three{grid-template-columns:1fr;gap:36px}
    .city-stats{grid-template-columns:1fr}
    .city .wrap{padding-top:60px}
    .job .wrap,.start .wrap{padding-top:60px;padding-bottom:60px}
    .qs .wrap{padding-top:60px;padding-bottom:60px}
  }
  @media (max-width:520px){
    .brand span{font-size:11px;letter-spacing:.12em}
    nav .btn{padding:10px 14px;font-size:13px}
    .row{grid-template-columns:1fr}
    .stats{padding:26px 22px}
    .ctas .btn{width:100%}
  }

  /* shared: page hero for inner pages */
  .page-hero .wrap{padding-top:clamp(48px,6vw,80px);padding-bottom:clamp(40px,5vw,64px);display:flex;flex-direction:column;gap:18px;max-width:1440px}
  .page-hero h1{font-size:clamp(40px,5vw,68px)}
  .countdown{font-family:var(--serif);font-size:clamp(18px,1.6vw,22px);margin:0}
  .countdown b{color:var(--red);font-family:var(--sans);font-weight:800}
  .band{background:#fff;border-top:1px solid var(--hair);border-bottom:1px solid var(--hair)}
  .sec .wrap{padding-top:64px;padding-bottom:64px;display:flex;flex-direction:column;gap:28px}
  .sec h2.big{margin-top:10px}
  .sec-lede{font-family:var(--serif);font-size:18px;line-height:1.55;max-width:66ch;margin:0}

  /* calendar */
  .events{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;border-top:2px solid var(--navy)}
  .event{display:grid;grid-template-columns:96px minmax(0,1fr) auto;gap:20px;align-items:center;padding:18px 0;border-bottom:1px solid var(--hair)}
  .ev-date{display:flex;flex-direction:column;align-items:center;justify-content:center;border:1.5px solid var(--navy);padding:8px 4px;line-height:1}
  .ev-date .m{font-size:11px;font-weight:700;letter-spacing:.16em;color:var(--red)}
  .ev-date .d{font-size:32px;font-weight:800;margin-top:4px}
  .ev-date .w{font-size:11px;font-weight:600;letter-spacing:.1em;color:var(--caption);margin-top:4px}
  .ev-body h3{font-size:19px;font-weight:700;margin:0 0 4px;line-height:1.25}
  .ev-body p{font-family:var(--serif);font-size:16px;line-height:1.45;margin:0;color:#2E4270}
  .ev-tag{display:inline-block;font-family:var(--sans);font-size:10px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;padding:3px 7px;margin-right:8px;vertical-align:2px;background:var(--navy);color:var(--cream)}
  .ev-tag.election{background:var(--red)}
  .ics{font-family:var(--sans);font-size:13px;font-weight:700;color:var(--navy);border:1.5px solid var(--navy);background:transparent;padding:10px 14px;min-height:44px;cursor:pointer;white-space:nowrap}
  .ics:hover{background:var(--navy);color:var(--cream)}
  .event.focus{background:var(--cream);box-shadow:inset 4px 0 0 var(--red);padding-left:14px;padding-right:14px}
  .today-sec .wrap{padding-top:36px;padding-bottom:36px;gap:16px}
  .today-h{font-size:clamp(26px,3vw,34px);margin:0;display:flex;flex-wrap:wrap;align-items:baseline;gap:6px 14px}
  .today-h span{font-family:var(--serif);font-size:18px;font-weight:400;color:var(--caption)}
  .ev-empty{font-family:var(--serif);font-size:17px;padding:18px 0;margin:0;border-bottom:1px solid var(--hair)}

  /* polling table */
  .polls{width:100%;border-collapse:collapse;font-size:16px}
  .polls th{text-align:left;font-size:11px;font-weight:700;letter-spacing:.16em;color:var(--caption);text-transform:uppercase;padding:0 12px 10px 0;border-bottom:2px solid var(--navy)}
  .polls td{padding:14px 12px 14px 0;border-bottom:1px solid var(--hair);vertical-align:top}
  .polls td.div{font-weight:800;font-size:20px;width:64px}
  .polls td .place{font-weight:700}
  .polls td .addr{font-family:var(--serif);color:#2E4270}
  .polls a{font-weight:700;font-size:14px;white-space:nowrap}
  .polls tr.mine td{background:rgba(200,16,46,.06)}

  /* ballot */
  .ballot{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px}
  .race{background:#fff;border:1px solid var(--hair);padding:24px 26px;display:flex;flex-direction:column;gap:8px}
  .race .office{font-size:12px;font-weight:700;letter-spacing:.16em;text-transform:uppercase;color:var(--caption)}
  .race .who{font-size:20px;font-weight:700;line-height:1.3}
  .race .note{font-family:var(--serif);font-size:16px;line-height:1.45;color:#2E4270;margin:0}
  .race.empty{border-color:var(--red);border-width:1.5px}
  .race.empty .who{color:var(--red)}
  .callout{background:var(--navy);color:var(--cream);padding:28px 32px;display:flex;flex-wrap:wrap;gap:18px 32px;align-items:center;justify-content:space-between}
  .callout p{font-size:clamp(20px,2vw,26px);font-weight:800;line-height:1.2;margin:0;max-width:40ch}

  /* links */
  .links{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}
  .links a{display:flex;flex-direction:column;gap:6px;text-decoration:none;color:var(--navy);background:#fff;border:1px solid var(--hair);padding:20px 22px;min-height:44px}
  .links a:hover{border-color:var(--navy)}
  .links b{font-size:17px}
  .links span{font-family:var(--serif);font-size:15px;line-height:1.4;color:#2E4270}
  .links small{font-size:12px;color:var(--caption)}
  nav a.nl[aria-current=page]{color:#fff;text-decoration:underline;text-underline-offset:6px}

  @media (max-width:820px){
    .ballot,.links{grid-template-columns:1fr}
    .event{grid-template-columns:72px minmax(0,1fr)}
    .event .ics{grid-column:2;justify-self:start}
    .polls td.div{width:44px}
  }
  .sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}

  /* about */
  .about .wrap{padding-top:88px;padding-bottom:88px;display:flex;flex-direction:column;gap:40px}
  .people{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:40px}
  .person{display:grid;grid-template-columns:200px minmax(0,1fr);gap:28px;align-items:start}
  .portrait{position:relative;width:200px;aspect-ratio:4/5}
  .portrait::before{content:"";position:absolute;inset:10px -10px -10px 10px;background:var(--red)}
  .portrait .ph{position:relative;display:block;width:100%;height:100%;background:linear-gradient(160deg,#1d3d72,var(--navy));border:3px solid var(--navy);isolation:isolate;overflow:hidden}
  .portrait img{position:relative;display:block;width:100%;height:100%;object-fit:cover;filter:grayscale(1) contrast(var(--pc-q5jzx,1.18)) brightness(1.08);mix-blend-mode:luminosity;transition:filter .35s,mix-blend-mode .35s}
  .portrait .ph::after{content:"";position:absolute;inset:0;pointer-events:none;background:radial-gradient(rgba(244,238,225,.55) 1px,transparent 1.4px) 0 0/var(--dot-q5jzx,5px) var(--dot-q5jzx,5px),linear-gradient(200deg,transparent 55%,rgba(200,16,46,.55));mix-blend-mode:soft-light;transition:opacity .35s}
  .portrait .tag{position:absolute;z-index:2;left:-12px;top:-12px;line-height:0;filter:drop-shadow(3px 3px 0 var(--navy))}
  .person:hover .portrait img{filter:none;mix-blend-mode:normal}
  .person:hover .portrait .ph::after{opacity:.35}
  .person .role{font-size:12px;font-weight:700;letter-spacing:.18em;text-transform:uppercase;color:var(--red);margin:0 0 6px}
  .person h3{font-size:26px;font-weight:800;margin:0 0 12px;line-height:1.1}
  .person p.bio{font-family:var(--serif);font-size:17px;line-height:1.55;margin:0}
  @media (max-width:1100px){.people{grid-template-columns:1fr;max-width:680px}}
  @media (max-width:520px){.person{grid-template-columns:1fr}.portrait{width:min(260px,80%)}}
  /* footer (readable) */
  .ft-brand{display:flex;align-items:center;gap:14px;text-decoration:none}
  .ft-brand span{font-size:15px;font-weight:800;letter-spacing:.18em;color:var(--cream)}
  .ft-cols{display:flex;gap:64px;flex-wrap:wrap}
  .ft-cols h2{font-size:12px;font-weight:700;letter-spacing:.18em;color:var(--on-navy);margin:0 0 10px}
  .ft-cols p{font-size:17px;line-height:1.6;color:var(--cream);margin:0}
  .ft-cols a{color:var(--cream);text-decoration:underline;text-decoration-color:rgba(244,238,225,.45);text-underline-offset:4px}
  .ft-cols a:hover{text-decoration-color:var(--cream)}
  .legal{border-top:1px solid #2E4877;padding-top:20px;display:flex;justify-content:space-between;gap:10px 28px;flex-wrap:wrap;font-size:13px;line-height:1.5;color:var(--on-navy)}
  @media (max-width:820px){.legal{flex-direction:column}}
  .ip-notice{margin:14px 0 0;font-size:12px;line-height:1.55;color:var(--on-navy);opacity:.85;max-width:880px}
  @media (min-width:1240px){.city-head{max-width:none}.city-lede{white-space:nowrap;font-size:19px}}
  .mark{flex-shrink:0;filter:drop-shadow(0 2px 0 rgba(0,0,0,.18))}
  .brand span{font-size:17px;letter-spacing:.16em}
  @media (max-width:520px){.mark{width:58px;height:58px}.brand span{font-size:12px;letter-spacing:.12em}}
  textarea{resize:vertical;min-height:110px;line-height:1.5}
  .about-lede{font-size:clamp(18px,1.5vw,21px);line-height:1.5;margin:14px 0 0;max-width:56ch}
  .job-lede{font-size:clamp(18px,1.5vw,21px);line-height:1.5;color:var(--on-navy-body);margin:16px 0 0;max-width:56ch}
  .ways .num{font-size:13px;font-weight:800;letter-spacing:.16em;color:var(--red);background:var(--cream);padding:4px 8px;display:inline-block}
  .seat{border-top:1px solid rgba(169,192,224,.35);padding-top:36px;display:flex;flex-direction:column;gap:24px}
  .seat-h{font-size:13px;font-weight:700;letter-spacing:.2em;text-transform:uppercase;color:var(--on-navy);margin:0}
  .three.small h4{font-size:19px;font-weight:700;line-height:1.25;margin:10px 0 8px}
  .three.small p{font-size:16px}
  .city .wrap{padding-top:64px}
  .btn-line-light{border:2px solid var(--cream);color:var(--cream);background:transparent} .btn-line-light:hover{background:var(--cream);color:var(--navy)}
  .job .three.small h4{color:var(--cream)}
  .map-frame{position:relative;margin:0 10px 10px 0}
  .map-frame::before{content:"";position:absolute;inset:14px -14px -14px 14px;background:var(--red)}
  .map-frame>svg{position:relative;background:linear-gradient(160deg,#1d3d72,var(--navy));border:3px solid var(--navy);padding:clamp(18px,3vw,36px);box-sizing:border-box}
  .map-frame::after{content:"";position:absolute;inset:3px 3px 3px 3px;pointer-events:none;background:radial-gradient(rgba(244,238,225,.35) 1px,transparent 1.4px) 0 0/var(--dot-y1nkq,6px) var(--dot-y1nkq,6px),linear-gradient(200deg,transparent 55%,rgba(200,16,46,.35));mix-blend-mode:soft-light}
  .map-frame .tag{position:absolute;z-index:2;left:-14px;top:-14px;line-height:0;filter:drop-shadow(3px 3px 0 var(--navy))}
  .map-frame .dv path{stroke:var(--navy)}
  .map-frame .dv.f2 path{fill:var(--cream)} .map-frame .dv.f2 text{fill:var(--navy)}
  .k.f2{background:var(--cream);box-shadow:inset 0 0 0 1.5px var(--navy)}
  .ward-map{gap:26px}
  /* card-style header */
  header{border-bottom:4px solid var(--red);overflow:hidden}
  header::before{content:"";position:absolute;left:0;top:0;bottom:0;width:calc(max((100vw - 1440px) / 2, 0px) + var(--pad) + 150px);pointer-events:none;
    background:repeating-linear-gradient(to bottom,var(--red) 0 11px,transparent 11px 20px,rgba(244,238,225,.28) 20px 21px,transparent 21px 24px);
    -webkit-mask-image:linear-gradient(to right,#000 0%,rgba(0,0,0,.85) 55%,transparent 100%);mask-image:linear-gradient(to right,#000 0%,rgba(0,0,0,.85) 55%,transparent 100%);opacity:.9}
  header .wrap{position:relative}
  .mark{filter:drop-shadow(0 3px 6px rgba(0,0,0,.35))}
  .wm{display:flex;flex-direction:column;align-items:flex-start;line-height:1}
  .wm small{font-size:12px;font-weight:800;letter-spacing:.3em;color:var(--cream);padding-bottom:5px;border-bottom:2px solid var(--red);margin-bottom:5px}
  .wm b{font-size:38px;font-weight:900;letter-spacing:-.01em;color:var(--cream);line-height:.9}
  .ft-brand .wm b{font-size:34px}
  @media (max-width:520px){.mark{width:58px;height:58px}.wm small{font-size:9px;letter-spacing:.22em}.wm b{font-size:28px}header::before{width:calc(var(--pad) + 110px)}}
  .involved .wrap{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:40px 80px;align-items:start}
  .involved .ctas{margin-top:32px;padding-top:0}
  .involved .ways{grid-template-columns:1fr;gap:0}
  .involved .ways>div{display:grid;grid-template-columns:56px 1fr;column-gap:18px;padding:22px 0;border-top:1px solid rgba(169,192,224,.3)}
  .involved .ways>div:first-child{border-top:0;padding-top:4px}
  .involved .ways .num{grid-row:1/3;align-self:start;justify-self:start;margin-top:4px}
  .involved .ways h3{margin:0 0 6px;font-size:22px}
  @media (max-width:1100px){.involved .wrap{grid-template-columns:1fr}}
  /* footer: brand on the right so it does not echo the sticky header */
  .ft{flex-direction:row-reverse;align-items:center}
  .ft-brand{flex-direction:row-reverse;text-align:right}
  .ft-brand .wm{align-items:flex-end}
  .ft-brand .mark{width:64px;height:64px}
  @media (max-width:820px){.ft{flex-direction:column-reverse;align-items:flex-start}.ft-brand{flex-direction:row;text-align:left}.ft-brand .wm{align-items:flex-start}}
  /* candidates */
  .cands{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px}
  .cand{background:#fff;border:1px solid var(--hair);border-top:5px solid var(--red);padding:24px 26px;display:flex;flex-direction:column;gap:6px}
  .cand-where{font-size:12px;font-weight:700;letter-spacing:.18em;text-transform:uppercase;color:var(--caption);margin:0}
  .cand h3{font-size:26px;font-weight:800;margin:4px 0 0;line-height:1.1}
  .cand-office{font-size:15px;font-weight:600;color:var(--red);margin:0}
  .cand-why{font-family:var(--serif);font-size:17px;line-height:1.5;margin:8px 0 12px}
  .cand-links{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin-top:auto}
  .cand-links .btn{padding:11px 20px;font-size:15px}
  .cand-site{font-size:14px;color:var(--navy);margin-left:6px}
  .support-strip .wrap{padding-top:40px;padding-bottom:40px}
  @media (max-width:820px){.cands{grid-template-columns:1fr}}
  .about-why{margin-top:10px}
  .cand-event{font-size:14px;margin:0 0 14px;padding:10px 12px;background:var(--cream);border-left:3px solid var(--red)}
  .cands:has(> .cand:only-child){grid-template-columns:minmax(0,640px)}
  .ft-seo{font-size:14px;line-height:1.55;color:var(--on-navy);margin:0;max-width:90ch}
  .about-cols{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px 56px;margin-top:14px;max-width:none}
  .about-cols .about-lede{margin:0;max-width:none}
  @media (max-width:820px){.about-cols{grid-template-columns:1fr}}
  /* clickable map */
  .dv{cursor:pointer;outline:none}
  .dv:focus-visible path,.dv.sel path{stroke:var(--cream);stroke-width:7}
  .map-frame .dv.sel path{stroke:var(--cream)}
  .dv-tip{font-size:13px;color:var(--caption);margin:0}
  .dv-panel{background:#fff;border:1px solid var(--hair);border-left:5px solid var(--red);padding:18px 20px;display:flex;flex-direction:column;gap:4px}
  .dv-panel[hidden]{display:none}
  .dv-panel .dv-hint{font-size:12px;font-weight:700;letter-spacing:.18em;text-transform:uppercase;color:var(--red);margin:0}
  .dv-panel h3{font-size:24px;font-weight:800;margin:0 0 4px}
  .dv-panel p{font-family:var(--serif);font-size:16px;line-height:1.45;margin:0}
  .dv-btns{display:flex;flex-wrap:wrap;gap:10px;margin-top:12px}
  .dv-btns .btn{padding:10px 18px;font-size:15px}
  /* grouped polling places */
  .pp-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}
  .pp{position:relative;background:#fff;border:1px solid var(--hair);padding:16px 18px;display:flex;flex-direction:column;gap:3px;scroll-margin-top:120px}
  .pp.hl{border-color:var(--red);box-shadow:0 0 0 2px var(--red)}
  .pp span[id]{position:absolute;top:0;left:0;scroll-margin-top:140px}
  .pp-divs{font-size:12px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--red);margin:0}
  .pp h3{font-size:18px;font-weight:700;margin:2px 0 0;line-height:1.25}
  .pp-addr{font-family:var(--serif);font-size:15px;margin:0 0 6px;color:var(--caption)}
  .pp a{font-size:14px;font-weight:700;color:var(--navy);margin-top:auto}
  @media (max-width:1100px){.pp-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
  @media (max-width:520px){.pp-grid{grid-template-columns:1fr}}
  .about .wrap>div:first-child{max-width:none}
  .about-wide{max-width:none;margin-top:14px}
  /* featured candidate */
  .cand-feature{flex-direction:row;gap:26px;padding:24px;grid-column:1/-1}
  .cands.cands:has(> .cand-feature:only-child){grid-template-columns:1fr}
  .cand-art{flex:0 0 220px;align-self:flex-start;display:block;background:#fff;border:1px solid var(--hair)}
  .cand-art img{display:block;width:100%;height:auto}
  .cand-body{flex:1;display:flex;flex-direction:column;gap:6px;min-width:0}
  .cand-feature .cand-event{font-size:15px;padding:16px 18px;margin:6px 0 14px;display:flex;flex-direction:column;gap:6px;align-items:flex-start}
  .cand-event p{margin:0;line-height:1.45}
  .cand-event .ev-k{font-size:12px;font-weight:800;letter-spacing:.18em;text-transform:uppercase;color:var(--red)}
  .cand-event .btn{padding:10px 20px;font-size:15px;margin-top:6px}
  @media (max-width:720px){.cand-feature{flex-direction:column}.cand-art{flex:none;width:min(240px,70%)}}
  #support .sec-lede,#support h2.big{max-width:none}
  /* let copy span the layout on desktop and tablet */
  h2.big,.lede,.stand-copy,.sec-lede,.about-lede,.job-lede,.q p,.callout p,.city-head{max-width:none}
  @media (max-width:1100px){.hero-copy{max-width:none}}
  /* phone menu + back to top */
  .menu-btn{display:none;background:transparent;border:2px solid rgba(244,238,225,.5);width:46px;height:44px;padding:0;cursor:pointer;flex-direction:column;align-items:center;justify-content:center;gap:5px}
  .menu-btn span{display:block;width:20px;height:2px;background:var(--cream);transition:transform .2s,opacity .2s}
  header.open .menu-btn span:nth-child(1){transform:translateY(7px) rotate(45deg)}
  header.open .menu-btn span:nth-child(2){opacity:0}
  header.open .menu-btn span:nth-child(3){transform:translateY(-7px) rotate(-45deg)}
  .m-panel{position:relative;display:flex;flex-direction:column;background:var(--navy);border-top:1px solid rgba(169,192,224,.25);padding:6px var(--pad) 14px}
  .m-panel[hidden]{display:none}
  .m-panel a{color:var(--cream);text-decoration:none;font-size:18px;font-weight:600;padding:14px 0;border-bottom:1px solid rgba(169,192,224,.18)}
  .m-panel a:last-child{border-bottom:0}
  .to-top{position:fixed;right:16px;bottom:18px;z-index:6;width:48px;height:48px;border-radius:50%;border:2px solid var(--cream);background:var(--red);color:var(--cream);display:flex;align-items:center;justify-content:center;box-shadow:0 4px 12px rgba(0,0,0,.25);cursor:pointer}
  .to-top[hidden]{display:none}
  @media (max-width:820px){.menu-btn{display:flex}nav{gap:10px}}
  @media (min-width:821px){.m-panel,.to-top{display:none!important}}
  @media (max-width:520px){nav .btn-red{padding:10px 12px;font-size:13px}}
  .callout p{flex:1 1 320px}
  /* citywide ward map */
  .cw{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(280px,1fr);gap:40px;align-items:start}
  .cw-map{margin:0 12px 12px 0;display:flex;flex-direction:column;gap:22px}
  .cw-frame>svg{padding:clamp(12px,2vw,24px)}
  .cw-w{cursor:pointer;outline:none}
  .cw-w path{stroke:#16305C;stroke-width:2;stroke-linejoin:round;transition:filter .15s}
  .cw-w:hover path{filter:brightness(1.1)}
  .cw-w.ours path{stroke:#F4EEE1;stroke-width:5}
  .cw-w.sel path,.cw-w:focus-visible path{stroke:#F4EEE1;stroke-width:6}
  .cw-w text{font-family:var(--sans);font-size:15px;font-weight:800;text-anchor:middle;dominant-baseline:middle;pointer-events:none}
  .cw-dot{fill:#16305C;stroke:#F4EEE1;stroke-width:2;pointer-events:none}
  .cw-key{display:flex;flex-wrap:wrap;gap:8px 18px;font-size:13px;font-weight:600;color:var(--caption)}
  .cw-key span{display:inline-flex;align-items:center;gap:8px}
  .cw-key .k{box-shadow:inset 0 0 0 1px rgba(22,48,92,.35)}
  .cw-key .k.dot{border-radius:50%;background:var(--navy);box-shadow:0 0 0 2px var(--cream),0 0 0 3px rgba(22,48,92,.35);width:11px;height:11px}
  .cw-side{display:flex;flex-direction:column;gap:22px;position:sticky;top:130px}
  .cw-totals{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}
  .cw-totals div{border-left:3px solid var(--red);padding-left:12px;display:flex;flex-direction:column;gap:4px}
  .cw-totals b{font-size:28px;font-weight:800;color:var(--navy);line-height:1}
  .cw-totals span{font-family:var(--serif);font-size:14px;line-height:1.35}
  .cw-ours{display:flex;flex-direction:column;gap:10px;align-items:flex-start}
  .cw-ours p{margin:0;font-family:var(--serif);font-size:15px;color:var(--caption)}
  .cw-ours .btn{padding:10px 18px;font-size:15px}
  @media (max-width:1100px){.cw{grid-template-columns:1fr}.cw-side{position:static}}
  @media (max-width:520px){.cw-totals{grid-template-columns:1fr}.cw-w text{font-size:20px}}

  /* hero link to the block issue form */
  .hero-issue{margin:-8px 0 0;font-size:15px;line-height:1.5;color:var(--caption)}
  .hero-issue a{color:var(--navy);font-weight:700;text-decoration:underline;text-underline-offset:3px}
  .hero-issue a:hover{color:var(--red)}

  /* registration call-to-action in Get Involved */
  .switch{margin-top:32px;padding:22px 0 0;border-top:1px solid rgba(169,192,224,.3);display:flex;flex-direction:column;gap:16px}
  .switch p{margin:0;font-family:var(--serif);font-size:18px;line-height:1.5;color:var(--on-navy-body)}
  .switch b{font-family:var(--sans);color:var(--cream)}
  .switch-links{display:flex;flex-wrap:wrap;align-items:center;gap:14px 24px}
  .switch-links a:not(.btn){font-family:var(--sans);font-size:15px;font-weight:600;color:var(--on-navy);text-decoration:underline;text-underline-offset:3px}
  .switch-links a:not(.btn):hover{color:var(--cream)}

  /* block issue form */
  .block-issue{background:var(--cream);border-top:0}
  .join-list{background:var(--cream)}
  .join-list input[type=text],.join-list input[type=email]{background:#fff}
  .join-list form{align-self:center}
  .block-issue input[type=text],.block-issue input[type=email],.block-issue input[type=tel],.block-issue textarea{background:#fff}
  .check{flex-direction:row;align-items:flex-start;gap:12px;font-size:16px;font-weight:600;letter-spacing:0;text-transform:none;line-height:1.4;cursor:pointer}
  .check input{flex-shrink:0;width:22px;height:22px;margin:0;accent-color:var(--navy);cursor:pointer}
  .check input:focus-visible{outline:3px solid var(--red);outline-offset:2px}
  .switch-links .btn{padding:14px 26px;font-size:16px}
  .disclose{font-size:14px;line-height:1.55;color:var(--navy);background:#fff;border:1px solid var(--hair);border-left:3px solid var(--navy);padding:14px 18px;margin:22px 0 8px;max-width:760px}
  .disclose b{font-weight:700}

  /* full calendar page */
  .cal-bar{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px 24px}
  .cal-filters,.cal-tools{display:flex;flex-wrap:wrap;gap:10px;align-items:center}
  .cal-chip{display:inline-flex;align-items:center;gap:9px;min-height:44px;padding:10px 16px;font:600 15px var(--sans);color:var(--navy);background:#fff;border:1.5px solid var(--field);cursor:pointer}
  .cal-chip b{font-weight:700;color:var(--caption);font-size:13px}
  .cal-chip[aria-pressed="true"]{border-color:var(--navy)}
  .cal-chip[aria-pressed="false"]{color:var(--caption);background:transparent;text-decoration:line-through}
  .cal-chip[aria-pressed="false"] .sw{opacity:.35}
  .sw{display:inline-block;width:12px;height:12px;flex-shrink:0}
  .c-election{background:var(--red);color:var(--cream)}
  .c-ward{background:var(--navy);color:var(--cream)}
  .c-around{background:var(--cream);color:var(--navy);box-shadow:inset 0 0 0 1.5px var(--caption)}
  .cal-views{display:inline-flex;border:1.5px solid var(--navy)}
  .cal-views button{min-height:41px;padding:8px 18px;font:700 14px var(--sans);color:var(--navy);background:transparent;border:0;cursor:pointer}
  .cal-views button[aria-pressed="true"]{background:var(--navy);color:var(--cream)}
  .cal-all{padding:10px 18px;font-size:14px}
  .cal-head{display:flex;align-items:center;gap:12px;margin-bottom:14px}
  .cal-head h2{font-size:clamp(24px,2.4vw,32px);font-weight:800;letter-spacing:-.01em;margin:0;min-width:9.5ch}
  .cal-nav{width:44px;height:44px;display:inline-flex;align-items:center;justify-content:center;border:1.5px solid var(--navy);background:transparent;color:var(--navy);cursor:pointer}
  .cal-nav:hover:not(:disabled){background:var(--navy);color:var(--cream)}
  .cal-nav:disabled{opacity:.3;cursor:default}
  .cal-today{margin-left:auto;font:700 14px var(--sans);color:var(--navy);background:none;border:0;text-decoration:underline;text-underline-offset:3px;cursor:pointer;min-height:44px}
  .cal-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));border-top:2px solid var(--navy);border-left:1px solid var(--hair)}
  .cal-wd{font-size:11px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--caption);padding:10px 8px;border-right:1px solid var(--hair);border-bottom:1px solid var(--hair)}
  .cal-cell{min-height:112px;padding:8px;display:flex;flex-direction:column;gap:4px;align-items:stretch;text-align:left;font:inherit;color:var(--navy);background:#fff;border:0;border-right:1px solid var(--hair);border-bottom:1px solid var(--hair);min-width:0}
  .cal-cell.blank{background:transparent}
  .cal-cell.past{background:#FBF8F2}
  .cal-cell.past .cal-n,.cal-cell.past .cal-ev{opacity:.55}
  button.cal-cell{cursor:pointer}
  button.cal-cell:hover{box-shadow:inset 0 0 0 2px var(--caption)}
  .cal-cell.sel{box-shadow:inset 0 0 0 3px var(--navy)}
  .cal-cell:focus-visible{outline:3px solid var(--red);outline-offset:-3px}
  .cal-n{font-size:14px;font-weight:700;line-height:1}
  .cal-cell.today .cal-n{display:inline-flex;align-self:flex-start;align-items:center;justify-content:center;min-width:24px;height:24px;margin:-4px 0 0 -4px;background:var(--red);color:var(--cream)}
  .cal-ev{display:block;font-size:12px;font-weight:600;line-height:1.25;padding:3px 6px;min-width:0}
  .cal-ev span{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .cal-more{font-size:12px;font-weight:700;color:var(--caption)}
  .cal-day{margin-top:28px}
  .cal-day h3{font-size:22px;font-weight:800;margin:0 0 14px}
  .cal-pop{border:0;border-radius:6px;padding:28px 24px 20px;width:min(640px,calc(100vw - 32px));max-height:calc(100vh - 48px);overflow:auto;background:var(--cream);color:var(--navy);box-shadow:0 18px 50px rgba(22,48,92,.35)}
  .cal-pop::backdrop{background:rgba(22,48,92,.55)}
  .cal-pop h3{font-size:22px;font-weight:800;margin:0 36px 14px 0}
  .cal-pop .events{margin:0}
  .cal-pop-x{position:absolute;top:10px;right:12px;width:44px;height:44px;border:0;background:none;font-size:30px;line-height:1;color:var(--navy);cursor:pointer}
  .cal-cell.has{cursor:pointer}
  .cal-past{margin-bottom:14px}
  @media (max-width:820px){
    .cal-bar{flex-direction:column;align-items:stretch}
    .cal-tools{justify-content:space-between}
    .cal-cell{min-height:64px;padding:6px 4px;align-items:center}
    .cal-cell.today .cal-n{margin:-2px 0 0}
    .cal-ev{width:8px;height:8px;padding:0;border-radius:50%;flex:none}
    .cal-ev span{display:none}
    .cal-cell.has{flex-direction:column}
    .cal-cell.has .cal-n{margin-bottom:2px}
    .cal-more{font-size:10px}
    .cal-wd{padding:8px 0;text-align:center;letter-spacing:.06em}
  }
  @media (max-width:820px){.cal-cell.has{display:grid;grid-template-columns:repeat(3,8px);justify-content:center;align-content:start;gap:4px}.cal-cell.has .cal-n{grid-column:1/-1;justify-self:center}.cal-cell.has .cal-more{grid-column:1/-1;justify-self:center}}
  .cal-more-link{margin:20px 0 0}
  /* social links */
  a.so{display:inline-flex;align-items:center;color:var(--on-navy);line-height:0;text-decoration:none}
  a.so:hover{color:var(--cream)}
  .hd-social{display:flex;flex-direction:column;gap:6px;margin-left:-16px}
  .hd-social a.so{width:22px;height:22px;justify-content:center}
  .ft-social{display:flex;justify-content:center;gap:20px;margin:32px 0 0}
  .ft-social a.so{color:var(--cream);text-decoration:none;min-height:44px;min-width:28px}
  .ft-social a.so:hover{color:var(--on-navy)}
  .ft{gap:40px} .ft-cols{gap:44px}
  @media (max-width:820px){.hd-social{display:none}}

/* Street names on the homepage ward map */
.map-frame .st-labels{pointer-events:none}
.map-frame .st{font-family:'Libre Franklin',sans-serif;font-weight:700;font-size:13px;letter-spacing:.06em;text-transform:uppercase;text-anchor:middle;dominant-baseline:central;fill:var(--cream);stroke:var(--navy);stroke-width:3.5px;stroke-linejoin:round;paint-order:stroke;opacity:.92}
.map-frame .st.minor{font-size:10.5px;opacity:.8}
.map-frame .st.outer{font-size:14px;fill:#A9C0E0;stroke:none}
.map-frame .st.riv{font-family:'Source Serif 4',serif;font-style:italic;text-transform:none;letter-spacing:0;font-weight:400;font-size:16px}
@media (max-width:640px){.map-frame .st.minor,.map-frame .st.num{display:none}.map-frame .st{font-size:16px}.map-frame .st.outer{font-size:17px}}

/* Get Involved: text and three ways on the left, all buttons on the right */
.involved.job .wrap{padding-top:64px;padding-bottom:64px;display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);gap:40px 72px;align-items:start}
.involved .inv-left{container-type:inline-size}
.involved .inv-left .eyebrow{font-size:15px}
#involved .inv-left h2.big{white-space:nowrap;max-width:none;line-height:1.05;font-size:min(58px,calc(100cqi / 11.6))}
.involved .inv-left .job-lede{margin-top:20px}
.involved .inv-left .ways{margin-top:28px}
.involved .ways>div{padding:16px 0}
.involved .inv-right{align-self:center;display:flex;flex-direction:column;gap:28px}
.involved .ctas,.involved .switch-links{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-auto-rows:1fr;gap:14px;margin:0;padding:0}
.involved .ctas .btn,.involved .switch-links .btn{width:100%;min-height:76px;padding:12px 20px;font-size:17px;box-sizing:border-box;text-align:center}
.involved .switch{margin:0;padding-top:24px;border-top:1px solid rgba(169,192,224,.3);gap:14px}
.involved .switch p{margin:0}
@media (max-width:1100px){.involved.job .wrap{grid-template-columns:1fr}.involved .inv-right{align-self:auto}}
@media (max-width:640px){.involved .ctas,.involved .switch-links{grid-template-columns:1fr}.involved .ctas .btn,.involved .switch-links .btn{min-height:58px}}
/* Get Involved: more breathing room between buttons */
.involved .ctas,.involved .switch-links{gap:22px}
.involved .inv-right{gap:40px}
.involved .switch{padding-top:36px;gap:20px}
/* Get Involved: narrower left column, wider button column */
@media (min-width:1101px){.involved.job .wrap{grid-template-columns:minmax(0,.85fr) minmax(0,1.15fr);column-gap:80px}}
/* Jump links land below the sticky header instead of under it */
html{scroll-padding-top:102px}
@media (max-width:640px){html{scroll-padding-top:82px}}

/* ---- Citywide ward map: geography, zoom, search, directory (wards.html) ---- */
.cw-find{display:flex;flex-direction:column;gap:8px;margin:0 0 28px;max-width:640px}
.cw-find label{font-size:12px;font-weight:700;letter-spacing:.18em;text-transform:uppercase;color:var(--red)}
.cw-find-row{display:flex;gap:10px}
.cw-find-row input{flex:1;min-width:0}
.cw-find-row .btn{padding:0 24px;font-size:16px;min-height:50px}
.cw-find-note{margin:0;font-family:var(--serif);font-size:15px;line-height:1.45;color:var(--caption)}
.cw-find-note.err{color:var(--red)}
.cw-layers{display:flex;flex-wrap:wrap;gap:8px;margin:0 12px 0 0}
.cw-chip{position:relative;cursor:pointer}
.cw-chip input{position:absolute;opacity:0;width:1px;height:1px}
.cw-chip span{display:inline-flex;align-items:center;gap:8px;min-height:40px;padding:8px 14px;font:600 14px var(--sans);color:var(--navy);background:#fff;border:1.5px solid var(--field)}
.cw-chip span::before{content:"";width:12px;height:12px;border:1.5px solid var(--navy);box-sizing:border-box}
.cw-chip input:checked+span{border-color:var(--navy)}
.cw-chip input:checked+span::before{background:var(--navy);box-shadow:inset 0 0 0 2px #fff}
.cw-chip input:focus-visible+span{outline:3px solid var(--red);outline-offset:2px}
.cw-frame{overflow:visible}
#cw-svg{display:block;width:100%;height:auto;user-select:none;-webkit-user-select:none;--u:1}
#cw-svg.zoomed{touch-action:none;cursor:grab}
#cw-svg.dragging{cursor:grabbing}
#cw-svg .geo{pointer-events:none}
#cw-svg .water path{fill:none;stroke:#A9C0E0;stroke-linecap:round;stroke-linejoin:round}
#cw-svg .roads path{fill:none;stroke-linecap:round;stroke-linejoin:round}
#cw-svg .roads .case{stroke:#16305C;stroke-opacity:.55}
#cw-svg .roads .line{stroke:#F4EEE1}
#cw-svg .roads .t2{opacity:.75}
#cw-svg .lab{font-family:var(--sans);font-weight:700;letter-spacing:.06em;text-transform:uppercase;text-anchor:middle;dominant-baseline:central;fill:#F4EEE1;stroke:#16305C;stroke-linejoin:round;paint-order:stroke;font-size:calc(var(--u)*11px);stroke-width:calc(var(--u)*3px)}
#cw-svg .lab.riv{font-family:var(--serif);font-style:italic;font-weight:600;text-transform:none;letter-spacing:.01em;fill:#DCE6F4;font-size:calc(var(--u)*13px)}
#cw-svg .lab.area{font-weight:800;letter-spacing:.16em;font-size:calc(var(--u)*12px);opacity:.92}
#cw-svg .lab.outer{font-weight:700;letter-spacing:.14em;fill:#A9C0E0;stroke:none;font-size:calc(var(--u)*12px)}
#cw-svg .lab.lm{text-transform:none;letter-spacing:.02em;font-weight:700;font-size:calc(var(--u)*11px);text-anchor:start}
#cw-svg .lm-dot{fill:#F4EEE1;stroke:#16305C;stroke-width:calc(var(--u)*2px)}
#cw-svg .off{display:none}
.cw-zoom{position:absolute;z-index:3;right:14px;top:14px;display:flex;flex-direction:column;border:2px solid var(--navy);background:#fff}
.cw-zoom button{width:44px;height:44px;border:0;background:#fff;color:var(--navy);font:800 22px/1 var(--sans);cursor:pointer}
.cw-zoom button+button{border-top:1.5px solid var(--hair)}
.cw-zoom button:hover{background:var(--cream)}
.cw-zoom button:disabled{opacity:.35;cursor:default}
.cw-key-tip{font-weight:500;font-family:var(--serif);font-size:14px}
.cw-hoodline{font-family:var(--sans)!important;font-size:15px!important;font-weight:600;color:var(--caption);margin:-2px 0 6px!important}
.cw-hoodline:empty{display:none}
.cw-streets{color:var(--caption)}
.cw-streets:empty{display:none}
.cw-links{list-style:none;margin:10px 0 0;padding:0;display:flex;flex-direction:column;gap:6px}
.cw-links:empty{display:none}
.cw-links a{font:700 15px var(--sans);color:var(--navy);text-decoration:underline;text-underline-offset:3px}
.cw-links small{display:block;font:400 14px var(--serif);color:var(--caption)}
@media (max-width:520px){.cw-zoom{right:8px;top:8px}.cw-zoom button{width:40px;height:40px}.cw-find-row .btn{padding:0 18px}}
.cw-find-row .btn{flex:0 0 auto;width:auto}
.cw-find-row input{flex:1 1 auto;width:auto}
.cw-zoom{top:auto;bottom:14px}
@media (max-width:520px){.cw-zoom{top:auto;bottom:8px}}
#cw-svg{--k:1}
#cw-svg .cw-w text{font-size:calc(var(--k)*15px)}
#cw-svg .cw-w path{stroke-width:calc(var(--k)*2px)}
#cw-svg .cw-w.ours path{stroke-width:calc(var(--k)*5px)}
#cw-svg .cw-w.sel path,#cw-svg .cw-w:focus-visible path{stroke-width:calc(var(--k)*6px)}
#cw-svg .cw-dot{stroke-width:calc(var(--k)*2px)}
#cw-svg .roads .line.t1{stroke-width:calc(var(--u)*1.8px)} #cw-svg .roads .case.t1{stroke-width:calc(var(--u)*3.4px)}
#cw-svg .roads .line.hw{stroke-width:calc(var(--u)*2.4px)} #cw-svg .roads .case.hw{stroke-width:calc(var(--u)*4.2px)}
#cw-svg .roads .line.t2{stroke-width:calc(var(--u)*1.1px)} #cw-svg .roads .case.t2{stroke-width:calc(var(--u)*2.5px)}
@media (max-width:520px){#cw-svg .cw-w text{font-size:calc(var(--k)*20px)}}

/* Directory tiles (wards.html): one row per organization, badge + name + icon links */
.dir{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:12px;margin-top:24px}
.dir-tile{display:flex;align-items:center;gap:14px;background:#fff;border:1px solid var(--hair);padding:12px 14px;min-width:0}
.dir-tile.ours{border-color:var(--navy);box-shadow:inset 4px 0 0 var(--red)}
.dir-badge{flex:0 0 48px;width:48px;height:48px;border-radius:50%;display:flex;align-items:center;justify-content:center;background:var(--navy);box-shadow:inset 0 0 0 3px var(--navy),inset 0 0 0 5px var(--red),0 0 0 2px var(--cream);color:var(--cream)}
.dir-badge b{font:900 17px/1 var(--sans);letter-spacing:-.02em}
.dir-badge.b-long b{font-size:13px;letter-spacing:0}
.dir-badge.b-ward{background:var(--red);box-shadow:inset 0 0 0 3px var(--red),inset 0 0 0 5px var(--cream),0 0 0 2px var(--cream)}
.dir-badge.b-ward b{font-size:19px}
.dir-badge.mark-ours{background:none;box-shadow:none}
.dir-badge.mark-ours svg{width:48px;height:48px}
.dir-tx{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;gap:2px}
.dir-n{font:800 16px/1.2 var(--sans);color:var(--navy);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.dir-k{font:700 10.5px/1.2 var(--sans);letter-spacing:.14em;text-transform:uppercase;color:var(--caption)}
.dir-tile.ours .dir-k{color:var(--red)}
.dir-links{display:flex;gap:6px;flex:0 0 auto}
.dir-ic{width:40px;height:40px;display:inline-flex;align-items:center;justify-content:center;border:1.5px solid var(--navy);color:var(--navy);background:#fff;transition:background .15s,color .15s}
.dir-ic svg{width:20px;height:20px}
.dir-ic:hover,.dir-ic:focus-visible{background:var(--navy);color:var(--cream)}
.cw-links .cw-org{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;padding-top:10px;border-top:1px solid var(--hair)}
.cw-org-n{font:700 12px var(--sans);letter-spacing:.14em;text-transform:uppercase;color:var(--caption)}
@media (max-width:520px){.dir{grid-template-columns:1fr;gap:8px}.dir-tile{padding:10px 12px;gap:12px}.dir-badge,.dir-badge.mark-ours svg{flex-basis:42px;width:42px;height:42px}.dir-ic{width:44px;height:44px}}
.dir{grid-template-columns:repeat(auto-fill,minmax(380px,1fr))}
.dir-n{white-space:normal;overflow:visible}
.dir-badge svg{filter:none!important;box-shadow:none}
@media (max-width:520px){.dir{grid-template-columns:1fr}}
.dir-badge.b-res{background:#fff;color:var(--navy);box-shadow:inset 0 0 0 2px var(--navy),0 0 0 2px var(--cream)}
.dir-tile{flex-wrap:wrap;row-gap:10px}
.dir-tx{flex:1 1 150px}
.dir-links{margin-left:auto}
@media (max-width:520px){.dir-ic{width:42px;height:42px}}
.dir-tx{flex-basis:110px}
