.elections-app{min-width:0}.election-heading{justify-content:space-between;align-items:flex-start;gap:24px;display:flex}.election-actions,.election-toolbar,.election-tabs{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.election-toolbar{margin:25px 0}.election-toolbar>label{flex:1;max-width:560px}.elections-app label,.election-drawer label{gap:8px;font-size:14px;display:grid}.elections-app input,.elections-app select,.elections-app textarea,.election-drawer input,.election-drawer select,.election-drawer textarea{background:var(--paper);width:100%;color:var(--ink);border:1px solid var(--line);font:inherit;border-radius:8px;min-width:0;padding:12px}.elections-app textarea,.election-drawer textarea{min-height:90px}.election-tabs{border-bottom:1px solid var(--line);margin:20px 0 28px;padding-bottom:15px}.election-tabs .selected{color:var(--accent);border-color:var(--accent)}.election-stats{grid-template-columns:repeat(3,minmax(0,1fr));gap:18px;display:grid}.election-stats strong{color:var(--accent);font-size:32px;display:block}.election-stats span{color:var(--muted);margin-top:7px;display:block}.election-list-row{border-bottom:1px solid var(--line);flex-wrap:wrap;align-items:center;gap:12px;padding:18px 0;display:flex}.election-list-row>div:first-child{flex:1;min-width:180px}.election-list-row p{overflow-wrap:anywhere;margin:7px 0}.election-error{color:var(--ink);background:color-mix(in srgb,#d96868 12%,var(--paper));border:1px solid #d96868;border-radius:8px;margin:16px 0;padding:16px}.election-message:empty{display:none}.election-message{color:var(--accent);margin:12px 0;line-height:1.6}.election-warning{background:color-mix(in srgb,var(--accent) 10%,var(--paper));border-left:3px solid var(--accent);padding:12px;font-size:14px;line-height:1.6;display:block}.election-state.open{color:var(--accent)}.election-results{grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;display:grid}.election-result{border:1px solid var(--line);border-radius:10px;min-width:0;padding:20px}.election-result h3{margin-top:8px}.election-count{border-top:1px solid var(--line);justify-content:space-between;gap:15px;padding:12px 0;display:flex}.election-count small{color:var(--muted);margin-top:5px;font-size:12px;display:block}.election-count strong{color:var(--accent);font-size:21px}.election-drawer{border:0;border-left:1px solid var(--line);background:var(--bg);width:min(740px,100vw);max-width:100vw;height:100dvh;max-height:100dvh;color:var(--ink);margin:0;padding:0;position:fixed;inset:0 0 0 auto}.election-drawer::backdrop{background:#000a}.election-drawer>header{background:var(--paper);z-index:4;border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;gap:16px;padding:18px 24px;display:flex;position:sticky;top:0}.election-drawer>header h2{margin:0;font-size:21px}.election-drawer-body{padding:24px}.election-form{gap:22px;display:grid}.election-form>button{justify-self:start}.election-check{align-items:flex-start;line-height:1.5;gap:10px!important;display:flex!important}.election-check input{width:18px;min-width:18px;min-height:18px;accent-color:var(--accent);margin:2px 0}.election-history details{border-bottom:1px solid var(--line);padding:16px 0}.election-history summary{cursor:pointer;line-height:1.8}.election-history pre{white-space:pre-wrap;overflow-wrap:anywhere;background:var(--paper);max-width:100%;padding:14px;font-size:12px}.election-ballot-fields{grid-template-columns:repeat(2,minmax(0,1fr));gap:22px;display:grid}.election-ballot-fields small{color:var(--muted)}.election-ballot-save{background:var(--paper);border:1px solid var(--line);border-radius:10px;flex-wrap:wrap;align-items:center;gap:18px;padding:16px;display:flex;position:sticky;bottom:12px}.election-person-choice{text-align:left;width:100%;margin:12px 0;display:flex}.election-login{max-width:600px;margin:40px auto}.standalone-elections{max-width:1250px;margin:auto;padding:35px 30px}.election-drawer .detail-panel{padding:20px}.elections-app .detail-panel .election-actions{margin:22px 0}.elections-app .section-heading{flex-wrap:wrap;gap:15px}.election-drawer .election-error{z-index:5;position:sticky;top:74px}@media (max-width:800px){.election-heading{display:block}.election-heading .election-actions{margin-top:18px}.election-stats,.election-results,.election-ballot-fields{grid-template-columns:minmax(0,1fr)}.election-toolbar>label{flex-basis:100%}.election-tabs{gap:8px}.election-tabs .button{padding:10px 12px;font-size:13px}.election-drawer-body{padding:18px}.election-drawer>header{padding:16px 18px}.standalone-elections{padding:22px 16px}.election-list-row>div:first-child{flex-basis:100%}.election-result{padding:16px}.election-ballot-save{bottom:0}.election-stats{gap:0}.election-stats .detail-panel{margin:8px 0}}[data-ballot-department]{scroll-margin-top:95px}.current-election{font-size:18px!important}.current-election strong{color:var(--ink);font-weight:750}.ballot-department{border-top:3px solid var(--accent);margin-top:26px}.ballot-department>h3{color:var(--accent);margin:0 0 24px;font-size:21px;line-height:1.4}.ballot-visibility{color:var(--muted);font-size:14px;line-height:1.7}.candidate-picker{min-width:0;font-weight:400;position:relative}.candidate-picker input{min-height:48px;font-size:16px}.candidate-picker:focus-within{z-index:8}.candidate-picker input:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.candidate-menu{z-index:10;border:1px solid var(--accent);background:var(--paper);border-radius:9px;position:absolute;top:calc(100% + 5px);left:0;right:0;overflow:hidden;box-shadow:0 12px 28px #0007}.candidate-menu-caption{border-bottom:1px solid var(--line);color:var(--muted);padding:10px 12px;font-size:12px}.candidate-menu [role=listbox]{overscroll-behavior:contain;max-height:240px;overflow:auto}.candidate-menu [role=option]{border:0;border-bottom:1px solid var(--line);background:var(--paper);width:100%;color:var(--ink);text-align:left;line-height:1.4;font:inherit;cursor:pointer;white-space:normal;overflow-wrap:anywhere;border-radius:0;min-height:46px;padding:13px 14px;display:block}.candidate-menu [role=option]:hover,.candidate-menu [role=option][aria-selected=true]{background:var(--soft);color:var(--accent)}.candidate-menu .candidate-new{color:var(--accent);font-weight:600}.candidate-menu small{margin-top:4px;font-weight:400;display:block}.candidate-menu p{margin:0;padding:12px;font-size:14px}.election-login{border-top:4px solid var(--accent);padding:clamp(24px,5vw,40px)}.election-login h1{margin:14px 0;font-size:clamp(26px,5vw,34px);line-height:1.2}.election-login>p{line-height:1.7}.election-login .election-form{margin:26px 0}.election-login label{gap:10px;font-size:16px;font-weight:600;display:grid}.election-login input[type=email]{border:2px solid var(--accent);background:var(--soft);width:100%;min-height:54px;color:var(--ink);box-sizing:border-box;border-radius:9px;padding:14px 16px;font-size:17px}.election-login input:focus-visible{outline:3px solid var(--accent);outline-offset:4px}.election-login .election-form>button{justify-content:center;width:100%;min-height:48px}.election-login .election-error{border-color:#b96666;font-weight:400}.election-login .muted{font-size:14px}.election-drawer{width:min(740px,100%);max-width:100%}body:has(.election-drawer[open]){overflow:hidden}.election-ballot-save{margin-top:24px;position:static}.candidate-picker[data-open=true]{z-index:8}.candidate-menu{flex-direction:column;display:flex}.candidate-menu [role=listbox]{flex:1;min-height:0;max-height:none;position:relative;overflow:auto}.candidate-menu-caption,.candidate-search{flex:none}.candidate-search{padding:10px}.candidate-search input{box-sizing:border-box;width:100%}.candidate-trigger{border:1px solid var(--line);background:var(--paper);width:100%;min-height:48px;color:var(--ink);font:inherit;text-align:left;cursor:pointer;border-radius:8px;justify-content:space-between;align-items:center;gap:12px;padding:12px;font-size:16px;display:flex}.candidate-trigger:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.candidate-trigger span:first-child{overflow-wrap:anywhere;min-width:0}.candidate-trigger span:last-child{color:var(--accent)}.fullscreen-control{flex-direction:column;align-items:flex-start;gap:8px;display:flex}.fullscreen-control small{max-width:290px;color:var(--muted);line-height:1.5}.elections-expanded .standalone-elections{max-width:none}.standalone-elections .election-heading h1{margin:0 0 10px;font-size:clamp(26px,4vw,36px);line-height:1.2}.standalone-elections .current-election{margin:0;line-height:1.5}.election-tabs>.button{min-height:44px}@media (max-width:800px){.election-heading{align-items:flex-start;gap:14px;display:flex}.election-heading .election-actions{margin-top:0}.election-heading .election-actions>.button{font-size:13px}.fullscreen-control .button{white-space:nowrap;padding:10px;font-size:12px}.current-election{font-size:15px!important}.election-tabs{gap:6px}.election-tabs .button{white-space:nowrap;flex:1;padding:10px 8px}.election-drawer-body .election-actions{gap:14px}.election-drawer-body .election-actions .button{min-height:48px}}.current-election strong{white-space:nowrap}.department-results{gap:24px;margin-top:26px;display:grid}.department-result{border:1px solid var(--line);background:var(--paper);border-radius:12px;min-width:0;padding:22px}.department-result-heading{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;gap:16px;margin-bottom:20px;padding-bottom:16px;display:flex}.department-result-heading h3{color:var(--accent);margin:0;font-size:22px;line-height:1.35}.department-result-heading>span{color:var(--muted);white-space:nowrap;font-size:13px}.department-result-cards{grid-template-columns:repeat(2,minmax(0,1fr));align-items:start;gap:18px;display:grid}.department-result-cards>.election-result:only-child,.department-result-cards>.result-serving:nth-child(3){grid-column:1/-1}.department-result .election-result{background:var(--bg);border-radius:9px;padding:18px}.result-card-heading{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.result-card-heading h4{margin:0 0 6px;font-size:18px;line-height:1.4}.result-card-heading p{color:var(--muted);margin:0;font-size:13px;line-height:1.5}.result-name-total{white-space:nowrap;color:var(--accent);border:1px solid var(--line);border-radius:6px;padding:6px 8px;font-size:12px}.result-caption{color:var(--muted);flex-wrap:wrap;justify-content:space-between;gap:12px;margin:20px 0 10px;font-size:12px;line-height:1.5;display:flex}.result-tie-warning{background:var(--soft);color:var(--accent);border-left:2px solid var(--accent);border-radius:4px;padding:10px 12px;font-size:13px;line-height:1.5}.result-names ol{margin:0;padding:0;list-style:none}.result-names li{border-top:1px solid var(--line);align-items:center;gap:12px;padding:14px 0;display:flex}.result-rank{width:24px;color:var(--muted);text-align:center;flex:none;font-size:13px}.result-person{overflow-wrap:anywhere;flex:1;min-width:0}.result-person>strong{font-size:15px;line-height:1.5}.result-person small{color:var(--muted);margin-top:4px;font-size:12px;line-height:1.5;display:block}.result-person .result-tie{color:var(--accent)}.result-votes{text-align:right;flex:none;min-width:37px}.result-votes strong{color:var(--accent);font-size:22px;line-height:1.2;display:block}.result-votes small{color:var(--muted);margin-top:3px;font-size:11px;display:block}.result-expand{justify-content:space-between;align-items:center;gap:10px;width:100%;min-height:44px;margin-top:14px;font-size:13px;display:flex}.result-preserved{color:var(--muted);margin-top:20px}.result-preserved>summary{cursor:pointer;padding:10px 0;line-height:1.5}.result-preserved .department-result-cards{margin-top:12px}@media (max-width:800px){.department-result{padding:16px}.department-result-cards{grid-template-columns:minmax(0,1fr)}.department-result-heading h3{font-size:20px}.department-result .election-result{padding:15px}.result-card-heading{gap:8px}.result-card-heading h4{font-size:17px}.result-name-total{padding:5px 6px}.result-names li{gap:9px}.result-caption{margin-top:18px}}.election-export{gap:26px;display:grid}.election-export>section{border-bottom:1px solid var(--line);padding-bottom:24px}.election-export h3{color:var(--accent);margin:0 0 12px;font-size:20px}.election-export p{margin:10px 0 16px;font-size:14px;line-height:1.7}.election-export .export-state{background:var(--paper);border:1px solid var(--line);border-radius:10px;padding:20px}.election-export .export-state h3{margin:10px 0}.election-export .export-state p:last-child{margin-bottom:0}.election-export .button{min-height:46px}.election-export a.button{align-items:center;text-decoration:none;display:inline-flex}.export-finalize form{gap:18px;display:grid}.export-finalize form>button{justify-self:start}.election-export .election-check{font-size:14px}.election-export input[type=checkbox]{margin-top:2px}.election-export .muted{font-size:13px}html.elections-unsaved,html.elections-unsaved body{overscroll-behavior-y:contain}.participation-stats{grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin:24px 0;display:grid}.participation-stats>div{background:var(--bg);border:1px solid var(--line);border-radius:10px;gap:8px;padding:18px;display:grid}.participation-stats strong{color:var(--accent);font-size:28px}.participation-stats span{color:var(--muted);font-size:13px;line-height:1.5}.participation-filters{grid-template-columns:2fr 1fr;gap:16px;margin:24px 0;display:grid}.participation-filters label{gap:8px;display:grid}.participation-filters input,.participation-filters select{box-sizing:border-box;width:100%;min-height:46px}.participation-list{gap:16px;display:grid}.participation-person{border:1px solid var(--line);border-radius:10px;min-width:0;padding:22px}.participation-person-heading{justify-content:space-between;align-items:start;gap:16px;display:flex}.participation-person h3{margin:0 0 8px;font-size:18px;line-height:1.4}.participation-person-heading p{color:var(--muted);overflow-wrap:anywhere;margin:0;font-size:14px}.participation-badges{flex-wrap:wrap;justify-content:flex-end;gap:8px;display:flex}.participation-badges .badge{white-space:normal;line-height:1.5}.participation-recent{color:var(--accent)}.participation-times{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;margin:20px 0;display:grid}.participation-times dt{color:var(--muted);font-size:12px;line-height:1.5}.participation-times dd{overflow-wrap:anywhere;margin:6px 0 0;font-size:14px;line-height:1.5}.participation-person summary{cursor:pointer;color:var(--accent);min-height:24px;padding:10px 0}.participation-person>.election-actions{margin-top:18px}.participation-person details p{font-size:13px;line-height:1.6}.election-participation>.muted{font-size:13px;line-height:1.7}@media (max-width:800px){.participation-filters{grid-template-columns:1fr}.participation-person{padding:16px}.participation-person-heading{display:grid}.participation-badges{justify-content:flex-start}.participation-stats{gap:8px}.participation-stats>div{padding:12px}.participation-stats strong{font-size:24px}.participation-stats span{font-size:12px}.participation-times{gap:12px}.election-tabs .button{white-space:normal;flex:1 0 auto}}.ballot-submit-button{justify-content:center;align-items:center;gap:12px;min-height:52px;display:inline-flex}.election-ballot-save>p{flex-basis:100%;margin:0;font-size:14px;line-height:1.6}.ballot-saved-status{color:var(--accent)}.ballot-spinner{box-sizing:border-box;border:3px solid;border-right-color:#0000;border-radius:50%;flex:none;width:20px;height:20px;animation:.8s linear infinite ballot-spin;display:inline-block}.ballot-processing{border:1px solid var(--line);background:var(--paper);color:var(--accent);border-radius:10px;align-items:flex-start;gap:16px;margin-top:24px;padding:20px;display:flex}.ballot-processing p{color:var(--ink);margin:8px 0 0;font-size:14px;line-height:1.7}.ballot-confirm-actions .primary{justify-content:center;align-items:center;gap:12px;display:inline-flex}.ballot-confirm-actions button:disabled,.ballot-submit-button:disabled{cursor:wait}.ballot-submit-button:disabled:not(:has(.ballot-spinner)){cursor:not-allowed}@keyframes ballot-spin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion:reduce){.ballot-spinner{animation-duration:2s}}@media (max-width:800px){.election-ballot-save{flex-direction:column;align-items:stretch;padding:16px;display:flex}.election-ballot-save .ballot-submit-button{box-sizing:border-box;width:100%;min-height:58px;padding:16px;font-size:18px}.ballot-confirm-actions{flex-direction:column;align-items:stretch;display:flex}.ballot-confirm-actions>.button{box-sizing:border-box;width:100%;min-height:54px}}.candidate-menu-compact .candidate-menu-caption{display:none}.candidate-menu-compact .candidate-search{padding:6px}.candidate-menu-compact .candidate-search input{min-height:44px;padding:10px}.election-voting-status{border:1px solid var(--line);border-left:5px solid var(--accent);background:var(--paper);border-radius:12px;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:20px;margin:24px 0;padding:22px 24px;display:flex}.voting-status-copy{flex:1;min-width:220px}.voting-status-caption{letter-spacing:.06em;text-transform:uppercase;color:var(--muted);font-size:12px}.voting-status-copy h2{color:var(--accent);align-items:center;gap:10px;margin:8px 0;font-size:22px;line-height:1.4;display:flex}.voting-status-copy p{color:var(--ink);margin:0;font-size:14px;line-height:1.7}.voting-status-dot{background:var(--accent);border-radius:50%;flex:none;width:12px;height:12px}.status-open{background:color-mix(in srgb,#66c791 7%,var(--paper));border-left-color:#66c791}.status-open .voting-status-dot{background:#66c791;box-shadow:0 0 0 4px #66c79118}.status-open .voting-status-copy h2{color:var(--ink)}.voting-status-controls{flex-wrap:wrap;gap:12px;display:flex}.voting-status-controls .button{justify-content:center;align-items:center;gap:10px;min-height:48px;display:inline-flex}.voting-status-controls .primary:disabled{opacity:1}.voting-status-progress{width:100%;color:var(--accent);margin:0;font-size:14px;line-height:1.6}@media (max-width:800px){.election-voting-status{gap:18px;padding:18px}.voting-status-copy{flex-basis:100%;min-width:0}.voting-status-copy h2{font-size:21px}.voting-status-controls{width:100%}.voting-status-controls .button{flex:1;min-height:50px}}.election-overview-actions>h3{width:100%;color:var(--accent);margin:0 0 2px;font-size:16px}@media (max-width:800px){.is-election-admin{--admin-control-height:52px}.is-election-admin .button{box-sizing:border-box;min-height:var(--admin-control-height);text-align:center;white-space:normal;padding:12px;font-size:14px;line-height:1.4}.is-election-admin .election-heading{grid-template-columns:minmax(0,1fr);gap:20px;display:grid}.is-election-admin .election-heading>div{min-width:0}.is-election-admin .election-heading .election-actions{grid-template-columns:repeat(3,minmax(0,1fr));align-items:start;gap:8px;width:100%;margin:0;display:grid}.is-election-admin .election-heading .election-actions:has(>.button:nth-child(4)){grid-template-columns:repeat(2,minmax(0,1fr))}.is-election-admin .election-heading .button{width:100%;height:var(--admin-control-height);padding:8px;font-size:13px}.is-election-admin .fullscreen-control{width:100%;min-width:0}.is-election-admin .fullscreen-control small{overflow-wrap:anywhere;font-size:12px}.is-election-admin .election-toolbar{grid-template-columns:repeat(2,minmax(0,1fr));align-items:stretch;gap:10px;margin:24px 0;display:grid}.is-election-admin .election-toolbar>label{grid-column:1/-1;width:100%;min-width:0;max-width:none}.is-election-admin .election-toolbar>label select{box-sizing:border-box;min-height:52px;font-size:16px}.is-election-admin .election-toolbar>.badge{box-sizing:border-box;text-align:center;justify-content:center;align-items:center;min-height:34px;display:flex}.is-election-admin .election-toolbar>.button{width:100%}.is-election-admin .election-voting-status{gap:18px;margin:24px 0;padding:18px}.is-election-admin .voting-status-controls{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;display:grid}.is-election-admin .voting-status-controls>.button{width:100%}.is-election-admin .voting-status-controls>.button:only-child{grid-column:1/-1}.is-election-admin .election-tabs{grid-template-columns:repeat(2,minmax(0,1fr));align-items:stretch;gap:10px;margin:24px 0;padding-bottom:24px;display:grid}.is-election-admin .election-tabs>.button{width:100%;height:60px;padding:8px;font-size:14px}.is-election-admin .election-tabs>.button:last-child:nth-child(odd){grid-column:1/-1}.is-election-admin .detail-panel{margin-bottom:20px;padding:18px}.is-election-admin .election-stats{grid-template-columns:repeat(3,minmax(0,1fr));align-items:stretch;gap:10px;margin-bottom:20px}.is-election-admin .election-stats>.detail-panel{text-align:center;box-sizing:border-box;flex-direction:column;justify-content:center;min-height:100px;margin:0;padding:14px 10px;display:flex}.is-election-admin .election-stats strong{font-size:26px;line-height:1.2}.is-election-admin .election-stats span{margin-top:8px;font-size:12px;line-height:1.5}.is-election-admin .section-heading{align-items:stretch;gap:16px;margin-bottom:20px;display:flex}.is-election-admin .section-heading>div:first-child{width:100%;min-width:0}.is-election-admin .section-heading>.button,.is-election-admin .section-heading>label{box-sizing:border-box;width:100%}.is-election-admin .section-heading>.election-actions{grid-template-columns:repeat(2,minmax(0,1fr));align-items:stretch;gap:10px;width:100%;margin:0;display:grid}.is-election-admin .section-heading>.election-actions>.button{width:100%}.is-election-admin .detail-panel>.election-overview-actions{grid-template-columns:minmax(0,1fr);gap:10px;width:100%;margin:24px 0;display:grid}.is-election-admin .election-overview-actions>h3{margin:0 0 4px}.is-election-admin .detail-panel>.button{width:100%}.is-election-admin .election-list-row{grid-template-columns:repeat(2,minmax(0,1fr));align-items:stretch;gap:10px;padding:18px 0;display:grid}.is-election-admin .election-list-row>div:first-child{grid-column:1/-1;min-width:0}.is-election-admin .election-list-row>.badge{grid-column:1/-1;justify-self:start}.is-election-admin .election-list-row>.button{width:100%;height:100%}.is-election-admin .election-list-row>.button:only-of-type{grid-column:1/-1}.is-election-admin .election-list-row>.text-button{border:1px solid var(--line);text-align:center;box-sizing:border-box;border-radius:9px;justify-content:center;min-height:52px;padding:12px;font-size:14px}.is-election-admin .participation-person>.election-actions{grid-template-columns:repeat(2,minmax(0,1fr));align-items:stretch;gap:10px;display:grid}.is-election-admin .participation-person>.election-actions>.button:only-child{grid-column:1/-1}.is-election-admin .participation-stats>div{box-sizing:border-box;text-align:center;flex-direction:column;justify-content:center;min-height:100px;padding:12px 6px;display:flex}.is-election-admin .election-drawer-body .election-actions{grid-template-columns:minmax(0,1fr);gap:12px;display:grid}.is-election-admin .election-drawer-body .button,.is-election-admin .election-form>button{justify-self:stretch;width:100%}.is-election-admin .election-drawer>header>.button{flex:none;width:44px;height:44px;min-height:44px;padding:8px}.is-election-admin .election-drawer>header h2{font-size:20px;line-height:1.4}}
