/**
 * @file forms.css — поля форм: подписи, поля, флажки, состояния, сообщения. Значения только из токенов (src/theme.css).
 * Поле: видимая рамка (контраст к фону не меньше 3:1, --ee-field-border), фон отличается от страницы, высота не меньше 44 px.
 * Кнопки отправки — css/buttons.css. Раскладка форм подвала и фильтров — в их компонентах.
 */
label, .form-item__label, legend { display: block; margin-bottom: var(--ee-s1); font-size: var(--ee-fs-meta); line-height: var(--ee-lh-meta); font-weight: var(--ee-fw-strong); color: var(--foreground); }
.form-required::after, .js-form-required::after { content: " *"; color: var(--destructive); }
input[type="text"], input[type="email"], input[type="tel"], input[type="search"], input[type="url"], input[type="number"], input[type="password"], input[type="date"], input[type="time"], select, textarea {
  width: 100%; min-height: var(--ee-control); padding: var(--ee-s2) var(--ee-s4);
  border: var(--ee-line) solid var(--ee-field-border); border-radius: var(--ee-radius-field);
  background-color: var(--ee-field-bg); color: var(--foreground); font: inherit; box-shadow: none;
  transition: border-color var(--ee-motion), box-shadow var(--ee-motion);
}
textarea { min-height: calc(var(--ee-control) * 3); resize: vertical; }
input::placeholder, textarea::placeholder { color: var(--muted-foreground); opacity: 1; }
input:hover:not(:disabled):not(:focus), select:hover:not(:disabled):not(:focus), textarea:hover:not(:disabled):not(:focus) { border-color: var(--foreground); }
input:focus, select:focus, textarea:focus { outline: 3px solid color-mix(in oklab, var(--ee-field-focus) 40%, transparent); outline-offset: 1px; border-color: var(--ee-field-focus); }
input:disabled, select:disabled, textarea:disabled { opacity: 0.55; cursor: not-allowed; background-color: var(--muted); }
select { appearance: none; padding-right: var(--ee-s6); background-image: linear-gradient(45deg, transparent 50%, var(--foreground) 50%), linear-gradient(135deg, var(--foreground) 50%, transparent 50%); background-position: calc(100% - var(--ee-s5)) 55%, calc(100% - var(--ee-s4)) 55%; background-size: var(--ee-s1) var(--ee-s1), var(--ee-s1) var(--ee-s1); background-repeat: no-repeat; }
input[type="file"] { max-width: 100%; }
/* флажки и переключатели: свои, видимые */
input[type="checkbox"], input[type="radio"] {
  appearance: none; flex: none; width: var(--ee-check); height: var(--ee-check); min-height: 0; margin: 0 var(--ee-s3) 0 0; padding: 0; vertical-align: top;
  border: var(--ee-line-strong) solid var(--ee-field-border); background-color: var(--ee-field-bg); background-position: center; background-repeat: no-repeat; background-size: 80%; cursor: pointer;
}
input[type="checkbox"] { border-radius: var(--ee-s1); }
input[type="radio"] { border-radius: 50%; }
input[type="checkbox"]:checked { background-color: var(--primary); border-color: var(--primary); background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='white' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m3.5 8.5 3 3 6-7'/%3E%3C/svg%3E"); }
input[type="radio"]:checked { border-color: var(--primary); background-image: radial-gradient(circle, var(--primary) 0 45%, transparent 50%); }
input[type="checkbox"]:focus-visible, input[type="radio"]:focus-visible { outline: 3px solid color-mix(in oklab, var(--ee-field-focus) 45%, transparent); outline-offset: 2px; }
.form-item, .js-form-item { margin: 0 0 var(--ee-s4); }
.form-type-checkbox, .form-type-radio, .js-form-type-checkbox, .js-form-type-radio { display: flex; align-items: flex-start; }
.form-type-checkbox label, .form-type-radio label, .js-form-type-checkbox label, .js-form-type-radio label { margin: 0; font-size: var(--ee-fs-card); line-height: var(--ee-lh-card); font-weight: var(--ee-fw-regular); }
.form-item__description, .description, .form-item .description { margin-top: var(--ee-s1); font-size: var(--ee-fs-meta); line-height: var(--ee-lh-meta); color: var(--muted-foreground); }
.form-type-checkbox .description, .js-form-type-checkbox .description { margin-left: calc(var(--ee-check) + var(--ee-s3)); }
fieldset { min-width: 0; margin: 0 0 var(--ee-s4); padding: var(--ee-s4) var(--ee-s4) var(--ee-s2); border: var(--ee-line) solid var(--border); border-radius: var(--radius); }
legend { padding: 0 var(--ee-s2); font-size: var(--ee-fs-body); line-height: var(--ee-lh-body); font-weight: var(--ee-fw-heading); }
.webform-submission-form { gap: 0; }
.form-actions { display: flex; flex-wrap: wrap; align-items: center; gap: var(--ee-s3); margin-top: var(--ee-s5); }
/* состояния: ошибка, успех */
input.error, select.error, textarea.error, .form-item--error input, .form-item--error select, .form-item--error textarea, [aria-invalid="true"] { border-color: var(--destructive); background-color: color-mix(in oklab, var(--destructive) 5%, var(--ee-field-bg)); }
input.is-valid, .form-item--valid input { border-color: var(--ee-status-ok); }
.form-item--error-message, .form-item__error-message, .error-message { margin-top: var(--ee-s1); font-size: var(--ee-fs-meta); line-height: var(--ee-lh-meta); font-weight: var(--ee-fw-strong); color: var(--destructive); }
.form-item--error .form-item__label, .form-item--error label, label.error { color: var(--destructive); }
/* сообщения */
.messages { margin: var(--ee-s4) 0; padding: var(--ee-s3) var(--ee-s4); border: var(--ee-line) solid var(--border); border-left-width: var(--ee-s1); border-radius: var(--radius); background: var(--card); }
.messages ul { margin: var(--ee-s1) 0 0; padding-left: var(--ee-s5); list-style: disc; }
.messages--status { border-color: var(--ee-status-ok); background: color-mix(in oklab, var(--ee-status-ok) 8%, var(--background)); }
.messages--warning { border-color: var(--ee-status-warn); background: color-mix(in oklab, var(--ee-status-warn) 9%, var(--background)); }
.messages--error { border-color: var(--destructive); background: color-mix(in oklab, var(--destructive) 8%, var(--background)); }
/* фильтры представлений: в строку, поле не шире 20rem */
.views-exposed-form { display: flex; flex-wrap: wrap; align-items: flex-end; gap: var(--ee-s4); margin-bottom: var(--ee-s5); }
.views-exposed-form .form-item { flex: 1 1 var(--ee-filter-w); min-width: 0; max-width: var(--ee-filter-max); margin: 0; }
.views-exposed-form .form-actions { margin: 0; }
@media (max-width: 40rem) { .views-exposed-form .form-item { max-width: none; } .views-exposed-form .form-actions, .views-exposed-form .form-actions input { width: 100%; } }
/* подпись «Разрешаю…» под телефоном (рецепт contacts) */
.ee-phone-consent { margin-top: calc(-1 * var(--ee-s2)); }
.ee-phone-consent label, .ee-phone-consent .form-item__label { font-size: var(--ee-fs-meta); line-height: var(--ee-lh-meta); font-weight: var(--ee-fw-regular); color: var(--muted-foreground); }
