/*
 * Formularios (cita con Fluent Forms, empleo propio) + popup «Solicita tu cita» + botones flotantes.
 * El CSS de Fluent no se carga: aquí está todo lo necesario para su marcado (.ff-el-*), con la marca de servinec.com
 * (azul #0071e3, Plus Jakarta Sans + Inter, radios grandes). Sin JS: todo en un paso. Con JS (.is-steps): 2 pasos.
 */
.snec-fx {
	--fx-blue: var(--c-blue, #0071e3);
	--fx-blue-d: var(--c-blue-dark, #005bb8);
	--fx-blue-l: #f0f6ff;
	--fx-ring: rgba(0, 113, 227, .16);
	--fx-ink: #101828;
	--fx-ink-2: #344054;
	--fx-muted: #667085;
	--fx-line: #d0d5dd;
	--fx-line-2: #eaecf0;
	--fx-err: #d92d20;
	--fx-err-l: #fef3f2;
	--fx-ok: #12b76a;
	--fx-r: 14px;
	position: relative;
	font-family: var(--font-body);
	color: var(--fx-ink);
}
.snec-sr, .snec-fx.is-steps .snec-fx__step-h + .snec-opts > .ff-el-input--label { position: absolute !important; width: 1px; height: 1px; margin: -1px; padding: 0; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0; }
.snec-fx [hidden], .snec-fx .ff_force_hide, .snec-fx .ff-hidden { display: none !important; }
/* Con JS (html.snec-js, puesto en el <head>) y antes de que formularios.js monte los pasos: se pinta ya como quedará
   (solo el paso 1, hueco de la barra de progreso, botón «Continuar», etiqueta del grupo oculta). Sin JS: todo en un paso. */
.snec-js .snec-fx:not(.is-steps):has(.snec-fx__step)::before { content: ""; display: block; height: 5px; margin: 0 0 1.75rem; }
.snec-js .snec-fx:not(.is-steps) .snec-fx__step:not([data-snec-step="1"]) { display: none; }
.snec-js .snec-fx:not(.is-steps) .snec-fx__step[data-snec-step="1"] .snec-fx__nav[hidden] { display: flex !important; }
.snec-js .snec-fx:not(.is-steps) .snec-fx__step-h + .snec-opts > .ff-el-input--label { position: absolute !important; width: 1px; height: 1px; margin: -1px; padding: 0; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0; }
.snec-fx form, .snec-fx fieldset { margin: 0; min-width: 0; }
.snec-fx .ff-message-success { margin: 0; padding: 1rem; border-radius: var(--fx-r); background: #ecfdf3; color: #05603a; font: 500 .9375rem/1.5 var(--font-body); }
.snec-fx.is-enhanced .ff-message-success { display: none; }

/* Pasos (sin JS: uno debajo del otro, todo visible). */
.snec-fx { container-type: inline-size; }
.snec-fx__step { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1rem; align-items: start; }
.snec-fx__step > * { grid-column: 1 / -1; min-width: 0; }
.snec-fx__step > .snec-half { grid-column: auto; }
.snec-fx__step:focus { outline: none; }
.snec-fx__step + .snec-fx__step { margin-top: 2rem; padding-top: 2rem; border-top: 1px solid var(--fx-line-2); }
.snec-fx__step-h { display: grid; gap: .3rem; margin-bottom: .35rem; }
.snec-fx__step-n { font: 700 .75rem/1.2 var(--font-head); letter-spacing: .06em; text-transform: uppercase; color: var(--fx-blue); }
.snec-fx__step-t { font: 600 clamp(1.3rem, 1.1rem + .8vw, 1.6rem)/1.2 var(--font-head); letter-spacing: -.02em; color: var(--fx-ink); }
.snec-fx.is-steps .snec-fx__step + .snec-fx__step { margin-top: 0; padding-top: 0; border-top: 0; }
.snec-fx.is-steps .snec-fx__step:not(.is-on) { display: none; }
.snec-fx .snec-fx__step.is-in-next { animation: snec-step-next .45s cubic-bezier(.2, .8, .2, 1) both; }
.snec-fx .snec-fx__step.is-in-prev { animation: snec-step-prev .45s cubic-bezier(.2, .8, .2, 1) both; }
@keyframes snec-step-next { from { opacity: 0; transform: translateX(32px); } }
@keyframes snec-step-prev { from { opacity: 0; transform: translateX(-32px); } }

/* Barra de progreso por segmentos (la crea formularios.js). */
.snec-fx__prog { display: grid; grid-template-columns: repeat(var(--n, 3), minmax(0, 1fr)); gap: .5rem; margin: 0 0 1.75rem; }
.snec-fx__prog-s { display: grid; min-width: 0; }
.snec-fx__prog-s i { position: relative; display: block; height: 5px; border-radius: 5px; background: var(--fx-line-2); overflow: hidden; }
.snec-fx__prog-s i::after { content: ""; position: absolute; inset: 0; border-radius: inherit; background: linear-gradient(90deg, var(--fx-blue), #4fa3ff); transform: scaleX(0); transform-origin: left; transition: transform .55s cubic-bezier(.2, .8, .2, 1); }
.snec-fx__prog-s.is-on i { background: #d0d5dd; } /* Paso actual: tramo vacío algo más oscuro; se llena al completarlo. */
.snec-fx__prog-s.is-done i::after, .snec-fx.is-done .snec-fx__prog-s i::after { transform: scaleX(1); }
.snec-fx { --snec-check: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='3.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 6 9 17l-5-5'/%3E%3C/svg%3E"); }

/* Campos de texto: etiqueta dentro de la caja (estilo «relleno»). */
.snec-fx .ff-el-group { position: relative; margin: 0; }
.snec-fx .ff-el-input--label { display: flex; align-items: baseline; margin: 0 0 .65rem; }
.snec-fx .ff-el-input--label label, .snec-fx .ff-el-label { font: 600 .9375rem/1.35 var(--font-head); color: var(--fx-ink-2); }
.snec-fx .ff-el-is-required.asterisk-right > label::after, .snec-fx .ff-el-is-required.asterisk-right > .ff-el-label::after { content: "*"; margin-left: .2rem; color: #f04438; }
.snec-fx .ff-el-group:not(.snec-opts):not(.ff-el-tc) > .ff-el-input--label { position: absolute; top: .7rem; left: 1.05rem; right: 1rem; z-index: 1; margin: 0; pointer-events: none; }
.snec-fx .ff-el-group:not(.snec-opts):not(.ff-el-tc) > .ff-el-input--label label { font: 600 .8125rem/1.2 var(--font-head); letter-spacing: .01em; color: #667085; transition: color .2s; }
.snec-fx .ff-el-group:not(.snec-opts):not(.ff-el-tc):focus-within > .ff-el-input--label label { color: var(--fx-blue); }
.snec-fx .ff-el-form-control { display: block; width: 100%; min-height: 3.75rem; padding: 1.7rem 1.05rem .6rem; border: 1.5px solid transparent; border-radius: 16px; background: #f4f6fa; color: var(--fx-ink); font: 500 1rem/1.35 var(--font-body); transition: border-color .2s, box-shadow .2s, background-color .2s; -webkit-appearance: none; appearance: none; }
.snec-fx textarea.ff-el-form-control { min-height: 5rem; padding-top: 1.85rem; resize: vertical; }
.snec-fx select.ff-el-form-control { padding-right: 2.75rem; background: #f4f6fa url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23667085' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E") right 1rem center / 1.15rem no-repeat; cursor: pointer; }
.snec-fx .ff-el-form-control::placeholder { color: #a7b0be; opacity: 1; font-weight: 400; }
.snec-fx .ff-el-form-control:hover { background-color: #eef1f6; }
.snec-fx .ff-el-form-control:focus { outline: none; border-color: var(--fx-blue); background-color: #fff; box-shadow: 0 0 0 4px var(--fx-ring); }
.snec-fx .ff-el-is-error .ff-el-form-control { border-color: #f04438; background-color: #fff6f5; }
.snec-fx .ff-el-is-error .ff-el-form-control:focus { box-shadow: 0 0 0 4px rgba(240, 68, 56, .14); }
.snec-fx .is-valid input.ff-el-form-control { padding-right: 2.75rem; background: #f4f6fa url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%2312b76a' stroke-width='2.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 6 9 17l-5-5'/%3E%3C/svg%3E") right 1rem center / 1.1rem no-repeat; }
.snec-fx .is-valid input.ff-el-form-control:focus { background-color: #fff; }
.snec-fx .error.text-danger { display: flex; align-items: flex-start; gap: .4rem; margin: .5rem 0 0; font: 500 .8125rem/1.45 var(--font-body); color: var(--fx-err); animation: snec-err-in .25s ease both; }
.snec-fx .error.text-danger::before { content: ""; flex: none; width: 1rem; height: 1rem; margin-top: .05rem; background: currentColor; -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2.2' stroke-linecap='round'%3E%3Ccircle cx='12' cy='12' r='9.5'/%3E%3Cpath d='M12 7.5v5.5M12 16.5h.01'/%3E%3C/svg%3E") center / contain no-repeat; mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2.2' stroke-linecap='round'%3E%3Ccircle cx='12' cy='12' r='9.5'/%3E%3Cpath d='M12 7.5v5.5M12 16.5h.01'/%3E%3C/svg%3E") center / contain no-repeat; }
.snec-fx .ff-el-is-error.snec-opts > .ff-el-input--content { animation: snec-shake .4s ease; }
@keyframes snec-err-in { from { opacity: 0; transform: translateY(-4px); } }
@keyframes snec-shake { 20%, 60% { transform: translateX(-5px); } 40%, 80% { transform: translateX(5px); } }

/* Opciones (radios reales de Fluent debajo: teclado y lectores) como tarjetas. */
.snec-fx .snec-opts .ff-el-form-check { position: relative; margin: 0; }
.snec-fx .snec-opts .ff-el-form-check-label { position: relative; display: flex; align-items: center; gap: .75rem; height: 100%; border: 1.5px solid #e4e7ec; border-radius: 18px; background: #fff; color: var(--fx-ink); font: 600 .9375rem/1.3 var(--font-head); cursor: pointer; -webkit-tap-highlight-color: transparent; transition: border-color .2s, background-color .2s, box-shadow .25s, transform .25s; }
.snec-fx .snec-opts .ff-el-form-check-input { position: absolute; inset: 0; z-index: 1; width: 100%; height: 100%; margin: 0; opacity: 0; cursor: pointer; }
.snec-fx .snec-opts .ff-el-form-check-label:hover { border-color: #b2ccff; box-shadow: 0 10px 24px -14px rgba(0, 72, 160, .45); transform: translateY(-2px); }
.snec-fx .snec-opts .ff-el-form-check-label:has(input:checked) { border-color: var(--fx-blue); background: linear-gradient(180deg, #f6faff, #eaf3ff); box-shadow: 0 0 0 3px var(--fx-ring), 0 12px 28px -16px rgba(0, 72, 160, .6); }
.snec-fx .snec-opts .ff-el-form-check-label:has(input:focus-visible) { outline: 3px solid var(--fx-blue); outline-offset: 3px; }
.snec-fx .ff-el-is-error.snec-opts .ff-el-form-check-label { border-color: #fda29b; }
.snec-opt__ico { display: grid; place-items: center; flex: none; width: 2.75rem; height: 2.75rem; border-radius: 14px; background: linear-gradient(145deg, #eef5ff, #dcebff); color: var(--fx-blue); transition: background .25s, color .25s, transform .35s cubic-bezier(.34, 1.56, .64, 1); }
.snec-opt__ico .icon { width: 1.35rem; height: 1.35rem; }
.snec-fx .ff-el-form-check-label:has(input:checked) .snec-opt__ico { background: linear-gradient(145deg, #2b8cff, var(--fx-blue)); color: #fff; transform: scale(1.06) rotate(-4deg); }
.snec-opt__t { display: grid; gap: .2rem; min-width: 0; }
.snec-opt__s { font: 500 .8125rem/1.35 var(--font-body); color: var(--fx-muted); }
.snec-opt__tick { position: absolute; top: .75rem; right: .75rem; display: grid; place-items: center; width: 1.4rem; height: 1.4rem; border-radius: 50%; background: var(--fx-blue); color: #fff; transform: scale(0); transition: transform .35s cubic-bezier(.34, 1.56, .64, 1); }
.snec-opt__tick::before { content: ""; width: .75rem; height: .75rem; background: currentColor; -webkit-mask: var(--snec-check) center / contain no-repeat; mask: var(--snec-check) center / contain no-repeat; }
.snec-fx .ff-el-form-check-label:has(input:checked) .snec-opt__tick { transform: scale(1); }
.snec-fx .snec-opts > .ff-el-input--content > .error { grid-column: 1 / -1; flex-basis: 100%; margin-top: .125rem; }
/* Servicio: tarjetas grandes (icono, título, subtítulo). */
.snec-fx .snec-opts--tiles > .ff-el-input--content { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .75rem; }
.snec-fx .snec-opts--tiles .ff-el-form-check-label { flex-direction: column; align-items: flex-start; gap: .75rem; min-height: 7rem; padding: 1.1rem 2.25rem 1.1rem 1.1rem; }
/* Aparato: tarjetas compactas (icono arriba). */
.snec-fx .snec-opts--cards > .ff-el-input--content { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .6rem; }
.snec-fx .snec-opts--cards .ff-el-form-check-label { flex-direction: column; justify-content: center; gap: .55rem; min-height: 6.5rem; padding: .9rem .6rem; text-align: center; font-size: .875rem; }
.snec-fx .snec-opts--cards .snec-opt__ico { width: 2.5rem; height: 2.5rem; border-radius: 12px; }
.snec-fx .snec-opts--cards .snec-opt__tick { top: .5rem; right: .5rem; width: 1.2rem; height: 1.2rem; }
/* Marca: logos. */
.snec-fx .snec-opts--brands { margin-top: .5rem; }
.snec-fx .snec-opts--brands > .ff-el-input--content { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .6rem; }
.snec-fx .snec-opts--brands .ff-el-form-check-label { justify-content: center; min-height: 4rem; padding: .6rem 1rem; text-align: center; font-size: .875rem; }
.snec-fx .snec-opts--brands .snec-opt__t { display: none; }
.snec-fx .snec-opts--brands .ff-el-form-check:not(:has(.snec-opt__logo)) .snec-opt__t { display: grid; } /* La tarjeta sin logo («Otra marca…») enseña su texto (también con el aviso de error debajo). */
.snec-fx .snec-opts--brands .ff-el-form-check:last-child .ff-el-form-check-label { gap: .5rem; }
.snec-fx .snec-opts--brands .ff-el-form-check:last-child .snec-opt__ico { width: 2rem; height: 2rem; border-radius: 10px; }
.snec-opt__logo img { display: block; width: auto; height: 1.5rem; max-width: 7.5rem; object-fit: contain; filter: grayscale(1); opacity: .7; transition: filter .25s, opacity .25s, transform .3s; }
.snec-fx .ff-el-form-check-label:hover .snec-opt__logo img, .snec-fx .ff-el-form-check-label:has(input:checked) .snec-opt__logo img { filter: none; opacity: 1; }
.snec-fx .ff-el-form-check-label:has(input:checked) .snec-opt__logo img { transform: scale(1.05); }
.snec-fx .snec-opts--brands .snec-opt__tick, .snec-fx .snec-opts--cards .snec-opt__tick { top: .45rem; right: .45rem; }
@container (min-width: 560px) {
	.snec-fx .snec-opts--tiles > .ff-el-input--content { grid-template-columns: repeat(3, minmax(0, 1fr)); }
	.snec-fx .snec-opts--cards > .ff-el-input--content { grid-template-columns: repeat(4, minmax(0, 1fr)); }
	.snec-fx .snec-opts--brands > .ff-el-input--content { grid-template-columns: repeat(4, minmax(0, 1fr)); }
}
@keyframes snec-pop { from { transform: scale(0); } }

/* Privacidad (casilla). */
.snec-fx .ff-el-tc .ff-el-form-check-label { display: flex; align-items: flex-start; gap: .75rem; font: 500 .875rem/1.5 var(--font-body); color: var(--fx-ink-2); cursor: pointer; }
.snec-fx .ff_tc_checkbox { display: block; flex: none; line-height: 0; }
.snec-fx .ff-el-tc .ff-el-form-check-input { flex: none; width: 1.375rem; height: 1.375rem; margin: 0; border: 1.5px solid var(--fx-line); border-radius: 7px; background: #fff center / .9rem no-repeat; cursor: pointer; transition: background-color .2s, border-color .2s, box-shadow .2s; -webkit-appearance: none; appearance: none; }
.snec-fx .ff-el-tc .ff-el-form-check-input:checked { border-color: var(--fx-blue); background-color: var(--fx-blue); background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23fff' stroke-width='3.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 6 9 17l-5-5'/%3E%3C/svg%3E"); animation: snec-pop .25s ease; }
.snec-fx .ff-el-tc .ff-el-form-check-input:focus-visible { outline: none; box-shadow: 0 0 0 4px var(--fx-ring); border-color: var(--fx-blue); }
.snec-fx .ff-el-is-error .ff-el-tc .ff-el-form-check-input { border-color: #f04438; }
.snec-fx .ff_t_c { padding-top: .05rem; }
.snec-fx .ff_t_c a { color: var(--fx-blue); text-underline-offset: .15em; }
.snec-fx__safe { margin: -.5rem 0 0; font: 500 .8125rem/1.45 var(--font-body); color: var(--fx-muted); }

/* Botones. */
.snec-fx .ff_submit_btn_wrapper, .snec-fx__nav { display: flex; gap: .625rem; margin: .75rem 0 0; }
.snec-fx__next, .snec-fx .ff-btn-submit { position: relative; display: inline-flex; flex: 1; align-items: center; justify-content: center; gap: .6rem; min-height: 3.5rem; padding: .75rem 1.75rem; border: 0; border-radius: 999px; background: linear-gradient(135deg, #2b8cff, var(--fx-blue) 55%, #005bc4); color: #fff; font: 600 1.0625rem/1.2 var(--font-head); cursor: pointer; box-shadow: 0 14px 30px -12px rgba(0, 113, 227, .75); transition: background-color .2s, transform .2s, box-shadow .2s; -webkit-tap-highlight-color: transparent; }
.snec-fx__next:hover, .snec-fx .ff-btn-submit:hover { background: var(--fx-blue-d); transform: translateY(-1px); box-shadow: 0 14px 28px -12px rgba(0, 113, 227, .75); }
.snec-fx__next:active, .snec-fx .ff-btn-submit:active { transform: translateY(0) scale(.99); }
.snec-fx__next .icon, .snec-btn__t .icon { width: 1.2rem; height: 1.2rem; transition: transform .25s; }
.snec-fx__next:hover .icon, .snec-fx .ff-btn-submit:hover .snec-btn__t .icon { transform: translateX(3px); }
.snec-btn__t { display: inline-flex; align-items: center; gap: .6rem; }
.snec-btn__busy { position: absolute; inset: 0; display: none; align-items: center; justify-content: center; gap: .6rem; }
.snec-btn__busy i { width: 1.15rem; height: 1.15rem; border: 2.5px solid rgba(255, 255, 255, .35); border-top-color: #fff; border-radius: 50%; animation: snec-spin .75s linear infinite; }
.snec-fx .ff-btn-submit.ff-working, .snec-fx .ff-btn-submit[aria-busy="true"] { cursor: progress; background: var(--fx-blue-d); transform: none; }
.snec-fx .ff-btn-submit.ff-working .snec-btn__t, .snec-fx .ff-btn-submit[aria-busy="true"] .snec-btn__t { visibility: hidden; }
.snec-fx .ff-btn-submit.ff-working .snec-btn__busy, .snec-fx .ff-btn-submit[aria-busy="true"] .snec-btn__busy { display: flex; }
@keyframes snec-spin { to { transform: rotate(360deg); } }
.snec-fx__back { display: inline-flex; flex: none; align-items: center; justify-content: center; gap: .35rem; min-height: 3.5rem; padding: .75rem 1.25rem .75rem 1rem; border: 0; border-radius: 999px; background: #f2f4f7; color: var(--fx-ink-2); font: 600 .9375rem/1.2 var(--font-head); cursor: pointer; transition: background-color .2s; }
.snec-fx__back:hover { background: #e4e7ec; }
.snec-fx__back .icon { width: 1.15rem; height: 1.15rem; }

/* Avisos generales. */
.snec-fx__alert, .snec-fx .ff-errors-in-stack .error { display: block; margin: 0 0 1.25rem; padding: .875rem 1rem; border: 1px solid #fecdca; border-radius: var(--fx-r); background: var(--fx-err-l); color: #b42318; font: 500 .875rem/1.5 var(--font-body); animation: snec-err-in .25s ease both; }
.snec-fx .ff-errors-in-stack .error { margin: 1rem 0 0; }
.snec-fx .ff-errors-in-stack .error::before { display: none; }
.snec-fx .ff-errors-in-stack .error-clear { float: right; margin-left: .5rem; cursor: pointer; }
.snec-fx__alert--ok { border-color: #abefc6; background: #ecfdf3; color: #05603a; }
.snec-form__hp { position: absolute !important; left: -9999px; width: 1px; height: 1px; overflow: hidden; }

/* Adjuntar CV (formulario propio). */
.snec-file { position: relative; }
.snec-file__ui { display: none; }
.snec-js .snec-file input { position: absolute; inset: 0; z-index: 1; width: 100%; height: 100%; opacity: 0; cursor: pointer; }
.snec-js .snec-file__ui { display: flex; align-items: center; gap: .875rem; min-height: 4.5rem; padding: .875rem 1rem; border: 1.5px dashed var(--fx-line); border-radius: var(--fx-r); background: #fcfcfd; transition: border-color .2s, background-color .2s; }
.snec-js .snec-file:hover .snec-file__ui, .snec-js .snec-file input:focus-visible + .snec-file__ui { border-color: var(--fx-blue); background: var(--fx-blue-l); }
.snec-js .snec-file input:focus-visible + .snec-file__ui { box-shadow: 0 0 0 4px var(--fx-ring); }
.snec-file__ico { display: grid; place-items: center; flex: none; width: 2.75rem; height: 2.75rem; border-radius: 12px; background: var(--fx-blue-l); color: var(--fx-blue); }
.snec-file__ico .icon { width: 1.25rem; height: 1.25rem; }
.snec-file__t { font: 600 .9375rem/1.35 var(--font-head); color: var(--fx-ink-2); }
.snec-file__n:not(:empty) { margin-left: auto; padding: .3rem .7rem; border-radius: 999px; background: #ecfdf3; color: #05603a; font: 500 .8125rem/1.3 var(--font-body); overflow-wrap: anywhere; }
.snec-fx .ff-el-is-error .snec-file__ui { border-color: #f04438; background: #fffbfa; }

/* Éxito. */
.snec-fx__ok { display: grid; justify-items: center; gap: .5rem; padding: 1rem 0 .5rem; text-align: center; }
.snec-fx__ok:focus { outline: none; }
.snec-fx.is-done .snec-fx__ok { animation: snec-ok-in .55s var(--ease, ease) both; }
.snec-fx__check { width: 5.5rem; height: 5.5rem; margin-bottom: .75rem; border-radius: 50%; fill: none; stroke: var(--fx-ok); stroke-width: 3; stroke-linecap: round; stroke-linejoin: round; }
.snec-fx__check circle { fill: #ecfdf3; stroke-dasharray: 158; stroke-dashoffset: 0; transform: rotate(-90deg); transform-origin: center; }
.snec-fx__check path { stroke-width: 3.6; stroke-dasharray: 36; stroke-dashoffset: 0; }
.snec-fx.is-done .snec-fx__check { animation: snec-halo 1.4s .7s ease-out both, snec-bump .5s .85s ease both; }
.snec-fx.is-done .snec-fx__check circle { animation: snec-draw .7s .1s ease-out both; }
.snec-fx.is-done .snec-fx__check path { animation: snec-draw-c .4s .65s ease-out both; }
@keyframes snec-draw { from { stroke-dashoffset: 158; fill: #fff; } }
@keyframes snec-draw-c { from { stroke-dashoffset: 36; } }
@keyframes snec-halo { from { box-shadow: 0 0 0 0 rgba(18, 183, 106, .35); } to { box-shadow: 0 0 0 1.4rem rgba(18, 183, 106, 0); } }
@keyframes snec-bump { 50% { transform: scale(1.08); } }
@keyframes snec-ok-in { from { opacity: 0; transform: translateY(14px) scale(.98); } }
.snec-fx__ok-h { font: 600 1.625rem/1.25 var(--font-head); color: var(--fx-ink); }
.snec-fx__ok-p { max-width: 21.45em; font: 500 1.0625rem/1.5 var(--font-body); color: #475467; }
.snec-fx__ok-s { margin-top: .75rem; font: 500 .875rem/1.45 var(--font-body); color: var(--fx-muted); }
.snec-fx__ok-btns { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .625rem; width: 100%; max-width: 30rem; margin-top: .25rem; }
.snec-fx__call, .snec-fx__wa { display: flex; align-items: center; justify-content: center; gap: .7rem; min-height: 3.75rem; padding: .625rem 1rem; border-radius: 18px; font: 600 .9375rem/1.2 var(--font-head); text-align: left; text-decoration: none; transition: transform .2s, background-color .2s, box-shadow .2s; }
.snec-fx__call > span, .snec-fx__wa > span { display: grid; }
.snec-fx__call small, .snec-fx__wa small { font: 500 .8125rem/1.3 var(--font-body); opacity: .85; }
.snec-fx__call .icon, .snec-fx__wa .icon { flex: none; width: 1.35rem; height: 1.35rem; }
.snec-fx__call { background: var(--fx-blue); color: #fff; box-shadow: 0 10px 24px -12px rgba(0, 113, 227, .8); }
.snec-fx__call:hover { background: var(--fx-blue-d); transform: translateY(-1px); }
.snec-fx__wa { border: 1.5px solid #abefc6; background: #ecfdf3; color: #05603a; }
.snec-fx__wa:hover { background: #dcfae6; transform: translateY(-1px); }
.snec-fx__again { margin-top: .75rem; padding: .5rem; border: 0; background: none; color: var(--fx-muted); font: 500 .875rem/1.3 var(--font-body); text-decoration: underline; text-underline-offset: .2em; cursor: pointer; }
.snec-fx__again:hover { color: var(--fx-ink); }
.snec-fx[data-snec-edit] .snec-fx__ok { margin-top: 2rem; padding: 1.5rem 1rem; border: 1px dashed var(--fx-line); border-radius: 20px; }

@media (max-width: 600px) {
	.snec-fx__step { grid-template-columns: minmax(0, 1fr); gap: 1.125rem; }
	.snec-fx__step > .snec-half { grid-column: 1 / -1; }
	.snec-fx .snec-opts--tiles > .ff-el-input--content { gap: .5rem; }
	.snec-fx .snec-opts--tiles .ff-el-form-check-label { gap: .6rem; min-height: 6.25rem; padding: .85rem 1.6rem .85rem .85rem; font-size: .875rem; }
	.snec-fx .snec-opts--tiles .snec-opt__ico { width: 2.4rem; height: 2.4rem; border-radius: 12px; }
	.snec-opt__s { font-size: .8125rem; }
	.snec-fx .snec-opt__tick { top: .55rem; right: .55rem; width: 1.2rem; height: 1.2rem; }
	.snec-fx .ff-el-form-control { min-height: 3.5rem; }
	.snec-fx__ok-btns { grid-template-columns: minmax(0, 1fr); }
	.snec-fx__ok-h { font-size: 1.4rem; }
}
@media (max-width: 420px) {
	.snec-fx__back { width: 3.5rem; padding: 0; }
	.snec-fx__back span { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
	.snec-fx .ff-btn-submit, .snec-fx__next { padding-inline: 1.25rem; }
}
@media (prefers-reduced-motion: reduce) {
	.snec-fx *, .snec-fx *::before, .snec-fx.is-done .snec-fx__check, .snec-pop__panel, .snec-pop__overlay { animation-duration: .01ms !important; animation-delay: 0s !important; transition-duration: .01ms !important; }
}

/* Popup: ventana centrada en 2 columnas (panel azul de confianza + asistente); móvil: pantalla completa. Sin JS: :target. */
.snec-pop { position: fixed; inset: 0; z-index: 1000; display: none; }
.snec-pop:target, .snec-pop.is-open { display: block; }
.snec-pop__overlay { position: absolute; inset: 0; background: rgba(8, 15, 30, .6); -webkit-backdrop-filter: blur(6px); backdrop-filter: blur(6px); animation: snec-fade .3s ease backwards; }
.snec-pop__panel { position: absolute; top: 50%; left: 50%; display: grid; grid-template-columns: minmax(0, 340px) minmax(0, 1fr); width: min(1080px, calc(100% - 3rem)); max-height: calc(100% - 3rem); border-radius: 28px; background: #fff; box-shadow: 0 40px 100px -20px rgba(8, 15, 30, .55); overflow: hidden; transform: translate(-50%, -50%); animation: snec-pop-in .5s cubic-bezier(.2, .8, .2, 1) backwards; }
@keyframes snec-pop-in { from { opacity: 0; transform: translate(-50%, -46%) scale(.97); } }
.snec-pop__aside { position: relative; display: flex; flex-direction: column; gap: 1.1rem; padding: 0 2rem 2rem; background: #f5f5f7; border-right: 1px solid var(--c-line); color: var(--c-ink-soft); overflow-y: auto; }
.snec-pop__media { flex: 1 1 210px; min-height: 210px; margin: 0 -2rem; background: var(--c-surface-2); overflow: hidden; }
.snec-pop__media-img { display: block; width: 100%; height: 100%; object-fit: cover; object-position: 50% 30%; }
.snec-pop__foto { position: relative; width: 3.5rem; height: 3.5rem; border: 4px solid #f5f5f7; border-radius: 16px; object-fit: cover; background: #fff; }
.snec-pop__media + .snec-pop__foto { margin: -2.85rem 0 -.25rem; }
.snec-pop__aside > :first-child:not(.snec-pop__media) { margin-top: 2rem; }
.snec-pop__h { margin: 0; font: 600 clamp(1.6rem, 1.3rem + 1vw, 2rem)/1.15 var(--font-head); letter-spacing: -.02em; color: var(--c-ink); }
.snec-pop__nota { display: inline-flex; align-items: center; gap: .45rem; align-self: flex-start; margin: 0; font: 600 .875rem/1.35 var(--font-head); color: var(--c-blue); }
.snec-pop__nota .icon { flex: none; width: 1rem; height: 1rem; }
.snec-pop__tel { display: grid; gap: .2rem; padding-top: 1.1rem; border-top: 1px solid var(--c-line); color: var(--c-ink); text-decoration: none; }
.snec-pop__tel small { font: 500 .8125rem/1.3 var(--font-body); color: var(--c-text); }
.snec-pop__tel strong { display: inline-flex; align-items: center; gap: .5rem; font: 600 1.25rem/1.2 var(--font-head); }
.snec-pop__tel .icon { width: 1.1rem; height: 1.1rem; color: var(--c-blue); }
.snec-pop__tel:hover strong { color: var(--c-blue); }
.snec-pop__main { position: relative; display: flex; flex-direction: column; min-height: 0; }
.snec-pop__close { position: absolute; top: 1rem; right: 1rem; z-index: 3; display: grid; place-items: center; width: 2.5rem; height: 2.5rem; border-radius: 50%; background: #f2f4f7; color: #344054; transition: background-color .2s, transform .3s; }
.snec-pop__close:hover { background: #e4e7ec; transform: rotate(90deg); }
.snec-pop__close .icon { width: 1.25rem; height: 1.25rem; }
.snec-pop__in { flex: 1; min-height: 0; max-height: calc(100vh - 3rem); overflow-y: auto; overscroll-behavior: contain; padding: 2.25rem 2.5rem 2rem; scroll-behavior: smooth; }
html.snec-pop-open { overflow: hidden; }
@keyframes snec-fade { from { opacity: 0; } }
@keyframes snec-in-b { from { opacity: 0; transform: translateY(40px); } }
@media (max-width: 860px) {
	.snec-pop__panel { top: 0; left: 0; grid-template-columns: minmax(0, 1fr); grid-template-rows: auto minmax(0, 1fr); width: 100%; height: 100%; max-height: none; border-radius: 0; transform: none; animation: snec-in-b .4s cubic-bezier(.2, .8, .2, 1) backwards; }
	.snec-pop__aside { flex-direction: row; flex-wrap: wrap; align-items: center; gap: .3rem .75rem; padding: 1rem 4rem 1rem 1.1rem; border-right: 0; border-bottom: 1px solid var(--c-line); overflow: visible; }
	.snec-pop__aside > :first-child:not(.snec-pop__media) { margin-top: 0; }
	.snec-pop__media, .snec-pop__tel, .snec-pop__foto { display: none; }
	.snec-pop__h { font-size: 1.25rem; }
	.snec-pop__nota { font-size: .8125rem; }
	.snec-pop__close { position: fixed; top: .8rem; right: .8rem; background: #fff; box-shadow: 0 0 0 1px var(--c-line); }
	.snec-pop__in { max-height: none; padding: 1.25rem 1rem 2rem; }
}

/* Botones flotantes que abren el popup. */
.snec-flot { position: fixed; left: 50%; bottom: max(1.25rem, calc(13vh - 70px)); z-index: 40; display: flex; align-items: center; gap: .5rem; width: 270px; height: 70px; padding: 8px; border-radius: 89px; background: #fff; box-shadow: 0 10px 30px rgba(0, 0, 0, .15); transform: translateX(-50%); animation: snec-fade 1s .6s ease both; }
.snec-flot__img { flex: none; width: 54px; height: 54px; border-radius: 50%; object-fit: cover; }
.snec-flot__btn { flex: 1; display: grid; place-items: center; height: 100%; border-radius: 89px; background: var(--c-blue); color: #fff; font: 600 .9375rem/1.2 var(--font-head); text-decoration: none; transition: background-color var(--dur); }
.snec-flot__btn:hover { background: #000; }
.snec-flot-movil { display: none; }
@media (max-width: 767px) {
	.snec-flot { display: none; }
	.snec-flot-movil { position: fixed; left: 50%; bottom: 30px; z-index: 40; display: inline-flex; align-items: center; justify-content: center; min-height: 48px; padding: .75rem 1.75rem; border-radius: var(--radius-pill); background: var(--c-blue); color: #fff; font: 600 .9375rem/1.2 var(--font-head); text-decoration: none; white-space: nowrap; transform: translateX(-50%); box-shadow: 0 8px 24px rgba(0, 113, 227, .35); }
}
html.snec-pop-open .snec-flot, html.snec-pop-open .snec-flot-movil { visibility: hidden; }
/* Con un formulario de cita a la vista en la página (p. ej. /contacto/), los flotantes sobran y podrían taparlo. */
.snec-flot, .snec-flot-movil { transition: opacity .3s; }
html.snec-fx-visible .snec-flot, html.snec-fx-visible .snec-flot-movil { opacity: 0; visibility: hidden; transition: opacity .3s, visibility 0s .3s; }

