.punch-card{position:relative;background:#fff8df;border:1px solid #c7b895;border-radius:0 18px 0 0;padding:1.5rem 1.5rem 1.5rem 2.5rem;margin:1.5rem 0;box-shadow:3px 4px 0 #ddd3bc;overflow:hidden}.punch-card:before{content:'';position:absolute;left:12px;top:15px;bottom:15px;width:8px;background:radial-gradient(circle,#c3b89c 3px,transparent 4px) 0 0/8px 22px}.punch-card legend{font:700 1.35rem Georgia,serif;padding:0 .4rem;max-width:100%}.punch-card fieldset{border:0;padding:0;margin:0;min-width:0}.punch-choice{display:flex;align-items:center;gap:1rem;padding:.85rem;border-top:1px dashed #c7b895;cursor:pointer}.punch-choice input{appearance:none;flex:0 0 26px;width:26px;height:26px;border:2px solid #6c6554;background:#fffdf4;border-radius:2px;margin:0;cursor:pointer}.punch-choice input:checked{background:#142f50;box-shadow:inset 0 0 0 5px #fff8df;transform:rotate(-3deg)}.punch-choice input:focus-visible{outline:3px solid #b22439;outline-offset:5px}.punch-choice:has(input:checked){background:#e3eddc}.punch-choice small{display:block;color:#514d42}.punch-number{font:600 .85rem monospace;color:#746b59;min-width:2.4rem}.ballot-actions{display:flex;gap:1rem;flex-wrap:wrap}.ballot-category{border-bottom:3px solid #17345a;padding-bottom:.6rem;margin-top:2rem}.ballot-error{color:#9b2034;font-weight:700}.write-in-name{max-width:100%;width:100%;margin:.7rem 0;padding:.6rem;border:1px solid #aaa}.ballot-review-item{padding:.8rem 0;border-bottom:1px solid #ddd}#ballot-address{max-width:650px}#ballot-address input{width:100%;padding:.65rem}#ballot-address label{display:block;margin:.7rem 0}@media(max-width:600px){.punch-card{padding:1rem 1rem 1rem 1.7rem}.punch-choice{padding:.75rem .2rem;gap:.65rem}.punch-number{min-width:1.6rem}}@media print{header,footer,#ballot-location,.ballot-actions,#ballot-review,#ballot-reset,#ballot-finish{display:none}.punch-card{break-inside:avoid;box-shadow:none}body:before{content:'MOCK BALLOT — PRACTICE ONLY';display:block;font-weight:bold;font-size:22px}}
