:root{--color-primary:#418779;--color-primary-dark:#356b60;--color-primary-tint:#4187791a;--color-accent:#d97528;--color-text:#181a1d;--color-text-muted:#6b7280;--color-surface:#fefefe;--color-app-bg:#f5f7f6;--color-border:#d8d8d8;--color-table-header:#e4ebe9;--color-error:#b91c1c;--color-error-bg:#fee2e2;--color-success:#065f46;--color-success-bg:#d1fae5;--font-main:"Nunito", -apple-system, BlinkMacSystemFont, system-ui, sans-serif;--font-bold:"Nunito", -apple-system, BlinkMacSystemFont, system-ui, sans-serif}*{box-sizing:border-box}html,body{margin:0;padding:0}body{font-family:var(--font-main);color:var(--color-text);background:var(--color-app-bg);-webkit-font-smoothing:antialiased;letter-spacing:.2px;font-size:16px;line-height:24px}.app-shell{min-height:100vh;display:flex}.sidebar{background:var(--color-surface);border-right:1px solid var(--color-border);flex-direction:column;flex-shrink:0;width:240px;height:100vh;padding:24px 16px;display:flex;position:sticky;top:0}.brand{border-bottom:1px solid var(--color-border);margin-bottom:20px;padding:0 8px 20px}.brand-title{font-family:var(--font-bold);color:var(--color-primary);font-size:20px;font-weight:700;line-height:1.2}.brand-logo{width:auto;max-width:180px;height:auto;max-height:48px;margin-bottom:10px;display:block}.brand-heading{font-family:var(--font-bold);color:var(--color-text);letter-spacing:.2px;margin-top:4px;font-size:18px;font-weight:700;line-height:1.2}.auth-logo{width:auto;max-width:220px;height:auto;max-height:60px;margin:0 auto 6px;display:block}.brand-subtitle{color:var(--color-text-muted);margin-top:4px;font-size:13px}.nav-section{margin-bottom:20px}.nav-section-label{font-family:var(--font-bold);letter-spacing:.8px;color:var(--color-text-muted);text-transform:uppercase;padding:0 12px 8px;font-size:11px;font-weight:700}.nav-link{color:var(--color-text);border-left:4px solid #0000;border-radius:8px;align-items:center;gap:10px;margin-left:-4px;padding:10px 12px 10px 8px;font-size:14px;text-decoration:none;transition:background .1s;display:flex}.nav-link svg{flex-shrink:0;width:18px;height:18px}.nav-link:hover{background:var(--color-primary-tint)}.nav-link.active{background:var(--color-primary-tint);color:var(--color-primary);border-left-color:var(--color-accent);font-weight:600}.sidebar-footer{border-top:1px solid var(--color-border);margin-top:auto;padding-top:16px}.current-user{padding:0 8px;font-size:14px;font-weight:600}.current-user-role{color:var(--color-text-muted);text-transform:capitalize;letter-spacing:.6px;font-size:11px;font-weight:400}.logout-link{color:var(--color-primary);margin-top:8px;padding:0 8px;font-size:13px;text-decoration:none;display:inline-block}.logout-link:hover{text-decoration:underline}.footer-nav{flex-direction:column;gap:0;margin-top:12px;display:flex}.footer-nav .nav-link{font-size:14px}.logout-link-row{text-align:left;cursor:pointer;background:0 0;border:0;width:calc(100% + 4px);font-family:inherit}.main-content{flex:1;min-width:0;padding:32px 40px}.page-header{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:20px;margin-bottom:24px;display:flex}.page-title{font-family:var(--font-bold);align-items:center;gap:10px;margin:0;font-size:24px;font-weight:600;line-height:30px;display:flex}.page-icon{width:26px;height:26px;color:var(--color-primary)}.page-subtitle{color:var(--color-text-muted);margin-top:6px;font-size:13px}.btn-primary,.upload-btn{font-family:var(--font-bold);background:var(--color-primary);color:#fefefe;border:1px solid var(--color-primary);cursor:pointer;text-transform:capitalize;border-radius:50px;align-items:center;gap:6px;padding:8px 20px;font-size:14px;font-weight:600;transition:background .1s;display:inline-flex}.btn-primary:hover,.upload-btn:hover{background:var(--color-primary-dark);border-color:var(--color-primary-dark)}.btn-secondary{font-family:var(--font-bold);color:var(--color-primary);border:1px solid var(--color-primary);cursor:pointer;background:0 0;border-radius:20px;padding:6px 18px;font-size:14px;font-weight:600}.btn-secondary:hover{background:var(--color-primary-tint)}.card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:12px;margin-bottom:20px;padding:20px 24px}.card h2{font-family:var(--font-bold);margin:0 0 14px;font-size:16px;font-weight:600}.card-header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-bottom:16px;display:flex}.card-header h2{margin:0}.data-table{border-collapse:collapse;width:100%;font-size:14px}.data-table thead th{background:var(--color-table-header);font-family:var(--font-bold);text-transform:capitalize;text-align:left;border-bottom:1px solid var(--color-border);white-space:nowrap;padding:10px 12px;font-size:14px;font-weight:600}.data-table tbody td{border-bottom:1px solid #eee;padding:10px 12px}.data-table tbody tr:last-child td{border-bottom:none}.data-table tbody tr:hover{background:#fafbfa}.data-table .center,.data-table thead th.center{text-align:center}.data-table.compact{max-width:360px}.data-table .total-row td{font-family:var(--font-bold);background:var(--color-table-header);font-weight:700}.table-scroll{max-width:100%;overflow-x:auto}.empty{color:var(--color-text-muted);margin:0;font-size:14px}.empty-state{text-align:center;padding:48px 24px}.empty-state h2{margin-bottom:8px}.empty-state p{color:var(--color-text-muted);margin:0}.filter-card{padding:18px 24px}.filter-form{flex-wrap:wrap;align-items:flex-end;gap:16px;display:flex}.filter-field{color:var(--color-text);flex-direction:column;gap:6px;font-size:13px;font-weight:600;display:flex}.filter-field input[type=date]{font-family:var(--font-main);background:var(--color-surface);border:1px solid var(--color-border);min-width:180px;height:38px;color:var(--color-text);border-radius:8px;padding:0 12px;font-size:14px;font-weight:400}.filter-field input[type=date]:focus{border-color:var(--color-primary);outline:none}.filter-btn{height:38px;padding:0 20px}.filter-clear{color:var(--color-text-muted);padding:10px 8px;font-size:13px;font-weight:600;text-decoration:none}.filter-clear:hover{color:var(--color-primary);text-decoration:underline}.filter-summary{color:var(--color-primary);margin-top:10px;font-size:13px;font-weight:600}.sortable-col{cursor:pointer;-webkit-user-select:none;user-select:none;white-space:nowrap}.sortable-col:hover{background:#dce4e1}.sort-arrow{width:12px;color:var(--color-text-muted);opacity:.5;margin-left:4px;font-size:10px;display:inline-block}.sort-arrow:before{content:"⇅"}.sortable-col[data-dir=asc] .sort-arrow{opacity:1;color:var(--color-primary)}.sortable-col[data-dir=asc] .sort-arrow:before{content:"↑"}.sortable-col[data-dir=desc] .sort-arrow{opacity:1;color:var(--color-primary)}.sortable-col[data-dir=desc] .sort-arrow:before{content:"↓"}.filter-row{flex-wrap:wrap;gap:16px;margin-bottom:12px;display:flex}.filter-inline{color:var(--color-text);align-items:center;gap:8px;font-size:13px;font-weight:600;display:flex}.filter-inline select,.filter-inline input[type=text]{font-family:var(--font-main);background:var(--color-surface);border:1px solid var(--color-border);color:var(--color-text);border-radius:20px;min-width:180px;padding:6px 14px;font-size:13px;font-weight:400}.filter-inline select:focus,.filter-inline input[type=text]:focus{border-color:var(--color-primary);outline:none}.expand-col{text-align:center;width:36px;padding:0}.expand-btn{cursor:pointer;color:var(--color-primary);background:0 0;border:0;border-radius:4px;padding:6px 8px;font-size:12px;line-height:1}.expand-btn:hover{background:var(--color-primary-tint)}.expand-all-btn{color:var(--color-text-muted);font-weight:700}.expand-all-btn:hover{color:var(--color-primary)}tr.parent-row.expanded{background:var(--color-primary-tint)}tr.parent-row.expanded td{font-weight:600}tr.parent-row.row-urgent-red td{background:#dc26261f;transition:background .12s}tr.parent-row.row-urgent-red:hover td{background:#dc262647}tr.candidate-subheader td{font-family:var(--font-bold);letter-spacing:.6px;text-transform:uppercase;color:var(--color-text-muted);border-bottom:1px solid var(--color-border);background:#eef2f0;padding:7px 12px;font-size:11px;font-weight:700}tr.candidate-row td{color:var(--color-text);background:#fafbfa;border-bottom:1px solid #f0f0f0;padding:7px 12px;font-size:13px}tr.candidate-row td.candidate-name{padding-left:28px;position:relative}tr.candidate-row td.candidate-name:before{content:"↳";color:var(--color-text-muted);font-size:14px;position:absolute;left:12px}.toggle-group{border:1px solid var(--color-primary);border-radius:20px;gap:2px;padding:2px;display:inline-flex}.toggle-btn{color:var(--color-primary);font-family:var(--font-bold);cursor:pointer;background:0 0;border:0;border-radius:18px;padding:4px 16px;font-size:13px;font-weight:600}.toggle-btn.active{background:var(--color-primary);color:#fefefe}.chart-wrap{height:340px;position:relative}.chart-hint{color:var(--color-text-muted);text-align:right;margin-top:8px;font-size:12px}.auth-page{background:var(--color-app-bg);justify-content:center;align-items:center;min-height:100vh;padding:20px;display:flex}.auth-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:16px;width:100%;max-width:380px;padding:36px;box-shadow:0 2px 10px #0000000a}.auth-brand{text-align:center;margin-bottom:28px}.auth-heading{font-family:var(--font-bold);margin:0 0 18px;font-size:20px;font-weight:600}.auth-form label{color:var(--color-text-muted);margin-bottom:14px;font-size:13px;font-weight:600;display:block}.auth-form input{width:100%;font-family:var(--font-main);background:var(--color-surface);border:1px solid var(--color-border);height:38px;color:var(--color-text);border-radius:8px;margin-top:4px;padding:0 15px;font-size:14px;display:block}.auth-form input:focus{border-color:var(--color-primary);outline:none}.auth-form button{justify-content:center;width:100%;margin-top:8px;padding:10px}.flash{border-radius:8px;margin-bottom:16px;padding:10px 16px;font-size:14px}.flash-success{background:var(--color-success-bg);color:var(--color-success)}.flash-error{background:var(--color-error-bg);color:var(--color-error)}.role-badge{font-family:var(--font-bold);border-radius:20px;padding:3px 14px;font-size:12px;font-weight:600;display:inline-block}.role-admin{background:var(--color-accent);color:#fefefe}.role-user{color:#4b5563;background:#e5e7eb}.user-icon{vertical-align:-3px;width:16px;height:16px;margin-right:6px}.user-icon.admin{color:var(--color-accent)}.user-icon.user{color:var(--color-text-muted)}.actions{white-space:nowrap}.icon-btn{cursor:pointer;color:var(--color-text-muted);background:0 0;border:0;border-radius:6px;margin-right:4px;padding:6px}.icon-btn svg{width:18px;height:18px;display:block}.icon-btn.reset-btn:hover{color:var(--color-primary);background:var(--color-primary-tint)}.icon-btn.delete-btn:hover{color:var(--color-error);background:var(--color-error-bg)}.modal{z-index:100;background:#0006;justify-content:center;align-items:center;padding:20px;display:flex;position:fixed;inset:0}.modal[hidden]{display:none}.modal-panel{background:var(--color-surface);border-radius:12px;width:100%;max-width:420px;padding:24px 28px}.modal-panel h2{font-family:var(--font-bold);margin:0 0 16px;font-size:18px;font-weight:600}.modal-panel p{color:var(--color-text-muted);margin:0 0 14px;font-size:14px}.stacked-form label{color:var(--color-text-muted);margin-bottom:12px;font-size:13px;font-weight:600;display:block}.stacked-form input,.stacked-form select{width:100%;font-family:var(--font-main);background:var(--color-surface);border:1px solid var(--color-border);height:38px;color:var(--color-text);border-radius:8px;margin-top:4px;padding:0 15px;font-size:14px;display:block}.stacked-form input:focus,.stacked-form select:focus{border-color:var(--color-primary);outline:none}.form-actions{justify-content:flex-end;gap:10px;margin-top:18px;display:flex}.form-error{color:var(--color-error);min-height:18px;margin-top:4px;font-size:13px}.tab-bar{border-bottom:2px solid var(--color-border);margin-bottom:20px}.tab-btn{font-family:var(--font-main);color:var(--color-text-muted);cursor:pointer;background:0 0;border:none;border-bottom:2px solid #0000;margin-bottom:-2px;padding:8px 20px;font-size:14px;font-weight:500;transition:color .15s,border-color .15s}.tab-btn:hover{color:var(--color-primary)}.tab-btn.active{color:var(--color-primary);border-bottom-color:var(--color-primary)}@media (width<=768px){.sidebar{width:100%;height:auto;position:static}.app-shell{flex-direction:column}.main-content{padding:20px}}
