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