/* Страницы пригласительных ссылок (ТЗ 4.1): регистрация по ссылке и раздел кабинета; экран подтверждения политики (accounts/consent.py); регистрация по письму (блок с галочками .consent, accounts/auth_register.html). Подключается только ими. */
.consent-form { display: flex; flex-direction: column; gap: 14px; }
.consent-form .note a { text-decoration: underline; }
.consent-leave { margin: 0; }
.consent-leave button { min-height: 44px; padding: 8px 0; border: 0; background: none; color: var(--mm-link); font: inherit; text-decoration: underline; cursor: pointer; }
.consent-leave button:hover { color: var(--mm-link-hover); }
.consent { display: flex; flex-direction: column; gap: 6px; }
.consent__row { display: flex; align-items: flex-start; gap: 12px; font-size: 14px; line-height: 20px; color: var(--night-ink-2); cursor: pointer; }
.consent__box { flex: none; width: 22px; height: 22px; margin: 0; accent-color: var(--amber); cursor: pointer; }
.consent--invalid .consent__row { color: var(--night-ink); }
.login__form .mm-field__error a { color: inherit; text-decoration: underline; }

/* Кабинет: форма создания ссылки, страница «Ссылка создана», карточка */
.invite-form .form-row { display: block; padding: 12px 0; border: 0; }
.invite-form .form-row label { display: block; float: none; width: auto; min-width: 0; padding: 0 0 6px; font-weight: 600; }
.invite-form .flex-container { display: block; }
.invite-form input[type="text"], .invite-form input[type="number"], .invite-form input[type="datetime-local"] { box-sizing: border-box; width: 100%; max-width: 420px; padding: 10px 12px; font-size: 16px; }
.invite-form .form-row .help { margin: 6px 0 0; padding: 0; max-width: 640px; font-size: 13px; }
.invite-form .errorlist { margin: 0 0 6px; padding: 0; list-style: none; color: var(--error-fg); }
.invite-access h2 { margin: 0 0 8px; }
.invite-legend { margin: 0 0 6px; font-weight: 600; }
.invite-choices { display: flex; flex-direction: column; gap: 2px; }
/* Выше правила «.invite-form .form-row label» (оно делает подписи полей блочными и жирными), иначе выбор не встаёт в строку */
.invite-form .form-row .invite-choice { display: flex; align-items: flex-start; gap: 10px; width: auto; min-width: 0; min-height: 36px; padding: 6px 0; font-weight: 400; cursor: pointer; }
/* Админка на телефоне растягивает любое поле строки (.aligned .form-row input { flex: 1 1 auto }): без этого кружок выбора становится на пол-экрана */
.invite-form .form-row .invite-choice input { flex: 0 0 auto; width: 18px; height: 18px; max-width: none; margin: 2px 0 0; }
.invite-choice span { min-width: 0; overflow-wrap: anywhere; }
.invite-modules { margin: 6px 0 6px 28px; padding: 8px 12px; border-left: 3px solid var(--hairline-color); }
/* На телефоне админка даёт прямым блокам строки ширину «100vw минус поля»: с отступом и рамкой они вылезали бы за экран */
.invite-form .form-row .invite-modules, .invite-form .form-row .invite-term-fields { box-sizing: border-box; width: auto; max-width: 100%; }
.invite-modules[hidden], .invite-extra[hidden] { display: none; }
.invite-extra { margin: 12px 0; max-width: 640px; }
.invite-extra summary { cursor: pointer; font-weight: 600; padding: 8px 0; }
.invite-term-fields { display: grid; grid-template-columns: max-content minmax(0, 1fr); gap: 6px 12px; align-items: center; margin: 8px 0 0 28px; max-width: 520px; }
.invite-form .invite-term-fields label { float: none; width: auto; padding: 0; font-weight: 400; }
.invite-term-fields input { max-width: 200px; }
@media (max-width: 767px) {
  .invite-modules { margin-left: 0; }
  .invite-term-fields { grid-template-columns: minmax(0, 1fr); margin-left: 0; }
  .invite-term-fields input { max-width: 100%; }
}
.invite-fixed { margin: 12px 0 20px; padding: 10px 14px; border: 1px solid var(--hairline-color); border-radius: 6px; background: var(--darkened-bg); max-width: 640px; }
.invite-created__field { display: flex; flex-wrap: wrap; gap: 8px; align-items: flex-start; max-width: 760px; margin: 6px 0 20px; }
.invite-created__field input, .invite-created__field textarea { box-sizing: border-box; flex: 1 1 320px; min-width: 0; font-family: var(--font-mono); font-size: 14px; padding: 10px 12px; }
.invite-created__field textarea { min-height: 128px; resize: vertical; }
.invite-created__field button { flex: none; padding: 10px 18px; cursor: pointer; }
.invite-created__status { min-height: 1.4em; color: var(--body-quiet-color); }
.invite-warning { max-width: 760px; margin: 12px 0; padding: 10px 14px; border: 1px solid var(--amber); border-radius: 6px; background: var(--message-warning-bg); }
.invite-params { margin-bottom: 24px; }
.invite-params th { width: 190px; text-align: left; }
.invite-state--active { font-weight: 600; color: var(--green-ink, #1f6b3a); }
.invite-hint { font-size: 14px; color: var(--body-quiet-color); }
.invite-redemptions { width: 100%; max-width: 760px; }
.invite-actions { margin-top: 24px; max-width: 640px; }
.invite-actions form { margin-bottom: 16px; }
.invite-actions input[type="text"] { box-sizing: border-box; width: 100%; max-width: 520px; padding: 10px 12px; font-size: 16px; }
.invite-revoke { padding: 10px 18px; border: 0; border-radius: 4px; background: var(--delete-button-bg); color: #fff; font-weight: 600; cursor: pointer; }
@media (max-width: 767px) { .invite-params th { width: 40%; } }
