:root{--primary:#1a3fb0;--gold:#3b82f6;--bg:#f4f2ee;--ink:#222;--line:#e3dfd6;--royal:#1a3fb0;--blue:#2563eb;--white:#fff;}
*{box-sizing:border-box}
html{min-height:100%}
body{margin:0;min-height:100vh;font-family:system-ui,"Segoe UI",Arial,sans-serif;background-color:var(--royal);background-image:radial-gradient(ellipse at 90% 0%,rgba(255,255,255,.28),rgba(255,255,255,0) 45%),linear-gradient(160deg,var(--royal) 0%,var(--blue) 100%);background-attachment:fixed;background-repeat:no-repeat;background-size:cover;color:var(--ink);line-height:1.45}
nav{background:#fff;color:var(--royal);display:flex;align-items:center;flex-wrap:wrap;padding:0 16px;box-shadow:0 2px 8px rgba(0,0,0,.25);border-bottom:3px solid var(--blue)}
nav .brand{font-weight:700;color:var(--royal);padding:14px 14px 14px 0;margin-right:8px}
nav a{color:var(--royal);text-decoration:none;padding:14px 12px;font-weight:600}
nav a:hover{background:rgba(37,99,235,.12)}
nav a.active{background:var(--royal);color:#fff}
nav .spacer{flex:1}
nav .who{font-size:.9rem;opacity:.9;padding-right:8px}
main{max-width:1250px;margin:24px auto;padding:0 16px;min-height:70vh}
footer{text-align:center;color:rgba(255,255,255,.85);font-size:.85rem;padding:20px}
main{color:var(--white)}
main a:not(.btn){color:var(--white);text-decoration:underline}
.card,.stat,.cand,table,.alert{color:var(--ink)}
.card a:not(.btn),.stat a:not(.btn),.cand a:not(.btn),table a:not(.btn),.alert a:not(.btn){color:#1c4a8c}
h1,h2,h3{margin:0 0 12px}
.card{background:#fff;border-radius:10px;padding:20px;margin-bottom:20px;box-shadow:0 1px 4px rgba(0,0,0,.1)}
.grid{display:grid;gap:16px;grid-template-columns:repeat(auto-fit,minmax(200px,1fr))}
.stat{background:#fff;border-left:5px solid var(--gold);border-radius:8px;padding:16px;box-shadow:0 1px 4px rgba(0,0,0,.1)}
.stat b{display:block;font-size:2rem;color:var(--primary)}
label{display:block;font-weight:600;margin:10px 0 4px;font-size:.9rem}
input[type=text],input[type=password],input[type=number],input[type=file],select{width:100%;padding:9px 10px;border:1px solid #ccc;border-radius:6px;font-size:1rem}
.row{display:grid;gap:12px;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));align-items:end}
button,.btn{display:inline-block;background:var(--primary);color:#fff;border:0;border-radius:6px;padding:9px 16px;cursor:pointer;font-size:.95rem;text-decoration:none}
button:hover,.btn:hover{filter:brightness(1.15)}
.btn.gold{background:var(--gold);color:#fff}
.btn.grey{background:#777}
.btn.danger,button.danger{background:#b3261e}
.btn.small,button.small{padding:5px 10px;font-size:.82rem}
table{width:100%;border-collapse:collapse;background:#fff}
th,td{padding:9px 10px;border-bottom:1px solid var(--line);text-align:left;vertical-align:middle}
th{background:#e6eefc;font-size:.85rem;text-transform:uppercase;letter-spacing:.03em}
td.c,th.c{text-align:center}
.table-wrap{overflow-x:auto}
.alert{padding:11px 14px;border-radius:6px;margin-bottom:16px}
.alert.success{background:#e5f4e8;color:#17602b}
.alert.error{background:#fde8e6;color:#8c1d18}
.alert.warn{background:#fff4d6;color:#7a5a00}
.badge{padding:2px 9px;border-radius:99px;font-size:.78rem;font-weight:600}
.badge.ok{background:#d7f0dc;color:#17602b}
.badge.pending{background:#fff0c2;color:#7a5a00}
.badge.mr{background:#dbe8fb;color:#1c4a8c}
.badge.ms{background:#fbdcec;color:#8c1c58}
.thumb{width:48px;height:48px;border-radius:50%;object-fit:cover;background:#ddd}
.actions form{display:inline}
.login-box{max-width:380px;margin:60px auto}
.login-box h1{color:var(--primary);text-align:center;font-size:1.3rem}
.tabs{display:flex;gap:6px;margin-bottom:14px}
.tabs button{background:#ddd;color:#222}
.tabs button.on{background:var(--primary);color:#fff}
.sheet th:first-child,.sheet td:first-child{position:sticky;left:0;background:#fff;z-index:1;min-width:190px}
.sheet th:first-child{background:#e6eefc}
.sheet input[type=number]{width:90px;text-align:center}
.sheet input:disabled{background:#eee}
.rank1{background:#dbe8fb;font-weight:700}
.total{font-weight:700;color:var(--primary)}
@media print{
  .no-print,nav,footer{display:none!important}
  body{background:#fff}
  main{color:#222}
  main a:not(.btn){color:#222;text-decoration:none}
  .card{box-shadow:none;padding:0}
  .print-title{display:block!important}
}
.print-title{display:none;text-align:center;margin-bottom:14px}
/* ---- online voting ---- */
.cand-grid{display:grid;gap:16px;grid-template-columns:repeat(auto-fill,minmax(210px,1fr))}
.cand{background:#fff;border-radius:10px;overflow:hidden;box-shadow:0 1px 4px rgba(0,0,0,.12);text-align:center}
.cand img,.cand .ph{display:block;width:100%;height:240px;object-fit:cover;background:#e6e1d6}
.cand .ph{display:flex;align-items:center;justify-content:center;font-size:2.4rem;color:#9b9484}
.cand .body{padding:12px}
.cand .no{font-size:.78rem;text-transform:uppercase;letter-spacing:.04em;color:#8a8372}
.cand .nm{font-weight:700;font-size:1.05rem;margin:2px 0}
.cand .sec{font-size:.85rem;color:#6a6454;margin-bottom:8px}
.cand button{width:100%;margin-top:6px}
.cand button[disabled]{opacity:.6;cursor:not-allowed}
.bar{height:10px;background:#eee;border-radius:99px;overflow:hidden}
.bar i{display:block;height:100%;background:var(--gold)}
