.contacto{
  padding-top:calc(80px + 36px);
  min-height:260px;
  display:flex;align-items:center;
  background: linear-gradient(90deg, #0a50ff 0%, #2462fd 40%, #759efd 70%, #dfe5fc 100%);
  position:relative;overflow:hidden;
}

.contacto-inner {
    max-width:1320px;
    margin:0 auto;
    padding:52px 80px;
    position:relative;
    z-index:2;
    width:100%;
}

.contacto-tag {
    display:inline-flex;
    align-items:center;
    gap:10px;
    margin-bottom:14px;
}

.contacto-tag-line {
    width: 36px;
    height: 2px;
    background: var(--verde-neon);
}

.contacto-tag span {
    font-family: var(--fuente-1);
    font-size:11px;
    letter-spacing:4px;
    text-transform:uppercase;
    color: var(--verde-neon);
}

.contacto h1 {
    font-family:var(--fuente-1);
    font-weight:900;
    font-size:clamp(44px,5vw,72px);
    line-height:.92;
    text-transform:uppercase;
    color:#ffffff;
    margin-bottom:14px;
}

.contacto h1 em {
    font-style:normal;
    color: var(--rojo-neon);
    background-clip:text;
    display:block
}

.contacto p {
    font-size:20px;
    font-weight:300;
    color: var(--blanco);
    max-width:500px;
}

/* layout */
.contacto-section{padding:72px 80px 0;flex:1}
.contacto-grid{
  max-width:1320px;margin:0 auto;
  display:grid;grid-template-columns:1fr 440px;
  gap:64px;align-items:start;
}

/* formulario */
.form-wrap{
  background:var(--blanco);
  border:1px solid var(--gris-borde);
  border-top:3px solid var(--rojo);
  padding:44px 48px;
}

.form-titulo{
  font-family: var(--fuente-1);
  font-weight:900;
  font-size:clamp(26px,2.5vw,36px);
  text-transform:uppercase;
  background:linear-gradient(90deg,var(--azul-1), var(--azul-2), var(--rojo),var(--rojo-neon));
  -webkit-background-clip:text;
  -webkit-text-fill-color:transparent;
  margin-bottom:6px;
  line-height:.95;
}

.form-titulo em {
    font-style:normal;
    background:linear-gradient(90deg,var(--rojo),var(--rojo-neon));
    -webkit-background-clip:text;
    -webkit-text-fill-color:transparent;
    background-clip:text;
}

.form-sub {
    font-size:16px;
    font-weight:300;
    color:var(--negro);
    margin-bottom:36px;
    line-height:1.6;
}

.form-row {
    display:grid;
    grid-template-columns:1fr 1fr;
    gap:20px;
}

.form-group {
    display:flex;
    flex-direction:column;
    gap:6px;
    margin-bottom:20px;
}

.form-group label{
  font-family: var(--fuente-1);
  font-size:12px;
  letter-spacing:3px;text-transform:uppercase;
  color:var(--azul-3);font-weight:700;
}
.form-group label
.req {
    color:var(--rojo);
    margin-left:2px;
}

.form-group input,
.form-group select,
.form-group textarea{
  font-family:var(--fuente-1);
  color:var(--azul-1);
  background:var(--gris-fondo);
  border:1px solid var(--gris-borde);
  border-bottom:2px solid var(--gris-borde);
  padding:12px 16px;
  outline:none;
  transition:border-color .2s,background .2s,box-shadow .2s;
  width:100%;
  appearance:none;
  -webkit-appearance:none;
}

.form-group input:focus,
.form-group select:focus,
.form-group textarea:focus{
  border-color:var(--azul-3);
  border-bottom-color:var(--azul-2);
  background:var(--blanco);
  box-shadow:0 2px 0 var(--azul-2);
}

.form-group input.error,
.form-group select.error,
.form-group textarea.error{
  border-bottom-color:var(--rojo-neon);
  box-shadow:0 2px 0 var(--rojo-neon);
}

.form-group input.ok{
  border-bottom-color: #00ff00;
  box-shadow:0 2px 0 #00ff00;
}

.form-group textarea {
    resize:vertical;
    min-height:120px;
}

.form-group select {
    cursor:pointer;
}

/* mensaje de error/ok bajo el campo */
.field-msg{
  font-family:'Barlow Condensed',sans-serif;font-size:10px;
  letter-spacing:1px;height:14px;
  transition:opacity .2s;
}

.field-msg.err {
    color:var(--rojo-neon);
}

.field-msg.ok-msg {
    color:var(--verde-neon-d);
}

.form-check {
    display:flex;
    align-items:flex-start;
    gap:12px;
    margin:8px 0 28px;
}

.form-check label {
    font-size:13px;
    color:var(--negro);
    line-height:1.6;
    cursor:pointer;
}

.form-check label a {
    color:var(--azul-3);
    text-decoration:none;
}

.form-check label a:hover {
    color:var(--rojo);
}

.btn-enviar{
  width:100%;
  background:var(--rojo);
  color:#ffffff;
  font-family: var(--fuente-1);
  font-weight:700;
  font-size:13px;
  text-transform:uppercase;
  padding:16px 28px;
  border:none;
  cursor:pointer;
  display:flex;
  justify-content:center;
}

.btn-enviar:hover {
    background:var(--rojo-2);
}

.btn-enviar:disabled {
    background:#aaaaaa;
    cursor:not-allowed;
    gap:12px;
}

/* mensaje */
.form-success{
    display:none;
    flex-direction:column;
    align-items:center;
    justify-content:center;
    text-align:center;
    padding:48px 20px;
    gap:16px;
}

.success-titulo {
    font-family: var(--fuente-1);
    font-weight:900;
    font-size:32px;
    text-transform:uppercase;
    color:var(--azul-1)
}

.success-txt{font-size:17px;
    color:var(--gris-texto);
    line-height:1.7;
    max-width:340px
}

.success-back {
    display:inline-flex;
    align-items:center;
    gap:8px;
    margin-top:8px;
    font-family: var(--fuente-1);
    font-weight:700;
    font-size:16px;
    text-transform:uppercase;
    color:var(--rojo);
    background:none;
    border:none;
    cursor:pointer;
    padding:0;
    transition:gap .2s
}

.success-back:hover {
    gap:14px;
}

/* panel lateral */
.info-panel {
    display:flex;
    flex-direction:column;
    gap:24px;
}

/* tarjeta info */
.info-card{
  background:var(--azul-5);
  padding:32px;
  position:relative;
  overflow:hidden;
}

.info-card::before{
  content:'';position:absolute;top:-60px;right:-60px;
  width:200px;height:200px;border-radius:50%;
  background:radial-gradient(circle,#ffffff0a,transparent 70%);
}
 
.info-card-tag {
    font-family: var(--fuente-1);
    font-size:12px;
    letter-spacing:3px;
    font-weight:900;
    text-transform:uppercase;
    color:var(--rojo);
    margin-bottom:16px;
}

.info-card-titulo {
    font-family: var(--fuente-1);
    font-weight:900;
    font-size:22px;
    text-transform:uppercase;
    color: var(--azul-1);
    margin-bottom: 24px;
    line-height:1;
}

.info-item {
    display:flex;
    align-items:flex-start;
    gap:14px;
    margin-bottom:20px;
}

.info-item:last-of-type {
    margin-bottom:0;
}

.info-icon{
  width:38px;height:38px;flex-shrink:0;
  border-left:2px solid var(--verde-neon);
  display:flex;align-items:center;justify-content:center;
}

.info-item-lbl {
    font-family: var(--fuente-1);
    font-size:15px;
    letter-spacing:1px;
    text-transform:uppercase;
    color: var(--azul-1);
    margin-bottom:4px;
}

.info-item-val {
    font-size:14px;
    color: #415280;
    line-height:1.55;
    text-decoration:none;
    display:block;
    transition:color .2s;
}

.info-item-val:hover {
    color:var(--verde-neon-d);
}

/* horario */
.horario-card {
    background:var(--gris-fondo);
    border:1px solid var(--gris-borde);
    border-left:3px solid var(--rojo);
    padding:24px 28px;
}

.horario-titulo {
    font-family: var(--fuente-1);
    font-size:16px;
    letter-spacing:1.75px;
    text-transform:uppercase;
    color:var(--azul-1);
    margin-bottom:16px;
    font-weight:800;
}

.horario-row {
    display:flex;
    justify-content:space-between;
    align-items:center;
    padding:8px 0;
    border-bottom:1px solid var(--gris-borde);
    font-size:13px;
}

.horario-row:last-child {
    border-bottom:none;
}

.horario-dia {
    color:var(--azul-3);
    font-weight:600;
    font-size:15px;
}

.horario-hora {
    font-family:var(--fuente-1);
    font-weight:600;
    font-size:14px;
    letter-spacing:1px;
    color:var(--azul-2);
}

.horario-cerrado {
    color:var(--gris-texto);
    font-style:italic;
    font-size: 14px;
}

/* redes */
.redes-card{
    padding:24px 28px;
}

.redes-titulo {
    font-family: var(--fuente-1);
    font-size:13px;
    font-weight:1000;
    letter-spacing:3px;
    text-transform:uppercase;
    color:var(--azul-3);
    margin-bottom:1px;
    margin-top: 15px;
}

.redes-lista {
    display:flex;
    gap:10px;
    border-color: black;
}

.red-btn{
    flex:1;
    display:flex;
    align-items:center;
    justify-content:center;
    gap:8px;
    font-family: var(--fuente-1);
    font-size:11px;
    letter-spacing:1px;
    text-transform:uppercase;
    font-weight:700;
    padding:12px 8px;
    text-decoration:none;
    color:var(--gris-texto);
    transition:border-color .2s,color .2s,background .2s;
    border-radius: 10px;
}


.red-btn.mail:hover {
    border-color:var(--verde-neon-d);
    color:var(--verde-neon-d)
}

/* mapa */
.mapa-section {
    margin-top:72px;
}

.mapa-header {
    max-width:1320px;
    margin:0 auto;
    padding:0 80px 24px;
    display:flex;align-items:flex-end;
    justify-content:space-between;
    gap:20px;
}

.mapa-titulo {
    font-family: var(--fuente-1);
    font-weight:900;
    font-size:clamp(24px,2.5vw,34px);
    text-transform:uppercase;
    background:linear-gradient(90deg,var(--azul-2),var(--azul-3));
    -webkit-background-clip:text;
    -webkit-text-fill-color:transparent;
    line-height:.95;
}

.mapa-cta-dir {
    display:inline-flex;
    align-items:center;
    gap:8px;
    font-family:'Barlow Condensed',sans-serif;
    font-weight:700;
    font-size:13px;
    text-transform:uppercase;
    color:var(--rojo);
    text-decoration:none;
}

.mapa-cta-dir:hover {
    transition: color .2s;
    color:var(--verde-neon);
}

.mapa-wrap {
    border-top:1px var(--azul-3);
    border-style: solid;
    position:relative;
    width:100%;
    height:440px;
}

.mapa-wrap iframe {
    width:100%;
    height:100%;
    border:none;
    display:block;
    filter:saturate(.9) contrast(1.05);
}