:root{
  --contact-navy:#082a4d;
  --contact-navy-dark:#031a31;
  --contact-blue:#1f69b3;
  --contact-teal:#16a7a0;
  --contact-gold:#d8a62f;
  --contact-red:#d93a52;
  --contact-green:#3f9a68;
  --contact-purple:#7661a8;
  --contact-ink:#13263b;
  --contact-muted:#697687;
  --contact-soft:#f6f8fb;
  --contact-white:#ffffff;
  --contact-shadow:0 22px 55px rgba(8,42,77,.10);
}

.contact-page{
  color:var(--contact-ink);
  background:#fff;
}

.contact-hero{
  position:relative;
  min-height:570px;
  margin-top:78px;
  display:flex;
  align-items:center;
  overflow:hidden;
  background:#eaf0f5;
}

.contact-hero-image{
  position:absolute;
  inset:0;
  width:100%;
  height:100%;
  object-fit:cover;
}

.contact-hero-overlay{
  position:absolute;
  inset:0;
  background:linear-gradient(
    90deg,
    rgba(3,26,49,.92) 0%,
    rgba(8,42,77,.74) 43%,
    rgba(8,42,77,.2) 76%,
    rgba(8,42,77,.03) 100%
  );
}

.contact-hero-content{
  position:relative;
  z-index:2;
  max-width:810px;
  padding:76px 0;
  color:#fff;
}

.contact-kicker,
.section-label{
  display:inline-flex;
  align-items:center;
  gap:10px;
  color:#f2cc62;
  font-size:12px;
  font-weight:800;
  letter-spacing:.15em;
  text-transform:uppercase;
}

.contact-kicker::before,
.section-label::before{
  content:"";
  width:34px;
  height:2px;
  border-radius:99px;
  background:currentColor;
}

.contact-hero h1{
  margin:18px 0 20px;
  font-family:"Libre Baskerville",serif;
  font-size:clamp(44px,5vw,72px);
  line-height:1.08;
  letter-spacing:-.035em;
}

.contact-hero h1 span{
  display:block;
  color:#f2cc62;
}

.contact-hero p{
  max-width:710px;
  margin:0;
  color:rgba(255,255,255,.84);
  font-size:18px;
  line-height:1.8;
}

.contact-hero-actions{
  display:flex;
  flex-wrap:wrap;
  gap:14px;
  margin-top:30px;
}

.contact-btn-primary,
.contact-btn-outline,
.contact-btn-dark,
.contact-btn-light{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:10px;
  padding:13px 19px;
  border-radius:10px;
  font-weight:800;
  transition:.3s ease;
}

.contact-btn-primary{
  color:#fff;
  background:var(--contact-gold);
  border:1px solid var(--contact-gold);
  box-shadow:0 14px 30px rgba(216,166,47,.24);
}

.contact-btn-primary:hover{
  color:#fff;
  background:#c59122;
  border-color:#c59122;
  transform:translateY(-3px);
}

.contact-btn-outline{
  color:#fff;
  border:1px solid rgba(255,255,255,.58);
  background:rgba(255,255,255,.08);
  backdrop-filter:blur(8px);
}

.contact-btn-outline:hover{
  color:var(--contact-navy);
  background:#fff;
  border-color:#fff;
  transform:translateY(-3px);
}

.contact-details-section{
  padding:105px 0;
  background:#fff;
}

.contact-heading{
  max-width:760px;
  margin:0 auto 45px;
  text-align:center;
}

.contact-heading .section-label::before{
  display:none;
}

.contact-heading h2{
  margin:14px 0 18px;
  color:var(--contact-navy-dark);
  font-family:"Libre Baskerville",serif;
  font-size:clamp(34px,4vw,52px);
}

.contact-heading p{
  margin:0;
  color:var(--contact-muted);
  line-height:1.75;
}

.contact-info-grid{
  display:grid;
  grid-template-columns:repeat(4,minmax(0,1fr));
  gap:20px;
}

.contact-info-card{
  --accent:var(--contact-blue);
  position:relative;
  min-height:285px;
  padding:28px;
  overflow:hidden;
  border-radius:22px;
  background:#fff;
  border:1px solid #e7edf3;
  box-shadow:0 12px 30px rgba(8,42,77,.06);
  transition:.35s ease;
}

.contact-info-card::after{
  content:"";
  position:absolute;
  right:-48px;
  bottom:-48px;
  width:135px;
  height:135px;
  border-radius:50%;
  background:color-mix(in srgb,var(--accent) 9%,transparent);
}

.contact-info-card:hover{
  transform:translateY(-8px);
  border-color:color-mix(in srgb,var(--accent) 30%,transparent);
  box-shadow:0 24px 48px rgba(8,42,77,.13);
}

.contact-info-icon{
  width:58px;
  height:58px;
  display:grid;
  place-items:center;
  margin-bottom:20px;
  border-radius:18px;
  color:#fff;
  background:var(--accent);
  box-shadow:0 12px 25px color-mix(in srgb,var(--accent) 28%,transparent);
  font-size:24px;
}

.contact-info-label{
  color:var(--accent);
  font-size:10px;
  font-weight:800;
  letter-spacing:.13em;
  text-transform:uppercase;
}

.contact-info-card h3{
  position:relative;
  z-index:2;
  margin:7px 0 10px;
  color:var(--contact-navy);
  font-family:"Libre Baskerville",serif;
  font-size:20px;
}

.contact-info-card p{
  position:relative;
  z-index:2;
  min-height:66px;
  margin:0 0 18px;
  color:var(--contact-muted);
  font-size:14px;
  line-height:1.65;
}

.contact-info-card a{
  position:relative;
  z-index:2;
  display:inline-flex;
  align-items:center;
  gap:8px;
  color:var(--accent);
  font-size:13px;
  font-weight:800;
}

.contact-info-card a i{
  transition:transform .25s ease;
}

.contact-info-card a:hover i{
  transform:translateX(5px);
}

.contact-card-blue{--accent:var(--contact-blue);}
.contact-card-teal{--accent:var(--contact-teal);}
.contact-card-gold{--accent:var(--contact-gold);}
.contact-card-red{--accent:var(--contact-red);}

.contact-main-section{
  padding:105px 0;
  background:var(--contact-soft);
}

.contact-map-card,
.contact-form-card{
  padding:38px;
  border-radius:27px;
  background:#fff;
  border:1px solid #e6ecf2;
  box-shadow:var(--contact-shadow);
}

.contact-map-heading h2,
.contact-form-heading h2{
  margin:12px 0 10px;
  color:var(--contact-navy);
  font-family:"Libre Baskerville",serif;
  font-size:34px;
}

.contact-map-heading p,
.contact-form-heading p{
  color:var(--contact-muted);
  line-height:1.7;
}

.animated-map{
  position:relative;
  height:430px;
  margin-top:28px;
  overflow:hidden;
  border-radius:24px;
  background:
    radial-gradient(circle at 75% 25%,rgba(22,167,160,.13),transparent 25%),
    radial-gradient(circle at 18% 78%,rgba(216,166,47,.13),transparent 25%),
    #edf3f7;
  border:1px solid #dde6ed;
}

.map-grid{
  position:absolute;
  inset:0;
  opacity:.32;
  background-image:
    linear-gradient(rgba(8,42,77,.08) 1px,transparent 1px),
    linear-gradient(90deg,rgba(8,42,77,.08) 1px,transparent 1px);
  background-size:34px 34px;
}

.map-road{
  position:absolute;
  z-index:2;
  display:block;
  border-radius:999px;
  background:#fff;
  box-shadow:0 3px 10px rgba(8,42,77,.08);
}

.map-road-one{
  width:130%;
  height:18px;
  left:-15%;
  top:42%;
  transform:rotate(-13deg);
}

.map-road-two{
  width:120%;
  height:12px;
  left:-12%;
  top:65%;
  transform:rotate(18deg);
}

.map-road-three{
  width:16px;
  height:120%;
  left:36%;
  top:-10%;
  transform:rotate(9deg);
}

.map-road-four{
  width:12px;
  height:115%;
  right:24%;
  top:-8%;
  transform:rotate(-12deg);
}

.map-block{
  position:absolute;
  z-index:1;
  border-radius:16px;
  background:rgba(8,42,77,.08);
  border:1px solid rgba(8,42,77,.04);
}

.map-block-one{width:98px;height:64px;left:9%;top:13%;}
.map-block-two{width:120px;height:74px;right:11%;top:10%;}
.map-block-three{width:92px;height:95px;left:8%;bottom:13%;}
.map-block-four{width:126px;height:68px;right:12%;bottom:12%;}
.map-block-five{width:75px;height:82px;left:53%;top:54%;}

.map-marker{
  position:absolute;
  left:50%;
  top:46%;
  z-index:8;
  width:64px;
  height:64px;
  display:grid;
  place-items:center;
  transform:translate(-50%,-50%);
  border-radius:50% 50% 50% 8px;
  color:#fff;
  background:linear-gradient(135deg,var(--contact-red),#ef6878);
  box-shadow:0 18px 35px rgba(217,58,82,.30);
  font-size:29px;
  animation:mapMarkerFloat 2.2s ease-in-out infinite;
}

.map-marker i{
  transform:rotate(-45deg);
}

@keyframes mapMarkerFloat{
  0%,100%{transform:translate(-50%,-50%) rotate(45deg) translateY(0);}
  50%{transform:translate(-50%,-50%) rotate(45deg) translateY(-10px);}
}

.map-pulse{
  position:absolute;
  left:50%;
  top:56%;
  z-index:5;
  width:34px;
  height:34px;
  transform:translate(-50%,-50%);
  border-radius:50%;
  border:2px solid rgba(217,58,82,.45);
  animation:mapPulse 2.4s ease-out infinite;
}

.map-pulse-two{animation-delay:.8s;}
.map-pulse-three{animation-delay:1.6s;}

@keyframes mapPulse{
  0%{opacity:.8;transform:translate(-50%,-50%) scale(.5);}
  100%{opacity:0;transform:translate(-50%,-50%) scale(4.5);}
}

.map-location-card{
  position:absolute;
  left:22px;
  right:22px;
  bottom:20px;
  z-index:9;
  display:flex;
  align-items:center;
  gap:13px;
  padding:15px 17px;
  border-radius:17px;
  background:rgba(255,255,255,.92);
  border:1px solid rgba(255,255,255,.9);
  box-shadow:0 16px 35px rgba(8,42,77,.14);
  backdrop-filter:blur(14px);
}

.map-location-icon{
  width:45px;
  height:45px;
  flex:0 0 45px;
  display:grid;
  place-items:center;
  border-radius:14px;
  color:#fff;
  background:var(--contact-navy);
}

.map-location-card strong,
.map-location-card small{
  display:block;
}

.map-location-card strong{
  color:var(--contact-navy);
  font-size:14px;
}

.map-location-card small{
  margin-top:3px;
  color:var(--contact-muted);
  font-size:11px;
}

.map-route-dot{
  position:absolute;
  left:14%;
  top:66%;
  z-index:6;
  width:12px;
  height:12px;
  border-radius:50%;
  background:var(--contact-blue);
  box-shadow:0 0 0 5px rgba(31,105,179,.14);
  animation:routeMove 7s linear infinite;
}

@keyframes routeMove{
  0%{left:14%;top:66%;}
  25%{left:35%;top:54%;}
  50%{left:50%;top:56%;}
  75%{left:67%;top:43%;}
  100%{left:85%;top:32%;}
}

.map-actions{
  display:flex;
  flex-wrap:wrap;
  gap:12px;
  margin-top:20px;
}

.contact-btn-dark{
  color:#fff;
  background:var(--contact-navy);
  border:1px solid var(--contact-navy);
}

.contact-btn-dark:hover{
  color:#fff;
  background:var(--contact-blue);
  border-color:var(--contact-blue);
  transform:translateY(-3px);
}

.contact-btn-light{
  color:var(--contact-navy);
  background:#fff;
  border:1px solid rgba(8,42,77,.22);
}

.contact-btn-light:hover{
  color:#fff;
  background:var(--contact-navy);
  border-color:var(--contact-navy);
  transform:translateY(-3px);
}

.contact-form-heading{
  margin-bottom:28px;
}

.contact-field,
.contact-select-field{
  position:relative;
}

.contact-field>i,
.contact-select-field>i{
  position:absolute;
  left:16px;
  top:18px;
  z-index:3;
  color:#8b99a8;
  font-size:16px;
  pointer-events:none;
}

.contact-field .form-control{
  height:58px;
  padding:20px 15px 8px 47px;
  border-radius:13px;
  border:1px solid #dfe6ed;
  color:var(--contact-ink);
  background:#fbfcfd;
}

.contact-field label{
  position:absolute;
  left:47px;
  top:18px;
  z-index:2;
  color:#7b8897;
  font-size:14px;
  pointer-events:none;
  transition:.2s ease;
}

.contact-field .form-control:focus,
.contact-field .form-control:not(:placeholder-shown){
  border-color:var(--contact-blue);
  background:#fff;
  box-shadow:0 0 0 .2rem rgba(31,105,179,.08);
}

.contact-field .form-control:focus+label,
.contact-field .form-control:not(:placeholder-shown)+label{
  top:7px;
  color:var(--contact-blue);
  font-size:10px;
  font-weight:800;
  letter-spacing:.05em;
  text-transform:uppercase;
}

.contact-select-field label{
  display:block;
  margin:0 0 7px;
  color:var(--contact-navy);
  font-size:12px;
  font-weight:800;
}

.contact-select-field>i{
  top:44px;
}

.contact-select-field .form-select{
  height:58px;
  padding-left:47px;
  border-radius:13px;
  border:1px solid #dfe6ed;
  background-color:#fbfcfd;
}

.contact-select-field .form-select:focus{
  border-color:var(--contact-blue);
  box-shadow:0 0 0 .2rem rgba(31,105,179,.08);
}

.contact-textarea-field .form-control{
  height:150px;
  padding-top:25px;
  resize:vertical;
}

.contact-textarea-field>i{
  top:20px;
}

.contact-consent{
  display:flex;
  align-items:flex-start;
  gap:11px;
  color:var(--contact-muted);
  font-size:13px;
  line-height:1.55;
  cursor:pointer;
}

.contact-consent input{
  position:absolute;
  opacity:0;
  pointer-events:none;
}

.contact-checkmark{
  width:22px;
  height:22px;
  flex:0 0 22px;
  display:grid;
  place-items:center;
  margin-top:1px;
  border-radius:7px;
  color:transparent;
  border:1px solid #ccd6df;
  background:#fff;
  transition:.2s ease;
}

.contact-consent input:checked+.contact-checkmark{
  color:#fff;
  background:var(--contact-teal);
  border-color:var(--contact-teal);
}

.contact-submit-row{
  display:flex;
  align-items:center;
  gap:20px;
  margin-top:8px;
}

.contact-submit-btn{
  min-width:180px;
  min-height:52px;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:10px;
  border:0;
  border-radius:12px;
  color:#fff;
  background:linear-gradient(135deg,var(--contact-navy),var(--contact-blue));
  box-shadow:0 14px 30px rgba(8,42,77,.18);
  font-weight:800;
  transition:.3s ease;
}

.contact-submit-btn:hover{
  color:#fff;
  transform:translateY(-3px);
  box-shadow:0 20px 38px rgba(8,42,77,.25);
}

.contact-submit-btn.is-loading i{
  animation:sendSpin .8s linear infinite;
}

@keyframes sendSpin{
  to{transform:rotate(360deg);}
}

.contact-form-note{
  display:flex;
  align-items:flex-start;
  gap:8px;
  color:#84909d;
  font-size:11px;
  line-height:1.5;
}

.contact-form-note i{
  color:var(--contact-teal);
  font-size:16px;
}

.contact-success-message{
  display:none;
  align-items:center;
  gap:14px;
  margin-top:22px;
  padding:17px;
  border-radius:15px;
  background:#ecf8f3;
  border:1px solid #ccebdd;
}

.contact-success-message.show{
  display:flex;
  animation:successReveal .4s ease both;
}

@keyframes successReveal{
  from{opacity:0;transform:translateY(10px);}
  to{opacity:1;transform:none;}
}

.contact-success-message>span{
  color:var(--contact-green);
  font-size:28px;
}

.contact-success-message strong,
.contact-success-message small{
  display:block;
}

.contact-success-message strong{
  color:#246b4a;
}

.contact-success-message small{
  margin-top:3px;
  color:#56806b;
}

.contact-topics-section{
  padding:105px 0;
  background:#fff;
}

.contact-topic-grid{
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:20px;
}

.contact-topic-card{
  position:relative;
  display:grid;
  grid-template-columns:auto 1fr auto;
  align-items:center;
  gap:16px;
  padding:22px;
  border-radius:19px;
  color:inherit;
  background:#fff;
  border:1px solid #e6ecf2;
  box-shadow:0 10px 26px rgba(8,42,77,.05);
  transition:.3s ease;
}

.contact-topic-card:hover{
  color:inherit;
  transform:translateY(-6px);
  border-color:rgba(8,42,77,.16);
  box-shadow:0 20px 38px rgba(8,42,77,.11);
}

.topic-icon{
  width:53px;
  height:53px;
  display:grid;
  place-items:center;
  border-radius:16px;
  color:#fff;
  font-size:22px;
}

.topic-gold{background:var(--contact-gold);}
.topic-red{background:var(--contact-red);}
.topic-teal{background:var(--contact-teal);}
.topic-blue{background:var(--contact-blue);}
.topic-green{background:var(--contact-green);}
.topic-purple{background:var(--contact-purple);}

.contact-topic-card h3{
  margin:0 0 5px;
  color:var(--contact-navy);
  font-family:"DM Sans",sans-serif;
  font-size:16px;
  font-weight:800;
}

.contact-topic-card p{
  margin:0;
  color:var(--contact-muted);
  font-size:12px;
  line-height:1.5;
}

.topic-arrow{
  color:#9aa6b2;
  transition:.25s ease;
}

.contact-topic-card:hover .topic-arrow{
  color:var(--contact-gold);
  transform:translate(4px,-4px);
}

@media (max-width:1199.98px){
  .contact-info-grid{
    grid-template-columns:repeat(2,minmax(0,1fr));
  }
}

@media (max-width:991.98px){
  .contact-hero{
    min-height:530px;
  }

  .contact-details-section,
  .contact-main-section,
  .contact-topics-section{
    padding:82px 0;
  }

  .contact-topic-grid{
    grid-template-columns:repeat(2,minmax(0,1fr));
  }
}

@media (max-width:767.98px){
  .contact-hero{
    min-height:490px;
    margin-top:70px;
  }

  .contact-hero-content{
    padding:58px 0;
  }

  .contact-hero h1{
    font-size:39px;
  }

  .contact-hero p{
    font-size:15px;
  }

  .contact-info-grid,
  .contact-topic-grid{
    grid-template-columns:1fr;
  }

  .contact-map-card,
  .contact-form-card{
    padding:28px 22px;
    border-radius:22px;
  }

  .animated-map{
    height:360px;
  }

  .contact-submit-row{
    align-items:stretch;
    flex-direction:column;
  }

  .contact-submit-btn{
    width:100%;
  }
}

@media (max-width:479.98px){
  .contact-hero{
    min-height:460px;
  }

  .contact-hero h1{
    font-size:33px;
  }

  .contact-hero-actions{
    display:grid;
  }

  .contact-hero-actions .btn{
    width:100%;
  }

  .contact-info-card{
    min-height:auto;
  }

  .animated-map{
    height:320px;
  }

  .map-location-card{
    left:12px;
    right:12px;
    bottom:12px;
  }

  .map-actions{
    display:grid;
  }

  .map-actions .btn{
    width:100%;
  }
}

@media (prefers-reduced-motion:reduce){
  *,
  *::before,
  *::after{
    animation-duration:.01ms!important;
    animation-iteration-count:1!important;
    transition-duration:.01ms!important;
  }
}
