*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}body{font-family:system-ui,-apple-system,sans-serif;background:var(--bg, #f9fafb);color:var(--text, #111827);min-height:100dvh}.signup-page{max-width:640px;margin:0 auto;padding:2rem 1rem 4rem}.signup-header{display:flex;align-items:center;gap:1rem;margin-bottom:2rem}.campaign-logo{height:72px;width:auto;flex-shrink:0}.candidate-name{font-size:1.5rem;font-weight:700;color:var(--primary, #1d4ed8)}.district-label{font-size:.875rem;color:var(--text-muted, #6b7280)}.tagline{font-size:.9rem;font-style:italic;margin-top:.25rem}.signup-form{background:#fff;border:1px solid #e5e7eb;border-radius:.75rem;padding:1.75rem;display:flex;flex-direction:column;gap:1rem}.form-heading{font-size:1.125rem;font-weight:600;color:var(--primary, #1d4ed8);margin-bottom:.25rem}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:1rem}.field--span2{grid-column:1 / -1}@media(max-width:480px){.form-row{grid-template-columns:1fr}}.field{display:flex;flex-direction:column;gap:.25rem}.field label,.interests-fieldset legend{font-size:.875rem;font-weight:500;color:var(--text, #111827)}.field input,.field textarea,.field select{padding:.5rem .75rem;border:1px solid #d1d5db;border-radius:.375rem;font-size:1rem;outline:none;transition:border-color .15s,box-shadow .15s}.field input:focus-visible,.field textarea:focus-visible,.field select:focus-visible{border-color:var(--primary, #1d4ed8);box-shadow:0 0 0 3px color-mix(in srgb,var(--primary, #1d4ed8) 20%,transparent)}.interests-grid{display:grid;grid-template-columns:1fr;gap:.5rem;margin-top:.5rem}.interest-option{display:flex;align-items:flex-start;gap:.75rem;font-size:.9rem;cursor:pointer;padding:.75rem 1rem;border:1px solid #d1d5db;border-radius:.5rem;transition:border-color .15s,background .12s}.interest-option:hover{background:var(--accent, #eff6ff);border-color:var(--primary, #1d4ed8)}.interest-option__text{display:flex;flex-direction:column;gap:.125rem}.interest-option__label{font-weight:600;color:#111827}.interest-option__desc{font-size:.72rem;color:#9ca3af;font-style:italic}.interest-option input[type=checkbox],.interest-option input[type=radio]{accent-color:var(--primary, #1d4ed8);width:1rem;height:1rem;flex-shrink:0}.field-error{font-size:.8rem;color:#dc2626;margin-top:.125rem}.submit-button{width:100%;padding:.75rem 1.5rem;background:var(--primary, #1d4ed8);color:#fff;font-size:1rem;font-weight:600;border:none;border-radius:.5rem;cursor:pointer;letter-spacing:.03em;transition:background .15s,transform .1s}.submit-button:active:not(:disabled){transform:translateY(1px)}.submit-button:disabled{opacity:.5;cursor:not-allowed}.success-message{background:#fff;border:1px solid #e5e7eb;border-radius:.75rem;padding:2.5rem 1.75rem;text-align:center}.success-message h2{font-size:1.375rem;font-weight:700;color:var(--primary, #1d4ed8);margin-bottom:.75rem}.success-message p{color:var(--text-muted, #6b7280);font-size:.95rem}.loading-state,.error-state{text-align:center;padding:4rem 1rem;color:var(--text-muted, #6b7280)}.field input:focus,.field textarea:focus{border-color:var(--primary, #1d4ed8);box-shadow:0 0 0 3px color-mix(in srgb,var(--primary, #1d4ed8) 20%,transparent)}.field-error{font-size:.8rem;color:#dc2626}.interests-fieldset{border:none;padding:0}.interests-grid{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:.5rem}.interest-option{display:flex;align-items:center;gap:.375rem;font-size:.9rem;cursor:pointer;padding:.375rem .75rem;border:1px solid #d1d5db;border-radius:999px;-webkit-user-select:none;user-select:none;transition:background .1s,border-color .1s}.interest-option:has(input:checked){background:color-mix(in srgb,var(--primary, #1d4ed8) 12%,transparent);border-color:var(--primary, #1d4ed8)}.interest-option input{display:none}.submit-button{align-self:flex-start;padding:.625rem 1.5rem;background:var(--primary, #1d4ed8);color:#fff;font-size:1rem;font-weight:600;border:none;border-radius:.5rem;cursor:pointer;transition:background .15s,opacity .15s}@media(max-width:480px){.submit-button{align-self:stretch}}.submit-button:hover:not(:disabled){background:var(--primary-dark, #1e40af)}.submit-button:disabled{opacity:.6;cursor:not-allowed}.success-message{background:#f0fdf4;border:1px solid #bbf7d0;border-radius:.75rem;padding:2rem;text-align:center}.success-message h2{color:#15803d;margin-bottom:.5rem}.error-state{padding:2rem;color:#dc2626}.loading-state{padding:4rem;text-align:center;color:#6b7280}
