.contact-reveal{opacity:0;transition:opacity .6s cubic-bezier(.22,1,.36,1),transform .6s cubic-bezier(.22,1,.36,1);transform:translateY(1.15rem)}.contact-reveal.is-inview{opacity:1;transform:translateY(0)}.contact-reveal-delay-1{transition-delay:90ms}.contact-reveal-delay-2{transition-delay:.18s}.contact-hero-grid{background-image:linear-gradient(to right,var(--grid)1px,transparent 1px),linear-gradient(to bottom,var(--grid)1px,transparent 1px);background-size:44px 44px;-webkit-mask-image:radial-gradient(75% 65% at 50% 0,#000 18%,#0000 68%);mask-image:radial-gradient(75% 65% at 50% 0,#000 18%,#0000 68%)}.contact-field{border:1px solid var(--border);width:100%;color:var(--fg);background:#ffffff0d;border-radius:.85rem;padding:.75rem 1rem;transition:border-color .2s,box-shadow .2s}.contact-field:hover{border-color:#3b82f647}.contact-field:focus{border-color:var(--blue);outline:none;box-shadow:0 0 0 3px #3b82f633}.contact-field::placeholder{color:var(--muted2)}.contact-alert{border:1px solid var(--border);border-radius:.85rem;padding:.85rem 1rem;font-size:.9rem}.contact-alert.success{color:var(--fg);background:#22c55e1a;border-color:#22c55e59}.contact-alert.error{color:var(--fg);background:#e11d481a;border-color:#e11d4859}.contact-alert.warning,.contact-alert.info{background:var(--panel2);color:var(--fg)}.contact-map{border:1px solid var(--border);background:#00000040;border-radius:1rem;overflow:hidden}@keyframes contact-pulse-dot{0%{opacity:.75;transform:scale(.85)}70%{opacity:0;transform:scale(1.15)}to{opacity:0;transform:scale(.85)}}.contact-pulse-dot{background:#22c55e;border-radius:50%;width:.55rem;height:.55rem;position:relative}.contact-pulse-dot:after{content:"";background:#22c55e;border-radius:50%;animation:1.8s ease-out infinite contact-pulse-dot;position:absolute;inset:0}.contact-submit-btn{transition:filter .2s,transform .2s}.contact-submit-btn:hover{transform:translateY(-2px)}.contact-submit-btn:active{transform:translateY(0)}@media (prefers-reduced-motion:reduce){.contact-reveal{opacity:1!important;transition:none!important;transform:none!important}.contact-pulse-dot:after{animation:none!important}.contact-submit-btn:hover,.contact-submit-btn:active{transform:none!important}}.contact-reveal{min-width:0}.contact-reveal a[href^=mailto\:] span,.contact-reveal a[href^=tel\:] span{overflow-wrap:anywhere}
