:root{--color-primary:#497c88;--color-primary-hover:#3d6a75;--color-primary-active:#335a63;--color-primary-text:#3b6874;--color-primary-soft:#e6f5f5;--color-on-primary:#fff;--color-accent:#80d3d4;--color-secondary:#fdfccb;--color-on-secondary:#16262a;--color-background:#f5f8f8;--color-surface:#fff;--color-surface-muted:#eef3f4;--color-border:#d5e0e2;--color-border-strong:#7c9095;--color-text:#16262a;--color-text-muted:#52666b;--color-success:#2e7d4f;--color-success-text:#1f5c39;--color-success-soft:#e7f4ec;--color-warning:#b07400;--color-warning-text:#8a5a00;--color-warning-soft:#fff4d6;--color-danger:#b42318;--color-danger-text:#9b1c13;--color-danger-soft:#fdecea;--color-focus-ring:var(--color-primary);--font-family-base:system-ui, -apple-system, "Segoe UI", Tahoma, "Noto Sans Arabic", "Noto Sans", sans-serif;--font-size-sm:.875rem;--font-size-md:1rem;--font-size-lg:1.125rem;--font-size-xl:1.375rem;--font-size-2xl:1.75rem;--font-weight-regular:400;--font-weight-medium:500;--font-weight-bold:700;--line-height-base:1.6;--space-1:.25rem;--space-2:.5rem;--space-3:.75rem;--space-4:1rem;--space-5:1.5rem;--space-6:2rem;--space-7:3rem;--radius-sm:6px;--radius-md:10px;--radius-lg:16px;--radius-full:999px;--shadow-sm:0 1px 2px #16262a0f;--shadow-md:0 2px 8px #16262a14, 0 1px 2px #16262a0f;--control-height:3rem;--touch-target-min:44px;--content-max-width:40rem}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%}body{background:var(--color-background);min-height:100dvh;color:var(--color-text);font-family:var(--font-family-base);font-size:var(--font-size-md);line-height:var(--line-height-base);margin:0}img{max-width:100%;height:auto}:focus-visible{outline:3px solid var(--color-focus-ring);outline-offset:2px}button,input,textarea{font:inherit}.login-page{width:100%;max-width:100%;min-height:100dvh;padding:var(--space-5);grid-template-columns:minmax(0,1fr);place-items:center;display:grid}.login-page__tools{position:absolute;inset-block-start:var(--space-4);inset-inline-end:var(--space-4)}.login-card,.panel{width:min(100%, var(--content-max-width));background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-md);padding:var(--space-6)}.login-card{overflow-wrap:break-word;min-width:0;max-width:100%}.login-card h1,.panel h1{margin:var(--space-4) 0 var(--space-2);font-size:var(--font-size-2xl)}.muted{color:var(--color-text-muted);margin-top:0}.field{gap:var(--space-2);margin-top:var(--space-4);font-weight:var(--font-weight-medium);display:grid}.field input,.field textarea{width:100%;padding-inline:var(--space-3);border:1px solid var(--color-border-strong);border-radius:var(--radius-md);background:var(--color-surface);color:var(--color-text)}.field input{min-height:var(--control-height)}.field textarea{min-height:8rem;padding-block:var(--space-3);resize:vertical;line-height:var(--line-height-base)}.password-row{gap:var(--space-2);grid-template-columns:1fr auto;align-items:center;display:grid}.button{min-height:var(--touch-target-min);padding-inline:var(--space-4);border-radius:var(--radius-md);cursor:pointer;border:1px solid #0000}.button:disabled{cursor:progress;opacity:.7}.button--primary{width:100%;margin-top:var(--space-5);background:var(--color-primary);color:var(--color-on-primary);font-weight:var(--font-weight-bold)}.button--primary:hover:not(:disabled){background:var(--color-primary-hover)}.button--quiet{color:var(--color-primary-text);border-color:var(--color-border);background:0 0}.alert{margin:var(--space-4) 0 0;padding:var(--space-3) var(--space-4);border-radius:var(--radius-md);background:var(--color-danger-soft);color:var(--color-danger-text)}.status-banner{margin:var(--space-4) 0 0;padding:var(--space-3) var(--space-4);border:1px solid var(--color-success);border-radius:var(--radius-md);background:var(--color-success-soft);color:var(--color-success-text)}.language-switcher{gap:var(--space-2);flex-wrap:wrap;min-width:0;max-width:100%;display:flex}.language-switcher__option{min-height:var(--touch-target-min);padding-inline:var(--space-3);border-radius:var(--radius-full);border:1px solid var(--color-border-strong);background:var(--color-surface);color:var(--color-text)}.language-switcher__option[aria-pressed=true]{background:var(--color-primary);color:var(--color-on-primary);border-color:var(--color-primary)}.brand-logo{width:140px;height:auto}.brand-logo--small{width:72px}.skip-link{z-index:3;padding:var(--space-2) var(--space-3);background:var(--color-surface);color:var(--color-text);border-radius:var(--radius-md);position:absolute;inset-block-start:var(--space-3);inset-inline-start:var(--space-3);transform:translateY(-150%)}.skip-link:focus{transform:none}.shell{min-height:100dvh;position:relative}.shell__header{gap:var(--space-4);padding:var(--space-4);background:var(--color-surface);border-bottom:1px solid var(--color-border);flex-wrap:wrap;justify-content:space-between;align-items:center;display:flex}.shell__brand,.shell__tools,.shell__identity{gap:var(--space-3);flex-wrap:wrap;align-items:center;display:flex}.shell__association,.shell__title,.shell__identity{margin:0}.shell__association{color:var(--color-text-muted);font-size:var(--font-size-sm)}.shell__title{font-weight:var(--font-weight-bold)}.badge{padding:var(--space-1) var(--space-3);border-radius:var(--radius-full);background:var(--color-primary-soft);color:var(--color-primary-text);font-size:var(--font-size-sm)}.shell__main{padding:var(--space-5)}.visually-hidden{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.button--inline{justify-content:center;align-items:center;width:auto;margin-top:0;text-decoration:none;display:inline-flex}.button--danger{background:var(--color-danger);width:auto;color:var(--color-on-primary);font-weight:var(--font-weight-bold);margin-top:0}a.button{text-decoration:none}.election-home__heading,.election-detail__header,.form-actions,.dialog__actions,.candidate-list__actions,.inline-form{gap:var(--space-3);flex-wrap:wrap;justify-content:space-between;align-items:center;display:flex}.election-list{margin:var(--space-5) 0 0;gap:var(--space-3);padding:0;list-style:none;display:grid}.election-card{gap:var(--space-3);padding:var(--space-4);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);color:inherit;grid-template-columns:minmax(0,2fr) auto auto auto;align-items:center;text-decoration:none;display:grid}@media (width<=900px){.election-card{grid-template-columns:1fr}}.election-card__title{font-weight:var(--font-weight-bold)}.status{min-height:var(--touch-target-min);padding-inline:var(--space-3);border-radius:var(--radius-full);border:1px solid var(--color-border-strong);font-weight:var(--font-weight-medium);align-items:center;display:inline-flex}.status--draft{background:var(--color-warning-soft);color:var(--color-warning-text)}.status--open{background:var(--color-success-soft);color:var(--color-success-text)}.status--closed{background:var(--color-surface-muted);color:var(--color-text)}.notice{padding:var(--space-3) var(--space-4);border-radius:var(--radius-md);background:var(--color-secondary);color:var(--color-on-secondary)}.panel--protected{background:var(--color-secondary);border-color:var(--color-warning)}.timestamps{gap:var(--space-4);flex-wrap:wrap;margin:0;display:flex}.timestamps div{margin:0}.timestamps dt{color:var(--color-text-muted);font-size:var(--font-size-sm)}.timestamps dd{margin:0}.candidate-list{margin:0 0 var(--space-4);padding:0;list-style:none}.candidate-list li{justify-content:space-between;gap:var(--space-3);padding-block:var(--space-3);border-bottom:1px solid var(--color-border);flex-wrap:wrap;align-items:center;display:flex}.inline-form .field{flex:16rem;margin-top:0}.back-link{color:var(--color-primary-text)}.dialog-backdrop{padding:var(--space-4);background:#16262a73;grid-template-columns:minmax(0,1fr);place-items:center;display:grid;position:fixed;inset:0}.dialog{overflow-wrap:break-word;background:var(--color-surface);width:min(100%,32rem);min-width:0;max-width:100%;max-height:min(100%,100dvh - 2rem);color:var(--color-text);border-radius:var(--radius-lg);padding:var(--space-5);box-shadow:var(--shadow-md);overflow:auto}.dialog h2{margin-top:0}.election-detail{gap:var(--space-4);overflow-wrap:break-word;grid-template-columns:minmax(0,1fr);min-width:0;max-width:100%;display:grid}.election-detail>*,.election-detail__header,.election-detail h1,.candidate-list,.candidate-list li,.candidate-list li>span{min-width:0;max-width:100%}.audit-requests{gap:var(--space-3);padding:0;list-style:none;display:grid}.audit-requests table{border-collapse:collapse;width:100%}@media (width<=640px){.login-card,.panel{padding:var(--space-5)}.password-row,.shell__header,.shell__tools,.election-card,.election-home__heading,.form-actions,.dialog__actions{grid-template-columns:1fr;display:grid}}.token-stats{gap:var(--space-3);grid-template-columns:repeat(3,minmax(0,1fr));margin:0;display:grid}.token-stats div{background:var(--color-surface-muted);border-radius:var(--radius-md);padding:var(--space-3)}.token-stats dt{color:var(--color-text-muted);font-size:var(--font-size-sm)}.token-stats dd{font-size:var(--font-size-xl);font-weight:var(--font-weight-bold);margin:0}.token-issued{margin-top:var(--space-4)}.token-list{margin:var(--space-4) 0;gap:var(--space-3);padding:0;list-style:none;display:grid}.token-list li{justify-content:space-between;align-items:center;gap:var(--space-3);flex-wrap:wrap;display:flex}.token-code{font-family:ui-monospace,Cascadia Mono,Consolas,monospace;font-size:var(--font-size-xl);font-weight:var(--font-weight-bold);letter-spacing:.12em;unicode-bidi:isolate}.bidi-isolate{unicode-bidi:isolate}@media (width<=640px){.token-stats{grid-template-columns:1fr}}.vote-page{width:100%;max-width:100%;min-height:100dvh;padding:var(--space-5);grid-template-columns:minmax(0,1fr);place-items:center;display:grid}.vote-page__tools{position:absolute;inset-block-start:var(--space-4);inset-inline-end:var(--space-4)}.vote-card h1{margin-top:var(--space-4)}.vote-token{font-family:ui-monospace,Cascadia Mono,Consolas,monospace;font-size:var(--font-size-xl);letter-spacing:.18em;text-align:center}.vote-candidates{margin:var(--space-4) 0;gap:var(--space-3);border:0;grid-template-columns:minmax(0,1fr);min-width:0;max-width:100%;padding:0;display:grid}.vote-candidates legend{font-weight:var(--font-weight-bold);margin-bottom:var(--space-3)}.candidate-choice{align-items:center;gap:var(--space-3);min-width:0;max-width:100%;min-height:3.25rem;padding:var(--space-3) var(--space-4);border:2px solid var(--color-border-strong);border-radius:var(--radius-md);background:var(--color-surface);cursor:pointer;display:flex}.candidate-choice input{width:1.25rem;height:1.25rem;accent-color:var(--color-primary);flex-shrink:0}.candidate-choice__name{overflow-wrap:break-word;flex:auto;min-width:0}.candidate-choice--selected{border-color:var(--color-primary);background:var(--color-primary-soft);font-weight:var(--font-weight-bold);border-inline-start-width:.45rem}.candidate-choice__mark{font-weight:var(--font-weight-bold);flex-shrink:0}.vote-selected{margin-top:var(--space-3);font-weight:var(--font-weight-medium)}.vote-actions{gap:var(--space-3);margin-top:var(--space-4);flex-direction:column;display:flex}.vote-actions .button{width:100%}.results-table{table-layout:fixed;border-collapse:collapse;width:100%;margin-top:var(--space-4)}.table-scroll{max-width:100%;overflow-x:auto}.table-caption{caption-side:top;text-align:start;font-weight:var(--font-weight-bold);padding-bottom:var(--space-2)}.results-table th,.results-table td{padding-block:var(--space-3);border-bottom:1px solid var(--color-border);text-align:start;overflow-wrap:break-word}.results-table thead th:last-child,.results-table td{width:7rem}.results-count{font-variant-numeric:tabular-nums;font-weight:var(--font-weight-bold)}.results-bar{height:.5rem;margin-top:var(--space-2);background:var(--color-border);border-radius:var(--radius-sm);display:block}.results-bar__fill{background:var(--color-primary);border-radius:var(--radius-sm);height:100%;display:block}.results-bar__fill--0{width:0%}.results-bar__fill--10{width:10%}.results-bar__fill--20{width:20%}.results-bar__fill--30{width:30%}.results-bar__fill--40{width:40%}.results-bar__fill--50{width:50%}.results-bar__fill--60{width:60%}.results-bar__fill--70{width:70%}.results-bar__fill--80{width:80%}.results-bar__fill--90{width:90%}.results-bar__fill--100{width:100%}.button--later:disabled{cursor:not-allowed;opacity:.55}.vote-back{width:100%;margin-top:var(--space-3)}@media (width<=640px),(height<=720px){.login-page{flex-direction:column;justify-content:flex-start;align-items:center;width:100%;max-width:100%;display:flex}.login-page__tools,.login-card{min-width:0;max-width:100%}.login-page__tools{width:min(100%, var(--content-max-width));margin-bottom:var(--space-3);flex-wrap:wrap;justify-content:flex-end;display:flex;position:static}}@media print{.audit-print-hide,.dialog-backdrop,.skip-link{display:none!important}}@media (width<=640px){.vote-page{padding:var(--space-4);place-items:start center}.vote-page__tools{min-width:0;max-width:100%;width:min(100%, var(--content-max-width));margin-bottom:var(--space-3);flex-wrap:wrap;justify-content:flex-end;display:flex;position:static}}
