* { box-sizing: border-box; }
body { font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, sans-serif; margin: 0; color: #1f2937; background: #f9fafb; }
.public-header, .public-footer { padding: 1rem 1.5rem; background: #111827; color: #fff; }
.public-footer { background: #f3f4f6; color: #6b7280; }
.public-main { max-width: 640px; margin: 2rem auto; padding: 2rem; background: #fff; border-radius: 8px; box-shadow: 0 1px 3px rgba(0,0,0,0.06); }
.btn { display: inline-block; padding: .6rem 1.2rem; background: #2563eb; color: #fff; border: 0; border-radius: 6px; cursor: pointer; text-decoration: none; }
.btn-danger { background: #dc2626; }
.btn-muted { background: #6b7280; }
.alert { padding: 1rem; border-radius: 6px; margin-bottom: 1rem; }
.alert-error { background: #fee2e2; color: #991b1b; }
.alert-ok { background: #dcfce7; color: #166534; }
table { width: 100%; border-collapse: collapse; }
th, td { padding: .5rem .75rem; text-align: left; border-bottom: 1px solid #e5e7eb; }
th { background: #f3f4f6; font-weight: 600; }
.admin-shell { display: flex; min-height: 100vh; }
.admin-sidebar { width: 220px; background: #1f2937; color: #d1d5db; padding: 1rem; }
.admin-sidebar a { display: block; color: #d1d5db; text-decoration: none; padding: .4rem .6rem; border-radius: 4px; }
.admin-sidebar a:hover, .admin-sidebar a.active { background: #374151; color: #fff; }
.admin-main { flex: 1; padding: 1.5rem; }
form .field { margin-bottom: 1rem; }
form label { display: block; margin-bottom: .25rem; font-weight: 600; }
form input, form select, form textarea { width: 100%; padding: .5rem; border: 1px solid #d1d5db; border-radius: 4px; font: inherit; }
.status { display: inline-block; padding: .15rem .5rem; border-radius: 999px; font-size: .8rem; font-weight: 600; }
.status-active { background: #dcfce7; color: #166534; }
.status-unsubscribed { background: #fee2e2; color: #991b1b; }
.status-bounced { background: #fef3c7; color: #92400e; }
.status-invalid { background: #f3f4f6; color: #6b7280; }
.status-blocked { background: #1f2937; color: #fff; }
