  :root{
    --navy:#0B2A5B;
    --navy-dark:#071B3D;
    --bg:#FFFFFF;
    --paper:#F2F4F8;
    --gold:#C6A15B;
    --ink:#1A1A1A;
    --muted:#6B7280;
    --line:#E4E0D4;
    --green:#2E7D4F;
    --red:#B23A48;
    --radius:14px;
  }
  *{box-sizing:border-box;}
  body{
    margin:0; font-family:'Montserrat',sans-serif; background:var(--bg); color:var(--ink);
    min-height:100vh; position:relative;
  }
  body::before{
    content:'';
    position:fixed; inset:0;
    background:url('watermark-building.jpg') center center / cover no-repeat;
    opacity:0.05;
    z-index:-1;
    pointer-events:none;
  }
  .topbar{
    background:linear-gradient(135deg,var(--navy-dark),var(--navy));
    color:#fff; padding:18px 20px; display:flex; align-items:center; justify-content:space-between; gap:14px;
    box-shadow:0 2px 10px rgba(0,0,0,.15); flex-wrap:wrap;
  }
  .topbar img{width:44px;height:44px;border-radius:50%;background:#fff;padding:2px;}
  .topbar .titles{line-height:1.25;}
  .topbar .titles .school{font-size:12px;letter-spacing:.08em;text-transform:uppercase;opacity:.8;}
  .topbar .titles .name{font-size:17px;font-weight:800;letter-spacing:.02em;}
  main{max-width:720px;margin:0 auto;padding:28px 18px 60px;}
  .card{
    background:#fff;border:1px solid var(--line);border-radius:var(--radius);
    padding:26px 22px;box-shadow:0 1px 3px rgba(11,42,91,.06);
  }
  h1{font-size:22px;font-weight:800;margin:0 0 6px;}
  h2{font-size:18px;font-weight:700;margin:0 0 4px;}
  p.sub{color:var(--muted);font-size:14px;margin:0 0 22px;}
  label{display:block;font-size:13px;font-weight:600;margin:14px 0 6px;color:var(--navy-dark);}
  input[type=text], input[type=password]{
    width:100%;padding:12px 14px;border:1.5px solid var(--line);border-radius:10px;
    font-family:inherit;font-size:15px;background:var(--paper);
  }
  input[type=text]:focus, input[type=password]:focus{outline:none;border-color:var(--navy);background:#fff;}
  .btn{
    display:inline-flex;align-items:center;justify-content:center;gap:8px;
    background:var(--navy);color:#fff;border:none;border-radius:10px;
    padding:13px 22px;font-family:inherit;font-weight:700;font-size:14.5px;
    letter-spacing:.02em;cursor:pointer;transition:transform .1s, background .15s;
  }
  .btn:hover{background:var(--navy-dark);}
  .btn:active{transform:scale(.98);}
  .btn:disabled{background:#B9BFCB;cursor:not-allowed;}
  .btn-outline{background:transparent;color:var(--navy);border:1.5px solid var(--navy);}
  .btn-outline:hover{background:var(--navy);color:#fff;}
  .btn-gold{background:var(--gold);color:var(--navy-dark);}
  .btn-gold:hover{background:#b48f49;}
  .btn-row{display:flex;gap:12px;margin-top:22px;flex-wrap:wrap;}
  .error{
    background:#FBEAEC;border:1px solid var(--red);color:var(--red);
    padding:10px 14px;border-radius:8px;font-size:13.5px;margin-top:14px;
  }
  .eyebrow{
    display:inline-block;font-size:11px;font-weight:700;letter-spacing:.12em;
    text-transform:uppercase;color:var(--gold);background:var(--navy-dark);
    padding:5px 11px;border-radius:20px;margin-bottom:12px;
  }
  .position-block{margin-bottom:34px;}
  .position-block .ptitle{font-size:17px;font-weight:800;color:var(--navy-dark);}
  .position-block .phint{font-size:12.5px;color:var(--muted);margin-top:2px;margin-bottom:14px;}
  .candidate{
    display:flex;align-items:center;gap:14px;padding:14px;border:1.5px solid var(--line);
    border-radius:12px;margin-bottom:10px;cursor:pointer;transition:border-color .15s, background .15s;
  }
  .candidate:hover{border-color:var(--gold);}
  .candidate.selected{border-color:var(--navy);background:#EEF2F8;}
  .oval{
    width:26px;height:18px;border-radius:50%;border:2.5px solid var(--navy);flex:0 0 auto;
    position:relative;
  }
  .candidate.selected .oval{background:var(--navy);}
  .candidate.selected .oval::after{
    content:'';position:absolute;inset:0;display:flex;
  }
  .cand-photo{
    width:44px;height:44px;border-radius:50%;object-fit:cover;background:var(--paper);
    border:1px solid var(--line);flex:0 0 auto;
  }
  .cand-info .cname{font-weight:700;font-size:15px;}
  .cand-info .cmeta{font-size:12.5px;color:var(--muted);}
  .abstain-note{font-size:12px;color:var(--muted);margin-top:6px;font-style:italic;}
  .divider{border:none;border-top:1px dashed var(--line);margin:26px 0;}
  .review-row{display:flex;justify-content:space-between;padding:10px 0;border-bottom:1px solid var(--line);}
  .review-row .pos{font-weight:700;font-size:13.5px;color:var(--navy-dark);}
  .review-row .picks{font-size:13.5px;color:var(--ink);text-align:right;max-width:60%;}
  .success-seal{
    width:76px;height:76px;border-radius:50%;border:3px solid var(--green);
    display:flex;align-items:center;justify-content:center;margin:0 auto 18px;
    color:var(--green);font-size:34px;
  }
  .center{text-align:center;}
  .hidden{display:none;}

  @media (max-width: 420px){
    main{padding:20px 12px 50px;}
    .card{padding:20px 16px;}
    h1{font-size:19px;}
    .topbar{padding:14px 14px;}
    .topbar .name{font-size:15px;}
    .btn{padding:12px 16px;font-size:14px;}
    .candidate{padding:12px;gap:10px;}
    .cand-photo{width:38px;height:38px;}
    .review-row{flex-direction:column;}
    .review-row .picks{max-width:100%;text-align:left;margin-top:4px;}
  }
