/* Formulario compartido (contacto y descarga). Solo variables de tokens.css. */
.boll-form__grid { display: grid; gap: 1.1rem; grid-template-columns: 1fr; }
.boll-field { display: grid; gap: .45rem; align-content: start; }
.boll-field label { font-size: var(--boll-fs-small); font-weight: 700; color: var(--boll-color-text); display: flex; align-items: baseline; gap: .35rem; }
.boll-field__req { color: var(--boll-color-primary); }
.boll-field__opt { color: var(--boll-color-faint); font-weight: 500; font-size: .8em; }

.boll-field input,
.boll-field select,
.boll-field textarea {
	width: 100%; padding: .9rem 1rem; border-radius: var(--boll-radius-sm);
	background: var(--boll-color-surface-2); border: 1.5px solid var(--boll-color-border);
	color: var(--boll-color-text); font-size: 1rem; line-height: 1.4; transition: border-color .2s, box-shadow .2s, background .2s;
}
.boll-field textarea { resize: vertical; min-height: 6.5rem; }
.boll-field select {
	appearance: none; -webkit-appearance: none; cursor: pointer; padding-right: 2.6rem;
	background-image: linear-gradient(45deg, transparent 50%, var(--boll-color-muted) 50%), linear-gradient(135deg, var(--boll-color-muted) 50%, transparent 50%);
	background-position: right 1.25rem center, right .9rem center; background-size: .35rem .35rem; background-repeat: no-repeat;
}
.boll-field select:invalid { color: var(--boll-color-faint); }
.boll-field select option { color: var(--boll-color-text); background: var(--boll-color-surface-2); }
.boll-field input::placeholder,
.boll-field textarea::placeholder { color: var(--boll-color-faint); }
.boll-field input:hover,
.boll-field select:hover,
.boll-field textarea:hover { border-color: var(--boll-color-border-strong); }
.boll-field input:focus,
.boll-field select:focus,
.boll-field textarea:focus { outline: none; border-color: var(--boll-color-primary); box-shadow: 0 0 0 4px var(--boll-color-primary-soft); background: var(--boll-color-surface); }
.boll-field.is-invalid input,
.boll-field.is-invalid select,
.boll-field.is-invalid textarea { border-color: var(--boll-color-danger); }
.boll-field__error { color: var(--boll-color-danger); font-size: var(--boll-fs-small); line-height: 1.35; }

/* Honeypot: fuera de pantalla, no display:none (algunos bots lo detectan). */
.boll-hp { position: absolute; left: -9999px; top: auto; width: 1px; height: 1px; overflow: hidden; }

.boll-form__submit { width: 100%; margin-top: 1.25rem; }
.boll-form__submit.is-loading { pointer-events: none; }
.boll-form__submit.is-loading svg { animation: boll-spin .8s linear infinite; }
@keyframes boll-spin { to { transform: rotate(360deg); } }
.boll-form__legal { margin-top: .9rem; color: var(--boll-color-faint); font-size: var(--boll-fs-small); line-height: 1.5; }
.boll-form__legal a { text-decoration: underline; text-underline-offset: 2px; }
.boll-form__status { margin-top: 1rem; padding: .8rem 1rem; border-radius: var(--boll-radius-sm); font-size: .95rem; background: var(--boll-color-primary-soft); border: 1px solid color-mix(in srgb, var(--boll-color-primary) 45%, transparent); }

/* Estado de éxito */
.boll-form__done { display: grid; gap: .9rem; justify-items: start; padding-block: .5rem; }
.boll-form__done[hidden] { display: none; }
.boll-form__done-icon { display: grid; place-items: center; width: 3.25rem; height: 3.25rem; border-radius: 50%; background: var(--boll-color-primary-soft); color: var(--boll-color-primary); }
.boll-form__done-icon svg { width: 1.6rem; height: 1.6rem; }
.boll-form__done h3 { font-family: var(--boll-font-sub); font-size: var(--boll-fs-h3); font-weight: var(--boll-fw-sub); line-height: var(--boll-lh-tight); }
.boll-form__done p { color: var(--boll-color-muted); }

@media (min-width: 768px) {
	.boll-form__grid { grid-template-columns: 1fr 1fr; }
	.boll-field--wide { grid-column: 1 / -1; }
}
