  :root{
    --navy:#151B6B;
    --navy-dark:#0D1147;
    --bg:#F3F4FB;
    --paper:#F7F8FD;
    --blue-mid:#3B4FD6;
    --ink:#1D2140;
    --muted:#6A6F94;
    --line:#E2E4F3;
    --green:#1F9D55;
    --red:#D6483F;
    --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),var(--navy-dark));
    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 calc(110px + env(safe-area-inset-bottom, 0px));}
  .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:linear-gradient(135deg,var(--navy),var(--blue-mid));color:#fff;}
  .btn-gold:hover{background:linear-gradient(135deg,var(--navy-dark),var(--navy));}
  .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:#BFD4F0;background:var(--navy-dark);
    padding:5px 11px;border-radius:20px;margin-bottom:12px;
  }
  .council-section{margin-bottom:8px;}
  .council-heading{
    font-size:13px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;
    color:#BFD4F0;background:var(--navy-dark);display:inline-block;
    padding:6px 14px;border-radius:20px;margin-bottom:18px;
  }
  .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(--navy);}
  .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;}
  .terms-list{display:flex;flex-direction:column;gap:12px;margin-bottom:4px;}
  .term-item{
    display:flex;align-items:flex-start;gap:10px;font-size:13.5px;line-height:1.55;
    padding:13px 14px;border:1.5px solid var(--line);border-radius:10px;
    background:var(--paper);cursor:pointer;transition:border-color .15s,background .15s;
  }
  .term-item:has(input:checked){border-color:var(--navy);background:#EEF2F8;}
  .term-item input[type=checkbox]{width:auto;margin-top:2px;flex:0 0 auto;accent-color:var(--navy);}
  .term-item strong{color:var(--navy-dark);}
  .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;
  }
  .confirmation-code-box{
    margin-top:22px;padding:20px;border:1.5px dashed var(--blue-mid);border-radius:12px;
    background:linear-gradient(135deg,#EAF1FB,var(--paper));
  }
  .confirmation-code-box .cc-label{
    font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;
    color:var(--navy-dark);margin-bottom:8px;
  }
  .confirmation-code-box .cc-code{
    font-size:28px;font-weight:800;letter-spacing:.06em;color:var(--navy);
    font-family:'Courier New',monospace;
  }
  .confirmation-code-box .cc-hint{
    font-size:12px;color:var(--muted);margin-top:10px;line-height:1.5;
  }
  .center{text-align:center;}
  .hidden{display:none;}
  .link-btn{background:none;border:none;color:var(--navy);font-weight:700;font-size:inherit;font-family:inherit;cursor:pointer;padding:0;text-decoration:underline;}

  .pw-requirements{display:flex;flex-direction:column;gap:4px;margin-top:8px;font-size:12px;}
  .pw-req{color:var(--muted);padding-left:20px;position:relative;}
  .pw-req::before{content:'○';position:absolute;left:0;font-size:11px;}
  .pw-req.met{color:var(--green);}
  .pw-req.met::before{content:'●';}
  .pw-match{font-size:12px;margin-top:8px;padding-left:20px;position:relative;min-height:16px;}
  .pw-match.match{color:var(--green);}
  .pw-match.match::before{content:'●';position:absolute;left:0;font-size:11px;}
  .pw-match.no-match{color:var(--red);}
  .pw-match.no-match::before{content:'○';position:absolute;left:0;font-size:11px;}

  .pending-spinner{
    width:64px;height:64px;border-radius:50%;
    border:4px solid var(--line); border-top-color:var(--navy);
    margin:0 auto 20px; animation:pendingSpin 1s linear infinite;
  }
  @keyframes pendingSpin{ to{ transform:rotate(360deg); } }

  .fb-help-bubble{
    position:fixed; right:20px; bottom:20px; z-index:999;
    display:flex; align-items:center; gap:9px;
    padding:13px 20px 13px 16px; border-radius:999px;
    background:linear-gradient(135deg,var(--navy),var(--blue-mid));
    box-shadow:0 4px 14px rgba(13,17,71,.35);
    text-decoration:none; transition:transform .15s ease, box-shadow .15s ease;
    animation: helpPulseRing 2.6s ease-out infinite, helpBounce 4.5s ease-in-out infinite;
  }
  .fb-help-bubble:hover{ transform:scale(1.06); box-shadow:0 6px 18px rgba(13,17,71,.45); }
  .fb-help-bubble svg{ width:24px; height:24px; stroke:#fff; flex:0 0 auto; }
  .fb-help-text{ color:#fff; font-weight:800; font-size:14.5px; letter-spacing:.01em; white-space:nowrap; }
  @keyframes helpPulseRing{
    0%   { box-shadow:0 4px 14px rgba(13,17,71,.35), 0 0 0 0 rgba(59,79,214,.55); }
    70%  { box-shadow:0 4px 14px rgba(13,17,71,.35), 0 0 0 14px rgba(59,79,214,0); }
    100% { box-shadow:0 4px 14px rgba(13,17,71,.35), 0 0 0 0 rgba(59,79,214,0); }
  }
  @keyframes helpBounce{
    0%, 82%, 100% { transform:translateY(0); }
    88%           { transform:translateY(-7px); }
    94%           { transform:translateY(0); }
  }
  @media (prefers-reduced-motion: reduce){
    .fb-help-bubble{ animation:none; }
  }

  @media (max-width: 420px){
    main{padding:20px 12px calc(96px + env(safe-area-inset-bottom, 0px));}
    .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;}
    .term-item{padding:11px 12px;font-size:13px;gap:8px;}
    .fb-help-bubble{padding:11px 16px 11px 13px;right:14px;bottom:14px;gap:7px;}
    .fb-help-bubble svg{width:20px;height:20px;}
    .fb-help-text{font-size:13px;}
  }
