:root{--navy:#142b47;--navy2:#1a3859;--ink:#172b43;--muted:#698096;--blue:#235da2;--blue2:#186db2;--line:#dde6ef;--soft:#f4f7fb;--white:#fff;--success:#117451;--warning:#ad7717;--error:#c44343;--shadow:0 15px 40px rgba(21,49,84,.07);--radius:16px;font-family:Tahoma,"Segoe UI",Arial,sans-serif;color-scheme:light}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--soft);color:var(--ink);font-size:14px;line-height:1.9}button,input,select{font:inherit}a{color:var(--blue);text-decoration:none}a:hover{text-decoration:underline}button{cursor:pointer}button:disabled{opacity:.6;cursor:not-allowed}input,select{width:100%;background:#fff;color:var(--ink);border:1px solid #cddae7;padding:12px 13px;border-radius:10px;outline:none;transition:border-color .15s,box-shadow .15s}input:focus,select:focus{border-color:#4386cc;box-shadow:0 0 0 3px rgba(67,134,204,.11)}label{display:block;font-weight:600;color:#344962}label>input,label>select{margin-top:7px}h1,h2,h3,h4,p{margin-top:0}h1{font-size:25px;line-height:1.6}h2{font-size:19px}h3{font-size:16px}h4{font-size:14px;margin:23px 0 8px}.muted{color:var(--muted)}.center{text-align:center}.overline,.eyebrow{color:#3c83c3;font-size:12px;font-weight:700;letter-spacing:.1px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;background:var(--blue);border:1px solid transparent;color:#fff!important;font-weight:700;padding:11px 19px;border-radius:10px;transition:background .2s,transform .15s;text-align:center;text-decoration:none!important;white-space:normal}.btn:hover{background:#174775;transform:translateY(-1px)}.btn-secondary{background:#eaf2fb;color:#1a5b97!important;border-color:#cbdced}.btn-secondary:hover{background:#d9e9fa}.btn-small{padding:6px 11px;font-size:12px}.btn-large{padding:14px 27px;font-size:15px}.btn.block{display:flex;width:100%}.notice{padding:13px 15px;border-radius:11px;margin-bottom:19px;font-size:13px;border:1px solid #d2e1ed;background:#eaf2fc;color:#315476}.notice.success{background:#e8f8f0;color:#126447;border-color:#b9e6d1}.notice.error{background:#fff0f0;color:#aa3535;border-color:#f3c1c1}.notice.warning{background:#fff8e8;border-color:#f0dba7;color:#896019}.notice.neutral{background:#f3f7fa;color:#5d7182;border-color:#dbe6ed}.stack{display:flex;flex-direction:column;gap:16px}.auth-page{min-height:100vh;padding:30px 15px;display:grid;place-items:center;background:radial-gradient(circle at 20% 0%,#dcebf8,transparent 38%),linear-gradient(155deg,#e5ecf5,#f8fafd)}.auth-card{max-width:440px;width:100%;border:1px solid #e2eaf3;background:#fff;border-radius:24px;padding:35px;box-shadow:0 25px 80px rgba(21,49,84,.1)}.wide-auth{max-width:515px}.auth-card h1{margin:13px 0 9px}.auth-card .btn{width:100%}.brand-mark{display:grid;place-items:center;background:linear-gradient(135deg,#275a95,#183450);color:#fff;font-weight:900;border-radius:15px;width:58px;height:58px;font-size:21px;box-shadow:0 12px 25px rgba(34,83,141,.15)}.brand-mark.small{width:42px;height:42px;font-size:16px;border-radius:12px;flex-shrink:0}.auth-footer{border-top:1px solid var(--line);padding-top:18px;margin-top:23px;display:flex;justify-content:space-between;gap:8px;flex-wrap:wrap;color:var(--muted);font-size:12px}.subtle-link{display:block;text-align:center;margin-top:20px;font-size:12px}.admin-shell{min-height:100vh;display:flex}.sidebar{background:var(--navy);color:#deebfa;width:256px;min-height:100vh;position:sticky;top:0;flex-shrink:0;display:flex;flex-direction:column;padding:24px 14px}.sidebar-brand{display:flex;align-items:center;gap:12px;margin:0 4px 36px}.sidebar-brand strong{display:block;color:white;font-size:15px}.sidebar-brand small{display:block;color:#9eb7ce;font-size:11px}.nav-menu{display:flex;flex-direction:column;gap:4px}.nav-item{display:block;width:100%;background:transparent;border:0;color:#c5d7e8;font-size:13px;text-align:right;padding:10px 13px;border-radius:9px;cursor:pointer}.nav-item:hover,.nav-item.active{background:#2c5278;color:#fff;text-decoration:none}.nav-item.active{font-weight:700;background:#315e8d}.sidebar-bottom{margin-top:auto;border-top:1px solid #37516c;padding-top:16px}.btn-plain{font-weight:inherit}.admin-main{flex:1;min-width:0;display:flex;flex-direction:column}.top-header{background:#fff;border-bottom:1px solid #e2e9f1;padding:21px 32px;display:flex;align-items:center;gap:20px}.top-header h1{margin:0;font-size:21px}.admin-name{margin-right:auto;background:#eef4fa;border-radius:40px;padding:6px 13px;font-size:12px}.menu-toggle{display:none;background:#eef4fa;border:0;border-radius:8px;padding:5px 10px;font-size:23px}.admin-content{width:100%;max-width:1550px;margin:0 auto;padding:27px 30px;flex:1}.admin-footer{padding:17px 30px;text-align:center;font-size:11px;color:#8090a0}.section-heading{display:flex;justify-content:space-between;align-items:center;gap:15px;margin-bottom:24px}.section-heading h2{margin-bottom:1px;font-size:22px}.section-heading p{margin:0}.stats-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:17px;margin-bottom:22px}.stat-card{padding:24px 22px;background:#fff;border-radius:15px;border:1px solid var(--line);box-shadow:var(--shadow);min-height:142px}.stat-card>span{color:#75899b;font-size:13px}.stat-card strong{font-size:29px;font-weight:800;display:block;color:#203f66;margin:5px 0}.stat-card small{color:#8695a4}.progress-track{height:7px;background:#e4edf5;border-radius:10px;overflow:hidden}.progress-track i{height:100%;background:#2b88ce;display:block;border-radius:10px}.two-cols{display:grid;grid-template-columns:1fr 1fr;gap:19px}.two-cols-wide{grid-template-columns:minmax(320px,.8fr) minmax(0,1.3fr)}.panel{background:#fff;padding:24px;border:1px solid var(--line);border-radius:15px;box-shadow:var(--shadow);margin-bottom:20px;min-width:0}.panel>h2{margin-bottom:20px}.panel-head{display:flex;align-items:center;justify-content:space-between;gap:13px;margin-bottom:15px}.panel-head h2,.panel-head h3{margin:0}.kv{display:flex;justify-content:space-between;gap:14px;border-bottom:1px solid #edf1f5;padding:12px 0}.kv:last-of-type{margin-bottom:17px}.kv b{white-space:nowrap}.quick-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.quick-link{border:1px solid #d8e5f1;background:#f6f9fc;border-radius:9px;padding:14px 12px;color:#285782;font-weight:700}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:17px}.form-grid .span-2{grid-column:span 2}.compact-table{overflow-x:auto;max-width:100%}table{border-collapse:collapse;width:100%;font-size:13px}th,td{text-align:right;padding:13px 11px;border-bottom:1px solid #e8edf3;vertical-align:middle}th{background:#f3f7fb;color:#536b83;font-weight:700;white-space:nowrap}tbody tr:hover{background:#fafcff}.inline-actions{display:flex;gap:12px;align-items:center;flex-wrap:wrap}.inline-actions form{display:inline}.link-button{background:transparent;color:#1e65a2;border:0;padding:0;font-weight:600;font-size:12px;cursor:pointer}.link-button:hover{text-decoration:underline}.status{border-radius:30px;display:inline-flex;align-items:center;font-weight:700;font-size:11px;padding:3px 10px;background:#e8edf6;color:#526c85}.status-open{background:#e3f8ed;color:#197150}.status-paused{background:#fff3d8;color:#8b6a18}.status-closed{background:#e4e7eb;color:#64748b}.status-draft{background:#edf3fc;color:#356ba0}.search-form{display:flex;gap:9px}.search-form input{max-width:240px}.pagination{display:flex;justify-content:space-between;gap:10px;align-items:center;padding-top:17px;color:#718295}.pagination a{border:1px solid #cbdced;border-radius:7px;padding:4px 10px}.narrow-panel{max-width:540px}.code-sample{border-radius:9px;padding:12px;background:#edf3f8;white-space:nowrap;overflow:auto;font-family:Consolas,monospace;font-size:12px;color:#536c82;line-height:1.9}hr{border:0;border-top:1px solid #e3eaf1;margin:23px 0}.vote-layout{min-height:100vh;background:#f5f8fc}.vote-top{background:#fff;border-bottom:1px solid #dfe7ef;display:flex;align-items:center;justify-content:space-between;padding:14px max(25px,calc((100vw - 1110px)/2));gap:12px}.vote-identity{display:flex;align-items:center;gap:10px}.vote-identity strong{display:block;font-size:14px}.vote-identity small{display:block;font-size:11px;color:#7a8e9e}.vote-user{display:flex;gap:13px;align-items:center;color:#52687f}.vote-user .link-button{font-size:12px}.vote-content{max-width:1110px;margin:0 auto;padding:34px 20px 80px}.vote-hero{background:linear-gradient(135deg,#142f4e,#235d95);color:#fff;border-radius:22px;padding:32px;margin-bottom:21px}.vote-hero .eyebrow{color:#a8d3f8}.vote-hero h1{font-size:27px;margin:5px 0}.vote-hero p{color:#dae6f1;margin:0}.ballot-section{border:1px solid #e0e9f1;border-radius:16px;background:#fff;padding:27px;margin-bottom:8px;box-shadow:var(--shadow)}.ballot-section-head{display:flex;align-items:center;justify-content:space-between;gap:18px;margin-bottom:23px}.ballot-section-head h2{margin:0;font-size:20px}.ballot-section-head p{margin:0;color:#8091a4}.group-index{font-weight:800;color:#4185c2;font-size:12px}.count-pill{border-radius:50px;padding:6px 13px;background:#e8f2fc;color:#285f98;white-space:nowrap;font-weight:700}.candidate-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:13px}.candidate-option{display:flex;align-items:center;gap:13px;background:#fbfcfe;border:1px solid #e1e9f2;border-radius:12px;cursor:pointer;padding:16px 13px;transition:background .2s,border .2s}.candidate-option:hover{border-color:#94b9d8;background:#f3f8fd}.candidate-option:has(input:checked){border-color:#3278b3;background:#edf6ff}.candidate-option input{position:absolute;width:1px;height:1px;opacity:0}.candidate-option:has(input:focus-visible){outline:3px solid #6fb9f1}.check-visual{display:grid;place-items:center;width:24px;height:24px;border:2px solid #b9c9d7;background:#fff;color:transparent;border-radius:7px;flex-shrink:0}.candidate-option:has(input:checked) .check-visual{background:#2379b6;color:#fff;border-color:#2379b6}.candidate-name{color:#2a4158;font-size:13px;font-weight:700}.ballot-footer{border-radius:16px;background:#fff;border:1px solid #e0e9f1;padding:25px}.agreement{display:flex;gap:11px;align-items:flex-start;font-size:13px;font-weight:400}.agreement input{width:17px;height:17px;flex-shrink:0;margin:7px 0 0}.submit-row{display:flex;justify-content:space-between;align-items:center;gap:17px;border-top:1px solid #e9edf2;margin-top:22px;padding-top:22px}.submit-row span{color:#7c90a3}.form-feedback{color:#a54343;font-weight:700;margin-top:10px;min-height:20px}.success-icon{width:80px;height:80px;display:grid;place-items:center;border-radius:50%;background:#dcf7e9;color:#18734b;font-size:48px;margin:0 auto 20px}.receipt-box{display:flex;align-items:center;flex-direction:column;gap:10px;padding:20px;border:1px dashed #9bb9d5;background:#f3f8fe;border-radius:13px;margin:20px 0}.receipt-box strong{letter-spacing:2px;font-size:18px;overflow-wrap:anywhere;color:#214f7b}.receipt-box small{color:#708599}
@media(max-width:1100px){.sidebar{width:210px}.admin-content{padding:22px}.stats-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.candidate-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:800px){.sidebar{position:fixed;right:-270px;top:0;height:100vh;width:255px;z-index:10;transition:right .2s}.sidebar.sidebar-open{right:0}.menu-toggle{display:inline-block}.top-header{padding:15px}.top-header h1{font-size:18px}.admin-content{padding:15px}.two-cols,.two-cols-wide{grid-template-columns:1fr}.section-heading{align-items:flex-start;flex-direction:column}.vote-content{padding:20px 12px}.vote-top{padding:12px 14px}.admin-name{font-size:11px}}
@media(max-width:520px){h1{font-size:21px}.auth-card{padding:25px 19px;border-radius:18px}.stats-grid{gap:10px}.stat-card{padding:17px;min-height:128px}.stat-card strong{font-size:23px}.panel{padding:17px}.quick-grid{grid-template-columns:1fr}.form-grid{grid-template-columns:1fr}.form-grid .span-2{grid-column:span 1}.candidate-grid{grid-template-columns:1fr}.ballot-section{padding:20px 15px}.ballot-section-head{align-items:flex-start}.vote-hero{padding:25px 20px}.vote-hero h1{font-size:22px}.vote-user{gap:7px;font-size:11px}.vote-identity small{max-width:140px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.submit-row{flex-direction:column;align-items:stretch}.submit-row .btn{width:100%}.search-form{width:100%;flex-wrap:wrap}.search-form input{max-width:100%}.panel-head{align-items:flex-start;flex-direction:column}}
