/* ==========================================================================
   Nube Ninja — compatibilidad Elementor ↔ maquetación Bootstrap
   Los contenedores/widgets marcados como "nn-raw" y los widgets HTML no
   generan caja propia: el DOM visual queda idéntico al diseño original.
   ========================================================================== */
body.nn-raw-page:not(.elementor-editor-active) [data-elementor-type="wp-page"],
body.nn-raw-page:not(.elementor-editor-active) .e-con.nn-raw,
body.nn-raw-page:not(.elementor-editor-active) .e-con.nn-raw > .e-con-inner,
body:not(.elementor-editor-active) .elementor-widget-html,
body:not(.elementor-editor-active) .elementor-widget-html > .elementor-widget-container,
body:not(.elementor-editor-active) [data-elementor-type="header"],
body:not(.elementor-editor-active) [data-elementor-type="footer"],
body:not(.elementor-editor-active) .e-con.nn-raw {
  display: contents;
}

/* Contenedores Elementor que actúan como .container / .row / .col-* de Bootstrap */
.e-con.nn-bs {
  --display: block;
  --gap: 0px; --row-gap: 0px; --column-gap: 0px;
  --padding-top: 0px; --padding-right: 0px; --padding-bottom: 0px; --padding-left: 0px;
  --margin-top: 0px; --margin-bottom: 0px;
  --width: auto;
  display: block;
  max-width: none;
  min-width: 0;
}
.e-con.nn-bs.nn-block { --position: relative; }
.e-con.nn-bs.container { width: 100%; margin-left: auto; margin-right: auto; }
@media (min-width: 576px)  { .e-con.nn-bs.container { max-width: 540px; } }
@media (min-width: 768px)  { .e-con.nn-bs.container { max-width: 720px; } }
@media (min-width: 992px)  { .e-con.nn-bs.container { max-width: 960px; } }
@media (min-width: 1200px) { .e-con.nn-bs.container { max-width: 1140px; } }
@media (min-width: 1400px) { .e-con.nn-bs.container { max-width: 1320px; } }
.e-con.nn-bs.row { --display: flex; display: flex; flex-direction: row; flex-wrap: wrap; width: auto; margin-left: calc(-.5 * var(--bs-gutter-x)); margin-right: calc(-.5 * var(--bs-gutter-x)); margin-top: calc(-1 * var(--bs-gutter-y)); }
.e-con.nn-bs.row > .e-con.nn-bs { flex-shrink: 0; width: 100%; max-width: 100%; margin-top: var(--bs-gutter-y); padding-left: calc(var(--bs-gutter-x) * .5); padding-right: calc(var(--bs-gutter-x) * .5); }
@media (min-width: 992px) {
  .e-con.nn-bs.row > .e-con.nn-bs.col-lg-8  { flex: 0 0 auto; width: 66.66666667%; }
  .e-con.nn-bs.row > .e-con.nn-bs.col-lg-10 { flex: 0 0 auto; width: 83.33333333%; }
  .e-con.nn-bs.row > .e-con.nn-bs.col-lg-6  { flex: 0 0 auto; width: 50%; }
}
@media (min-width: 768px) {
  .e-con.nn-bs.row > .e-con.nn-bs.col-md-10 { flex: 0 0 auto; width: 83.33333333%; }
}

/* ==========================================================================
   Formulario Elementor Pro con la apariencia del formulario original
   ========================================================================== */
.nn-form .elementor-form-fields-wrapper { --bs-gutter-x: 1rem; --bs-gutter-y: 1rem; display: flex; flex-wrap: wrap; margin: calc(-1 * var(--bs-gutter-y)) calc(-.5 * var(--bs-gutter-x)) 0 !important; }
.nn-form .elementor-field-group { flex: 0 0 auto; width: 100%; max-width: 100%; margin: var(--bs-gutter-y) 0 0 !important; padding: 0 calc(var(--bs-gutter-x) * .5) !important; display: block; }
@media (min-width: 768px) { .nn-form .elementor-field-group.elementor-col-50 { width: 50%; } }
.nn-form .elementor-field-label {
  display: inline-block; margin-bottom: .5rem; padding: 0 !important;
  font-weight: 700 !important; color: rgba(255,255,255,.5) !important; font-family: 'Ubuntu', system-ui, sans-serif; font-size: 1rem; line-height: 1.5;
}
.nn-form .elementor-mark-required .elementor-field-label::after {
  content: "*"; color: #ff6b6b !important; font-weight: 900; margin-left: calc(.28em + 2px); padding: 0;
}
.nn-form .elementor-field-textual,
.nn-form .elementor-field-group .elementor-field-textual,
.nn-form .elementor-select-wrapper select {
  display: block; width: 100%; padding: .375rem .75rem !important; font-size: 1rem !important; font-weight: 400; line-height: 1.5 !important; min-height: 0;
  color: #fff !important; background-color: #212529 !important;
  border: var(--bs-border-width, 1px) solid #6c757d !important; border-radius: .375rem !important;
  transition: border-color .15s ease-in-out, box-shadow .15s ease-in-out; font-family: inherit; appearance: none;
}
.nn-form .elementor-field-textual:focus { border-color: #86b7fe !important; outline: 0; box-shadow: 0 0 0 .25rem rgba(13,110,253,.25) !important; }
.nn-form .elementor-field-textual::placeholder { color: rgba(33,37,41,.75); opacity: 1; }
.nn-form .elementor-select-wrapper select {
  padding-right: 2.25rem !important;
  background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e") !important;
  background-repeat: no-repeat !important; background-position: right .75rem center !important; background-size: 16px 12px !important;
}
.nn-form .elementor-select-wrapper .select-caret-down-wrapper { display: none; }
.nn-form .elementor-field-type-acceptance .elementor-field-subgroup { display: block; }
.nn-form .elementor-field-type-acceptance .elementor-field-option { display: block; min-height: 1.5rem; padding-left: 1.5rem; margin-bottom: .125rem; }
.nn-form .elementor-field-type-acceptance input[type="checkbox"] {
  float: left; margin-left: -1.5em; margin-top: .25em; width: 1em; height: 1em; vertical-align: top; appearance: none;
  background-color: #212529; border: 1px solid #6c757d; border-radius: .25em; background-repeat: no-repeat; background-position: center; background-size: contain;
}
.nn-form .elementor-field-type-acceptance input[type="checkbox"]:checked {
  background-color: #0d6efd; border-color: #0d6efd;
  background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='m6 10 3 3 6-6'/%3e%3c/svg%3e");
}
.nn-form .elementor-field-type-acceptance label { color: rgba(255,255,255,.5) !important; font-size: inherit; font-weight: 400 !important; display: inline; padding: 0 !important; }
.nn-form .elementor-field-type-acceptance .elementor-field-label { display: none; }
.nn-form .elementor-field-type-acceptance a { color: var(--ando-cyan-dark); font-weight: 700; text-decoration: none; }
.nn-form .elementor-field-type-submit { margin-top: 1.5rem !important; text-align: center; }
.nn-form .elementor-button {
  width: 100%; display: inline-block; min-height: 0 !important; padding: .5rem 3rem !important; font-size: 1.25rem !important; line-height: 1.5; border-radius: .5rem !important;
  background: var(--ando-orange) !important; color: #fff !important; border: none; font-weight: 600 !important; font-family: 'Ubuntu', system-ui, sans-serif;
  transition: background .15s ease-in-out;
}
.nn-form .elementor-button:hover { background: #e68a00 !important; }
.nn-form .elementor-button .elementor-button-content-wrapper { justify-content: center; }
.nn-form .elementor-message { margin-top: 1rem; padding: 1rem; border-radius: .375rem; font-size: 1rem; }
.nn-form .elementor-message.elementor-message-success { color: #75b798; background: #051b11; border: 1px solid #0f5132; }
.nn-form .elementor-message.elementor-message-danger { color: #ea868f; background: #2c0b0e; border: 1px solid #842029; }
.nn-form .elementor-message::before { display: none; }
.nn-form .elementor-error .elementor-field-textual,
.nn-form .elementor-error select { border-color: #ff6b6b !important; box-shadow: 0 0 0 3px rgba(255,107,107,.2) !important; }
.nn-form .elementor-field-group .elementor-message.elementor-help-inline { color: #ff6b6b; font-size: .8rem; margin-top: 4px; padding: 0; background: none; border: 0; display: block; }
.grecaptcha-badge { visibility: hidden !important; }

.nn-form .elementor-field-type-recaptcha_v3 { position: absolute !important; width: 1px !important; height: 1px !important; margin: 0 !important; padding: 0 !important; overflow: hidden; clip: rect(0 0 0 0); }
/* Tarjeta de contacto con estilo "contact-card" (igual que .contact-card .form-control) */
.contact-card .nn-form .elementor-field-textual,
.contact-card .nn-form .elementor-select-wrapper select {
  background: rgba(13,17,23,0.6) !important;
  border: 1px solid rgba(255,255,255,0.08) !important;
  color: #fff !important;
  transition: border-color .25s ease, box-shadow .25s ease, background-color .25s ease;
}
.contact-card .nn-form .elementor-field-textual:focus,
.contact-card .nn-form .elementor-select-wrapper select:focus {
  border-color: rgba(0,188,212,.55) !important;
  box-shadow: 0 0 0 .2rem rgba(0,188,212,.18) !important;
  background: rgba(13,17,23,0.85) !important;
}
.nn-form .elementor-field-type-acceptance .elementor-field-subgroup { font-size: 1rem; line-height: 1.5; }
.nn-form .elementor-field-type-acceptance .elementor-field-option { font-size: .875rem; line-height: 1.5215; }
.nn-form .elementor-field-type-acceptance input[type="checkbox"] { font-size: 1rem; }
.nn-form .elementor-field-type-acceptance .elementor-field-option label { display: inline !important; line-height: 1.5; vertical-align: baseline; }
.nn-form .elementor-field-type-acceptance .elementor-field-option { margin-bottom: .125rem; }
.nn-form .elementor-field-type-acceptance input[type="checkbox"] { background-color: #212529 !important; }
.nn-form .elementor-field-type-acceptance input[type="checkbox"]:checked { background-color: #0d6efd !important; }
