body{margin:0;min-height:100vh}#root{min-height:100vh}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}:root{--color-primary: #1a5f7a;--color-primary-dark: #134b61;--color-secondary: #57c5b6;--color-background: #f8fafc;--color-card: #ffffff;--color-text: #1e293b;--color-text-muted: #64748b;--color-error: #dc2626;--color-error-bg: #fef2f2;--color-success: #16a34a;--color-success-bg: #f0fdf4;--color-warning: #ca8a04;--color-warning-bg: #fefce8;--color-strict: #dc2626;--color-non-strict: #ea580c;--color-non-photo: #2563eb;--color-no-id: #16a34a;--shadow-sm: 0 1px 2px rgba(0, 0, 0, .05);--shadow-md: 0 4px 6px rgba(0, 0, 0, .1);--shadow-lg: 0 10px 15px rgba(0, 0, 0, .1);--radius-sm: .375rem;--radius-md: .5rem;--radius-lg: 1rem}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,sans-serif;background-color:var(--color-background);color:var(--color-text);line-height:1.6}.app{min-height:100vh;display:flex;flex-direction:column}.app-header{background:linear-gradient(135deg,var(--color-primary),var(--color-primary-dark));color:#fff;padding:2rem 1rem;text-align:center}.app-title{font-size:2rem;font-weight:700;margin-bottom:.5rem}.app-subtitle{font-size:1rem;opacity:.9}.app-main{flex:1;padding:1.5rem 1rem;max-width:600px;width:100%;margin:0 auto}.zip-form{background:var(--color-card);padding:1.5rem;border-radius:var(--radius-lg);box-shadow:var(--shadow-md);margin-bottom:1.5rem}.zip-label{display:block;font-weight:600;margin-bottom:1rem;text-align:center;font-size:1rem}.zip-input-group{display:flex;flex-direction:column;gap:.75rem}.zip-input{font-size:1.25rem;padding:.875rem 1rem;border:2px solid #e2e8f0;border-radius:var(--radius-md);text-align:center;letter-spacing:.1em;transition:border-color .2s,box-shadow .2s}.zip-input:focus{outline:none;border-color:var(--color-primary);box-shadow:0 0 0 3px #1a5f7a1a}.zip-input-error{border-color:var(--color-error)}.zip-input::placeholder{color:#cbd5e1;letter-spacing:.15em}.zip-submit{background:var(--color-primary);color:#fff;font-size:1rem;font-weight:600;padding:.875rem 1.5rem;border:none;border-radius:var(--radius-md);cursor:pointer;transition:background-color .2s,transform .1s}.zip-submit:hover:not(:disabled){background:var(--color-primary-dark)}.zip-submit:active:not(:disabled){transform:scale(.98)}.zip-submit:disabled{opacity:.6;cursor:not-allowed}.zip-error-message{color:var(--color-error);font-size:.875rem;margin-top:.5rem;text-align:center}.loading-container{display:flex;flex-direction:column;align-items:center;padding:2rem}.loading-spinner{width:48px;height:48px;border:4px solid #e2e8f0;border-top-color:var(--color-primary);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.loading-text{margin-top:1rem;color:var(--color-text-muted)}.error-card{background:var(--color-error-bg);border:1px solid #fecaca;border-radius:var(--radius-lg);padding:1.5rem;text-align:center;margin-bottom:1.5rem}.error-icon{width:48px;height:48px;background:var(--color-error);color:#fff;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:1.5rem;font-weight:700;margin:0 auto 1rem}.error-title{font-size:1.25rem;color:var(--color-error);margin-bottom:.5rem}.error-message{color:var(--color-text);margin-bottom:1rem}.error-retry{background:var(--color-error);color:#fff;font-size:.875rem;font-weight:600;padding:.5rem 1.5rem;border:none;border-radius:var(--radius-md);cursor:pointer;transition:background-color .2s}.error-retry:hover{background:#b91c1c}.requirements-card{background:var(--color-card);border-radius:var(--radius-lg);box-shadow:var(--shadow-md);padding:1.5rem;margin-bottom:1.5rem}.requirements-state{font-size:1.5rem;font-weight:700;text-align:center;margin-bottom:1rem;color:var(--color-primary)}.requirement-type{text-align:center;padding:.75rem 1rem;border-radius:var(--radius-md);font-weight:600;margin-bottom:1.5rem}.requirement-strict{background:#fef2f2;color:var(--color-strict);border:1px solid #fecaca}.requirement-non-strict{background:#fff7ed;color:var(--color-non-strict);border:1px solid #fed7aa}.requirement-non-photo{background:#eff6ff;color:var(--color-non-photo);border:1px solid #bfdbfe}.requirement-no-id{background:var(--color-success-bg);color:var(--color-no-id);border:1px solid #bbf7d0}.requirements-section{margin-bottom:1.5rem}.requirements-section h3{font-size:1rem;font-weight:600;margin-bottom:.75rem;color:var(--color-text)}.accepted-ids-list{list-style:none;padding:0}.accepted-ids-list li{padding:.5rem 0 .5rem 1.5rem;position:relative;border-bottom:1px solid #f1f5f9}.accepted-ids-list li:last-child{border-bottom:none}.accepted-ids-list li:before{content:"✓";position:absolute;left:0;color:var(--color-success);font-weight:700}.requirements-notes{background:var(--color-warning-bg);border:1px solid #fef08a;border-radius:var(--radius-md);padding:1rem;font-size:.875rem;color:#713f12}.official-link{display:block;text-align:center;background:var(--color-secondary);color:#fff;font-weight:600;padding:.875rem 1.5rem;border-radius:var(--radius-md);text-decoration:none;transition:background-color .2s}.official-link:hover{background:#3eb4a4}.disclaimer{font-size:.75rem;color:var(--color-text-muted);text-align:center;margin-top:1rem;padding-top:1rem;border-top:1px solid #f1f5f9}.mail-in-section{background:linear-gradient(135deg,#eff6ff,#f0f9ff);border:2px solid #3b82f6;border-radius:var(--radius-lg);padding:1.5rem;margin-bottom:1.5rem}.mail-in-title{font-size:1.125rem;font-weight:700;color:#1e40af;margin-bottom:1rem;display:flex;align-items:center;gap:.5rem}.mail-in-title:before{content:"✉";font-size:1.25rem}.mail-in-availability{text-align:center;padding:.75rem 1rem;border-radius:var(--radius-md);font-weight:600;margin-bottom:1rem}.availability-automatic{background:#dcfce7;color:#166534;border:1px solid #86efac}.availability-no-excuse{background:#dbeafe;color:#1e40af;border:1px solid #93c5fd}.availability-limited{background:#fef3c7;color:#92400e;border:1px solid #fcd34d}.mail-in-deadlines{display:flex;flex-direction:column;gap:.75rem;margin-bottom:1rem}.deadline-item{display:flex;flex-direction:column;background:#fff;padding:.75rem;border-radius:var(--radius-md);border:1px solid #e2e8f0}.deadline-label{font-size:.75rem;font-weight:600;color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.05em;margin-bottom:.25rem}.deadline-value{font-size:.9375rem;color:var(--color-text);font-weight:500}.mail-in-requirements{display:flex;gap:1rem;margin-bottom:1rem}.requirement-item{flex:1;display:flex;flex-direction:column;align-items:center;background:#fff;padding:.75rem;border-radius:var(--radius-md);border:1px solid #e2e8f0}.requirement-item .requirement-label{font-size:.75rem;font-weight:600;color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.05em;margin-bottom:.5rem;text-align:center}.requirement-badge{padding:.25rem .75rem;border-radius:9999px;font-size:.8125rem;font-weight:600}.badge-yes{background:#fef2f2;color:#dc2626}.badge-no{background:#f0fdf4;color:#16a34a}.witness-details{background:#fffbeb;border:1px solid #fcd34d;border-radius:var(--radius-md);padding:.75rem;font-size:.875rem;color:#92400e;margin-bottom:1rem}.mail-in-notes{background:#fff;border:1px solid #e2e8f0;border-radius:var(--radius-md);padding:.75rem;font-size:.875rem;color:var(--color-text-muted);margin-bottom:1rem}.tracking-link{display:block;text-align:center;background:#3b82f6;color:#fff;font-weight:600;padding:.75rem 1.5rem;border-radius:var(--radius-md);text-decoration:none;transition:background-color .2s}.tracking-link:hover{background:#2563eb}.voter-roll-section{background:linear-gradient(135deg,#fef3c7,#fefce8);border:2px solid #f59e0b;border-radius:var(--radius-lg);padding:1.5rem;margin-bottom:1.5rem}.voter-roll-header{margin-bottom:1.5rem;text-align:center}.voter-roll-title{font-size:1.25rem;font-weight:700;color:#92400e;margin-bottom:.5rem}.voter-roll-warning{font-size:.875rem;color:#78350f;background:#fef2f2;border:1px solid #fecaca;border-radius:var(--radius-md);padding:.75rem;font-weight:500}.voter-roll-card{background:#fff;border-radius:var(--radius-md);padding:1rem;margin-bottom:1rem;border:1px solid #e2e8f0}.voter-roll-card:last-child{margin-bottom:0}.voter-roll-card .card-title{display:flex;align-items:center;gap:.75rem;font-size:1rem;font-weight:600;color:var(--color-text);margin-bottom:.75rem}.voter-roll-card .card-icon{display:flex;align-items:center;justify-content:center;width:28px;height:28px;background:var(--color-primary);color:#fff;border-radius:50%;font-size:.875rem;font-weight:700;flex-shrink:0}.voter-roll-card .card-icon.warning-icon{background:var(--color-error)}.voter-roll-card .card-content{padding-left:2.5rem}.verify-link{display:inline-block;background:var(--color-primary);color:#fff;font-weight:600;padding:.625rem 1rem;border-radius:var(--radius-md);text-decoration:none;font-size:.875rem;transition:background-color .2s;margin-bottom:.75rem}.verify-link:hover{background:var(--color-primary-dark)}.steps-list{margin-top:.75rem}.steps-list h5{font-size:.8125rem;font-weight:600;color:var(--color-text-muted);margin-bottom:.5rem}.steps-list ol{padding-left:1.25rem;font-size:.875rem;color:var(--color-text)}.steps-list li{margin-bottom:.25rem}.reinstatement-grid{display:grid;grid-template-columns:1fr 1fr;gap:.75rem;margin-bottom:1rem}.reinstatement-item{display:flex;flex-direction:column;background:#f8fafc;padding:.625rem;border-radius:var(--radius-sm);border:1px solid #e2e8f0}.reinstatement-item .item-label{font-size:.6875rem;font-weight:600;color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.05em;margin-bottom:.25rem}.reinstatement-item .item-value{font-size:.8125rem;color:var(--color-text);font-weight:500}.reinstatement-item .deadline-value{color:var(--color-error);font-weight:600}.reinstatement-item .badge{display:inline-block;padding:.125rem .5rem;border-radius:9999px;font-size:.75rem;font-weight:600;width:fit-content}.reinstatement-item .badge-available{background:#dcfce7;color:#166534}.reinstatement-item .badge-unavailable{background:#fee2e2;color:#991b1b}.reinstatement-steps{margin-bottom:.75rem}.reinstatement-steps h5{font-size:.8125rem;font-weight:600;color:var(--color-text-muted);margin-bottom:.5rem}.reinstatement-steps ol{padding-left:1.25rem;font-size:.875rem;color:var(--color-text)}.reinstatement-steps li{margin-bottom:.25rem}.forms-info{font-size:.875rem;color:var(--color-text);background:#eff6ff;border:1px solid #bfdbfe;border-radius:var(--radius-sm);padding:.5rem .75rem}.challenge-info{display:grid;grid-template-columns:1fr 1fr;gap:.75rem;margin-bottom:.75rem}.challenge-item{display:flex;flex-direction:column;background:#f8fafc;padding:.625rem;border-radius:var(--radius-sm);border:1px solid #e2e8f0}.challenge-item .item-label{font-size:.6875rem;font-weight:600;color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.05em;margin-bottom:.25rem}.challenge-item .item-value{font-size:.8125rem;color:var(--color-text);font-weight:500}.challenge-process{font-size:.875rem;color:var(--color-text);line-height:1.5}.doj-card{background:#fef2f2;border:1px solid #fecaca}.doj-info{font-size:.875rem;color:var(--color-text);margin-bottom:.75rem;line-height:1.5}.doj-contact{background:#fff;border:1px solid #e2e8f0;border-radius:var(--radius-sm);padding:.75rem;font-size:.875rem}.doj-contact strong{display:block;margin-bottom:.5rem;color:var(--color-text)}.doj-contact p{margin-bottom:.25rem;color:var(--color-text-muted)}.doj-contact a{color:var(--color-primary);text-decoration:none}.doj-contact a:hover{text-decoration:underline}.contacts-card .card-content{padding-left:0}.contact-section{margin-bottom:1rem;padding-bottom:1rem;border-bottom:1px solid #e2e8f0}.contact-section:last-child{margin-bottom:0;padding-bottom:0;border-bottom:none}.contact-section h5{font-size:.875rem;font-weight:600;color:var(--color-text);margin-bottom:.5rem}.contact-details{font-size:.875rem;color:var(--color-text-muted)}.contact-details p{margin-bottom:.25rem}.contact-details strong{color:var(--color-text)}.contact-details a{color:var(--color-primary);text-decoration:none}.contact-details a:hover{text-decoration:underline}.contact-details .address{font-style:italic;color:var(--color-text-muted)}.hotlines-grid{display:flex;flex-direction:column;gap:.5rem}.hotline-item{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem;background:#f8fafc;padding:.5rem .75rem;border-radius:var(--radius-sm);font-size:.875rem}.hotline-name{font-weight:600;color:var(--color-text)}.hotline-phone{color:var(--color-primary);text-decoration:none;font-weight:500}.hotline-phone:hover{text-decoration:underline}.hotline-language{color:var(--color-text-muted);font-size:.75rem}.legal-hotlines{display:flex;flex-direction:column;gap:.5rem}.legal-item{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem;background:#f8fafc;padding:.5rem .75rem;border-radius:var(--radius-sm);font-size:.875rem}.legal-name{font-weight:600;color:var(--color-text)}.legal-item a{color:var(--color-primary);text-decoration:none;font-weight:500}.legal-item a:hover{text-decoration:underline}.voter-roll-notes{background:#fffbeb;border:1px solid #fcd34d;border-radius:var(--radius-md);padding:.75rem;font-size:.875rem;color:#92400e;margin-top:1rem}.voter-roll-notes strong{display:block;margin-bottom:.25rem}.voter-roll-notes p{margin:0}.app-footer{background:#1e293b;color:#94a3b8;padding:1.5rem 1rem;text-align:center;font-size:.875rem}@media(min-width:640px){.app-header{padding:3rem 2rem}.app-title{font-size:2.5rem}.app-subtitle{font-size:1.125rem}.app-main,.zip-form{padding:2rem}.zip-input-group{flex-direction:row}.zip-input{flex:1}.zip-submit{white-space:nowrap}.requirements-card{padding:2rem}.requirements-state{font-size:1.75rem}}@media(min-width:768px){.app-title{font-size:3rem}.zip-label{font-size:1.125rem}}
