@import "https://fonts.googleapis.com/css2?family=Instrument+Serif:ital@0;1&family=Inter:wght@300;400;500;600;700&display=swap";
:root{--bg:#fafafa;--bg-alt:#f0f0f0;--surface:#fff;--text-primary:#0a0a0a;--text-secondary:#666;--text-tertiary:#999;--accent:#000;--border:#e0e0e0;--border-light:#f0f0f0;--error:#c00;--error-bg:#fff0f0;--success:#1a7a1a;--success-bg:#f0fff0;--font-heading:"Instrument Serif", serif;--font-body:"Inter", sans-serif;--space-xs:4px;--space-sm:8px;--space-md:16px;--space-lg:24px;--space-xl:32px;--space-2xl:48px;--space-3xl:64px;--space-4xl:96px;--transition:.3s cubic-bezier(.4, 0, .2, 1);--transition-fast:.15s cubic-bezier(.4, 0, .2, 1)}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-size:16px}body{font-family:var(--font-body);background:var(--bg);color:var(--text-primary);min-height:100vh;line-height:1.6}h1,h2,h3,h4{font-family:var(--font-heading);letter-spacing:-.02em;font-weight:400;line-height:1.1}h1{font-size:clamp(2.5rem,5vw,4rem)}h2{font-size:clamp(1.8rem,3vw,2.5rem)}h3{font-size:clamp(1.3rem,2vw,1.8rem)}h4{font-size:1.2rem}p{color:var(--text-secondary);font-size:.95rem;line-height:1.7}a{color:var(--text-primary);text-decoration:none}.page-container{flex-direction:column;min-height:100vh;display:flex}.page-content{max-width:1200px;padding:var(--space-2xl) var(--space-lg);flex:1;width:100%;margin:0 auto}.page-content--narrow{max-width:520px}.page-content--medium{max-width:900px}.header{padding:var(--space-lg) var(--space-xl);border-bottom:1px solid var(--border);background:var(--surface);z-index:100;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#ffffffe6;justify-content:space-between;align-items:center;display:flex;position:sticky;top:0}.header__logo{font-family:var(--font-heading);letter-spacing:-.03em;cursor:pointer;-webkit-user-select:none;user-select:none;font-size:1.5rem}.header__logo span{color:var(--text-tertiary);margin-left:var(--space-sm);font-size:.85rem;font-style:italic;font-family:var(--font-body);letter-spacing:.08em;text-transform:uppercase;font-weight:300}.header__nav{gap:var(--space-lg);align-items:center;display:flex}.header__link{letter-spacing:.1em;text-transform:uppercase;color:var(--text-secondary);transition:color var(--transition-fast);font-size:.8rem;font-weight:500;position:relative}.header__link:after{content:"";background:var(--accent);width:0;height:1px;transition:width var(--transition);position:absolute;bottom:-4px;left:0}.header__link:hover{color:var(--text-primary)}.header__link:hover:after{width:100%}.form-group{margin-bottom:var(--space-lg)}.form-label{letter-spacing:.12em;text-transform:uppercase;color:var(--text-secondary);margin-bottom:var(--space-sm);font-size:.7rem;font-weight:600;display:block}.form-input{width:100%;padding:var(--space-md) var(--space-lg);border:1px solid var(--border);background:var(--surface);font-family:var(--font-body);color:var(--text-primary);transition:border-color var(--transition-fast);outline:none;font-size:.95rem}.form-input:focus{border-color:var(--accent)}.form-input::placeholder{color:var(--text-tertiary);font-weight:300}.btn{justify-content:center;align-items:center;gap:var(--space-sm);padding:var(--space-md) var(--space-xl);font-family:var(--font-body);letter-spacing:.15em;text-transform:uppercase;border:1px solid var(--accent);cursor:pointer;transition:all var(--transition);font-size:.75rem;font-weight:600;display:inline-flex;position:relative;overflow:hidden}.btn--primary{background:var(--accent);color:var(--surface)}.btn--primary:hover{background:#222;transform:translateY(-1px);box-shadow:0 4px 20px #00000026}.btn--primary:active{transform:translateY(0)}.btn--secondary{color:var(--accent);background:0 0}.btn--secondary:hover{background:var(--accent);color:var(--surface)}.btn--danger{color:var(--error);border-color:var(--error);background:0 0}.btn--danger:hover{background:var(--error);color:#fff}.btn--full{width:100%}.btn:disabled{opacity:.4;cursor:not-allowed;box-shadow:none;transform:none}.btn--loading{position:relative;color:#0000!important}.btn--loading:after{content:"";border:2px solid #ffffff4d;border-top-color:#fff;border-radius:50%;width:16px;height:16px;animation:.6s linear infinite spin;position:absolute}@keyframes spin{to{transform:rotate(360deg)}}.card{background:var(--surface);border:1px solid var(--border);padding:var(--space-xl);transition:all var(--transition)}.card:hover{border-color:var(--accent);box-shadow:0 8px 32px #0000000f}.card--selected{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}.candidate-grid{gap:var(--space-lg);margin:var(--space-2xl) 0;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));display:grid}.candidate-card{background:var(--surface);border:1px solid var(--border);padding:var(--space-2xl) var(--space-xl);cursor:pointer;transition:all var(--transition);text-align:center;position:relative;overflow:hidden}.candidate-card:before{content:"";background:var(--accent);transform-origin:0;width:100%;height:3px;transition:transform var(--transition);position:absolute;top:0;left:0;transform:scaleX(0)}.candidate-card:hover{border-color:#999;transform:translateY(-2px);box-shadow:0 12px 40px #00000014}.candidate-card:hover:before{transform:scaleX(1)}.candidate-card--selected{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent)}.candidate-card--selected:before{transform:scaleX(1)}.candidate-card__number{top:var(--space-md);right:var(--space-md);font-family:var(--font-heading);color:var(--border-light);transition:color var(--transition);font-size:2.5rem;font-style:italic;line-height:1;position:absolute}.candidate-card--selected .candidate-card__number{color:var(--accent)}.candidate-card__avatar{background:var(--bg-alt);width:80px;height:80px;margin:0 auto var(--space-lg);font-family:var(--font-heading);color:var(--text-secondary);border:2px solid var(--border);transition:border-color var(--transition);border-radius:50%;justify-content:center;align-items:center;font-size:1.8rem;display:flex;overflow:hidden}.candidate-card__avatar img{object-fit:cover;width:100%;height:100%}.candidate-card--selected .candidate-card__avatar{border-color:var(--accent)}.candidate-card__name{font-family:var(--font-heading);margin-bottom:var(--space-xs);font-size:1.4rem}.candidate-card__bio{color:var(--text-tertiary);font-size:.8rem;font-weight:300}.candidate-card__check{top:var(--space-md);left:var(--space-md);border:2px solid var(--border);width:24px;height:24px;transition:all var(--transition-fast);justify-content:center;align-items:center;display:flex;position:absolute}.candidate-card--selected .candidate-card__check{background:var(--accent);border-color:var(--accent)}.candidate-card__check svg{stroke:#fff;stroke-width:3px;opacity:0;width:14px;height:14px;transition:all var(--transition-fast);transform:scale(.5)}.candidate-card--selected .candidate-card__check svg{opacity:1;transform:scale(1)}.section-header{margin-bottom:var(--space-2xl);position:relative}.section-header__label{letter-spacing:.2em;text-transform:uppercase;color:var(--text-tertiary);margin-bottom:var(--space-sm);font-size:.65rem;font-weight:600}.section-header__title{margin-bottom:var(--space-sm)}.section-header__subtitle{color:var(--text-secondary);max-width:500px;font-size:.9rem;font-weight:300}.section-header__line{background:var(--accent);width:40px;height:1px;margin-top:var(--space-md)}.results-list{gap:var(--space-md);flex-direction:column;display:flex}.result-item{align-items:center;gap:var(--space-lg);padding:var(--space-lg) var(--space-xl);background:var(--surface);border:1px solid var(--border);transition:all var(--transition);display:flex}.result-item:hover{border-color:#999}.result-item__rank{font-family:var(--font-heading);color:var(--border);text-align:center;min-width:40px;font-size:2rem;font-style:italic}.result-item:first-child .result-item__rank{color:var(--accent)}.result-item__info{flex:1;min-width:0}.result-item__name{font-family:var(--font-heading);margin-bottom:var(--space-xs);font-size:1.3rem}.result-item__bar-container{background:var(--bg-alt);width:100%;height:4px;overflow:hidden}.result-item__bar{background:var(--accent);height:100%;transition:width 1s cubic-bezier(.4,0,.2,1)}.result-item:first-child .result-item__bar{background:var(--accent)}.result-item__votes{text-align:right;letter-spacing:-.02em;min-width:60px;font-size:1.5rem;font-weight:300}.result-item__percentage{color:var(--text-tertiary);text-align:right;letter-spacing:.05em;font-size:.7rem;font-weight:500}.stats-row{gap:var(--space-md);margin-bottom:var(--space-2xl);grid-template-columns:repeat(auto-fit,minmax(180px,1fr));display:grid}.stat-card{background:var(--surface);border:1px solid var(--border);padding:var(--space-xl);text-align:center}.stat-card__value{font-family:var(--font-heading);margin-bottom:var(--space-xs);font-size:2.5rem;font-style:italic;line-height:1}.stat-card__label{letter-spacing:.15em;text-transform:uppercase;color:var(--text-tertiary);font-size:.65rem;font-weight:600}.gate-container{min-height:100vh;padding:var(--space-xl);justify-content:center;align-items:center;display:flex}.gate-box{text-align:center;width:100%;max-width:400px}.gate-box__icon{border:2px solid var(--border);width:48px;height:48px;margin:0 auto var(--space-xl);justify-content:center;align-items:center;display:flex}.gate-box__title{margin-bottom:var(--space-xs)}.gate-box__subtitle{color:var(--text-tertiary);margin-bottom:var(--space-xl);font-size:.85rem;font-weight:300}.admin-section{margin-bottom:var(--space-3xl)}.admin-section__header{margin-bottom:var(--space-lg);padding-bottom:var(--space-md);border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;display:flex}.admin-section__title{font-family:var(--font-heading);font-size:1.4rem}.csv-dropzone{border:2px dashed var(--border);padding:var(--space-2xl);text-align:center;cursor:pointer;transition:all var(--transition);background:var(--surface)}.csv-dropzone:hover,.csv-dropzone--active{border-color:var(--accent);background:var(--bg-alt)}.csv-dropzone__icon{margin-bottom:var(--space-md);opacity:.3;font-size:2rem}.csv-dropzone__text{color:var(--text-secondary);font-size:.85rem}.csv-dropzone__hint{color:var(--text-tertiary);margin-top:var(--space-sm);font-size:.75rem}.member-table{border-collapse:collapse;width:100%;font-size:.85rem}.member-table th{text-align:left;padding:var(--space-md);letter-spacing:.15em;text-transform:uppercase;color:var(--text-tertiary);border-bottom:2px solid var(--accent);font-size:.65rem;font-weight:600}.member-table td{padding:var(--space-md);border-bottom:1px solid var(--border-light);color:var(--text-secondary)}.member-table tr:hover td{background:var(--bg-alt)}.candidate-list-admin{gap:var(--space-sm);flex-direction:column;display:flex}.candidate-list-admin__item{padding:var(--space-md) var(--space-lg);background:var(--surface);border:1px solid var(--border);justify-content:space-between;align-items:center;display:flex}.candidate-list-admin__name{font-family:var(--font-heading);font-size:1.1rem}.candidate-list-admin__remove{color:var(--text-tertiary);cursor:pointer;padding:var(--space-xs) var(--space-sm);letter-spacing:.1em;text-transform:uppercase;transition:color var(--transition-fast);font-size:.7rem;font-weight:600;font-family:var(--font-body);background:0 0;border:none}.candidate-list-admin__remove:hover{color:var(--error)}.modal-overlay{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:1000;background:#0009;justify-content:center;align-items:center;animation:.2s fadeIn;display:flex;position:fixed;inset:0}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.modal-content{background:var(--surface);width:90%;max-width:700px;max-height:80vh;padding:var(--space-2xl);animation:.3s cubic-bezier(.4,0,.2,1) slideUp;overflow-y:auto}@keyframes slideUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.modal-content__header{margin-bottom:var(--space-xl);padding-bottom:var(--space-md);border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;display:flex}.modal-content__title{font-family:var(--font-heading);font-size:1.5rem}.modal-content__close{cursor:pointer;color:var(--text-tertiary);padding:var(--space-xs);transition:color var(--transition-fast);background:0 0;border:none;font-size:1.5rem;line-height:1}.modal-content__close:hover{color:var(--text-primary)}.alert{padding:var(--space-md) var(--space-lg);margin-bottom:var(--space-lg);align-items:center;gap:var(--space-md);font-size:.85rem;display:flex}.alert--error{background:var(--error-bg);color:var(--error);border:1px solid #fcc}.alert--success{background:var(--success-bg);color:var(--success);border:1px solid #cfc}.confirmation{text-align:center;padding:var(--space-4xl) var(--space-xl)}.confirmation__icon{border:2px solid var(--accent);width:64px;height:64px;margin:0 auto var(--space-xl);justify-content:center;align-items:center;animation:.4s cubic-bezier(.34,1.56,.64,1) scaleIn;display:flex}@keyframes scaleIn{0%{transform:scale(0)}to{transform:scale(1)}}.confirmation__title{margin-bottom:var(--space-md)}.confirmation__text{max-width:400px;margin:0 auto;font-weight:300}.login-page{min-height:100vh;display:flex;position:relative;overflow:hidden}.login-page__left{padding:var(--space-3xl);z-index:1;flex-direction:column;flex:1;justify-content:center;display:flex;position:relative}.login-page__right{background:var(--accent);flex:1;justify-content:center;align-items:center;display:flex;position:relative;overflow:hidden}.login-page__right:before{content:"29";font-family:var(--font-heading);color:#ffffff08;font-size:25rem;font-style:italic;line-height:1;position:absolute}.login-page__right-content{color:#fff;text-align:center;z-index:1;padding:var(--space-xl)}.login-page__right-title{font-family:var(--font-heading);margin-bottom:var(--space-md);color:#fff;font-size:3rem;font-style:italic}.login-page__right-subtitle{letter-spacing:.2em;text-transform:uppercase;opacity:.5;font-size:.8rem;font-weight:300}.login-page__brand{font-family:var(--font-heading);margin-bottom:var(--space-4xl);font-size:1.5rem}.login-page__brand span{color:var(--text-tertiary);font-size:.8rem;font-style:italic;font-family:var(--font-body);letter-spacing:.1em;text-transform:uppercase;margin-left:var(--space-sm);font-weight:300}.login-page__form-title{margin-bottom:var(--space-xs)}.login-page__form-subtitle{color:var(--text-tertiary);margin-bottom:var(--space-2xl);font-size:.85rem;font-weight:300}.login-page__decorative{bottom:var(--space-xl);left:var(--space-3xl);color:var(--text-tertiary);letter-spacing:.15em;text-transform:uppercase;font-size:.7rem;font-weight:500;position:absolute}.divider{background:var(--border);width:100%;height:1px;margin:var(--space-xl) 0}.badge{letter-spacing:.1em;text-transform:uppercase;border:1px solid;align-items:center;padding:2px 10px;font-size:.65rem;font-weight:600;display:inline-flex}.badge--active{color:var(--success);border-color:var(--success)}.badge--international{color:#555;border-color:#999}.badge--voted{color:var(--accent);border-color:var(--accent);background:var(--bg-alt)}.tabs{border-bottom:1px solid var(--border);margin-bottom:var(--space-xl);display:flex}.tab{padding:var(--space-md) var(--space-xl);letter-spacing:.1em;text-transform:uppercase;color:var(--text-tertiary);cursor:pointer;transition:color var(--transition-fast);font-size:.75rem;font-weight:600;font-family:var(--font-body);background:0 0;border:none;position:relative}.tab:after{content:"";background:var(--accent);width:100%;height:2px;transition:transform var(--transition);position:absolute;bottom:-1px;left:0;transform:scaleX(0)}.tab:hover,.tab--active{color:var(--text-primary)}.tab--active:after{transform:scaleX(1)}@media (max-width:768px){.login-page{flex-direction:column}.login-page__right{display:none}.login-page__left{padding:var(--space-xl)}.candidate-grid{grid-template-columns:1fr}.stats-row{grid-template-columns:1fr 1fr}.header{padding:var(--space-md)}.header__nav{gap:var(--space-md)}}::-webkit-scrollbar{width:6px}::-webkit-scrollbar-track{background:var(--bg)}::-webkit-scrollbar-thumb{background:var(--border)}::-webkit-scrollbar-thumb:hover{background:var(--text-tertiary)}.add-candidate-form{gap:var(--space-md);margin-top:var(--space-md);display:flex}.add-candidate-form .form-input{flex:1}.secret-trigger{opacity:0;cursor:default;z-index:50;background:0 0;border:none;width:40px;height:40px;position:fixed;bottom:0;right:0}
