@font-face { font-family: 'Judy'; src: url('../assets/fonts/judy.woff2') format('woff2'); font-style: normal; font-weight: 400; font-display: swap; }
.zip-section { position: relative; z-index: 1; background: #f9fafc; padding: 152px 24px 56px; }
.zip-form { width: min(100%, 720px); margin: 0 auto; text-align: center; }
.zip-field { position: relative; height: 154px; border-bottom: 7px solid var(--blue); }
.zip-field input { display: block; width: 100%; min-width: 0; height: 147px; padding: 0 0 0 19px; border: 0; border-radius: 0; background: transparent; color: var(--blue); font: 400 115px/147px 'Judy', sans-serif; text-align: center; caret-color: var(--gray); }
.zip-field input::placeholder { color: transparent; }
.zip-field input:focus-visible { outline: none; }
.zip-field:focus-within { border-bottom-color: var(--gray); }
.zip-placeholder { position: absolute; top: 0; left: 19px; right: 0; color: var(--blue); font: 400 clamp(80px, 14.8vw, 114px)/147px 'Judy', sans-serif; white-space: nowrap; pointer-events: none; }
.zip-placeholder-mobile { display: none; }
.zip-cursor { position: absolute; top: 15px; left: 0; width: 5px; height: 117px; background: var(--gray); animation: zip-blink 1.1s steps(1, end) infinite; pointer-events: none; }
.zip-field input:not(:placeholder-shown) ~ .zip-placeholder,
.zip-field input:not(:placeholder-shown) ~ .zip-cursor { display: none; }
.zip-field input:placeholder-shown { caret-color: transparent; }
.zip-description { max-width: 545px; margin: 48px auto 0; font-size: 20px; line-height: 28px; }
.zip-result { min-height: 28px; margin: 17px auto 0; color: var(--gray); font-size: 16px; line-height: 28px; letter-spacing: -.16px; }
.zip-label, .zip-submit { position: absolute; width: 1px; height: 1px; padding: 0; overflow: hidden; clip-path: inset(50%); white-space: nowrap; border: 0; }
.zip-submit:focus-visible { position: static; width: auto; height: auto; padding: 10px 16px; margin-top: 16px; clip-path: none; background: var(--black); color: white; border-radius: 8px; }
@keyframes zip-blink { 0%, 49% { opacity: 1; } 50%, 100% { opacity: 0; } }
@media (max-width: 767px) {
  .zip-section { padding: 74px 24px 82px; }
  .zip-form { max-width: 306px; }
  .zip-field { height: 154px; }
  .zip-field input { padding-left: 0; font-size: clamp(40px, 13vw, 56px); }
  .zip-placeholder { left: 20px; font-size: clamp(90px, 29.85vw, 120px); line-height: 153px; }
  .zip-placeholder-desktop { display: none; }
  .zip-placeholder-mobile { display: inline; }
  .zip-cursor { top: 21px; height: 112px; }
  .zip-result { min-height: 48px; margin-top: 27px; line-height: 24px; }
  .zip-result-location { display: block; }
}
@media (prefers-reduced-motion: reduce) { .zip-cursor { animation: none; } }
