/* ZD Forms — estilos del formulario (frontend) */
.zdf-wrap{
	--zdf-accent:#2563eb;
	--zdf-radius:14px;
	--zdf-border:#e2e8f0;
	--zdf-text:#0f172a;
	--zdf-muted:#64748b;
	--zdf-bg:#ffffff;
	--zdf-field-bg:#f8fafc;
	--zdf-error:#dc2626;
	max-width:640px;
	margin:0 auto;
	font-family:inherit;
	color:var(--zdf-text);
	box-sizing:border-box;
}
.zdf-wrap *,.zdf-wrap *::before,.zdf-wrap *::after{box-sizing:border-box;}

.zdf-form{
	background:var(--zdf-bg);
	border:1px solid var(--zdf-border);
	border-radius:var(--zdf-radius);
	padding:28px;
	box-shadow:0 10px 40px -20px rgba(15,23,42,.25);
}
.zdf-style-minimal .zdf-form{border:none;box-shadow:none;padding:8px 0;background:transparent;}
.zdf-style-glass .zdf-form{
	background:rgba(255,255,255,.65);
	backdrop-filter:blur(14px);
	-webkit-backdrop-filter:blur(14px);
	border:1px solid rgba(255,255,255,.5);
}

.zdf-head{margin-bottom:20px;}
.zdf-title{margin:0 0 6px;font-size:1.45rem;font-weight:800;line-height:1.15;letter-spacing:-.01em;color:var(--zdf-title,var(--zdf-text));}
.zdf-desc{margin:0;color:var(--zdf-muted);font-size:.95rem;line-height:1.5;}

/* Grilla de campos */
.zdf-fields{display:grid;grid-template-columns:1fr 1fr;gap:16px;}
.zdf-field{display:flex;flex-direction:column;gap:6px;min-width:0;}
.zdf-w-full{grid-column:1 / -1;}
.zdf-w-half{grid-column:span 1;}
@media (max-width:520px){ .zdf-fields{grid-template-columns:1fr;} .zdf-w-half{grid-column:1 / -1;} }

.zdf-label{font-size:.85rem;font-weight:600;color:var(--zdf-text);}
.zdf-req{color:var(--zdf-error);}

.zdf-control{position:relative;display:flex;align-items:center;}
.zdf-control .zdf-icon{
	position:absolute;left:13px;top:50%;transform:translateY(-50%);
	width:16px;height:16px;fill:var(--zdf-muted);opacity:.75;
	pointer-events:none;transition:fill .2s,opacity .2s;z-index:1;
}
.zdf-control:focus-within .zdf-icon{fill:var(--zdf-accent);opacity:1;}

/* Campos de texto (excluye checkbox/radio, que van nativos) */
.zdf-form input:not([type=checkbox]):not([type=radio]),
.zdf-form textarea,
.zdf-form select{
	width:100%;
	padding:12px 14px;
	font-size:.95rem;
	font-family:inherit;
	color:var(--zdf-input-text,var(--zdf-text));
	background:var(--zdf-field-bg);
	border:1.5px solid var(--zdf-border);
	border-radius:10px;
	outline:none;
	transition:border-color .18s, box-shadow .18s, background .18s;
	-webkit-appearance:none;appearance:none;
}
.zdf-control .zdf-icon ~ input{padding-left:40px;}
.zdf-form textarea{resize:vertical;min-height:100px;line-height:1.5;}
.zdf-form select{
	background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath fill='%2364748b' d='M6 8 0 2l1.4-1.4L6 5.2 10.6.6 12 2z'/%3E%3C/svg%3E");
	background-repeat:no-repeat;background-position:right 14px center;padding-right:34px;cursor:pointer;
}
.zdf-form input:not([type=checkbox]):not([type=radio]):focus,
.zdf-form textarea:focus,
.zdf-form select:focus{
	border-color:var(--zdf-accent);
	box-shadow:0 0 0 4px color-mix(in srgb, var(--zdf-accent) 15%, transparent);
}

/* Checkbox / radio nativos con acento */
.zdf-form input[type=checkbox],
.zdf-form input[type=radio]{
	width:18px;height:18px;flex:none;margin:0;cursor:pointer;
	accent-color:var(--zdf-accent);
}
.zdf-form input::placeholder,
.zdf-form textarea::placeholder{color:#94a3b8;}

/* Etiquetas flotantes */
.zdf-layout-floating .zdf-field{position:relative;padding-top:2px;}
.zdf-layout-floating .zdf-type-textarea .zdf-label,
.zdf-layout-floating .zdf-type-text .zdf-label,
.zdf-layout-floating .zdf-type-email .zdf-label,
.zdf-layout-floating .zdf-type-number .zdf-label,
.zdf-layout-floating .zdf-type-url .zdf-label{
	position:absolute;top:13px;left:14px;background:transparent;color:var(--zdf-muted);
	font-weight:500;pointer-events:none;transition:.16s ease;z-index:2;
}
.zdf-layout-floating .zdf-control .zdf-icon ~ input + .zdf-label{left:38px;}
.zdf-layout-floating input:focus + .zdf-label,
.zdf-layout-floating input:not(:placeholder-shown) + .zdf-label{
	top:-8px;left:10px;font-size:.72rem;color:var(--zdf-accent);
	background:var(--zdf-bg);padding:0 6px;font-weight:600;
}

/* Opciones (radio / checkbox) */
.zdf-choices{display:flex;flex-direction:column;gap:8px;}
.zdf-choice{
	display:flex;align-items:center;gap:10px;padding:10px 12px;cursor:pointer;
	border:1.5px solid var(--zdf-border);border-radius:10px;background:var(--zdf-field-bg);
	transition:border-color .16s,background .16s;font-size:.92rem;
}
.zdf-choice:hover{border-color:var(--zdf-accent);}
.zdf-choice input{width:auto;margin:0;accent-color:var(--zdf-accent);}
.zdf-choice:has(input:checked){border-color:var(--zdf-accent);background:color-mix(in srgb,var(--zdf-accent) 8%,#fff);}

/* Teléfono internacional */
.zdf-tel{position:relative;display:flex;align-items:stretch;width:100%;}
.zdf-tel-btn{
	display:flex;align-items:center;gap:6px;padding:0 12px;cursor:pointer;
	background:var(--zdf-field-bg);border:1.5px solid var(--zdf-border);border-right:none;
	border-radius:10px 0 0 10px;font-size:.9rem;color:var(--zdf-text);white-space:nowrap;
	transition:background .16s;
}
.zdf-tel-btn:hover{background:#eef2f7;}
.zdf-tel-flag{font-size:1.15rem;line-height:1;}
.zdf-tel-caret{font-size:.65rem;color:var(--zdf-muted);}
.zdf-tel-input{border-radius:0 10px 10px 0 !important;}
.zdf-tel.zdf-tel-open .zdf-tel-btn{border-color:var(--zdf-accent);}

.zdf-tel-dropdown{
	position:absolute;top:calc(100% + 6px);left:0;z-index:40;width:min(320px,100%);
	background:#fff;border:1px solid var(--zdf-border);border-radius:12px;
	box-shadow:0 20px 50px -20px rgba(15,23,42,.4);overflow:hidden;
}
.zdf-tel-search{
	width:100%;border:none !important;border-bottom:1px solid var(--zdf-border) !important;
	border-radius:0 !important;background:#fff !important;padding:11px 14px !important;
}
.zdf-tel-list{list-style:none;margin:0;padding:6px;max-height:260px;overflow-y:auto;}
.zdf-tel-item{
	display:flex;align-items:center;gap:10px;padding:9px 10px;border-radius:8px;cursor:pointer;font-size:.9rem;
}
.zdf-tel-item:hover{background:var(--zdf-field-bg);}
.zdf-tel-item-name{flex:1;}
.zdf-tel-item-dial{color:var(--zdf-muted);font-variant-numeric:tabular-nums;}

/* Consentimientos */
.zdf-consents{display:flex;flex-direction:column;gap:10px;margin-top:18px;}
.zdf-consent{display:flex;gap:10px;align-items:flex-start;font-size:.82rem;color:var(--zdf-muted);line-height:1.45;cursor:pointer;}
.zdf-consent input{width:auto;margin-top:2px;accent-color:var(--zdf-accent);flex:none;}
.zdf-consent a{color:var(--zdf-accent);text-decoration:underline;}
.zdf-consent.zdf-invalid span{color:var(--zdf-error);}

/* Captcha */
.zdf-captcha{margin-top:18px;}
.zdf-captcha-code{display:flex;align-items:center;gap:12px;flex-wrap:wrap;}
.zdf-cap-challenge{
	display:inline-flex;align-items:center;gap:8px;padding:8px 14px;border-radius:10px;
	background:repeating-linear-gradient(45deg,#eef2f7,#eef2f7 6px,#e2e8f0 6px,#e2e8f0 12px);
	border:1.5px dashed var(--zdf-border);
}
.zdf-cap-text{font-family:"Courier New",monospace;font-size:1.4rem;font-weight:700;letter-spacing:6px;
	color:var(--zdf-text);user-select:none;text-decoration:line-through;text-decoration-color:#cbd5e1;}
.zdf-cap-refresh{background:none;border:none;font-size:1.1rem;cursor:pointer;color:var(--zdf-muted);padding:4px;}
.zdf-cap-refresh:hover{color:var(--zdf-accent);transform:rotate(90deg);transition:.2s;}
.zdf-cap-input{max-width:200px;}

/* Honeypot */
.zdf-hp{position:absolute !important;left:-9999px !important;width:1px;height:1px;overflow:hidden;}

/* Botón enviar */
.zdf-actions{margin-top:22px;}
.zdf-submit{
	position:relative;display:inline-flex;align-items:center;justify-content:center;gap:8px;
	width:100%;padding:14px 22px;font-size:1rem;font-weight:700;font-family:inherit;cursor:pointer;
	color:var(--zdf-btn-text,#fff);
	background:var(--zdf-btn,var(--zdf-accent));border:none;border-radius:11px;overflow:hidden;
	transition:transform .12s, box-shadow .2s, filter .2s;
	box-shadow:0 12px 30px -12px color-mix(in srgb,var(--zdf-btn,var(--zdf-accent)) 80%,transparent);
}
.zdf-submit:hover{filter:brightness(1.05);box-shadow:0 16px 34px -12px color-mix(in srgb,var(--zdf-btn,var(--zdf-accent)) 80%,transparent);}
.zdf-submit:active{transform:translateY(1px) scale(.995);}
.zdf-submit:disabled{cursor:default;opacity:.85;}
.zdf-spinner{display:none;width:18px;height:18px;border:2.5px solid rgba(255,255,255,.45);border-top-color:#fff;border-radius:50%;animation:zdf-spin .7s linear infinite;}
.zdf-submit.zdf-loading .zdf-spinner{display:inline-block;}
.zdf-submit.zdf-loading .zdf-submit-label{opacity:.75;}
@keyframes zdf-spin{to{transform:rotate(360deg);}}

/* Mensajes / errores */
.zdf-error{display:none;font-size:.78rem;color:var(--zdf-error);}
.zdf-field.zdf-invalid .zdf-error{display:block;}
.zdf-field.zdf-invalid input,
.zdf-field.zdf-invalid textarea,
.zdf-field.zdf-invalid select,
.zdf-field.zdf-invalid .zdf-tel-btn{border-color:var(--zdf-error);}
.zdf-field.zdf-invalid{animation:zdf-shake .3s;}
@keyframes zdf-shake{0%,100%{transform:translateX(0);}25%{transform:translateX(-5px);}75%{transform:translateX(5px);}}

.zdf-msg{margin-top:16px;font-size:.92rem;line-height:1.5;border-radius:10px;}
.zdf-msg-ok{padding:16px 18px;background:#f0fdf4;border:1px solid #bbf7d0;color:#166534;font-weight:600;}
.zdf-msg-error{padding:12px 16px;background:#fef2f2;border:1px solid #fecaca;color:#991b1b;}

.zdf-admin-note{padding:14px;background:#fffbeb;border:1px solid #fde68a;border-radius:10px;color:#92400e;font-size:.9rem;}

/* Popup de política de privacidad */
body.zdf-modal-lock{overflow:hidden;}
.zdf-modal{position:fixed;inset:0;z-index:99999;display:flex;align-items:center;justify-content:center;padding:20px;}
.zdf-modal[hidden]{display:none;}
.zdf-modal-backdrop{position:absolute;inset:0;background:rgba(15,23,42,.55);backdrop-filter:blur(2px);-webkit-backdrop-filter:blur(2px);animation:zdf-fade .2s ease;}
.zdf-modal-dialog{
	position:relative;display:flex;flex-direction:column;width:min(720px,100%);max-height:88vh;
	background:var(--zdf-bg,#fff);color:var(--zdf-text,#0f172a);
	border:1px solid var(--zdf-border,#e2e8f0);border-radius:16px;overflow:hidden;
	box-shadow:0 30px 80px -20px rgba(0,0,0,.5);animation:zdf-pop .22s ease;
}
@keyframes zdf-fade{from{opacity:0;}to{opacity:1;}}
@keyframes zdf-pop{from{opacity:0;transform:translateY(14px) scale(.98);}to{opacity:1;transform:none;}}
.zdf-modal-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:16px 22px;border-bottom:1px solid var(--zdf-border,#e2e8f0);}
.zdf-modal-head h3{margin:0;font-size:1.15rem;font-weight:800;color:var(--zdf-title,var(--zdf-text));}
.zdf-modal-close{background:none;border:none;font-size:1.7rem;line-height:1;cursor:pointer;color:var(--zdf-muted,#64748b);padding:0 4px;}
.zdf-modal-close:hover{color:var(--zdf-accent);}
.zdf-modal-content{padding:20px 22px;overflow-y:auto;font-size:.95rem;line-height:1.65;}
.zdf-modal-content h1,.zdf-modal-content h2,.zdf-modal-content h3,.zdf-modal-content h4{margin:1.1em 0 .5em;line-height:1.25;}
.zdf-modal-content p{margin:0 0 1em;}
.zdf-modal-content ul,.zdf-modal-content ol{margin:0 0 1em 1.4em;}
.zdf-modal-content a{color:var(--zdf-accent);text-decoration:underline;}
.zdf-modal-content img{max-width:100%;height:auto;}
.zdf-modal-foot{padding:14px 22px;border-top:1px solid var(--zdf-border,#e2e8f0);text-align:right;}
.zdf-modal-accept{
	background:var(--zdf-btn,var(--zdf-accent));color:var(--zdf-btn-text,#fff);border:none;
	padding:10px 20px;border-radius:10px;font-weight:700;font-family:inherit;cursor:pointer;font-size:.92rem;
}
.zdf-modal-accept:hover{filter:brightness(1.05);}

/* Entrada suave */
.zdf-form{animation:zdf-in .4s ease;}
@keyframes zdf-in{from{opacity:0;transform:translateY(8px);}to{opacity:1;transform:none;}}

/* Modo oscuro SOLO cuando el tema del formulario es "auto" (sigue al sistema).
   Con los temas claro/oscuro/personalizado mandan las variables inline. */
@media (prefers-color-scheme:dark){
	.zdf-wrap.zdf-theme-auto{
		--zdf-border:#334155;--zdf-text:#e2e8f0;--zdf-title:#f8fafc;--zdf-muted:#94a3b8;
		--zdf-bg:#0f172a;--zdf-field-bg:#1e293b;--zdf-input-text:#e2e8f0;
	}
	.zdf-wrap.zdf-theme-auto .zdf-tel-dropdown,
	.zdf-wrap.zdf-theme-auto .zdf-tel-search{background:#0f172a !important;}
}

/* La tarjeta y el desplegable de país siguen el fondo del tema */
.zdf-tel-dropdown{background:var(--zdf-bg);}
.zdf-tel-search{background:var(--zdf-bg) !important;color:var(--zdf-input-text,var(--zdf-text));}
.zdf-tel-item:hover{background:var(--zdf-field-bg);}
