*{box-sizing:border-box;margin:0;padding:0}body{color:#e0e0e0;background:#0a0a0a;min-height:100vh;font-family:Courier New,Courier,monospace}.container{max-width:860px;margin:0 auto;padding:2rem 1.5rem 4rem}h1{color:#a8d8a8;margin-bottom:.25rem;font-size:1.6rem}.subtitle{color:#aaa;margin-bottom:2.5rem;font-size:.85rem}.step-card{background:#111;border:1px solid #222;border-radius:8px;margin-bottom:1.5rem;padding:1.5rem}.step-header{align-items:center;gap:.75rem;margin-bottom:1.25rem;display:flex}.step-badge{color:#6fcf6f;white-space:nowrap;background:#1a3a1a;border:1px solid #2d5a2d;border-radius:4px;padding:.2rem .55rem;font-size:.75rem;font-weight:700}.step-title{color:#ececec;font-size:1.05rem}.step-desc{color:#b0b0b0;margin-bottom:1.25rem;font-size:.8rem;line-height:1.5}label{color:#aaa;margin-top:.85rem;margin-bottom:.3rem;font-size:.78rem;display:block}textarea,input[type=text]{color:#c8c8c8;resize:vertical;background:#0d0d0d;border:1px solid #2a2a2a;border-radius:4px;width:100%;padding:.6rem .75rem;font-family:Courier New,Courier,monospace;font-size:.78rem}textarea:focus,input[type=text]:focus{border-color:#3a6a3a;outline:none}button{color:#7de07d;cursor:pointer;background:#1a3a1a;border:1px solid #2d5a2d;border-radius:4px;margin-top:1rem;padding:.55rem 1.25rem;font-family:Courier New,Courier,monospace;font-size:.85rem;transition:background .15s}button:hover:not(:disabled){background:#204a20}button:disabled{opacity:.4;cursor:not-allowed}button.secondary{color:#88c;background:#1a1a2a;border-color:#2a2a4a;margin-left:.5rem}button.secondary:hover:not(:disabled){background:#22223a}.output-block{background:#080808;border:1px solid #1e3a1e;border-radius:4px;margin-top:1.1rem;padding:1rem}.output-block h4{color:#5a9a5a;text-transform:uppercase;letter-spacing:.05em;margin-bottom:.6rem;font-size:.75rem}.output-row{margin-bottom:.75rem}.output-label{color:#999;margin-bottom:.2rem;font-size:.7rem}.output-value{color:#a8d8a8;word-break:break-all;white-space:pre-wrap;background:#0a0a0a;border:1px solid #1a1a1a;border-radius:3px;padding:.5rem .6rem;font-size:.75rem;line-height:1.45}.hash-badge{color:#88e;letter-spacing:.15em;background:#1a1a3a;border:1px solid #2a2a5a;border-radius:4px;padding:.3rem .7rem;font-size:1rem;font-weight:700;display:inline-block}.vote-options{gap:.75rem;margin-top:.5rem;display:flex}.vote-btn{flex:1;margin-top:0;padding:.7rem;font-size:.9rem}.vote-btn.selected{color:#aaeaaa;background:#204a20;border-color:#4a9a4a}.error{color:#c55;margin-top:.5rem;font-size:.8rem}.spinner{vertical-align:middle;border:2px solid #2d5a2d;border-top-color:#7de07d;border-radius:50%;width:14px;height:14px;margin-right:.4rem;animation:.6s linear infinite spin;display:inline-block}@keyframes spin{to{transform:rotate(360deg)}}.name-inputs{gap:1.5rem;margin-top:.5rem;display:flex}.name-field{flex:1}.name-field label{margin-top:0}.label-row{align-items:baseline;gap:.5rem;margin-top:.85rem;margin-bottom:.3rem;display:flex}.label-row label{margin:0}.populate-btn{color:#4a9;cursor:pointer;background:#0a1a0a;border-color:#1a3a1a;border-radius:4px;padding:.15rem .5rem;font-size:.68rem}.populate-btn:hover{color:#6bc;background:#0d220d}.copy-btn{color:#888;background:#111;border-color:#222;margin-top:.3rem;padding:.25rem .6rem;font-size:.7rem}.copy-btn:hover{color:#bbb;background:#151515}.divider{border:none;border-top:1px solid #1a1a1a;margin:1rem 0}.votes-list{flex-direction:column;gap:.4rem;margin-top:.5rem;display:flex}.vote-item{color:#bbb;background:#0a0a0a;border:1px solid #1a1a1a;border-radius:3px;align-items:center;gap:.5rem;padding:.35rem .6rem;font-size:.72rem;display:flex}.vote-item span{word-break:break-all;flex:1}.vote-item button{color:#844;background:#1a0a0a;border-color:#2a1a1a;margin-top:0;padding:.15rem .4rem;font-size:.68rem}.tally-result{gap:1.5rem;margin-top:.5rem;display:flex}.tally-candidate{text-align:center;background:#0a0a0a;border:1px solid #1e3a1e;border-radius:6px;flex:1;padding:1rem}.tally-candidate .name{color:#bbb;margin-bottom:.4rem;font-size:.85rem}.tally-candidate .count{color:#a8d8a8;font-size:2.2rem;font-weight:700}.winner .count{color:#6fcf6f}.winner .name:after{content:" 🏆"}
