/* National site extras on top of the engine's Theme A (emergency-ftl.css). Uses the engine's palette tokens: --ink, --foam, --sand, --coral, --cta-text, --on-cta, --line. */
.zipband { padding: 28px 0; background: var(--sand, #eef1f3); }
.zipcheck { max-width: 36rem; margin: 0 auto; padding: 1.5rem; border: 1px solid var(--line, #cfd6dd); border-radius: 12px; background: var(--foam, #fff); color: var(--ink, #14212b); }
.zipcheck__h { margin: 0 0 .5rem; font-size: 1.375rem; line-height: 1.25; text-wrap: balance; }
.zipcheck__p { margin: 0 0 1rem; }
.zipcheck__label { display: block; margin-bottom: .375rem; font-weight: 600; }
.zipcheck__row { display: flex; gap: .5rem; flex-wrap: wrap; }
.zipcheck__input { flex: 1 1 9rem; min-width: 0; min-height: 48px; padding: 0 .875rem; font: inherit; font-size: 1.125rem; letter-spacing: .04em; border: 2px solid var(--ink, #14212b); border-radius: 8px; background: #fff; color: #14212b; }
.zipcheck__btn { flex: 0 0 auto; min-height: 48px; padding: 0 1.25rem; font: inherit; font-weight: 700; border: 0; border-radius: 8px; cursor: pointer; background: var(--ink, #14212b); color: var(--foam, #fff); }
.zipcheck__input:focus-visible, .zipcheck__btn:focus-visible, .zipcheck__call:focus-visible { outline: 3px solid var(--coral, #b3261e); outline-offset: 2px; }
.zipcheck__result { min-height: 1.5em; margin: 1rem 0 0; font-weight: 600; }
.zipcheck[data-state="invalid"] .zipcheck__result, .zipcheck[data-state="error"] .zipcheck__result { color: #9b1c13; }
.zipcheck__call { display: inline-flex; align-items: center; justify-content: center; min-height: 48px; margin-top: .875rem; padding: 0 1.5rem; border-radius: 8px; font-weight: 700; text-decoration: none; background: var(--coral, #b3261e); color: var(--on-cta, #fff); }
.zipcheck__call[hidden] { display: none; }
@media (max-width: 480px) { .zipcheck { padding: 1.125rem; } .zipcheck__btn { flex: 1 1 100%; } }
.area-list { list-style: none; padding: 0; margin: 1rem 0 0; display: grid; gap: .5rem; }
.area-list li { display: flex; align-items: center; gap: .5rem; min-height: 44px; }
.area-list .i { width: 18px; height: 18px; flex: 0 0 18px; stroke: var(--coral, #b3261e); }
.area-count { margin-left: auto; color: var(--ink-70, #4a5a63); font-size: .9rem; }
.zips { columns: 5 6rem; list-style: none; padding: 0; font-variant-numeric: tabular-nums; }
.legal { padding: 40px 0 24px; }
.legal-wrap { max-width: 46rem; }
.legal-wrap h1 { margin-bottom: .5rem; }
.legal-wrap h2 { margin-top: 1.75rem; }
.pending { border: 2px dashed var(--line, #cfd6dd); border-radius: 10px; padding: 1rem 1.25rem; color: var(--ink-70, #4a5a63); }
.foot-brand img { margin-right: .5rem; }

/* national polish (2026-11-13): sticky coverage card on desktop; one neutral header fill with the recommended column standing out */
@media (min-width:960px){
  .map-section.service-area .wrap>div:last-child{position:sticky;top:96px;align-self:start;height:auto;}
}
.matrix thead th:not([data-matrix-col="protocol"]){background:var(--sand);color:var(--ink);}
.matrix thead th[data-matrix-col="protocol"]{background:var(--ink);color:var(--foam);}

/* national polish (2026-11-14): the state hub's ZIP checker fills the empty right column of the risk band, sticky beside the taller fact list.
   archetypes.css already draws every direct child of `.risk .wrap` as the white card (border, radius, two-layer shadow, padding), so the checker inside
   `.risk-zip` is flattened: one card, not a gray card nested in a white one. */
.risk .wrap > .risk-zip .zipcheck { max-width: none; margin: 0; padding: 0; border: 0; border-radius: 0; background: transparent; box-shadow: none; }
@media (min-width:960px){
  .risk .wrap > .risk-zip { position: sticky !important; top: 96px; align-self: start !important; height: auto !important; }
}
@media (max-width:959px){
  .risk .wrap { grid-template-columns: 1fr; gap: 28px; }
  .risk .wrap > .risk-zip { order: -1; }
}
