@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Manrope:wght@400;500;600;700;800&display=swap');
:root{font-family:'DM Sans',sans-serif;color:#1d2b27;background:#f5f7f5;font-synthesis:none;text-rendering:optimizeLegibility;--green:#17664f;--green-dark:#124b3d;--ink:#1d2b27;--muted:#718079;--line:#e6ebe7;--surface:#fff;--soft:#f3f7f4;--amber:#a66a12;--red:#b43e3e;--shadow:0 8px 24px #19372b0a}*{box-sizing:border-box}body{margin:0;min-width:320px}button,input,select,textarea{font:inherit}button{cursor:pointer}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid #6ab69a;outline-offset:2px}.app-shell{min-height:100vh}.sidebar{width:248px;position:fixed;inset:0 auto 0 0;background:#fff;border-right:1px solid var(--line);padding:25px 16px;display:flex;flex-direction:column;z-index:10}.brand{display:flex;align-items:center;gap:11px;text-decoration:none;color:var(--ink);padding:2px 10px 31px}.brand-mark{width:38px;height:38px;border-radius:12px;background:var(--green);color:#fff;display:grid;place-items:center;font:800 20px Manrope}.brand strong,.brand small,.user-chip strong,.user-chip small{display:block}.brand strong{font:800 12px Manrope;letter-spacing:.07em}.brand small{font-size:11px;color:var(--muted);margin-top:3px}.nav-label{font-size:10px;color:#9aa59f;font-weight:700;letter-spacing:.11em;padding:0 12px 11px}.nav-list{display:grid;gap:4px}.nav-link{border:0;background:transparent;text-align:left;text-decoration:none;color:#63716a;border-radius:9px;padding:11px 12px;display:flex;align-items:center;gap:12px;font-size:13px;font-weight:600;width:100%}.nav-link:hover{background:#f5f8f6;color:var(--green)}.nav-link.active{color:var(--green-dark);background:#eaf4ef}.nav-icon{width:19px;text-align:center;font-size:16px}.sidebar-bottom{margin-top:auto;padding:13px 10px 0;border-top:1px solid var(--line);color:#87928c;font-size:10px}.secure-mark{color:var(--green);font-size:11px;margin-bottom:7px}.secure-mark span{color:#58665e}.main-column{margin-left:248px;min-height:100vh;display:flex;flex-direction:column}.topbar{height:68px;position:sticky;top:0;background:#ffffffed;backdrop-filter:blur(12px);border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 34px;z-index:5}.breadcrumbs{display:flex;gap:10px;align-items:center;color:#89958e;font-size:12px}.breadcrumbs b{font-weight:400;color:#c2cbc5}.breadcrumbs strong{color:var(--ink);font-weight:600}.topbar-actions{display:flex;align-items:center;gap:20px}.env-pill{border:1px solid #e9d6aa;background:#fff9e9;border-radius:20px;padding:6px 10px;color:#976016;font-size:9px;letter-spacing:.08em;font-weight:700}.env-pill i{display:inline-block;width:6px;height:6px;border-radius:50%;background:#d69631;margin-right:5px}.user-chip{border:0;background:transparent;display:flex;align-items:center;gap:9px;text-align:left;color:var(--ink)}.avatar{width:32px;height:32px;background:#e6f0ea;border-radius:50%;display:grid;place-items:center;color:var(--green);font-size:10px;font-weight:700}.user-chip strong{font-size:11px}.user-chip small{font-size:10px;color:var(--muted);margin-top:2px}.icon-button{border:0;background:transparent;color:var(--ink);font-size:18px}.menu-toggle{display:none}#main-content{padding:32px 36px 42px;max-width:1600px;width:100%;margin:0 auto;flex:1}.app-footer{padding:14px 36px 20px;color:#9aa49e;font-size:10px}.app-footer span{padding:0 5px}.page-heading{display:flex;justify-content:space-between;align-items:flex-start;gap:20px;margin-bottom:26px}.eyebrow{color:var(--green);font-size:10px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;margin-bottom:8px}.page-heading h1{font:700 25px Manrope;margin:0;letter-spacing:-.04em}.page-heading p{font-size:12px;color:var(--muted);margin:7px 0 0;line-height:1.6}.button{border:1px solid transparent;background:var(--green);color:#fff;border-radius:8px;padding:10px 14px;font-size:11px;font-weight:700;display:inline-flex;align-items:center;justify-content:center;gap:8px}.button:hover{background:var(--green-dark)}.button.secondary{background:#fff;border-color:var(--line);color:#43524a}.button.secondary:hover{background:#f8faf8}.button.ghost{background:transparent;color:var(--green);padding:7px 9px}.button.danger{background:#fff;color:var(--red);border-color:#efd9d9}.button.small{padding:7px 10px;font-size:10px}.stats-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin-bottom:18px}.stat-card,.panel{background:var(--surface);border:1px solid var(--line);border-radius:11px;box-shadow:var(--shadow)}.stat-card{padding:17px 18px}.stat-top{display:flex;justify-content:space-between;align-items:center;color:var(--muted);font-size:11px}.stat-icon{width:30px;height:30px;display:grid;place-items:center;border-radius:9px;background:#edf5ef;color:var(--green);font-size:15px}.stat-value{font:700 24px Manrope;letter-spacing:-.04em;margin:13px 0 5px}.stat-foot{font-size:10px;color:#839088}.stat-foot strong{color:var(--green);font-weight:700}.dashboard-grid{display:grid;grid-template-columns:minmax(0,1.55fr) minmax(270px,.8fr);gap:16px}.panel{padding:19px}.panel-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:16px}.panel-heading h2{font:700 13px Manrope;margin:0}.panel-heading p{font-size:10px;color:var(--muted);margin:5px 0 0}.text-link{color:var(--green);font-size:10px;font-weight:700;text-decoration:none}.election-banner{background:linear-gradient(115deg,#164c3d,#1b7257);border-radius:10px;color:#fff;padding:18px 20px;display:flex;align-items:center;justify-content:space-between;margin-bottom:15px}.election-banner .eyebrow{color:#b9ddc9;margin-bottom:7px}.election-banner h3{font:700 15px Manrope;margin:0}.election-banner p{font-size:10px;color:#d3e7dc;margin:6px 0 0}.status-pill{display:inline-flex;align-items:center;gap:6px;padding:5px 9px;border-radius:20px;font-size:9px;font-weight:700;white-space:nowrap;background:#e9f5ed;color:#28764a}.status-pill:before{content:'';height:6px;width:6px;border-radius:50%;background:currentColor}.status-pill.warning{background:#fff4db;color:#9b6715}.status-pill.neutral{background:#eef1ef;color:#637068}.status-pill.danger{background:#fbeaea;color:#ac3e3e}.banner-pill{color:#f0c96e;background:#ffffff17;border:1px solid #ffffff30}.banner-pill:before{background:#efc25e}.progress-row{display:flex;justify-content:space-between;color:#718079;font-size:10px;margin:14px 0 8px}.progress-track{height:7px;border-radius:8px;background:#edf1ee;overflow:hidden}.progress-track span{display:block;height:100%;border-radius:inherit;background:#3b9a71}.candidate-list{display:grid;gap:13px}.candidate-row{display:grid;grid-template-columns:30px 1fr auto;align-items:center;gap:10px}.candidate-number{height:29px;width:29px;display:grid;place-items:center;border-radius:8px;background:#f1f5f2;color:#496057;font:700 11px Manrope}.candidate-name{font-size:11px;font-weight:700}.candidate-meta{font-size:9px;color:#89958e;margin-top:4px}.candidate-votes{font:700 12px Manrope;text-align:right}.candidate-votes small{display:block;color:#829087;font:400 9px 'DM Sans';margin-top:3px}.activity-list{display:grid}.activity-item{display:grid;grid-template-columns:30px 1fr auto;gap:10px;padding:12px 0;border-bottom:1px solid #f0f2f0;align-items:start}.activity-item:last-child{border-bottom:0}.activity-icon{width:28px;height:28px;border-radius:50%;background:#f0f5f1;color:var(--green);display:grid;place-items:center;font-size:11px}.activity-copy{font-size:10px;line-height:1.5;color:#45534b}.activity-copy strong{font-weight:700}.activity-time{font-size:9px;color:#9aa49e;white-space:nowrap}.section-gap{margin-top:16px}.table-toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:9px;margin-bottom:14px}.field,.select{border:1px solid #dfe6e1;border-radius:7px;background:#fff;color:var(--ink);padding:9px 11px;font-size:11px;min-height:36px}.field{min-width:210px}.select{min-width:130px}.field::placeholder{color:#a4ada7}.table-wrap{width:100%;overflow-x:auto}table{border-collapse:collapse;width:100%;min-width:680px}th{text-align:left;padding:10px 11px;background:#f8faf8;color:#87928c;font-size:9px;text-transform:uppercase;letter-spacing:.07em;font-weight:700;border-bottom:1px solid var(--line)}td{padding:12px 11px;border-bottom:1px solid #eef1ef;font-size:10px;color:#4c5a52}tbody tr:last-child td{border-bottom:0}.person-cell{display:flex;align-items:center;gap:9px}.person-avatar{width:29px;height:29px;border-radius:9px;background:#eaf2ed;color:#367156;display:grid;place-items:center;font-size:9px;font-weight:700}.person-cell strong{display:block;color:#27372f;font-size:10px}.person-cell small{display:block;color:#89958e;font-size:9px;margin-top:3px}.row-actions{display:flex;gap:5px;justify-content:flex-end}.icon-action{border:1px solid var(--line);background:#fff;width:28px;height:28px;border-radius:6px;color:#647169}.icon-action:hover{color:var(--green);background:#f4f8f5}.pagination{display:flex;justify-content:space-between;align-items:center;padding-top:13px;color:#87928c;font-size:10px}.page-buttons{display:flex;gap:5px}.page-buttons button{width:27px;height:27px;border:1px solid var(--line);border-radius:6px;background:#fff;color:#536158;font-size:10px}.page-buttons button.active{background:var(--green);color:#fff;border-color:var(--green)}.two-col{display:grid;grid-template-columns:1fr 1fr;gap:15px}.form-label{display:block;font-size:10px;font-weight:700;margin-bottom:6px;color:#46554c}.form-control{width:100%;border:1px solid #dfe6e1;border-radius:7px;padding:10px 11px;font-size:11px;background:#fff;color:var(--ink)}textarea.form-control{min-height:85px;resize:vertical}.form-group{margin-bottom:14px}.form-hint{font-size:9px;color:#89958e;margin-top:5px}.modal-backdrop{position:fixed;inset:0;background:#13251e70;z-index:30;display:grid;place-items:center;padding:18px}.modal{width:min(580px,100%);max-height:90vh;overflow:auto;background:#fff;border-radius:13px;padding:22px;box-shadow:0 20px 80px #10251c40}.modal-header{display:flex;justify-content:space-between;align-items:start;margin-bottom:18px}.modal-header h2{font:700 17px Manrope;margin:0}.modal-header p{font-size:10px;color:var(--muted);margin:6px 0 0}.modal-close{border:0;background:transparent;font-size:20px;color:#7d8982}.modal-footer{display:flex;justify-content:flex-end;gap:8px;margin-top:20px}.toast-region{position:fixed;right:18px;bottom:18px;display:grid;gap:8px;z-index:50}.toast{background:#173f32;color:white;padding:12px 15px;border-radius:8px;box-shadow:var(--shadow);font-size:11px;animation:appear .2s ease}.toast.error{background:#933e3e}@keyframes appear{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}.empty-state{text-align:center;padding:35px 15px;color:#78857d;font-size:11px}.empty-state strong{display:block;color:var(--ink);font-size:13px;margin-bottom:6px}.candidate-card-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:13px}.candidate-card{border:1px solid var(--line);border-radius:10px;padding:17px;background:#fff}.candidate-card-top{display:flex;justify-content:space-between}.candidate-photo{width:48px;height:48px;border-radius:14px;background:#e6f0e9;display:grid;place-items:center;color:var(--green);font:700 17px Manrope}.candidate-card h3{font:700 13px Manrope;margin:14px 0 4px}.candidate-card p{font-size:10px;color:var(--muted);min-height:30px;line-height:1.5}.candidate-card-footer{border-top:1px solid var(--line);padding-top:11px;display:flex;justify-content:space-between;align-items:center}.filter-chip{border:1px solid var(--line);padding:7px 10px;background:#fff;border-radius:7px;color:#5f6e65;font-size:10px}.filter-chip.active{border-color:#b7d6c4;color:var(--green);background:#f1f8f3}.import-drop{border:1px dashed #b8c8bd;background:#f8fbf8;padding:27px;text-align:center;border-radius:9px;color:#64736a}.import-drop strong{display:block;color:#31443a;font-size:12px;margin:9px}.import-drop small{font-size:10px}.import-summary{display:flex;gap:9px;flex-wrap:wrap;margin:14px 0}.summary-chip{background:#f2f6f3;border-radius:7px;padding:8px 10px;font-size:10px;color:#56645c}.summary-chip strong{color:#26372e;margin-right:4px}.print-card{width:340px;border:1px solid #b9c7bf;border-radius:12px;padding:18px;display:flex;gap:13px;align-items:center;background:#fff}.print-qr{width:56px;height:56px;border:2px solid #31483b;display:grid;place-items:center;font-size:9px;color:#63746a}.print-card strong{font:700 13px Manrope}.print-card small{display:block;color:#75827a;font-size:10px;margin-top:6px}.voting-layout{max-width:900px;margin:auto}.voter-verify{display:flex;gap:10px;align-items:end}.voter-verify .form-group{flex:1;margin:0}.vote-options{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin:20px 0}.vote-option{border:1px solid var(--line);border-radius:10px;padding:16px;background:#fff;text-align:center;color:var(--ink)}.vote-option.selected{border:2px solid var(--green);background:#f2f8f4}.vote-option .candidate-photo{margin:0 auto 10px}.vote-option strong{font-size:11px}.vote-option small{display:block;font-size:9px;color:var(--muted);margin-top:4px}.projector-page{background:#102f26;color:#fff;min-height:calc(100vh - 125px);border-radius:14px;padding:30px;position:relative;overflow:hidden}.projector-page:after{content:'';position:absolute;width:420px;height:420px;border-radius:50%;background:#ffffff05;right:-110px;top:-170px}.projector-top{display:flex;justify-content:space-between;align-items:start;position:relative;z-index:1}.projector-page .eyebrow{color:#a3d2b8}.projector-page h1{font:700 clamp(25px,4vw,42px) Manrope;letter-spacing:-.04em;margin:7px 0}.projector-page .subtitle{font-size:12px;color:#b4c9be}.projector-status{font-size:10px;color:#b8d7c6}.projector-total{display:flex;gap:34px;margin:30px 0 26px;position:relative;z-index:1}.projector-total strong{font:700 30px Manrope;display:block}.projector-total span{font-size:10px;color:#b4c9be}.projector-candidates{display:grid;gap:13px;position:relative;z-index:1}.projector-candidate{display:grid;grid-template-columns:44px minmax(120px,1fr) minmax(100px,2fr) 85px;align-items:center;gap:15px;background:#ffffff0b;border:1px solid #ffffff14;border-radius:10px;padding:15px}.projector-candidate .candidate-number{background:#ffffff17;color:#fff;width:36px;height:36px;font-size:14px}.projector-candidate strong{font-size:13px}.projector-candidate .progress-track{background:#ffffff20;height:10px}.projector-candidate .progress-track span{background:#75c89d}.projector-votes{text-align:right;font:700 18px Manrope}.projector-votes small{display:block;font:400 10px 'DM Sans';color:#b4c9be;margin-top:4px}.projector-footer{position:relative;z-index:1;margin-top:23px;color:#9cb5a8;font-size:10px}.audit-timeline{max-width:850px}.audit-event{display:grid;grid-template-columns:34px 1fr auto;gap:12px;padding:14px 0;border-bottom:1px solid var(--line)}.audit-event:last-child{border:0}.audit-event p{font-size:11px;line-height:1.5;margin:0}.audit-event small{font-size:9px;color:var(--muted);display:block;margin-top:5px}.muted{color:var(--muted)}.divider{border:0;border-top:1px solid var(--line);margin:17px 0}.inline-note{background:#f4f7f5;padding:11px 13px;border-radius:8px;color:#647169;font-size:10px;line-height:1.5}.checkbox{display:flex;align-items:center;gap:8px;font-size:10px;color:#536158}.checkbox input{accent-color:var(--green)}
@media(max-width:1080px){.sidebar{width:220px}.main-column{margin-left:220px}#main-content{padding:27px 24px}.topbar{padding:0 24px}.stats-grid{grid-template-columns:repeat(2,1fr)}.dashboard-grid{grid-template-columns:1fr}.candidate-card-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:700px){.sidebar{transform:translateX(-100%);transition:transform .2s;width:260px;box-shadow:10px 0 30px #17372b12}.sidebar.open{transform:translateX(0)}.main-column{margin-left:0}.topbar{height:60px;padding:0 15px}.menu-toggle{display:block}.breadcrumbs{margin-right:auto;margin-left:10px;font-size:10px}.breadcrumbs span{display:none}.topbar-actions{gap:8px}.user-chip>span:not(.avatar){display:none}.env-pill{font-size:8px;padding:5px 7px}#main-content{padding:23px 15px 32px}.app-footer{padding:12px 15px 18px}.page-heading{display:block}.page-heading .button{margin-top:16px}.page-heading h1{font-size:22px}.stats-grid{gap:9px}.stat-card{padding:13px}.stat-value{font-size:21px}.stat-top{font-size:9px}.dashboard-grid{gap:12px}.panel{padding:14px}.election-banner{padding:15px;align-items:flex-start;gap:8px;flex-direction:column}.candidate-card-grid{grid-template-columns:1fr}.two-col{grid-template-columns:1fr;gap:0}.field{min-width:100%}.table-toolbar .select{flex:1}.voter-verify{align-items:stretch;flex-direction:column}.vote-options{grid-template-columns:1fr}.projector-page{padding:20px 15px}.projector-total{gap:20px;flex-wrap:wrap}.projector-total strong{font-size:24px}.projector-candidate{grid-template-columns:35px 1fr auto;gap:9px;padding:11px}.projector-candidate .progress-track{grid-column:2 / -1;grid-row:2}.projector-votes{font-size:15px}.projector-page h1{font-size:25px}.modal{padding:17px}.audit-event{grid-template-columns:30px 1fr}.audit-event>time{grid-column:2}.candidate-list .candidate-row{grid-template-columns:30px 1fr auto}}
@media print{body *{visibility:hidden!important}.print-area,.print-area *{visibility:visible!important}.print-area{position:absolute;inset:0;padding:12mm;display:grid;grid-template-columns:1fr 1fr;gap:8mm}.print-card{break-inside:avoid;width:100%;min-height:42mm}.no-print{display:none!important}}
