:root{--blue:#18398f;--blue-deep:#0d225b;--blue-soft:#3157ad;--blue-pale:#bac8eb;--paper:#f3eee7;--paper-strong:#fffdf8;--white:#fff;--black:#000;--charcoal:#0e1117;--yellow:#ffd200;--green:#8de3ae;--green-dark:#1f6c50;--lime:#d0e875;--purple:#dc9eff;--orange:#f2a76f;--red:#ff8a7e;--red-vivid:#ff3326;--red-dark:#a33131;--red-deep:#711f1f;--red-pale:#fff1ee;--canvass-yes:#2e7d32;--canvass-considering:#1565c0;--canvass-undecided:#ffb300;--canvass-other-party:#6a1b9a;--canvass-not-interested:#00796b;--canvass-no:#c62828;--canvass-non-voter:#455a64;--canvass-moved:#5d4037;--canvass-out:#bf360c;--canvass-blacklist:#212121;--canvass-notes-only:#616161;--line-paper:color-mix(in srgb, var(--paper) 28%, transparent);--line-blue:color-mix(in srgb, var(--blue) 20%, transparent);--line-danger:color-mix(in srgb, var(--red-dark) 45%, transparent);--text-blue-muted:color-mix(in srgb, var(--blue) 76%, transparent);--text-paper-muted:color-mix(in srgb, var(--paper) 78%, transparent);--grid-paper:color-mix(in srgb, var(--paper) 4.5%, transparent);--grid-blue:color-mix(in srgb, var(--blue-deep) 4%, transparent);--surface-paper-tint:color-mix(in srgb, var(--paper) 6%, transparent);--surface-blue-tint:color-mix(in srgb, var(--blue) 4%, transparent);--surface-yellow-tint:color-mix(in srgb, var(--yellow) 8%, transparent);--surface-blue-wash:color-mix(in srgb, var(--blue-deep) 36%, transparent);--shadow-soft:color-mix(in srgb, var(--black) 22%, transparent);--shadow-strong:color-mix(in srgb, var(--black) 30%, transparent);--shadow-dialog:color-mix(in srgb, var(--blue-deep) 40%, transparent);--backdrop:color-mix(in srgb, var(--blue-deep) 72%, transparent);--map-background:var(--charcoal);--map-label:var(--paper);--map-label-halo:#0e1117eb;--map-point-stroke:#0d225bb8;--map-highlight:var(--red-vivid);--map-pinned-highlight:var(--orange);--map-electoral-register:var(--yellow);--map-company:var(--red-vivid);--map-point:var(--white);--map-missing:#737373b3;--map-percentile-low:#440154;--map-percentile-lower-middle:#3b528b;--map-percentile-middle:#21918c;--map-percentile-upper-middle:#5ec962;--map-percentile-high:#fde725;--map-water:#1a405ceb;--map-wood:#1a4233c7;--map-grass:#2b4f30b3;--map-farmland:#4d522e8a;--map-sand:#73633bb8;--map-wetland:#1f4d47b8;--map-residential:#3b3b428f;--map-commercial:#47384094;--map-industrial:#453d3394;--map-cemetery:#2b4a389e;--map-building:#807a7594;--map-waterway:#338fbfad;--map-rail:#bdb3ad6e;--map-road-major:#edc480b8;--map-road-main:#e0d4b899;--map-road-minor:#d1d4d46e;--map-path:#c7b89e5c;--display-font:"Arial Black", "Helvetica Neue", Helvetica, Arial, sans-serif;--body-font:"Helvetica Neue", Helvetica, Arial, sans-serif;--mono-font:"SFMono-Regular", "Cascadia Mono", "Roboto Mono", Consolas, monospace;--page-width:1500px;--page-gutter:clamp(1.25rem, 3vw, 3.25rem);--app-header-height:4.25rem}@media (max-width:900px){:root{--app-header-height:3.75rem}}*,:before,:after{box-sizing:border-box}html{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}body{min-width:20rem;font:400 1rem/1.5 var(--body-font);font-synthesis:none;text-rendering:optimizelegibility;margin:0}[hidden]:not([hidden=until-found]){display:none!important}button,input,select,textarea{font:inherit}a,button,summary,input,select,textarea{-webkit-tap-highlight-color:transparent}:focus-visible{outline:3px solid var(--yellow);outline-offset:3px}.skip-link{z-index:100;background:var(--yellow);color:var(--blue-deep);font-family:var(--mono-font);text-transform:uppercase;padding:.75rem 1rem;font-weight:800;text-decoration:none;position:fixed;top:1rem;left:1rem;translate:0 -200%}.skip-link:focus{translate:0}::selection{background:var(--yellow);color:var(--blue-deep)}.site-header,.app-header{border-bottom:1px solid var(--line-paper);background:var(--blue-deep);color:var(--paper)}.app-header{min-height:var(--app-header-height);justify-content:space-between;align-items:stretch;min-width:0;padding-inline:1rem;line-height:1.2;display:flex}.app-header__logo{border-right:1px solid var(--line-paper);color:inherit;flex:none;align-items:center;padding:.8rem 1rem .8rem 0;text-decoration:none;display:flex}.app-header__logo .brand-graphic{width:15rem;height:auto}@media (max-width:900px){.app-header__logo .brand-graphic{width:min(9rem,20vw)}}.brand-graphic{fill:currentColor;flex:none;display:block}.brand-graphic--lockup{aspect-ratio:1064/83}.brand-graphic--mark{aspect-ratio:81.5608/82.6337}.brand-graphic--light{color:var(--white)}.brand-graphic--dark{color:var(--blue)}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}.auth-screen{background:linear-gradient(var(--grid-paper) 1px, transparent 1px), linear-gradient(90deg, var(--grid-paper) 1px, transparent 1px), var(--blue);width:100%;min-height:100svh;color:var(--paper);background-size:4rem 4rem;place-items:center;padding:clamp(1rem,4vw,2rem);display:grid}.auth-card{border:1px solid var(--paper);background:var(--blue-deep);width:min(100%,34rem);box-shadow:.55rem .55rem 0 var(--yellow);padding:clamp(1.5rem,4vw,3rem)}.auth-card>.brand-lockup{color:inherit;align-items:center;text-decoration:none;display:flex}.auth-card>.brand-lockup>.brand-graphic{width:min(100%,15rem);height:auto}.auth-card .eyebrow{color:var(--yellow);font-family:var(--mono-font);letter-spacing:.12em;text-transform:uppercase;margin-block:.75rem;font-size:.75rem;font-weight:800;line-height:1.4}.auth-card h1{color:var(--paper);font-family:var(--display-font);letter-spacing:normal;text-transform:uppercase;margin-block:1.5rem .5rem;font-size:clamp(1.5rem,6vw,3rem);line-height:.95}.auth-card__subtitle{color:var(--text-paper-muted);margin-block:0 1.5rem;line-height:1.6}.auth-card [role=alert]{color:var(--red)}.auth-card [role=status]{color:var(--green)}.authentication-form{text-align:left;gap:1rem;display:grid}.authentication-form label{gap:.4rem;display:grid}.authentication-form input{box-sizing:border-box;width:100%;font:inherit;background:var(--paper-strong);color:var(--blue-deep);border-radius:.4rem;padding:.75rem}.authentication-form p{margin:0}.authentication-form p:empty{display:none}.authentication-mfa{gap:1rem;min-width:0;display:grid}.authentication-mfa img{background:#fff;max-width:100%;height:auto}.authentication-mfa code{overflow-wrap:anywhere}.authentication-mfa pre{max-width:100%;font-size:.8rem;overflow-x:auto}body{background:var(--paper);color:var(--blue-deep)}button,input,select,textarea{border-radius:.4rem}button{cursor:pointer}button:disabled{cursor:default;opacity:.55}a{color:inherit}h1,h2,h3,p{margin-top:0}h1{font-family:var(--display-font);letter-spacing:-.04em;font-size:clamp(1.8rem,4vw,2.8rem);line-height:1.1}h2{font-size:1.3rem;line-height:1.25}h3{font-size:1.05rem}p{white-space:pre-line}.button,.header-button,.party-choice{border:1px solid var(--blue);background:var(--blue);min-height:2.8rem;color:var(--white);justify-content:center;align-items:center;padding:.65rem 1rem;font-weight:700;text-decoration:none;display:inline-flex}.button--secondary,.party-choice{color:var(--blue);background:0 0}.button--danger{background:var(--red-deep);border-color:var(--red-deep);color:var(--white)}.button--text{color:var(--blue);background:0 0;border-color:#0000;padding-left:0}.button--white{background:var(--paper-strong);color:var(--blue-deep);border-color:var(--paper-strong)}.actions{flex-wrap:wrap;align-items:center;gap:.6rem;display:flex}.stack{gap:1rem;display:grid}.stack>:last-child,.panel>:last-child{margin-bottom:0}.muted{color:var(--text-blue-muted);font-size:.9rem}.error{color:var(--red-deep);font-weight:600}.error:empty,[role=status]:empty{display:none}.eyebrow{font:700 .8rem/1.4 var(--mono-font);text-transform:uppercase;letter-spacing:.08em}.lede{font-size:1.1rem}.field{gap:.4rem;font-weight:650;display:grid}input:not([type=checkbox]),select,textarea{border:1px solid var(--line-blue);background:var(--paper-strong);width:100%;min-height:2.8rem;color:var(--blue-deep);padding:.65rem .75rem}textarea{resize:vertical}.checkbox-field{align-items:center;gap:.5rem;font-size:.9rem;display:inline-flex}.checkbox-field input{width:1.2rem;height:1.2rem;accent-color:var(--blue)}.panel{border:1px solid var(--line-blue);background:var(--paper-strong);border-radius:.6rem;min-width:0;padding:clamp(1rem,3vw,1.8rem)}.page{align-content:start;gap:1.3rem;width:min(100%,82rem);margin:0 auto;padding:clamp(1.1rem,3vw,2.5rem);display:grid}.page>h1,.page>p{margin-bottom:0}.page--narrow{max-width:46rem}.app-header{gap:1rem}.app-header__logo{border:0}.app-header__identity{margin:auto;font-size:.85rem}.header-actions{align-items:center;gap:.5rem;display:flex}.header-button{border-color:var(--line-paper);color:var(--paper);background:0 0;position:relative}.unread-badge{background:var(--red-vivid);min-width:1.35rem;height:1.35rem;color:var(--white);border-radius:100%;place-items:center;margin-left:.4rem;padding:0 .2rem;font-size:.75rem;display:inline-grid}.app-tabs{background:var(--blue-deep);color:var(--paper);padding-inline:max(.5rem,50vw - 40rem);display:flex;overflow-x:auto}.app-tab{min-height:3.25rem;color:inherit;white-space:nowrap;background:0 0;border:0;border-bottom:3px solid #0000;border-radius:0;padding:.65rem 1.1rem;font-weight:700}.app-tab[aria-current=page]{border-bottom-color:var(--yellow);color:var(--yellow)}.app-main{min-height:calc(100dvh - 7.5rem);padding-bottom:env(safe-area-inset-bottom)}.totals,.tool-grid,.project-grid{grid-template-columns:repeat(auto-fit,minmax(min(100%,20rem),1fr));gap:1rem;display:grid}.total{font:800 3.4rem/1.25 var(--display-font);letter-spacing:-.05em;display:block}.project-count{font-weight:700}.project-grid>.panel{flex-direction:column;align-items:stretch;gap:.65rem;display:flex}.project-grid .actions{margin-top:auto}.project-grid .panel p,.project-grid .panel h2{margin-bottom:0}.participant{border-bottom:1px solid var(--line-blue);justify-content:space-between;align-items:center;gap:1rem;padding-block:.5rem;display:flex}.tool-button{border:1px solid var(--blue);background:var(--blue);min-height:9rem;color:var(--paper);padding:1.5rem;font-size:1.25rem;font-weight:800}.qr-pass{text-align:center}.qr-code{background:var(--white);width:min(100%,18rem);height:auto;fill:var(--charcoal);shape-rendering:crispedges;margin:1rem auto;display:block}.qr-pass__expired,.qr-pass--expired .qr-code{display:none}.qr-pass--expired .qr-pass__expired{display:block}.countdown{font:700 1rem var(--mono-font);white-space:nowrap}.scanner{gap:1rem;display:grid}.scanner__video{background:var(--charcoal);aspect-ratio:4/3;object-fit:cover;border-radius:.5rem;width:100%;max-height:26rem;display:block}.verdict{text-align:center;font-size:7rem;font-weight:800;line-height:1.3}.verdict--valid{color:var(--green-dark)}.verdict--invalid{color:var(--red-deep)}.message-row,.choice-row,.road-row,.voter-row{border:1px solid var(--line-blue);background:var(--paper-strong);width:100%;color:var(--blue-deep);text-align:left;justify-content:space-between;align-items:center;gap:.75rem;padding:1rem;display:flex}.message-row{white-space:pre-line;line-height:1.6;display:block}.message-row--unread{border-left:4px solid var(--blue);font-weight:700}.message-body{white-space:pre-wrap;overflow-wrap:anywhere}.choice-row{margin-top:.6rem}.modal{border:1px solid var(--line-blue);background:var(--paper);max-width:min(100vw - 2rem,32rem);color:var(--blue-deep);box-shadow:0 1rem 4rem var(--shadow-dialog);border-radius:.75rem;padding:1.5rem}.modal::backdrop{background:var(--backdrop)}.auth-card .brand-graphic{width:min(100%,20rem);height:auto;margin-bottom:2rem}.auth-card>.button{width:100%;margin-top:1rem}.auth-card .panel{color:var(--blue-deep)}.auth-card .error{color:var(--red)}.auth-card .muted{color:inherit}.auth-card .panel .muted{color:var(--text-blue-muted)}.auth-card .scanner .field,.authentication-mfa{min-width:0}.authentication-mfa code,.authentication-mfa pre{overflow-wrap:anywhere;white-space:pre-wrap}.authentication-mfa img{margin:1rem auto;display:block}.canvassing-view{height:calc(100dvh - var(--app-header-height) - 3.25rem);flex-direction:column;min-height:36rem;display:flex}.workspace-selector{flex:none;align-items:center;gap:1rem;width:100%;max-width:82rem;margin:0 auto;padding:1rem;display:flex}.workspace-selector .field{flex:1}.readonly-label{color:var(--red-deep);font:800 .8rem var(--mono-font)}.workspace-content{flex:1;width:100%;max-width:82rem;min-height:0;margin:0 auto}.workspace-content>.panel{margin:1rem}.workspace{flex-direction:column;gap:.8rem;height:100%;min-height:0;padding:0 1rem 1rem;display:flex}.workspace>p{margin:0}.workspace>.actions{flex:none}.map-area{flex:0 0 42%;min-height:10rem;position:relative}.canvass-map{background:var(--charcoal);border:1px solid var(--line-blue);border-radius:.5rem;width:100%;height:100%;overflow:hidden}.map-area>.error{background:var(--paper-strong);max-height:4rem;margin:0;padding:.4rem;font-size:.8rem;position:absolute;bottom:.5rem;left:.5rem;right:3rem;overflow:auto}.map-person{background:var(--yellow);border:2px solid var(--blue-deep);width:2rem;height:2rem;color:var(--blue-deep);border-radius:50%;place-items:center;font-size:.7rem;font-weight:800;display:grid}.map-person--self{background:var(--blue-soft);border-color:var(--white);width:1.1rem;height:1.1rem;box-shadow:0 0 0 5px var(--line-paper)}.canvass-list{flex:1;align-content:start;gap:.6rem;min-height:0;display:grid;overflow:auto}.road-row small{font:.75rem var(--mono-font);padding-top:.3rem;display:block}.road-row--completed{border-left:5px solid var(--blue-soft)}.road-status{color:var(--blue);font-size:.85rem;font-weight:700}.house{border:1px solid var(--line-blue);background:var(--paper-strong);border-radius:.5rem;padding:1rem}.house h3{margin-bottom:.25rem}.voter-row{border-inline:0;border-bottom:0;border-radius:0;justify-content:stretch;display:grid}.voter-row--pending{border-left:3px solid var(--orange)}.answer-badges{flex-wrap:wrap;gap:.4rem;display:flex}.answer{color:var(--white);border-radius:1rem;padding:.25rem .65rem;font-size:.75rem;font-weight:700}.elector-editor{border:1px solid var(--line-blue);background:var(--paper-strong);border-radius:.5rem;gap:1rem;padding:1.2rem;display:grid}.election-answers{border:0;margin:0;padding:0}.election-answers legend{margin-bottom:.6rem;padding:0;font-weight:700}.answer-choice{border:2px solid var(--answer-colour);min-height:2.7rem;color:var(--blue-deep);background:0 0;padding:.5rem .8rem}.answer-choice[aria-pressed=true]{background:var(--answer-colour);color:var(--white)}.party-choice[aria-pressed=true]{background:var(--blue);color:var(--white)}.answer--yes{background:var(--canvass-yes)}.answer-choice--yes{--answer-colour:var(--canvass-yes)}.answer--considering{background:var(--canvass-considering)}.answer-choice--considering{--answer-colour:var(--canvass-considering)}.answer--undecided{background:var(--canvass-undecided)}.answer-choice--undecided{--answer-colour:var(--canvass-undecided)}.answer--other_party{background:var(--canvass-other-party)}.answer-choice--other_party{--answer-colour:var(--canvass-other-party)}.answer--not_interested{background:var(--canvass-not-interested)}.answer-choice--not_interested{--answer-colour:var(--canvass-not-interested)}.answer--no{background:var(--canvass-no)}.answer-choice--no{--answer-colour:var(--canvass-no)}.answer--non_voter{background:var(--canvass-non-voter)}.answer-choice--non_voter{--answer-colour:var(--canvass-non-voter)}.answer--out{background:var(--canvass-out)}.answer-choice--out{--answer-colour:var(--canvass-out)}.answer--moved{background:var(--canvass-moved)}.answer-choice--moved{--answer-colour:var(--canvass-moved)}.answer--blacklist{background:var(--canvass-blacklist)}.answer-choice--blacklist{--answer-colour:var(--canvass-blacklist)}.answer--undecided,.answer-choice--undecided[aria-pressed=true]{color:var(--charcoal)}.pending-drafts{background:var(--surface-yellow-tint);border-block:1px solid var(--line-blue);gap:.5rem;padding:.7rem 1rem;display:grid}.pending-drafts__project{flex-wrap:wrap;align-items:center;gap:.7rem;font-size:.9rem;display:flex}.pending-drafts .button{min-height:2rem;padding:.3rem .6rem}@media (max-width:650px){.app-header__identity{display:none}.app-header{gap:.3rem;padding-inline:.7rem}.app-header__logo .brand-graphic{width:8rem}.header-button{min-height:2.5rem;padding:.5rem;font-size:.8rem}.app-tab{padding-inline:.9rem;font-size:.85rem}.workspace-selector{flex-wrap:wrap;gap:.4rem;padding:.8rem}.workspace{padding-inline:.65rem}.actions>.button{flex-grow:1}.elector-editor{padding:.9rem}.answer-choice{flex-grow:1}}
