/* ═══════════════════════════════════════════════
   Contact page — only what Tailwind utilities
   can't express cleanly.
═══════════════════════════════════════════════ */

/* Honeypot: invisible to people, still "fillable" by bots.
   Deliberately not display:none — some bots skip those. */
.hp-field {
    position: absolute !important;
    left: -9999px !important;
    top: auto !important;
    width: 1px !important;
    height: 1px !important;
    overflow: hidden !important;
}

/* Input focus + error states */
#contact-form input:focus,
#contact-form select:focus,
#contact-form textarea:focus {
    outline: none;
    border-color: #4F46E5;
    background: #fff;
    box-shadow: 0 0 0 3px rgba(79, 70, 229, .12);
}

#contact-form .err-input {
    border-color: #ef4444;
    background: #fef2f2;
}
#contact-form .err-input:focus {
    border-color: #ef4444;
    box-shadow: 0 0 0 3px rgba(239, 68, 68, .12);
}

/* Submit spinner */
.spinner {
    width: 18px;
    height: 18px;
    border: 2px solid rgba(255, 255, 255, .35);
    border-top-color: #fff;
    border-radius: 50%;
    animation: spin .7s linear infinite;
    display: none;
}
.btn-loading .spinner { display: inline-block; }
.btn-loading .btn-text { display: none; }
@keyframes spin { to { transform: rotate(360deg); } }

/* Success pop */
@keyframes pop {
    0%   { transform: scale(.4); opacity: 0; }
    100% { transform: scale(1);  opacity: 1; }
}
.pop-anim { animation: pop .45s cubic-bezier(.175, .885, .32, 1.275); }

/* Textarea shouldn't shrink below a readable height */
#contact-form textarea { min-height: 150px; }
