:root {
  --nfs-navy: #30338c;
  --nfs-teal: #3196aa;
  --nfs-pink: #fce6e7;
  --nfs-ink: #252765;
  --nfs-border: #d8dbe8;
  --nfs-error: #a52222;
}

.nfs-component { color: var(--nfs-ink); font: inherit; max-width: 100%; }
.nfs-component *, .nfs-component *::before, .nfs-component *::after { box-sizing: border-box; }
.nfs-map { width: 100%; min-height: 320px; border: 1px solid var(--nfs-border); border-radius: 18px; overflow: hidden; background: #eef1f5; }
.nfs-submit-map, .nfs-details-map { height: 430px; margin-block: .75rem 1rem; }
.nfs-map-filters { display: flex; flex-wrap: wrap; gap: .6rem; margin-bottom: .8rem; }
.nfs-map-filters button, .nfs-primary-button, .nfs-component button { border: 2px solid var(--nfs-navy); border-radius: 999px; padding: .65rem 1rem; color: var(--nfs-navy); background: #fff; cursor: pointer; font: inherit; font-weight: 700; text-decoration: none; }
.nfs-map-filters button[aria-pressed="true"], .nfs-primary-button, .nfs-component button[type="submit"] { color: #fff; background: var(--nfs-navy); }
.nfs-component button:disabled { cursor: not-allowed; opacity: .55; }
.nfs-map-message, .nfs-help { margin: .65rem 0; font-size: .95rem; }
.nfs-map-list { margin-top: 1.25rem; }
.nfs-map-list ul { display: grid; gap: .65rem; padding-left: 1.25rem; }
.nfs-map-list a, .nfs-component a { color: var(--nfs-navy); }
.nfs-form { display: grid; gap: 1rem; }
.nfs-form-grid, .nfs-account-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1rem; }
.nfs-form label { display: grid; gap: .35rem; font-weight: 700; }
.nfs-form input:not([type="checkbox"]):not([type="radio"]), .nfs-form select, .nfs-form textarea, .nfs-resource-search input { width: 100%; border: 1px solid #999fb9; border-radius: 8px; padding: .72rem; background: #fff; color: #181a44; font: inherit; }
.nfs-component #loginform { display: grid; gap: .8rem; }
.nfs-component #loginform p { margin: 0; }
.nfs-component #loginform label { display: grid; gap: .35rem; font-weight: 700; }
.nfs-component #loginform input[type="text"], .nfs-component #loginform input[type="password"] { width: 100%; border: 1px solid #999fb9; border-radius: 8px; padding: .72rem; background: #fff; color: #181a44; font: inherit; }
.nfs-form .nfs-checkbox { display: flex; align-items: flex-start; gap: .55rem; font-weight: 400; }
.nfs-form .nfs-checkbox input { margin-top: .25rem; }
.nfs-honeypot { position: absolute !important; left: -10000px !important; width: 1px; height: 1px; overflow: hidden; }
.nfs-routing-message, .nfs-notice { border-left: 5px solid var(--nfs-teal); padding: .8rem 1rem; background: #eef9fb; }
.nfs-notice-error, .nfs-alert { border-color: var(--nfs-error); background: #fff0f0; }
.nfs-error-text { color: var(--nfs-error); font-weight: 700; }
.nfs-search-results { display: grid; gap: .35rem; }
.nfs-search-results button { border-radius: 8px; text-align: left; }
.nfs-resource-search { display: grid; gap: .4rem; max-width: 620px; margin: 1rem 0; font-weight: 700; }
.nfs-resource-list { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 290px), 1fr)); gap: 1rem; }
.nfs-resource-card { padding: 1.15rem; border: 1px solid var(--nfs-border); border-radius: 16px; background: #fff; }
.nfs-resource-card h3 { margin: .2rem 0 .5rem; }
.nfs-resource-card .nfs-primary-button { display: inline-block; margin-top: .4rem; }
.nfs-eyebrow { color: var(--nfs-teal); font-size: .82rem; font-weight: 800; letter-spacing: .04em; text-transform: uppercase; }
.nfs-details-list { display: flex; flex-wrap: wrap; gap: 1rem 2rem; margin: 0 0 1rem; }
.nfs-details-list div { display: grid; gap: .2rem; }
.nfs-details-list dt { font-size: .82rem; font-weight: 800; text-transform: uppercase; }
.nfs-details-list dd { margin: 0; }
.nfs-status { display: inline-block; border-radius: 999px; padding: .25rem .65rem; background: var(--nfs-pink); font-weight: 800; }
.nfs-status-cleaned { background: #daf4e4; }
.nfs-account-list { display: grid; gap: .8rem; }
.nfs-account-list article { padding: 1rem; border: 1px solid var(--nfs-border); border-radius: 12px; }
.nfs-account-list h3 { margin-top: 0; }
.nfs-admin-status-component { padding: 1rem; border: 2px dashed var(--nfs-teal); border-radius: 14px; }
.leaflet-control-attribution { font-size: 11px; }

@media (max-width: 680px) {
  .nfs-form-grid, .nfs-account-grid { grid-template-columns: 1fr; }
  .nfs-map { min-height: 380px; border-radius: 12px; }
  .nfs-map-filters button { flex: 1 1 auto; }
}

@media (prefers-reduced-motion: reduce) {
  .nfs-component *, .nfs-component *::before, .nfs-component *::after { scroll-behavior: auto !important; transition-duration: .01ms !important; animation-duration: .01ms !important; }
}
