:root{
  --ink:#1B2430;
  --paper:#F7F5F0;
  --paper-raised:#FFFFFF;
  --line:#D8D3C7;
  --muted:#6B6459;
  --accent:#2F6B4F;
  --accent-dark:#234f3a;
  --danger:#A6432E;
  --danger-dark:#833523;
  --radius:4px;
}
*{box-sizing:border-box;}
html,body{margin:0;padding:0;}
body{
  background:var(--paper);
  color:var(--ink);
  font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif;
  line-height:1.5;
  min-height:100vh;
}
h1,h2,h3{
  font-family:Georgia,"Times New Roman",serif;
  font-weight:600;
  margin:0 0 0.4em 0;
  letter-spacing:-0.01em;
}
.wrap{max-width:640px;margin:0 auto;padding:2.5rem 1.5rem 5rem 1.5rem;}
header.top{
  display:flex;align-items:baseline;justify-content:space-between;
  border-bottom:1px solid var(--line);padding-bottom:1.1rem;margin-bottom:2rem;
}
header.top .mark{font-family:Georgia,serif;font-size:1.3rem;font-weight:700;}
header.top .mark small{
  display:block;font-family:-apple-system,BlinkMacSystemFont,sans-serif;
  font-size:0.72rem;font-weight:400;color:var(--muted);letter-spacing:0.03em;margin-top:0.15rem;
}
nav.roles{display:flex;gap:0.6rem;}
nav.roles a{
  background:none;border:1px solid var(--line);border-radius:var(--radius);
  padding:0.4rem 0.75rem;font-size:0.85rem;color:var(--muted);cursor:pointer;
  text-decoration:none;
}
nav.roles a.active{border-color:var(--ink);color:var(--ink);font-weight:600;}
.card{
  background:var(--paper-raised);border:1px solid var(--line);
  border-radius:var(--radius);padding:1.6rem;margin-bottom:1.5rem;
}
.lede{color:var(--muted);font-size:0.95rem;margin-bottom:1.5rem;}
label{display:block;font-size:0.85rem;color:var(--muted);margin-bottom:0.3rem;}
input[type=text],input[type=password],input[type=number],textarea,select{
  width:100%;font-size:1rem;padding:0.55rem 0.65rem;border:1px solid var(--line);
  border-radius:var(--radius);background:var(--paper);color:var(--ink);
  font-family:inherit;margin-bottom:1rem;
}
input:focus,textarea:focus,select:focus,button:focus{outline:2px solid var(--accent);outline-offset:1px;}
.row{display:flex;gap:0.6rem;align-items:flex-start;}
.row > *{flex:1;}
button,.btn{
  font-family:inherit;font-size:0.95rem;border-radius:var(--radius);
  padding:0.6rem 1rem;cursor:pointer;border:1px solid var(--line);
  background:none;color:var(--ink);text-decoration:none;display:inline-block;
}
button.primary,.btn.primary{background:var(--accent);color:#fff;border:none;font-weight:600;}
button.primary:hover,.btn.primary:hover{background:var(--accent-dark);}
button.secondary,.btn.secondary{background:none;border:1px solid var(--line);}
button.secondary:hover{border-color:var(--ink);}
button.danger{background:var(--danger);color:#fff;border:none;}
button.danger:hover{background:var(--danger-dark);}
button.link{background:none;border:none;color:var(--accent);text-decoration:underline;padding:0;font-size:0.85rem;}
.icon-btn{background:none;border:none;color:var(--muted);cursor:pointer;font-size:1.1rem;padding:0 0.4rem;}
.icon-btn:hover{color:var(--danger);}
.position{border-top:1px solid var(--line);padding-top:1.2rem;margin-top:1.2rem;}
.position:first-child{border-top:none;padding-top:0;margin-top:0;}
.position h3{font-size:1.05rem;}
.position .hint{font-size:0.8rem;color:var(--muted);margin-bottom:0.7rem;}
.cand-row{display:flex;gap:0.5rem;margin-bottom:0.5rem;align-items:center;}
.cand-row form{flex:1;display:flex;}
.candidate{
  display:flex;align-items:center;gap:0.6rem;padding:0.55rem 0.6rem;
  border:1px solid var(--line);border-radius:var(--radius);margin-bottom:0.5rem;cursor:pointer;
}
.candidate:hover{border-color:var(--ink);}
label.candidate input{margin:0;width:auto;margin-bottom:0;}
.abstain{color:var(--muted);font-style:italic;}
.tally{display:flex;align-items:center;gap:0.7rem;margin-bottom:0.5rem;}
.tally .name{flex:0 0 140px;font-size:0.9rem;}
.tally .bar-bg{flex:1;background:var(--line);border-radius:2px;height:10px;overflow:hidden;}
.tally .bar-fill{background:var(--accent);height:100%;}
.tally .count{flex:0 0 38px;text-align:right;font-size:0.85rem;color:var(--muted);}
.status-pill{
  display:inline-block;font-size:0.75rem;padding:0.15rem 0.55rem;
  border-radius:20px;border:1px solid var(--line);color:var(--muted);
}
.status-pill.open{border-color:var(--accent);color:var(--accent);}
.status-pill.closed{border-color:var(--danger);color:var(--danger);}
.msg{padding:0.7rem 0.9rem;border-radius:var(--radius);font-size:0.88rem;margin-bottom:1rem;}
.msg.error{background:#F7E8E4;color:var(--danger-dark);border:1px solid #E3B7A9;}
.msg.ok{background:#E9F2EC;color:var(--accent-dark);border:1px solid #BBD8C6;}
.msg.info{background:#EFEDE6;color:var(--muted);border:1px solid var(--line);}
.token-list{
  font-family:"SF Mono",Consolas,monospace;font-size:0.85rem;white-space:pre-wrap;
  background:var(--paper);border:1px solid var(--line);border-radius:var(--radius);
  padding:0.9rem;max-height:220px;overflow:auto;
}
.sub-tabs{display:flex;gap:0.4rem;margin-bottom:1.2rem;flex-wrap:wrap;}
.sub-tabs a{
  background:none;border:none;padding:0.4rem 0;margin-right:1rem;color:var(--muted);
  font-size:0.9rem;text-decoration:none;border-bottom:2px solid transparent;
}
.sub-tabs a.active{color:var(--ink);border-bottom-color:var(--accent);font-weight:600;}
footer.note{font-size:0.78rem;color:var(--muted);margin-top:2.5rem;border-top:1px solid var(--line);padding-top:1rem;}
.stat-row{display:flex;gap:1.2rem;margin-bottom:1.2rem;}
.stat{flex:1;text-align:center;border:1px solid var(--line);border-radius:var(--radius);padding:0.8rem;}
.stat .n{font-family:Georgia,serif;font-size:1.6rem;}
.stat .l{font-size:0.75rem;color:var(--muted);}
