html { scroll-behavior: smooth; }
body { overflow-x: hidden; background:#fbf8ee; }
.skip-link { position:absolute; left:1rem; top:-5rem; z-index:100; background:#1e5aa8; padding:.75rem 1rem; font-weight:800; color:#fff; transition:top .2s; }
.skip-link:focus { top:1rem; }
* { border-radius:0 !important; }
.nav-logo { display:block; width:240px; height:150px; flex-shrink:0; overflow:hidden; }.wordmark { box-sizing:border-box; display:flex; height:100%; flex-direction:column; align-items:flex-start; justify-content:flex-start; padding-top:1.15rem; color:#fff; font-family:'Lora',serif; line-height:1; text-align:left; }.wordmark-kicker { color:#ffdc54; font-size:.82rem; font-weight:600; letter-spacing:.055em; }.wordmark-name { margin-top:.2rem; font-size:2.85rem; font-weight:500; letter-spacing:-.075em; }.wordmark-detail { max-width:235px; margin-top:.42rem; color:#fff0d0; font-family:'Archivo',sans-serif; font-size:.55rem; font-weight:700; letter-spacing:.01em; line-height:1.2; }
.hero { background:#3f0a13 !important; }.hero-stripe { height:.65rem; }.nav-menu a:not(.rounded-full) { font-size:.8rem; font-weight:800; text-transform:uppercase; letter-spacing:.06em; color:rgba(255,255,255,.9); transition:color .2s; }.nav-menu a:not(.rounded-full):hover { color:#ffdc54; }
.hero h1 { font-family:'Lora',serif !important; font-weight:500 !important; text-transform:none !important; letter-spacing:-.045em !important; }
.photo-frame { overflow:hidden; box-shadow:6px 6px 0 #1e5aa8; }.photo-frame img { display:block; width:100%; height:100%; object-fit:cover; }.photo-frame figcaption { padding:.7rem .9rem; background:#3f0a13; color:#fff; font-size:.7rem; font-weight:800; letter-spacing:.06em; text-transform:uppercase; }.hero-photo { height:355px; box-shadow:8px 8px 0 #b61e35; }.hero-photo img { height:100%; object-position:50% 50%; }.neighbourhood-photo { height:360px; }.neighbourhood-photo img { object-position:53% 45%; }
.button-primary,.button-secondary,.button-form { display:inline-flex; min-height:3.1rem; align-items:center; justify-content:center; gap:.75rem; padding:.75rem 1.5rem; font-size:.82rem; font-weight:900; letter-spacing:.04em; text-transform:uppercase; transition:transform .15s,background .15s,color .15s; }.button-primary { background:#ffdc54;color:#171313; box-shadow:4px 4px 0 #a4191e; }.button-primary:hover { background:#fff0a5; transform:translate(-2px,-2px); }.button-secondary { border:2px solid #fff; color:#fff; }.button-secondary:hover { background:#fff;color:#171313; }.button-form { background:#a4191e;color:#fff; }.button-form:hover { background:#611014; }
.eyebrow { font-size:.72rem; font-weight:900; letter-spacing:.13em; text-transform:uppercase; color:#a4191e; }
.stat-card { display:flex; min-height:175px; flex-direction:column; justify-content:flex-end; border:2px solid #a4191e; background:#fff; padding:1.6rem; box-shadow:6px 6px 0 #1e5aa8; }.stat-number { font-family:'Archivo',sans-serif; font-size:4rem; font-weight:900; line-height:1; color:#a4191e; }.stat-label { margin-top:.8rem; font-size:.88rem; font-weight:800; text-transform:uppercase; letter-spacing:.04em; color:#3f0a13; }
.priority-card { border-left:6px solid #a4191e; background:#fff; padding:1.75rem; transition:transform .2s,box-shadow .2s; }.priority-card:hover { transform:translateY(-4px); box-shadow:5px 5px 0 #1e5aa8; }.priority-card h3 { margin-top:1.5rem; font-family:'Lora',serif; font-size:1.4rem; font-weight:600; line-height:1.2; color:#3f0a13; }.priority-card p { margin-top:.75rem; line-height:1.7; color:#475569; }.priority-card strong { font-size:.72rem; letter-spacing:.06em; color:#a4191e; }.icon-wrap { display:grid; height:3rem; width:3rem; place-items:center; background:#1e5aa8; color:#fff; }.icon-wrap svg { height:1.55rem; width:1.55rem; }
.campaign-form { border-top:5px solid #b61e35; }.form-field label,.form-options legend { display:block; margin-bottom:.45rem; font-size:.8rem; font-weight:800; letter-spacing:.035em; text-transform:uppercase; color:#3f0a13; }.form-field label span { color:#a4191e; }.form-field input,.form-field textarea { width:100%; border:1px solid #94a3b8; background:#fff; padding:.78rem .9rem; color:#3f0a13; outline:none; }.form-field textarea { resize:vertical; }.form-field input:focus,.form-field textarea:focus { border-color:#a4191e; box-shadow:0 0 0 2px rgba(182,30,53,.18); }.form-options { margin-top:1.5rem; border-top:1px solid #cbd5e1; padding-top:1.5rem; }.form-options label,.form-check { display:flex; align-items:flex-start; gap:.65rem; cursor:pointer; font-size:.95rem; line-height:1.4; }.form-options input,.form-check input { margin-top:.12rem; height:1.05rem; width:1.05rem; accent-color:#a4191e; }.form-check { margin-top:1.5rem; border-top:1px solid #cbd5e1; padding-top:1.5rem; }.form-check small { display:block; margin-top:.2rem; color:#64748b; }
footer a { transition:color .2s; } footer a:hover { color:#ffdc54; }
@media (max-width: 1023px) { .nav-logo { width:216px; height:54px; }.wordmark { padding-top:.27rem; }.wordmark-kicker { font-size:.5rem; }.wordmark-name { margin-top:.05rem; font-size:1.62rem; }.wordmark-detail { max-width:210px; margin-top:.14rem; font-size:.4rem; }.nav-menu { position:absolute; inset:76px 1.25rem auto; flex-direction:column; align-items:stretch; gap:.25rem; border:2px solid #a4191e; background:#fff; padding:1rem; box-shadow:6px 6px 0 #1e5aa8; }.nav-menu a:not(.rounded-full) { padding:.8rem 1rem; color:#3f0a13; }.nav-menu a:not(.rounded-full):hover { color:#a4191e; background:#fff5f6; }.nav-menu .rounded-full { margin:.5rem .3rem .15rem; text-align:center; }.nav-menu.is-open { display:flex; } }
@media (max-width: 479px) { .nav-logo { width:168px; height:42px; }.wordmark-kicker { font-size:.4rem; }.wordmark-name { font-size:1.50rem; }.wordmark-detail { max-width:165px; font-size:.31rem; } }
@media (max-width: 639px) { .hero-photo { height:310px; }.neighbourhood-photo { height:320px; } }
@media (prefers-reduced-motion: reduce) { *,*::before,*::after { scroll-behavior:auto!important; animation-duration:.01ms!important; transition-duration:.01ms!important; } }

/* Refined civic palette: navy leads, burgundy prompts action, blue supports. */
body { background:#f8f7f4; }
.skip-link { background:#8b2934; }
.wordmark-kicker { color:#f0ebdf; }
.wordmark-detail { color:#dce5ef; }
.hero { background:#0f2744 !important; }
.hero-stripe { background:#c8323f !important; }
.nav-menu a:not(.rounded-full):hover { color:#f0ebdf; }
.photo-frame { box-shadow:6px 6px 0 #6b86a4; }
.photo-frame figcaption { background:#541b26; }
.hero-photo { box-shadow:8px 8px 0 #c8323f; }
.hero .button-primary,.hero .button-secondary { min-height:3.25rem; border-radius:9999px !important; padding:.8rem 1.6rem; font-size:.875rem; font-weight:700; letter-spacing:0; text-transform:none; }.hero .button-primary { box-shadow:none; }.hero .button-secondary { border:1px solid rgba(255,255,255,.7); }.hero .button-secondary:hover { background:#fff; color:#0f2744; }
.button-primary { background:#c8323f; color:#fff; box-shadow:4px 4px 0 #d2b65c; }
.button-primary:hover { background:#a82431; }
.button-form { background:#c8323f; }
.button-form:hover { background:#a82431; }
.eyebrow,.stat-number,.priority-card strong,.form-field label span { color:#c8323f; }
.stat-card { border-color:#c8323f; box-shadow:6px 6px 0 #6b86a4; }
.stat-label,.priority-card h3 { color:#14263b; }
.record-achievements { margin-top:4.5rem; border-top:2px solid #b9c5c1; padding-top:3.5rem; }.achievement-list { display:grid; gap:0; margin-top:2.25rem; border-top:1px solid #c9d1ce; }.achievement-list li { display:flex; align-items:flex-start; gap:.85rem; border-bottom:1px solid #c9d1ce; padding:1.1rem 0; color:#263b4d; font-size:1rem; font-weight:650; line-height:1.45; }.achievement-list li::before { content:'✓'; display:grid; flex:0 0 auto; width:1.55rem; height:1.55rem; place-items:center; margin-top:.03rem; border-radius:50% !important; background:#c8323f; color:#fff; font-size:.9rem; font-weight:900; }.achievement-list { grid-template-columns:repeat(2,minmax(0,1fr)); column-gap:3.5rem; }.achievement-list li { break-inside:avoid; }
.priority-card { border-left-color:#c8323f; }
.priority-card:hover { box-shadow:5px 5px 0 #6b86a4; }
.icon-wrap { background:#365f8d; }
.campaign-form { border-top-color:#c8323f; }
.form-field label,.form-options legend,.form-field input,.form-field textarea { color:#14263b; }
.form-field input:focus,.form-field textarea:focus { border-color:#c8323f; box-shadow:0 0 0 2px rgba(200,50,63,.18); }
.form-options input,.form-check input { accent-color:#c8323f; }
footer a:hover { color:#f0ebdf; }
@media (max-width: 1023px) { .nav-menu { border-color:#c8323f; box-shadow:6px 6px 0 #6b86a4; }.nav-menu a:not(.rounded-full) { color:#14263b; }.nav-menu a:not(.rounded-full):hover { color:#c8323f; background:#fff5f5; } }
@media (max-width: 767px) { .achievement-list { grid-template-columns:1fr; column-gap:0; } }

/* Ward map: an in-page civic graphic rather than an embedded third-party map. */
.ward-map-section { background:#e8eeeb; border-top:1px solid #d6ddda; border-bottom:1px solid #d6ddda; }
.map-link { display:inline-flex; align-items:center; gap:.5rem; margin-top:1.75rem; color:#a82431; font-size:.83rem; font-weight:900; letter-spacing:.045em; text-transform:uppercase; }
.map-link:hover { color:#0f2744; text-decoration:underline; text-underline-offset:.25rem; }
.ward-map-card { overflow:hidden; background:#f8f7f4; box-shadow:7px 7px 0 #6b86a4; }
.ward-map-graphic { display:block; width:100%; height:auto; }
.map-minor-roads { opacity:.72; }
.map-ward-fill { fill:#c8323f; stroke:#8f1e2c; stroke-width:5; }
.map-major-roads { stroke:#0f2744; stroke-width:8; }
.map-road-labels { font-family:'Archivo',sans-serif; font-size:10px; font-weight:800; letter-spacing:.12em; }
.map-center { fill:#0f2744; font-family:'Archivo',sans-serif; font-weight:900; text-anchor:middle; }.map-center text:first-of-type { font-size:11px; letter-spacing:.18em; }.map-center text:nth-of-type(2) { font-family:'Lora',serif; font-size:46px; font-weight:600; }.map-center text:nth-of-type(3) { font-size:8px; letter-spacing:.08em; }
.ward-map-card figcaption { display:flex; justify-content:space-between; gap:1rem; padding:.8rem 1rem; background:#0f2744; color:#fff; font-size:.7rem; font-weight:900; letter-spacing:.08em; text-transform:uppercase; }.ward-map-card figcaption span { color:#c5d4e2; }
@media (max-width: 639px) { .ward-map-card figcaption { display:block; line-height:1.5; }.ward-map-card figcaption span { display:block; margin-top:.15rem; }.map-road-labels { font-size:8px; } }

/* Community gallery keeps campaign imagery in one deliberate, lively moment. */
.community-gallery { background:#f8f7f4; }
.gallery-open { display:inline-flex; align-items:center; justify-content:center; gap:.55rem; min-height:3.1rem; border:2px solid #0f2744; padding:.7rem 1.1rem; color:#0f2744; font-size:.78rem; font-weight:900; letter-spacing:.05em; text-transform:uppercase; transition:background .15s,color .15s,transform .15s; }.gallery-open:hover { background:#0f2744; color:#fff; transform:translate(-2px,-2px); }
.gallery-featured { display:grid; grid-template-columns:1.55fr 1fr; grid-template-rows:repeat(2, 13rem); gap:1rem; }.gallery-tile { position:relative; overflow:hidden; min-width:0; text-align:left; background:#0f2744; cursor:pointer; }.gallery-tile-main { grid-row:span 2; }.gallery-tile img { width:100%; height:100%; object-fit:cover; transition:transform .35s ease; }.gallery-tile:hover img,.gallery-tile:focus-visible img { transform:scale(1.045); }.gallery-tile span { position:absolute; left:0; bottom:0; padding:.65rem .8rem; background:#0f2744; color:#fff; font-size:.69rem; font-weight:900; letter-spacing:.07em; text-transform:uppercase; }.gallery-tile:focus-visible,.gallery-open:focus-visible,.gallery-modal button:focus-visible { outline:3px solid #d2b65c; outline-offset:3px; }
.gallery-modal { display:none; position:fixed; z-index:100; inset:0; overflow:auto; padding:1rem; background:rgba(9,22,38,.82); }.gallery-modal.is-open { display:block; }.gallery-modal-panel { position:relative; width:min(1100px,100%); margin:3vh auto; background:#f8f7f4; padding:1.1rem; box-shadow:10px 10px 0 #c8323f; }.gallery-modal-header { display:flex; align-items:center; justify-content:space-between; gap:1rem; margin-bottom:1rem; border-bottom:2px solid #0f2744; padding-bottom:.85rem; }.gallery-modal-header p { color:#0f2744; font-size:.76rem; font-weight:900; letter-spacing:.12em; text-transform:uppercase; }.gallery-modal-header button { color:#a82431; font-size:.78rem; font-weight:900; letter-spacing:.07em; text-transform:uppercase; }.gallery-modal-header button span { margin-left:.35rem; font-size:1.35rem; line-height:0; vertical-align:-.1em; }.gallery-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:.75rem; }.gallery-grid button { aspect-ratio:1/1; overflow:hidden; background:#dce4e2; cursor:pointer; }.gallery-grid img { display:block; width:100%; height:100%; object-fit:cover; transition:transform .25s ease; }.gallery-grid button:hover img { transform:scale(1.045); }.gallery-lightbox { display:grid; place-items:center; position:fixed; z-index:101; inset:0; padding:2.5rem 1rem 1rem; background:rgba(5,12,22,.95); }.gallery-lightbox[hidden] { display:none; }.gallery-lightbox img { display:block; max-width:min(1200px,95vw); max-height:78vh; object-fit:contain; }.gallery-lightbox p { width:min(1200px,95vw); margin-top:.7rem; color:#fff; font-size:.82rem; text-align:center; }.gallery-lightbox button { position:absolute; top:1rem; right:1rem; display:grid; width:2.7rem; height:2.7rem; place-items:center; border:1px solid rgba(255,255,255,.5); color:#fff; font-size:2rem; line-height:1; }
body.gallery-is-open { overflow:hidden; }
@media (max-width:639px) { .gallery-featured { grid-template-columns:1fr; grid-template-rows:15rem 11rem 11rem; }.gallery-tile-main { grid-row:auto; }.gallery-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }.gallery-modal-panel { margin:1rem auto; }.gallery-modal { padding:.65rem; } }

/* Standalone voting and donation pages */
.vote-page-header { background:#0f2744; }.page-back-link { color:#fff; font-size:.75rem; font-weight:900; letter-spacing:.06em; text-transform:uppercase; }.page-back-link:hover { color:#f0ebdf; }
.vote-intro,.donate-intro { background:#0f2744; border-top:8px solid #c8323f; }.vote-date-card { min-height:18rem; padding:2.5rem; background:#fff; border:2px solid #b8c3ce; box-shadow:6px 6px 0 #6b86a4; text-align:center; }.vote-date-card p,.donate-action p { color:#a82431; font-size:.78rem; font-weight:900; letter-spacing:.13em; text-transform:uppercase; }.vote-date-card h2 { max-width:26rem; margin:2rem auto 1.25rem; font-family:'Lora',serif; font-size:2.1rem; font-weight:600; line-height:1.25; color:#14263b; }.vote-date-card span { color:#526477; font-size:1.25rem; font-weight:600; }.vote-date-card-red { background:#c8323f; border-color:#c8323f; box-shadow:6px 6px 0 #0f2744; }.vote-date-card-red p,.vote-date-card-red h2,.vote-date-card-red span { color:#fff; }
.vote-eligibility { padding:2.5rem; border-top:5px solid #c8323f; background:#fff; box-shadow:6px 6px 0 #6b86a4; }.vote-eligibility ul,.donation-notes ul { display:grid; gap:1rem; margin-top:2rem; }.vote-eligibility li,.donation-notes li { display:flex; gap:.8rem; color:#33485d; font-size:1.05rem; line-height:1.5; }.vote-eligibility li::before,.donation-notes li::before { content:'•'; flex:0 0 auto; color:#c8323f; font-size:1.8rem; line-height:.75; }.vote-register { margin-top:2.5rem; padding:1.75rem; background:#e8eeeb; border-left:6px solid #0f2744; }.vote-register h3,.rebate-grid h3,.donation-notes h3 { font-family:'Lora',serif; font-size:1.55rem; font-weight:600; color:#14263b; }.vote-register p { max-width:45rem; margin:1rem 0 1.5rem; color:#475569; line-height:1.65; }
.donate-action { align-self:center; padding:2rem; background:#f8f7f4; box-shadow:7px 7px 0 #c8323f; }.donate-action p { margin-bottom:1.25rem; }.donate-action .button-primary { width:100%; }.donate-action small { display:block; margin-top:1rem; color:#526477; font-size:.75rem; text-align:center; }.rebate-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:1.25rem; }.rebate-grid article { padding:2rem; background:#fff; border-top:5px solid #c8323f; box-shadow:6px 6px 0 #6b86a4; }.rebate-grid article > p { margin-top:1rem; color:#526477; line-height:1.6; }.rebate-grid dl { margin-top:1.5rem; }.rebate-grid dl div { display:flex; justify-content:space-between; gap:1rem; border-top:1px solid #d8dfdb; padding:.85rem 0; color:#32485b; line-height:1.4; }.rebate-grid dt { font-weight:800; }.rebate-grid dd { text-align:right; }.donation-notes { margin-top:2rem; padding:2rem; background:#e8eeeb; border-left:6px solid #c8323f; }.donation-notes ul { margin-bottom:1.5rem; }.donation-notes > p { color:#475569; line-height:1.6; }.donation-notes > a { display:inline-block; margin-top:1.25rem; color:#a82431; font-size:.8rem; font-weight:900; letter-spacing:.04em; text-transform:uppercase; }.donation-notes > a:hover { text-decoration:underline; text-underline-offset:.25rem; }
.other-payment { max-width:42rem; margin-top:2rem; padding-top:1.5rem; border-top:1px solid rgba(255,255,255,.35); }.other-payment > p { color:#fff; font-size:.75rem; font-weight:900; letter-spacing:.12em; text-transform:uppercase; }.other-payment > div { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:1rem; margin-top:1rem; }.other-payment section { padding:1rem; background:rgba(255,255,255,.09); border-left:4px solid #c8323f; }.other-payment h2 { font-family:'Lora',serif; font-size:1.2rem; font-weight:600; color:#fff; }.other-payment dl { display:grid; gap:.25rem; margin-top:.7rem; }.other-payment dt { color:#c5d4e2; font-size:.7rem; font-weight:900; letter-spacing:.06em; text-transform:uppercase; }.other-payment dd { color:#fff; font-size:.95rem; font-weight:600; overflow-wrap:anywhere; }.other-payment a { color:#fff; text-decoration:underline; text-underline-offset:.2rem; }
@media (max-width:639px) { .vote-date-card,.vote-eligibility,.rebate-grid article,.donation-notes { padding:1.5rem; }.vote-date-card h2 { font-size:1.7rem; }.rebate-grid,.other-payment > div { grid-template-columns:1fr; }.rebate-grid dl div { display:block; }.rebate-grid dd { margin-top:.25rem; text-align:left; } }
