.campaign-poll{
      --poll-blue:#2867b2;
      --poll-red:#b31942;
      --poll-gold:#b58a00;
      --poll-orange:#c96a12;
      max-width:820px;
      margin:18px auto 0;
      padding:0;
      border:2px solid var(--line);
      background:var(--card);
      box-shadow:6px 6px 0 var(--shadow);
    }

    .campaign-poll-head{
      display:flex;
      justify-content:space-between;
      gap:12px;
      align-items:center;
      padding:11px 13px;
      background:var(--ink);
      color:var(--paper);
      border-bottom:2px solid var(--line);
      font-size:11px;
      font-weight:900;
      letter-spacing:.11em;
      text-transform:uppercase;
    }

    .campaign-poll-question{padding:16px 16px 0}

    .campaign-poll-question h2{
      margin:0;
      font-family:Georgia,"Times New Roman",serif;
      font-size:clamp(24px,3.4vw,38px);
      line-height:1;
      text-transform:uppercase;
    }

    .campaign-poll fieldset{
      margin:0;
      padding:16px;
      border:0;
    }

    .campaign-poll-options{
      display:grid;
      grid-template-columns:repeat(2,minmax(0,1fr));
      gap:10px;
    }

    .campaign-poll-option{
      --party:var(--ink);
      position:relative;
      display:grid;
      grid-template-columns:auto 1fr auto;
      gap:12px;
      align-items:center;
      min-height:102px;
      padding:13px;
      border:2px solid var(--line);
      background:#f8f4ea;
      cursor:pointer;
      transition:transform 110ms ease,box-shadow 110ms ease,background 110ms ease;
    }

    .campaign-poll-option:hover{
      transform:translateY(-1px);
      box-shadow:3px 3px 0 var(--shadow);
    }

    .campaign-poll-option:has(input:focus-visible){
      outline:3px solid var(--blue);
      outline-offset:3px;
    }

    .campaign-poll-option:has(input:checked){
      background:#fffaf0;
      border-color:var(--party);
      box-shadow:inset 8px 0 0 var(--party),3px 3px 0 var(--shadow);
    }

    .campaign-poll-option[data-option="blue"]{--party:var(--poll-blue)}
    .campaign-poll-option[data-option="red"]{--party:var(--poll-red)}
    .campaign-poll-option[data-option="gold"]{--party:var(--poll-gold)}
    .campaign-poll-option[data-option="orange"]{--party:var(--poll-orange)}

    .campaign-poll-option input{
      position:absolute;
      inset:0;
      width:100%;
      height:100%;
      margin:0;
      opacity:0;
      cursor:pointer;
      z-index:3;
    }

    .campaign-poll-box,
    .campaign-poll-choice,
    .campaign-poll-code{pointer-events:none}

    .campaign-poll-box{
      width:26px;
      height:26px;
      display:grid;
      place-items:center;
      border:2px solid var(--line);
      background:var(--paper);
    }

    .campaign-poll-option input:checked + .campaign-poll-box{
      border-color:var(--party);
      background:var(--party);
    }

    .campaign-poll-option input:checked + .campaign-poll-box::after{
      content:"×";
      color:#fff;
      font-size:27px;
      line-height:1;
      font-weight:900;
      transform:translateY(-1px);
    }

    .campaign-poll-choice strong{
      display:block;
      margin-bottom:5px;
      font-family:Georgia,"Times New Roman",serif;
      font-size:20px;
      line-height:1;
      text-transform:uppercase;
    }

    .campaign-poll-choice small{
      display:block;
      color:var(--muted);
      font-size:11px;
      line-height:1.4;
      font-weight:700;
    }

    .campaign-poll-code{
      align-self:start;
      border:1px solid currentColor;
      color:var(--party);
      padding:4px 6px;
      font-size:10px;
      font-weight:900;
      letter-spacing:.08em;
    }

    .campaign-poll-actions{
      display:grid;
      grid-template-columns:1fr auto;
      align-items:center;
      gap:14px;
      padding:0 16px 16px;
    }

    .campaign-poll-hint{
      min-height:34px;
      display:flex;
      align-items:center;
      color:var(--muted);
      font-size:11px;
      line-height:1.35;
      font-weight:700;
    }

    .campaign-poll-submit{
      min-width:230px;
      border:2px solid var(--ink);
      background:var(--red);
      color:#fff;
      padding:12px 16px;
      font-weight:900;
      letter-spacing:.08em;
      text-transform:uppercase;
      cursor:pointer;
      box-shadow:3px 3px 0 var(--ink);
    }

    .campaign-poll-submit:hover:not(:disabled){
      transform:translate(-1px,-1px);
      box-shadow:4px 4px 0 var(--ink);
    }

    .campaign-poll-submit:active:not(:disabled){
      transform:translate(2px,2px);
      box-shadow:1px 1px 0 var(--ink);
    }

    .campaign-poll-submit:disabled{
      opacity:.42;
      cursor:not-allowed;
    }

    .campaign-poll-status{
      display:none;
      margin:0 16px 16px;
      border:2px dashed var(--red);
      color:var(--red);
      background:#fff7db;
      padding:12px;
      font-size:12px;
      font-weight:900;
      text-align:center;
      letter-spacing:.1em;
      text-transform:uppercase;
    }

    .campaign-poll-status.show{display:block}

    .campaign-vote-receipt{
      display:none;
      padding:0 16px 18px;
    }

    .campaign-vote-receipt.show{display:block}

    .campaign-ballot-receipt{
      width:min(100%,430px);
      margin:18px auto 12px;
      padding:18px 14px;
      font-size:12px;
      line-height:1.42;
      transform:none;
    }

    .campaign-ballot-receipt .receipt-grid{
      grid-template-columns:32px minmax(0,1fr) 42px;
      gap:8px;
    }

    .campaign-ballot-receipt .receipt-head span:last-child,
    .campaign-receipt-item > :last-child{text-align:right}

    .campaign-receipt-item > span:nth-child(2){font-weight:700}

    .campaign-receipt-status-block{
      min-height:0;
      padding:0;
    }

    .campaign-receipt-pair{
      display:grid;
      grid-template-columns:1fr auto;
      gap:12px;
      align-items:baseline;
      margin:3px 0;
    }

    .campaign-receipt-meta{
      position:relative;
    }

    .campaign-receipt-meta-copy{
      position:relative;
      z-index:1;
    }

    .campaign-receipt-stamp{
      --stamp-x:0px;
      --stamp-y:0px;
      --stamp-angle:-5deg;
      position:absolute;
      top:50%;
      right:1px;
      width:clamp(118px,34vw,148px);
      min-height:clamp(48px,14vw,58px);
      display:grid;
      place-content:center;
      gap:1px;
      border:3px solid #b31942;
      color:#b31942;
      text-align:center;
      font-weight:900;
      line-height:1;
      pointer-events:none;
      z-index:2;
      transform:translateY(-50%) translate(var(--stamp-x),var(--stamp-y)) rotate(var(--stamp-angle));
      transform-origin:center;
    }

    .campaign-receipt-stamp::before,
    .campaign-receipt-stamp::after{
      content:"";
      position:absolute;
      left:6px;
      right:6px;
      border-top:1px dashed currentColor;
    }

    .campaign-receipt-stamp::before{top:6px}
    .campaign-receipt-stamp::after{bottom:6px}

    .campaign-receipt-stamp span{
      font-size:9px;
      letter-spacing:.05em;
    }

    .campaign-receipt-stamp strong{
      font-size:15px;
      letter-spacing:.05em;
    }

    .campaign-receipt-label{
      margin-top:8px;
      color:#5d584e;
      font-size:10px;
      font-weight:700;
      letter-spacing:.08em;
    }

    .campaign-receipt-bundle-label{margin-bottom:6px}

    .campaign-receipt-bundle{
      margin:0;
      padding:0;
      list-style:none;
      counter-reset:receipt-bundle;
      font-size:10px;
      line-height:1.35;
    }

    .campaign-receipt-bundle li{
      counter-increment:receipt-bundle;
      display:grid;
      grid-template-columns:28px minmax(0,1fr);
      gap:5px;
      padding:3px 0;
      font-weight:700;
    }

    .campaign-receipt-bundle li::before{
      content:counter(receipt-bundle,decimal-leading-zero);
      font-weight:900;
    }

    .campaign-receipt-id{
      margin-top:2px;
      font-size:14px;
      font-weight:900;
      letter-spacing:.06em;
      overflow-wrap:anywhere;
    }

    .campaign-receipt-footer-grid{
      display:grid;
      grid-template-columns:minmax(0,1fr) 104px;
      gap:14px;
      align-items:start;
      margin-top:2px;
    }

    .campaign-receipt-footer-copy{
      display:flex;
      flex-direction:column;
      align-items:flex-start;
      gap:2px;
      font-weight:700;
      letter-spacing:.03em;
    }

    .campaign-receipt-footer-copy > strong{line-height:1.35}

    .campaign-receipt-footer-copy a{
      margin-top:7px;
      color:inherit;
      font-size:10px;
      font-weight:900;
      letter-spacing:.06em;
      text-decoration:none;
    }

    .campaign-receipt-footer-copy small{
      color:#5d584e;
      font-size:9px;
      font-weight:700;
      letter-spacing:.03em;
    }

    .campaign-receipt-qr{
      width:100px;
      height:100px;
      justify-self:end;
      align-self:start;
      line-height:0;
    }

    .campaign-receipt-qr svg{
      display:block;
      width:100%;
      height:100%;
    }

    .campaign-receipt-thanks{
      margin-top:12px;
      font-weight:700;
      letter-spacing:.03em;
    }

    .campaign-receipt-actions{
      display:flex;
      justify-content:center;
      flex-wrap:wrap;
      gap:10px;
    }

    .campaign-poll-results{
      display:none;
      margin:0 16px 16px;
      border:2px solid var(--line);
      background:#f8f4ea;
    }

    .campaign-poll-results.show{display:block}

    .campaign-poll-results-head{
      display:flex;
      justify-content:space-between;
      gap:12px;
      align-items:center;
      padding:11px 13px;
      border-bottom:2px solid var(--line);
    }

    .campaign-poll-results-head strong{
      font-family:Georgia,"Times New Roman",serif;
      font-size:20px;
      text-transform:uppercase;
    }

    .campaign-poll-results-head span{
      color:var(--muted);
      font-size:10px;
      font-weight:900;
      letter-spacing:.09em;
      text-transform:uppercase;
    }

    .campaign-poll-result-list{padding:6px 13px 13px}

    .campaign-poll-result-row{
      --party:var(--ink);
      display:grid;
      grid-template-columns:54px 1fr 58px;
      gap:10px;
      align-items:center;
      padding:10px 0;
      border-bottom:1px solid #bdb6a8;
    }

    .campaign-poll-result-row:last-child{border-bottom:0}
    .campaign-poll-result-row[data-option="blue"]{--party:var(--poll-blue)}
    .campaign-poll-result-row[data-option="red"]{--party:var(--poll-red)}
    .campaign-poll-result-row[data-option="gold"]{--party:var(--poll-gold)}
    .campaign-poll-result-row[data-option="orange"]{--party:var(--poll-orange)}

    .campaign-poll-result-code{
      color:var(--party);
      font-size:11px;
      font-weight:900;
    }

    .campaign-poll-bar-track{
      height:22px;
      border:1px solid var(--line);
      background:#e3dccd;
      overflow:hidden;
    }

    .campaign-poll-bar{
      height:100%;
      background:var(--party);
      transition:width 420ms cubic-bezier(.22,1,.36,1);
    }

    .campaign-poll-result-value{
      text-align:right;
      font-weight:900;
      font-size:12px;
    }

    @media(max-width:760px){
      .campaign-poll-options{grid-template-columns:1fr}
      .campaign-poll-actions{grid-template-columns:1fr}
      .campaign-poll-submit{width:100%;min-width:0}
      .campaign-ballot-receipt{font-size:12px}
    }

    @media(max-width:430px){
      .campaign-poll-option{grid-template-columns:auto 1fr}
      .campaign-poll-code{grid-column:2;justify-self:start}
      .campaign-poll-result-row{grid-template-columns:42px 1fr 48px}
      .campaign-receipt-footer-grid{grid-template-columns:minmax(0,1fr) 90px}
      .campaign-receipt-qr{width:88px;height:88px}
    }

    @media(max-width:360px){
      .campaign-receipt-stamp{
        width:108px;
        min-height:46px;
      }
      .campaign-receipt-stamp span{font-size:8px}
      .campaign-receipt-stamp strong{font-size:13px}
    }

    @media print{
      body *{visibility:hidden!important}
      #campaign-vote-receipt,
      #campaign-vote-receipt *{visibility:visible!important}
      #campaign-vote-receipt{
        display:block!important;
        position:absolute;
        inset:0 auto auto 0;
        width:100%;
        padding:24px 0 0;
      }
      .campaign-receipt-actions{display:none!important}
      .campaign-ballot-receipt{
        width:390px;
        margin:0 auto;
        transform:none;
        box-shadow:none;
      }
    }
