@import"https://fonts.bunny.net/css?family=fraunces:600|karla:400,500,600,700";:root{--color-primary: #e82d36;--color-primary-hover: #A01830;--color-primary-dark: #a81111;--color-primary-light: #FEF0F3;--color-bg: #F5F0EB;--color-surface: #FFFFFF;--color-text: #1A1A1A;--color-text-secondary: #6B5E5A;--color-border: #E5DED8;--color-border-strong: #C4B8AE;--color-error: #C41E3A;--color-error-bg: #FEF0F3;--color-success: #2D6A4F;--color-success-bg: #EDF7F0;--color-accent: #C8963E;--radius-sm: 1px;--radius: 2px;--radius-lg: 4px;--shadow-sm: 0 1px 3px rgba(26, 26, 26, .04);--shadow: 0 2px 8px rgba(26, 26, 26, .06), 0 1px 2px rgba(26, 26, 26, .04);--shadow-md: 0 4px 16px rgba(26, 26, 26, .08), 0 2px 4px rgba(26, 26, 26, .04);--shadow-lg: 0 8px 32px rgba(26, 26, 26, .1), 0 2px 8px rgba(26, 26, 26, .04);--spacing-xs: 4px;--spacing-sm: 8px;--spacing-md: 16px;--spacing-lg: 24px;--spacing-xl: 32px;--spacing-2xl: 48px;--font-display: "Fraunces", "Georgia", "Times New Roman", serif;--font-body: "Karla", "Segoe UI", "Helvetica Neue", sans-serif;--max-width: 960px;--cut: 14px}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{font-size:16px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{font-family:var(--font-body);background:var(--color-bg);color:var(--color-text);line-height:1.6;min-height:100vh;display:flex;flex-direction:column;background-image:url("data:image/svg+xml,%3Csvg width='60' height='60' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.65' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.03'/%3E%3C/svg%3E")}#app-header{background:var(--color-primary-dark);padding:0 var(--spacing-lg);display:flex;align-items:center;justify-content:space-between;height:60px;box-shadow:0 2px 16px #8b1a2b40;position:sticky;top:0;z-index:1}#app-header h1{font-family:var(--font-display);font-size:1.2rem;font-weight:600;letter-spacing:-.01em}#app-header h1 a{color:#fff;text-decoration:none;display:flex;align-items:center;gap:var(--spacing-sm)}#logout-btn{font-family:var(--font-body);font-size:.85rem;color:#ffffffd9;background:none;border:1px solid rgba(255,255,255,.25);padding:6px 16px;border-radius:var(--radius-sm);cursor:pointer;width:71px;transition:all .2s ease}#logout-btn:hover{color:#fff;border-color:#ffffff80;background:#ffffff14}main{flex:1;max-width:var(--max-width);width:100%;margin:0 auto;padding:var(--spacing-xl) var(--spacing-md)}footer{text-align:center;padding:var(--spacing-lg) var(--spacing-md);color:#fff9;font-size:.8rem;font-family:var(--font-body);background:var(--color-primary-dark);border-top:none;margin-top:auto}footer p{align-items:center;color:#fff;display:flex;justify-content:space-around;margin-inline:auto;max-width:300px;#current-user-email{display:contents}button{color:#fff!important}}app-router{display:none}login-page,dashboard-page,election-page,results-page,create-election-page,edit-election-page,users-list,list-box{display:block;animation:pageReveal .35s cubic-bezier(.22,.61,.36,1)}@keyframes pageReveal{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}h2{font-family:var(--font-display);font-size:1.75rem;font-weight:600;letter-spacing:-.02em;margin-bottom:var(--spacing-lg);color:var(--color-text);line-height:1.2}h3{font-family:var(--font-display);font-weight:600;letter-spacing:-.01em;color:var(--color-text)}input[type=email],input[type=text],input[type=password],input[type=number],textarea{padding:12px 16px;border:2px solid var(--color-border);border-radius:var(--radius);font-size:.95rem;font-family:var(--font-body);transition:border-color .2s ease,box-shadow .2s ease;background:var(--color-surface);color:var(--color-text)}input:focus,textarea:focus{outline:none;border-color:var(--color-primary);box-shadow:0 0 0 3px var(--color-primary-light)}textarea{resize:vertical;min-height:60px}select{padding:12px 16px;border:2px solid var(--color-border);border-radius:var(--radius);font-size:.95rem;font-family:var(--font-body);background:var(--color-surface);color:var(--color-text);cursor:pointer;transition:border-color .2s ease,box-shadow .2s ease}select:focus{outline:none;border-color:var(--color-primary);box-shadow:0 0 0 3px var(--color-primary-light)}.loading{color:var(--color-text-secondary);text-align:center;grid-column:1 / -1;padding:var(--spacing-xl);font-style:italic}.empty-state{color:var(--color-text-secondary);text-align:center;padding:var(--spacing-2xl);grid-column:1 / -1;font-style:italic}.actions-bar{display:flex;flex-direction:column;gap:var(--spacing-md);justify-content:center;margin-top:var(--spacing-xl);margin-inline:auto;max-inline-size:400px}.card{background:var(--color-surface);border-radius:var(--radius-lg);padding:var(--spacing-xl);box-shadow:var(--shadow);border:1px solid var(--color-border);position:relative}.card:before{content:"";position:absolute;top:0;right:0;width:40px;height:40px;background:var(--color-primary);clip-path:polygon(100% 0,100% 100%,0 0);border-radius:0 var(--radius-lg) 0 0;opacity:0;transition:opacity .3s ease}.card:hover:before{opacity:1}.card--login{max-width:460px;margin:var(--spacing-2xl) auto}.card--login:before{opacity:1;width:48px;height:48px}.card h2{margin-bottom:var(--spacing-sm);position:relative;display:block}.card h2:after{content:"";display:block;width:48px;height:3px;background:var(--color-primary);margin-top:var(--spacing-xs);border-radius:2px}.form{display:flex;flex-direction:column;gap:var(--spacing-md)}.form__group{display:flex;flex-direction:column;gap:var(--spacing-xs)}.form__group label{font-weight:600;font-size:.85rem;font-family:var(--font-body);color:var(--color-text);text-transform:uppercase;letter-spacing:.04em}.form__group small{color:var(--color-text-secondary);font-size:.8rem}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:12px 24px;font-size:.95rem;font-weight:600;font-family:var(--font-body);border:none;border-radius:var(--radius);cursor:pointer;transition:all .2s ease;letter-spacing:.01em}.btn:active{transform:scale(.97)}.btn:disabled{opacity:.55;cursor:not-allowed}.btn--primary{background:var(--color-primary);color:#fff;clip-path:polygon(var(--cut) 0,100% 0,100% calc(100% - var(--cut)),calc(100% - var(--cut)) 100%,0 100%,0 var(--cut));padding:14px 28px;box-shadow:0 2px 8px #c41e3a40}.btn--primary:hover:not(:disabled){background:var(--color-primary-hover);box-shadow:0 4px 16px #c41e3a59;transform:translateY(-1px)}.btn--primary:active:not(:disabled){transform:translateY(0) scale(.98)}.btn--secondary{background:transparent;color:var(--color-text);border:2px solid var(--color-border)}.btn--secondary:hover:not(:disabled){border-color:var(--color-primary);color:var(--color-primary);background:var(--color-primary-light)}.btn--danger{border-color:var(--color-error);color:var(--color-error)}.btn--danger:hover:not(:disabled){background:var(--color-error-bg);border-color:var(--color-error)}.btn--link{background:none;border:none;color:var(--color-primary);font-size:.875rem;font-weight:500;cursor:pointer;padding:4px 0;font-family:var(--font-body);text-decoration:none;transition:color .2s ease;letter-spacing:0}.btn--link:hover{color:var(--color-primary-hover);text-decoration:underline;text-underline-offset:3px}.btn--back{margin-bottom:var(--spacing-lg);font-size:.9rem;color:var(--color-text-secondary)}.btn--back:hover{color:var(--color-primary);text-decoration:none}.message{font-size:.875rem;min-height:1.4em;font-weight:500}.message--error{color:var(--color-error)}.message--success{color:var(--color-success)}.badge{display:inline-block;padding:3px 12px;border-radius:100px;font-size:.7rem;font-weight:700;font-family:var(--font-body);text-transform:uppercase;letter-spacing:.06em}.badge--active{background:var(--color-success-bg);color:var(--color-success)}.badge--draft{background:var(--color-bg);color:var(--color-text-secondary);border:1px solid var(--color-border)}.badge--closed{background:var(--color-error-bg);color:var(--color-error)}.election-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:var(--spacing-lg)}.election-card{background:var(--color-surface);border-radius:var(--radius-lg);padding:var(--spacing-lg);box-shadow:var(--shadow);border:1px solid var(--color-border);transition:box-shadow .3s ease,transform .3s ease;display:flex;flex-direction:column;gap:var(--spacing-sm);position:relative;overflow:hidden}.election-card:before{content:"";position:absolute;top:0;left:0;right:0;height:3px;background:var(--color-primary);transform:scaleX(0);transform-origin:left;transition:transform .4s cubic-bezier(.22,.61,.36,1)}.election-card:hover{box-shadow:var(--shadow-lg);transform:translateY(-2px)}.election-card:hover:before{transform:scaleX(1)}.election-card__header{display:flex;justify-content:space-between;align-items:flex-start;gap:var(--spacing-sm)}.election-card h3{font-family:var(--font-display);font-size:1.15rem;font-weight:600;letter-spacing:-.01em;line-height:1.25;color:var(--color-text)}.election-card p{color:var(--color-text-secondary);font-size:.875rem;flex:1;line-height:1.5}.election-card small{font-size:.8rem;color:var(--color-text-secondary)}.election-card__actions{display:flex;gap:var(--spacing-sm);margin-top:var(--spacing-sm)}.election-card__admin-actions{display:flex;gap:var(--spacing-xs);margin-top:var(--spacing-sm);padding-top:var(--spacing-sm);border-top:1px solid var(--color-border)}.election-card__admin-actions .btn{font-size:.8rem;padding:6px 14px}.election-notice{padding:var(--spacing-md);border-radius:var(--radius);font-size:.9rem;font-weight:500;margin-bottom:var(--spacing-md);line-height:1.5}.election-notice--draft{background:var(--color-bg);color:var(--color-text-secondary);border:2px solid var(--color-border-strong)}.election-notice--closed{background:var(--color-error-bg);color:var(--color-error);border-left:4px solid var(--color-error)}dialog{inset:0;margin:auto;position:absolute}.vote-dialog{border:none;border-radius:var(--radius-lg);padding:0;max-width:440px;width:90vw;box-shadow:var(--shadow-lg);animation:dialogFadeIn .25s cubic-bezier(.22,.61,.36,1)}.vote-dialog::backdrop{background:#1a1a1a80;backdrop-filter:blur(2px);animation:backdropFadeIn .25s ease}form[method=dialog]{position:absolute;right:1rem;top:1rem;button{border:none;background:none;box-shadow:none;cursor:pointer;display:grid;height:1em;place-content:center;&:after{content:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPCEtLSBVcGxvYWRlZCB0bzogU1ZHIFJlcG8sIHd3dy5zdmdyZXBvLmNvbSwgR2VuZXJhdG9yOiBTVkcgUmVwbyBNaXhlciBUb29scyAtLT4KPHN2ZyB3aWR0aD0iMWVtIiBoZWlnaHQ9IjFlbSIgdmlld0JveD0iMCAwIDI0IDI0IiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgogICAgPHRpdGxlPkNsb3NlPC90aXRsZT4KICAgIDxnIGlkPSJQYWdlLTEiIHN0cm9rZT0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIxIiBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPgogICAgICAgIDxnIGlkPSJDbG9zZSI+CiAgICAgICAgICAgIDxyZWN0IGlkPSJSZWN0YW5nbGUiIGZpbGwtcnVsZT0ibm9uemVybyIgeD0iMCIgeT0iMCIgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0Ij4KCjwvcmVjdD4KICAgICAgICAgICAgPGxpbmUgeDE9IjE2Ljk5OTkiIHkxPSI3IiB4Mj0iNy4wMDAwMSIgeTI9IjE2Ljk5OTkiIGlkPSJQYXRoIiBzdHJva2U9IiMwQzAzMTAiIHN0cm9rZS13aWR0aD0iMiI+Cgo8L2xpbmU+CiAgICAgICAgICAgIDxsaW5lIHgxPSI3LjAwMDA2IiB5MT0iNyIgeDI9IjE3IiB5Mj0iMTYuOTk5OSIgaWQ9IlBhdGgiIHN0cm9rZT0iIzBDMDMxMCIgc3Ryb2tlLXdpZHRoPSIyIj4KCjwvbGluZT4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPg==);scale:1.3}}}@keyframes dialogFadeIn{0%{opacity:0;transform:scale(.95) translateY(8px)}to{opacity:1;transform:scale(1) translateY(0)}}@keyframes backdropFadeIn{0%{opacity:0}to{opacity:1}}.vote-dialog__content{padding:var(--spacing-xl)}.vote-dialog__title{font-family:var(--font-display);font-size:1.3rem;font-weight:600;letter-spacing:-.01em;margin-bottom:var(--spacing-md);position:relative;display:block}.vote-dialog__title:after{content:"";display:block;width:36px;height:3px;background:var(--color-primary);margin-top:var(--spacing-xs);border-radius:2px}.vote-dialog__prompt{color:var(--color-text-secondary);margin-bottom:var(--spacing-sm);font-size:.95rem}.vote-dialog__selections{list-style:none;margin-bottom:var(--spacing-md)}.vote-dialog__selections li{display:flex;align-items:center;gap:var(--spacing-sm);padding:var(--spacing-sm) var(--spacing-md);background:var(--color-primary-light);border:2px solid var(--color-primary);border-radius:var(--radius);margin-bottom:var(--spacing-xs);font-weight:600;font-size:.95rem}.vote-dialog__warning{color:var(--color-error);font-size:.8rem;font-weight:500;margin-top:var(--spacing-md);padding:var(--spacing-sm) var(--spacing-md);background:var(--color-error-bg);border-radius:var(--radius)}.vote-dialog__actions{display:flex;gap:var(--spacing-sm);justify-content:flex-end;margin-top:var(--spacing-md)}.vote-confirmed{text-align:center;padding:var(--spacing-xl) 0;animation:pageReveal .4s cubic-bezier(.22,.61,.36,1)}.vote-confirmed__icon{display:inline-flex;align-items:center;justify-content:center;width:64px;height:64px;border-radius:50%;background:var(--color-success-bg);color:var(--color-success);font-size:2rem;font-weight:700;margin-bottom:var(--spacing-lg)}.vote-confirmed h3{font-family:var(--font-display);font-size:1.5rem;margin-bottom:var(--spacing-sm)}.vote-confirmed p{color:var(--color-text-secondary);margin-bottom:var(--spacing-xl);font-size:.95rem}.election-instruction{font-weight:500;margin-bottom:var(--spacing-md);color:var(--color-text);font-size:.95rem}.selection-counter{font-size:.85rem;color:var(--color-text-secondary);text-align:center;margin-bottom:var(--spacing-sm);font-style:italic}.results-type-note{color:var(--color-text-secondary);font-size:.85rem;margin-bottom:var(--spacing-lg);font-style:italic;padding:var(--spacing-sm) var(--spacing-md);background:var(--color-bg);border-radius:var(--radius);border-left:3px solid var(--color-accent)}.candidate-list{display:flex;flex-direction:column;gap:var(--spacing-sm);margin-bottom:var(--spacing-md)}.candidate-option{display:flex;align-items:center;gap:var(--spacing-md);padding:var(--spacing-md) var(--spacing-lg);border:2px solid var(--color-border);border-radius:var(--radius);cursor:pointer;position:relative;transition:all .2s ease;background:var(--color-surface)}.candidate-option:hover{border-color:var(--color-primary);background:var(--color-primary-light);transform:translate(4px)}.candidate-option--selected{border-color:var(--color-primary);background:var(--color-primary-light);box-shadow:inset 4px 0 0 var(--color-primary)}.candidate-option input[type=radio],.candidate-option input[type=checkbox]{accent-color:var(--color-primary);width:20px;height:20px;cursor:pointer}.candidate-option label{cursor:pointer;font-weight:500;flex:1;font-size:1rem;color:var(--color-text)}.candidate-option label:after{content:"";position:absolute;inset:0}.result-bar{margin-bottom:var(--spacing-lg)}.result-bar__label{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:var(--spacing-xs)}.result-bar__name{font-weight:600;font-size:1rem;font-family:var(--font-display);letter-spacing:-.01em}.result-bar__count{font-size:.85rem;color:var(--color-text-secondary);font-weight:500}.result-bar__track{height:32px;background:var(--color-bg);border-radius:var(--radius);overflow:hidden;border:1px solid var(--color-border)}.result-bar__fill{height:100%;background:linear-gradient(135deg,var(--color-primary) 0%,var(--color-primary-dark) 100%);border-radius:var(--radius);transition:width .6s cubic-bezier(.22,.61,.36,1);min-width:2px;display:flex;align-items:center;padding-left:12px;color:#fff;font-size:.8rem;font-weight:700;font-family:var(--font-body);white-space:nowrap;letter-spacing:.02em}.result-bar__total{text-align:center;color:var(--color-text-secondary);margin-top:var(--spacing-lg);font-size:.9rem;font-weight:600;padding-top:var(--spacing-md);border-top:1px solid var(--color-border)}.voter-add{display:flex;gap:var(--spacing-sm)}.voter-add__input{flex:1}.csv-upload{display:flex;align-items:center;gap:var(--spacing-sm)}.csv-file-name{font-size:.85rem;color:var(--color-text-secondary)}.voter-select__header{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--spacing-sm);font-size:.85rem;font-weight:600;font-family:var(--font-body);text-transform:uppercase;letter-spacing:.04em}.voter-select__header div{display:flex;gap:var(--spacing-sm)}.voter-search-input{width:100%;padding:8px var(--spacing-sm);border:2px solid var(--color-border);border-radius:var(--radius);margin-bottom:var(--spacing-sm);font-family:var(--font-body);font-size:.875rem;transition:border-color .15s ease}.voter-search-input:focus{border-color:var(--color-primary);outline:none}.voter-select__list{max-height:240px;overflow-y:auto;border:2px solid var(--color-border);border-radius:var(--radius);padding:var(--spacing-sm);background:var(--color-bg)}.voter-select__list .loading{padding:var(--spacing-md)}.voter-select__item{display:flex;align-items:center;gap:var(--spacing-sm);padding:8px var(--spacing-sm);border-radius:var(--radius-sm);cursor:pointer;font-size:.875rem;transition:all .15s ease}.voter-select__item:hover{background:var(--color-primary-light)}.voter-select__item input[type=checkbox]{accent-color:var(--color-primary);width:16px;height:16px}.voter-select__item label{cursor:pointer;flex:1;font-weight:500}list-box{ul{list-style-type:none;li{cursor:pointer;padding:4px 8px;&[aria-selected=true]{background-color:var(--color-primary);color:#fff}}}}#eligible-voters{margin-inline-start:10px;padding:8px}.login__subtitle{color:var(--color-text-secondary);margin-bottom:var(--spacing-lg);font-size:.95rem;line-height:1.5}.login__hint{margin-top:var(--spacing-lg);padding:var(--spacing-md);font-size:.8rem;color:var(--color-text-secondary);line-height:1.5;background:var(--color-bg);border-radius:var(--radius);border-left:3px solid var(--color-accent)}.admin-type-select{padding:12px 16px;border:2px solid var(--color-border);border-radius:var(--radius);font-size:.95rem;font-family:var(--font-body);background:var(--color-surface);color:var(--color-text);cursor:pointer;transition:border-color .2s ease,box-shadow .2s ease}.admin-type-select:focus{outline:none;border-color:var(--color-primary);box-shadow:0 0 0 3px var(--color-primary-light)}dashboard-page .dashboard__header{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--spacing-lg);h2{margin-bottom:unset}h2:after{content:"";display:block;width:56px;height:4px;background:var(--color-primary);margin-top:var(--spacing-xs);border-radius:2px}}.users-add-form{margin-bottom:var(--spacing-lg);padding-bottom:var(--spacing-lg);border-bottom:2px solid var(--color-border);flex-flow:row wrap;justify-content:space-between;>.form__group{flex-grow:1}>.message{flex-basis:100%}}.users-add-form__row{display:flex;gap:var(--spacing-sm)}.users-add-form__row input{flex:1}.users-table-container{overflow-x:auto}.users-table{width:100%;border-collapse:collapse;font-size:.9rem;min-width:777px;.user-row__name-input,.user-row__email-input{box-sizing:border-box;font-size:.85rem;margin-inline-start:-2px;padding:4px;width:100%}}.users-table thead th{text-align:left;padding:var(--spacing-sm) var(--spacing-md);font-weight:600;font-size:.75rem;text-transform:uppercase;letter-spacing:.04em;color:var(--color-text-secondary);border-bottom:2px solid var(--color-border)}.users-table tbody td{padding:var(--spacing-sm) var(--spacing-md);border-bottom:1px solid var(--color-border);vertical-align:middle}.users-table tbody tr:hover{background:var(--color-bg)}.user-row__email{font-weight:500;word-break:break-all}.user-row__actions{text-align:end}.user-row__badge{font-size:.7rem}.btn--sm{font-size:.78rem;padding:5px 12px}@media(max-width:640px){:root{--spacing-lg: 16px;--spacing-xl: 20px;--cut: 10px}#app-header{padding:0 var(--spacing-md);height:52px}#app-header h1{font-size:1.05rem}#app-header h1 a:before{width:22px;height:22px}main{padding:var(--spacing-md) var(--spacing-sm)}.card{padding:var(--spacing-lg);border-radius:var(--radius)}.card--login{margin:var(--spacing-lg) auto}.election-grid{grid-template-columns:1fr}h2{font-size:1.4rem}.btn--primary{padding:12px 20px}.card:before{width:28px;height:28px}}[hidden]{display:none}
