body {
    background: #f5f6f8;
    color: #1c1c28;
}
.site-nav {
    display: flex;
    align-items: center;
    gap: 1.25rem;
    margin-bottom: 1.5rem;
    padding: 0.75rem 0;
    border-bottom: 1px solid #dcdce2;
    position: sticky;
    top: 0;
    z-index: 100;
    background: #f5f6f8;
}
.site-nav > a:first-child { text-decoration: none; font-weight: 600; font-size: 1.15rem; color: #1c1c28; }
.site-nav-link { color: #5a5a68; text-decoration: none; }
.site-nav-link:hover { color: #1a5fb4; }
.text-muted { color: #5a5a68 !important; }
.card {
    background: #ffffff;
    border: 1px solid #dcdce2;
    color: #1c1c28;
}
.form-control, .form-select {
    background: #ffffff;
    border: 1px solid #ccccd6;
    color: #1c1c28;
}
.form-control:focus, .form-select:focus {
    background: #ffffff;
    color: #1c1c28;
    border-color: #2f5fb0;
    box-shadow: 0 0 0 0.2rem rgba(47,95,176,0.25);
}
.form-control::placeholder { color: #8a8a96; }
a { color: #1a5fb4; }
.btn-primary {
    background: #2f5fb0;
    border-color: #2f5fb0;
}
.btn-primary:hover {
    background: #24488a;
    border-color: #24488a;
}
.alert-danger {
    background: #fbe4e7;
    border-color: #f0b8c0;
    color: #8a2536;
}
.alert-warning {
    background: #fbf3df;
    border-color: #ecd9a0;
    color: #7a5f16;
}
.alert-info {
    background: #e2f0fb;
    border-color: #b8d9f0;
    color: #1a5480;
}
.recovery-key-box {
    font-family: 'Courier New', monospace;
    font-size: 1.3rem;
    letter-spacing: 0.1rem;
    background: #f0f0f4;
    border: 2px dashed #2f5fb0;
    padding: 1rem;
    text-align: center;
    border-radius: 6px;
    user-select: all;
}
.strength-meter { height: 6px; border-radius: 3px; background: #e2e2ea; overflow: hidden; margin-top: 6px; }
.strength-meter-fill { height: 100%; width: 0%; transition: width 0.2s, background 0.2s; }
.nav-tabs .nav-link { color: #5a5a68; }
.nav-tabs .nav-link.active { background: #ffffff; color: #1c1c28; border-color: #dcdce2; }
.tab-content { background: #ffffff; padding: 1rem; border: 1px solid #dcdce2; border-top: none; }

/* State-resources map - see state-resources.php: inline SVG styles are
   stripped there, fill/stroke/hover come from here instead, same pattern
   already proven on govote.joethevoter.org / VoteAssist. */
#us-state-map { max-width: 100%; height: auto; }
#us-state-map path {
    fill: #6a84b8;
    stroke: #f5f6f8;
    stroke-width: 1.5;
    cursor: pointer;
    transition: fill 0.2s;
}
#us-state-map path:hover { fill: #4a7fd6; }
#us-state-map path:active { filter: brightness(0.85); }

/* Left padding on resource lists/tables so their content doesn't sit under
   the fixed bottom-left ADA widget button as the page scrolls. */
.resource-list-safe { padding-left: 90px; }

/* Zebra striping on resource tables (admin) and public resource lists. */
.table-zebra tbody tr:nth-child(even) { background: #e2e4ea; }
.resource-list-safe li:nth-child(even) {
    background: #e2e4ea;
    border-radius: 4px;
}
.resource-list-safe li { padding: 4px 8px; margin-left: -8px; }
