/* Shared public-site and authentication responsiveness. */
.public-site { overflow-x: clip; }
.public-header { background: rgba(29, 78, 216, .96); backdrop-filter: blur(16px); }
.public-header__inner { min-height: 4rem; }
.public-mobile-nav { position: fixed; inset: 0; z-index: 50; }
.public-mobile-nav__backdrop { position: absolute; inset: 0; width: 100%; border: 0; background: rgba(15, 23, 42, .48); }
.public-mobile-nav__panel { position: relative; display: flex; flex-direction: column; width: min(100% - 2rem, 24rem); min-height: 100%; margin-left: auto; background: #fff; box-shadow: -14px 0 40px rgba(15, 23, 42, .18); }
.public-mobile-nav__panel a:not(.public-mobile-nav__primary):not(.public-mobile-nav__secondary):not(.public-mobile-nav__text-action) { display: flex; align-items: center; min-height: 3.25rem; padding: 0 .85rem; border-radius: .75rem; color: #1e293b; font-size: .94rem; font-weight: 750; text-decoration: none; }
.public-mobile-nav__panel a:not(.public-mobile-nav__primary):not(.public-mobile-nav__secondary):not(.public-mobile-nav__text-action):hover { background: #eff6ff; color: #1d4ed8; }
.public-mobile-nav__primary, .public-mobile-nav__secondary, .public-mobile-nav__text-action { display: inline-flex; align-items: center; justify-content: center; min-height: 3rem; border-radius: .85rem; font-size: .88rem; font-weight: 800; text-decoration: none; }
.public-mobile-nav__primary { background: #2563eb; color: #fff; box-shadow: 0 8px 18px rgba(37, 99, 235, .23); }
.public-mobile-nav__secondary { border: 1px solid #bfdbfe; color: #1d4ed8; background: #eff6ff; }
.public-mobile-nav__text-action { color: #475569; background: #f8fafc; }
.public-nav-open { overflow: hidden; }

.public-footer { background: #080f1f; border-top: 1px solid rgba(255, 255, 255, .06); }
.public-footer__grid { display: grid; grid-template-columns: minmax(0, 1.4fr) repeat(3, minmax(0, 1fr)); gap: 2.5rem; }
.public-footer__grid h2 { margin: 0 0 .9rem; color: #fff; font-size: .82rem; font-weight: 800; letter-spacing: .08em; text-transform: uppercase; }
.public-footer__grid > div:not(.public-footer__brand) { display: grid; align-content: start; gap: .6rem; }
.public-footer__grid a:not(.public-footer__cta) { color: #91a4c4; font-size: .88rem; font-weight: 600; text-decoration: none; transition: color .15s ease; }
.public-footer__grid a:not(.public-footer__cta):hover { color: #fff; }
.public-footer__brand { display: grid; align-content: start; gap: 1rem; }
.public-footer__brand p { max-width: 19rem; margin: 0; color: #91a4c4; font-size: .88rem; line-height: 1.6; }
.public-footer__cta { display: inline-flex; align-items: center; justify-content: center; width: fit-content; min-height: 2.75rem; padding: 0 1rem; border-radius: .75rem; color: #173f9e; background: #fff; font-size: .84rem; font-weight: 850; text-decoration: none; }
.public-footer__bottom { margin-top: 2.5rem; padding-top: 1.25rem; border-top: 1px solid rgba(255, 255, 255, .08); color: #526480; font-size: .75rem; }

.public-auth-page { min-height: 72vh; padding: 2.5rem 1rem; }
.public-auth-card { border-radius: 1.25rem; }

@media (max-width: 639px) {
  .public-header__inner > a img { width: 2rem; height: 2rem; }
  .public-header__inner > a span { font-size: 1.35rem; }
  .public-footer__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 2rem 1.25rem; }
  .public-footer__brand { grid-column: 1 / -1; }
  .public-footer__brand p { max-width: 25rem; }
  .public-footer__cta { width: 100%; }
  .public-footer__bottom { margin-top: 2rem; text-align: center; }
  .public-auth-page { min-height: auto; padding: 1.5rem 1rem 2.5rem; }
  .public-auth-card { padding: 1.25rem !important; }
  .public-auth-page .mb-7 { margin-bottom: 1.25rem; }
  .public-auth-page .mb-8 { margin-bottom: 1.5rem; }
  .public-auth-page h1.text-3xl { font-size: 1.7rem; line-height: 1.14; }
  .public-auth-page .choice-card { padding: 1.25rem; border-radius: 1.15rem; }
  .public-auth-page .choice-card ul { margin-top: 1rem; }
  .public-auth-page .choice-card > div:last-child { margin-top: 1.25rem; }
  .auth-postcode-pair { grid-template-columns: minmax(0, 1fr) auto minmax(4.75rem, .58fr) !important; }
  .auth-postcode-pair__city { padding-inline: .55rem !important; font-size: .74rem !important; }
  .auth-radius { padding: .85rem !important; }
  .auth-radius__top { align-items: flex-start !important; gap: .75rem !important; margin-bottom: .85rem !important; }
  .auth-radius__ticks { font-size: .56rem !important; }
}

@media (max-width: 374px) {
  .public-footer__grid { grid-template-columns: minmax(0, 1fr); }
  .public-footer__brand { grid-column: auto; }
}

@media (min-width: 640px) and (max-width: 1023px) {
  .public-footer__grid { grid-template-columns: minmax(0, 1.3fr) repeat(3, minmax(0, 1fr)); gap: 1.5rem; }
}

@media (prefers-reduced-motion: reduce) {
  .public-header *, .public-mobile-nav *, .public-footer * { transition: none !important; }
}
