@import url('https://fonts.googleapis.com/css2?family=Montserrat:wght@400;500;600;700&display=swap');

/* ── Base ── */
.ks-anketa {
  max-width: 720px;
  margin: 0 auto;
  font-family: 'Montserrat', sans-serif;
  color: #2D2B55;
}
.ks-anketa * {
  box-sizing: border-box;
  font-family: inherit;
}

/* ── Card ── */
.ks-anketa-card {
  background: #fff;
  border-radius: 12px;
  padding: 28px;
  box-shadow: 0 1px 4px rgba(0,0,0,0.05);
  margin-bottom: 20px;
}

/* ── Step counter ── */
.ks-step-counter {
  text-align: center;
  font-size: 12px;
  font-weight: 600;
  color: #7B7B9E;
  letter-spacing: .5px;
  text-transform: uppercase;
  margin-bottom: 8px;
}

/* ── Step indicator ── */
.ks-steps {
  display: flex;
  gap: 8px;
  justify-content: center;
  margin-bottom: 8px;
}
.ks-step-dot {
  all: unset;
  box-sizing: border-box;
  width: 34px;
  height: 34px;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 14px;
  font-weight: 700;
  font-family: inherit;
  cursor: default;
  transition: all .2s;
  flex-shrink: 0;
}
.ks-step-dot:focus-visible { outline: 2px solid #43469D; outline-offset: 2px; }
.ks-step-dot.inactive { background: #E0DFF0; color: #7B7B9E; cursor: not-allowed; }
.ks-step-dot.active   { background: #43469D; color: #fff; box-shadow: 0 3px 10px rgba(67,70,157,0.35); }
.ks-step-dot.done     { background: #27AE60; color: #fff; cursor: pointer; }
.ks-step-dot.done:hover { box-shadow: 0 2px 8px rgba(39,174,96,0.35); }
.ks-step-dot.has-error { background: #F9232E !important; color: #fff !important; box-shadow: 0 2px 8px rgba(249,35,46,0.35); }

.ks-step-title {
  font-size: 16px;
  font-weight: 700;
  color: #43469D;
  padding: 10px 0 12px;
  border-bottom: 2px solid #E0DFF0;
  margin-bottom: 24px;
}

/* ── Steps ── */
.ks-step { display: none; }
.ks-step.active { display: block; }

/* ── Layout ── */
.ks-row  { display: flex; gap: 16px; margin-bottom: 16px; }
.ks-row > * { flex: 1; min-width: 0; }
.ks-col3 { display: flex; gap: 12px; margin-bottom: 16px; }
.ks-col3 > * { flex: 1; min-width: 0; }
.ks-field { margin-bottom: 16px; }
.ks-hidden { display: none !important; }

/* ── Labels ── */
.ks-label {
  display: block;
  font-size: 14px;
  font-weight: 600;
  color: #2D2B55;
  margin-bottom: 6px;
}
.ks-label .req  { color: #F9232E; margin-left: 2px; }
.ks-label .hint { font-size: 12px; font-weight: 400; color: #9B9BB5; margin-left: 4px; }

/* ── Inputs: base ── */
.ks-anketa .ks-input,
.ks-anketa .ks-select,
.ks-anketa .ks-textarea {
  width: 100%;
  border: 1.5px solid #E0DFF0;
  border-radius: 10px;
  padding: 12px 16px;
  font-size: 15px;
  color: #2D2B55;
  background: #F8F8FC;
  transition: border-color .2s, box-shadow .2s;
  outline: none;
  outline-width: 0;
  outline-style: none;
}
.ks-anketa .ks-input::placeholder,
.ks-anketa .ks-textarea::placeholder { color: #9B9BB5; }
.ks-anketa .ks-textarea { min-height: 80px; resize: vertical; }

/* ── Inputs: focus ── */
.ks-anketa .ks-input:focus,
.ks-anketa .ks-input:focus-visible,
.ks-anketa .ks-select:focus,
.ks-anketa .ks-select:focus-visible,
.ks-anketa .ks-textarea:focus,
.ks-anketa .ks-textarea:focus-visible {
  border-color: #43469D;
  box-shadow: 0 0 0 3px rgba(67,70,157,0.1);
  background: #fff;
  outline: none;
  outline-width: 0;
  outline-style: none;
}

/* ── Field error highlight (server-side validation) ── */
.ks-field.ks-field-error .ks-input,
.ks-field.ks-field-error .ks-select,
.ks-field.ks-field-error .ks-textarea {
  border-color: #F9232E;
  box-shadow: 0 0 0 3px rgba(249,35,46,0.12);
  background: #FFF6F6;
}
.ks-field.ks-field-error .ks-label { color: #F9232E; }
.ks-field.ks-field-error .ks-pill + label { border-color: #F9232E; }
.ks-checkbox.ks-field-error span { color: #F9232E; }
.ks-checkbox.ks-field-error input[type="checkbox"] {
  border-color: #F9232E;
  box-shadow: 0 0 0 3px rgba(249,35,46,0.12);
}

/* ── Inline-сообщение под полем ── */
.ks-field-error-msg {
  display: none;
  font-size: 12px;
  color: #F9232E;
  margin-top: 6px;
  line-height: 1.4;
}
.ks-field.ks-field-error > .ks-field-error-msg:not(:empty),
.ks-checkbox.ks-field-error + .ks-field-error-msg:not(:empty) { display: block; }
.ks-field-error-msg:not(:empty) { display: block; }

/* ── Field-OK индикатор (галка справа) ── */
.ks-field.ks-field-ok .ks-input,
.ks-field.ks-field-ok .ks-textarea {
  border-color: #27AE60;
  background: #fff url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16' fill='none'%3E%3Cpath d='M3 8.5L6.5 12L13 4.5' stroke='%2327AE60' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") right 12px center no-repeat;
  padding-right: 36px;
}
.ks-field.ks-field-ok .ks-label { color: #1A7A4C; }

/* ── Phone preview ── */
.ks-phone-preview {
  display: none;
  margin-top: 6px;
  font-size: 12px;
  color: #1A7A4C;
  font-weight: 600;
}
.ks-phone-preview.visible:not(:empty) { display: block; }

/* ── Char counter ── */
.ks-char-counter {
  display: block;
  margin-top: 4px;
  font-size: 11px;
  color: #9B9BB5;
  text-align: right;
  font-variant-numeric: tabular-nums;
}
.ks-char-counter.warn { color: #DBA617; font-weight: 600; }
.ks-char-counter.danger { color: #F9232E; font-weight: 700; }

/* ── File-info панель ── */
.ks-file-info {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-top: 8px;
  padding: 10px 12px;
  background: #EEEEFC;
  border: 1px solid #D0D0E8;
  border-radius: 8px;
  font-size: 13px;
  color: #2D2B55;
}
.ks-file-info[hidden] { display: none; }
.ks-file-info-icon { font-size: 16px; }
.ks-file-info-name {
  flex: 1;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  font-weight: 600;
}
.ks-file-info-size { color: #7B7B9E; font-size: 12px; }
.ks-file-info-remove {
  all: unset;
  cursor: pointer;
  color: #F9232E;
  font-size: 18px;
  line-height: 1;
  padding: 2px 6px;
  border-radius: 4px;
  font-weight: 700;
}
.ks-file-info-remove:hover { background: #FDE8E6; }
.ks-file-info-remove:focus-visible { outline: 2px solid #F9232E; outline-offset: 1px; }

/* ── Select arrow ── */
.ks-anketa .ks-select {
  appearance: none;
  -webkit-appearance: none;
  background-image: url("data:image/svg+xml,%3Csvg width='12' height='8' viewBox='0 0 12 8' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M1 1.5L6 6.5L11 1.5' stroke='%23888' stroke-width='1.5' stroke-linecap='round'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right 14px center;
}

/* ── File input ── */
.ks-file {
  width: 100%;
  border: 1.5px dashed #E0DFF0;
  border-radius: 10px;
  padding: 14px;
  background: #F8F8FC;
  cursor: pointer;
  font-size: 13px;
}
.ks-file-hint {
  display: block;
  font-size: 11px;
  color: #9B9BB5;
  margin-top: 4px;
}

/* ── Radio pills ── */
.ks-pills { display: flex; flex-wrap: wrap; gap: 8px; }
.ks-pill { display: none; }
.ks-pill + label {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 10px 18px;
  border: 1.5px solid #E0DFF0;
  border-radius: 8px;
  font-size: 13px;
  font-weight: 500;
  color: #7B7B9E;
  background: #F8F8FC;
  cursor: pointer;
  transition: all .15s;
  text-align: center;
  min-height: 42px;
  line-height: 1.3;
}
.ks-pill + label:hover { border-color: #43469D; color: #43469D; background: #F0F0FA; }
.ks-pill:checked + label {
  background: #43469D;
  color: #fff;
  border-color: #43469D;
  font-weight: 700;
  box-shadow: 0 2px 8px rgba(67,70,157,0.25);
}
.ks-pills-grid3 { display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px; }
.ks-pills-grid2 { display: grid; grid-template-columns: repeat(2, 1fr); gap: 8px; }
.ks-pills-grid3 label,
.ks-pills-grid2 label { width: 100%; }
.ks-pills-stretch label {
  flex: 1 1 0%;
  min-width: 0;
  white-space: normal;
  font-size: 12px;
  padding: 8px 6px;
  min-height: 48px;
}
.ks-pills-big label {
  padding: 14px 20px;
  font-size: 15px;
  min-height: 50px;
  width: 100%;
}

/* Текст в пилюле — по центру по вертикали.
   Правило продублировано с более высокой специфичностью (корень формы), потому
   что тема и Elementor нередко объявляют `.entry-content label { display: block }`
   с такой же специфичностью, как `.ks-pill + label`, и выигрывают порядком
   подключения. Без display:flex центрирование не работает вовсе, и при высокой
   строке грида (когда сосед переносится на две строки) текст прилипает к верху.
   height:100% — чтобы соседи в строке были одной высоты, а не только не ниже
   min-height. */
.ks-anketa .ks-pill + label {
  display: flex;
  align-items: center;
  justify-content: center;
  height: 100%;
}

/* ── Info block ── */
.ks-info {
  background: #EEEEFC;
  border: 1px solid #D0D0E8;
  border-radius: 10px;
  padding: 16px 18px;
  font-size: 14px;
  line-height: 1.7;
  color: #2D2B55;
  margin-bottom: 16px;
}
.ks-info strong { color: #43469D; }
.ks-info p { margin: 0 0 8px; }
.ks-info p:last-child { margin-bottom: 0; }

/* ── UPS warning ── */
.ks-ups-hint {
  display: block;
  font-size: 10px;
  font-weight: 400;
  color: #F9232E;
  line-height: 1.2;
  margin-top: 2px;
}

/* ── Consent box ── */
.ks-consent-box {
  background: #F3F2FD;
  border: 1px solid #D8D6F0;
  border-radius: 10px;
  padding: 18px;
  font-size: 13px;
  line-height: 1.7;
  color: #2D2B55;
  margin-bottom: 12px;
}
.ks-consent-box strong { color: #43469D; }
.ks-consent-box ul { margin: 8px 0; padding-left: 20px; }
.ks-consent-box li { margin-bottom: 4px; }
.ks-consent-box a { color: #43469D; text-decoration: underline; }
.ks-consent-box p { margin: 0 0 8px; }

/* ── Checkbox ── */
.ks-checkbox {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  margin-bottom: 16px;
  cursor: pointer;
}
.ks-checkbox input[type="checkbox"] {
  -webkit-appearance: none;
  -moz-appearance: none;
  appearance: none;
  width: 20px;
  height: 20px;
  min-width: 20px;
  max-width: 20px;
  flex-shrink: 0;
  border: 2px solid #E0DFF0;
  border-radius: 5px;
  background: #F8F8FC;
  cursor: pointer;
  position: relative;
  transition: all .15s;
  margin: 2px 0 0;
  padding: 0;
}
.ks-checkbox input[type="checkbox"]:checked {
  background: #43469D url("data:image/svg+xml,%3Csvg viewBox='0 0 16 16' fill='white' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M12.207 4.793a1 1 0 010 1.414l-5 5a1 1 0 01-1.414 0l-2-2a1 1 0 011.414-1.414L6.5 9.086l4.293-4.293a1 1 0 011.414 0z'/%3E%3C/svg%3E") center/14px no-repeat;
  border-color: #43469D;
}
.ks-checkbox input[type="checkbox"]:focus {
  outline: none;
  box-shadow: 0 0 0 3px rgba(67,70,157,0.1);
  border-color: #43469D;
}
.ks-checkbox input[type="checkbox"]::before,
.ks-checkbox input[type="checkbox"]::after { display: none; content: none; }
.ks-checkbox span { font-size: 13px; color: #555; line-height: 1.4; }

/* ── Buttons ── */
.ks-buttons {
  display: flex;
  gap: 10px;
  margin-top: 24px;
}
.ks-btn-prev,
.ks-btn-next,
.ks-btn-submit {
  all: unset;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  box-sizing: border-box;
  font-family: 'Montserrat', sans-serif;
  font-weight: 700;
  font-size: 15px;
  border-radius: 8px;
  cursor: pointer;
  transition: all .15s;
  text-align: center;
}
.ks-btn-prev {
  flex: 0 0 35%;
  padding: 12px 0;
  background: #F8F8FC;
  color: #43469D;
  border: 1.5px solid #E0DFF0;
}
.ks-btn-prev:hover { background: #EEEEFC; border-color: #43469D; }
.ks-btn-next,
.ks-btn-submit {
  flex: 1;
  padding: 14px 0;
  background: #43469D;
  color: #fff;
  border: 1.5px solid #43469D;
}
.ks-btn-next:hover,
.ks-btn-submit:hover { background: #363880; border-color: #363880; }
.ks-btn-next:disabled,
.ks-btn-submit:disabled { opacity: .5; cursor: not-allowed; }
.ks-btn-prev:focus-visible,
.ks-btn-next:focus-visible,
.ks-btn-submit:focus-visible { outline: 2px solid #43469D; outline-offset: 2px; }

/* ── Submit loading spinner ── */
.ks-btn-submit.is-loading {
  position: relative;
  padding-left: 36px;
}
.ks-btn-submit.is-loading::before {
  content: '';
  position: absolute;
  left: 14px;
  top: 50%;
  width: 14px;
  height: 14px;
  margin-top: -7px;
  border: 2px solid rgba(255,255,255,0.4);
  border-top-color: #fff;
  border-radius: 50%;
  animation: ks-spin .7s linear infinite;
}
@keyframes ks-spin {
  to { transform: rotate(360deg); }
}

/* ── Success-блок ── */
.ks-success-block {
  text-align: center;
  padding: 32px 20px;
  background: #fff;
  border: 1px solid #E0DFF0;
  border-radius: 12px;
  margin-top: 12px;
}
.ks-success-block[hidden],
.ks-success-cta[hidden] { display: none; }
.ks-success-icon { margin-bottom: 12px; }
.ks-success-title {
  font-size: 22px;
  font-weight: 700;
  color: #2D2B55;
  margin: 0 0 8px;
}
.ks-success-text {
  font-size: 15px;
  color: #555;
  line-height: 1.6;
  margin: 0 auto 20px;
  max-width: 480px;
}
.ks-success-cta {
  display: inline-block;
  padding: 14px 32px;
  background: #43469D;
  color: #fff;
  border-radius: 8px;
  font-weight: 700;
  font-size: 15px;
  text-decoration: none;
  transition: all .15s;
}
.ks-success-cta:hover { background: #363880; box-shadow: 0 4px 12px rgba(67,70,157,0.3); }
.ks-success-cta:focus-visible { outline: 2px solid #43469D; outline-offset: 2px; }

/* ── Messages ── */
.ks-msg { padding: 16px; border-radius: 10px; font-weight: 600; margin-top: 16px; display: none; }
.ks-msg.success { background: #E8F8EE; color: #1A7A4C; border: 1px solid #27AE60; display: block; }
.ks-msg.error   { background: #FDE8E6; color: #F9232E; border: 1px solid #F9232E; display: block; }
.ks-msg-title { font-weight: 700; margin-bottom: 8px; }
.ks-msg-list  { margin: 0; padding-left: 20px; font-weight: 400; }
.ks-msg-list li { margin: 4px 0; line-height: 1.5; }
.ks-msg-warning {
  padding: 12px 16px;
  border-radius: 10px;
  margin-top: 12px;
  background: #FFF8E5;
  border: 1px solid #DBA617;
  color: #996800;
  font-size: 13px;
  font-weight: 600;
  line-height: 1.5;
}

/* ── Mobile ── */
@media (max-width: 767px) {
  .ks-anketa-card { padding: 20px 16px; }
  .ks-row,
  .ks-col3 { flex-direction: column; gap: 0; }
  .ks-pills-grid3,
  .ks-pills-grid2 { grid-template-columns: 1fr; }
  .ks-pills-stretch { flex-direction: column; }
  .ks-pills-stretch label { flex: 1 1 100%; }
  .ks-buttons { flex-direction: column; }
  .ks-btn-prev { flex: 1; }
  .ks-steps { flex-wrap: wrap; gap: 8px 12px; }
  .ks-step-dot { width: 28px; height: 28px; font-size: 12px; }
  /* Меньше 16px — и iPhone увеличивает страницу при фокусе на поле. */
  .ks-anketa .ks-input,
  .ks-anketa .ks-select,
  .ks-anketa .ks-textarea { font-size: 16px; }
}

/* ── Классы вместо инлайновых стилей (3.2.0) ──
   Раньше эти правила жили атрибутом style= прямо в разметке шага «Оборудование»
   и honeypot'а. После перехода на рендер из реестра разметку печатает PHP,
   поэтому оформление вернулось туда, где ему место. */
.ks-anketa .ks-honeypot {
  position: absolute;
  left: -9999px;
  top: -9999px;
  width: 1px;
  height: 1px;
  overflow: hidden;
}
.ks-anketa .ks-label-compact {
  font-size: 12px;
  min-height: 50px;
  display: flex;
  align-items: flex-end;
}
.ks-anketa .ks-textarea-sm { min-height: 48px; }
.ks-checkbox .ks-req-mark { color: #F9232E; margin-left: 2px; }

@media (max-width: 767px) {
  .ks-anketa .ks-label-compact { min-height: 0; display: block; }
}

/* ── Точки: блок адреса на каждую ── */
.ks-points { display: flex; flex-direction: column; gap: 14px; }
.ks-point {
  border: 1px solid #E0DFF0;
  border-radius: 10px;
  padding: 14px;
  background: #FBFBFE;
}
.ks-point-title {
  font-size: 13px;
  font-weight: 600;
  color: #4A4A6A;
  margin-bottom: 10px;
}
.ks-point-same { margin-bottom: 10px; }
.ks-point-fields { display: flex; flex-direction: column; gap: 10px; }

/* ── Файлы: список приложенного ── */
.ks-files { display: flex; flex-direction: column; gap: 6px; margin-top: 8px; }
.ks-files-item {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 8px 10px;
  border: 1px solid #E0DFF0;
  border-radius: 8px;
  background: #F8F8FC;
  font-size: 12px;
}
.ks-files-name { flex: 1 1 auto; overflow-wrap: anywhere; }
.ks-files-remove {
  flex: 0 0 auto;
  border: 0;
  background: transparent;
  color: #9B9BB5;
  font-size: 18px;
  line-height: 1;
  cursor: pointer;
}
.ks-files-remove:hover { color: #F9232E; }
.ks-files-progress { font-size: 11px; color: #9B9BB5; margin-top: 6px; }

/* ── Пока скрипт формы не отработал: плашка вместо пустой карточки ── */
.ks-loading,
.ks-noscript {
  display: none;
  padding: 14px 16px;
  border-radius: 8px;
  background: #F8F8FC;
  border: 1.5px solid #E0DFF0;
  font-size: 14px;
  line-height: 1.5;
}
.ks-loading a,
.ks-noscript a { color: #43469D; font-weight: 600; }
.ks-noscript { display: block; }
.ks-is-loading .ks-loading { display: block; }
.ks-is-loading #ks-form,
.ks-is-loading .ks-step-counter,
.ks-is-loading .ks-steps,
.ks-is-loading .ks-step-title { display: none; }

/* ── «Начать заново» ── */
.ks-btn-restart {
  all: unset;
  display: block;
  margin: 14px auto 0;
  font-size: 13px;
  color: #7B7B9E;
  text-decoration: underline;
  cursor: pointer;
}
.ks-btn-restart[hidden] { display: none; }
.ks-btn-restart:hover { color: #43469D; }
.ks-btn-restart:focus-visible { outline: 2px solid #43469D; outline-offset: 2px; }

/* ── Мягкая подсказка: не ошибка, а замечание ── */
.ks-soft-hint {
  display: none;
  margin-top: 6px;
  padding: 8px 10px;
  border-left: 3px solid #F0A21B;
  background: #FFF8EC;
  font-size: 12px;
  color: #6B5522;
}
.ks-soft-hint.is-shown { display: block; }

/* ── Оборудование внутри блока точки ── */
.ks-point-equipment { margin-top: 10px; }
.ks-copy-contact { margin-bottom: 10px; }

/* ── Итог: считается из ответов, не спрашивается ── */
.ks-total {
  display: none;
  margin: 4px 0 14px;
  padding: 10px 12px;
  border-radius: 8px;
  background: #F1F0FA;
  font-size: 12px;
  color: #4A4A6A;
}
.ks-total.is-shown { display: block; }
.ks-total.has-warning {
  background: #FFF8EC;
  color: #6B5522;
}

/* ── Оборудование внутри блока точки ── */
.ks-point-subtitle {
  font-size: 12px;
  font-weight: 600;
  color: #6B6B8A;
  margin: 12px 0 8px;
}
.ks-point-arm {
  display: none;
  margin: 2px 0 10px;
  font-size: 12px;
  color: #43469D;
  font-weight: 600;
}
.ks-point-arm.is-shown { display: block; }

/* ── Коммерческое предложение: ссылка на PDF в блоке успеха ── */
.ks-kp-link {
  display: inline-block;
  margin-top: 14px;
  padding: 14px 32px;
  background: #fff;
  color: #43469D;
  border: 2px solid #43469D;
  border-radius: 8px;
  font-weight: 700;
  font-size: 15px;
  text-decoration: none;
  transition: all .15s;
}
.ks-kp-link:hover { background: #43469D; color: #fff; }
.ks-kp-link:focus-visible { outline: 2px solid #43469D; outline-offset: 2px; }
.ks-kp-link[hidden],
.ks-kp-note[hidden] { display: none; }
.ks-kp-note { margin: 8px auto 0; font-size: 12px; color: #7B7B9E; max-width: 480px; }

/* ── Тариф iiko (шаг 6) ── */
.ks-tariff-hint {
  margin-top: 8px;
  padding: 8px 10px;
  border-left: 3px solid #43469D;
  background: #F1F0FA;
  font-size: 12px;
  color: #4A4A6A;
  line-height: 1.5;
}
.ks-tariff-hint[hidden] { display: none; }
.ks-anketa .ks-tariff-more {
  display: inline-block;
  margin-top: 10px;
  padding: 0;
  background: none;
  border: 0;
  color: #43469D;
  font-size: 13px;
  font-weight: 600;
  text-decoration: underline;
  text-underline-offset: 3px;
  cursor: pointer;
}
.ks-anketa .ks-tariff-more:hover { color: #363880; }
.ks-anketa .ks-tariff-more:focus-visible { outline: 2px solid #43469D; outline-offset: 2px; }

/* ── Окно «Подробнее о тарифах» ──
   Повторяет блок «Стоимость программы» с главной страницы: три карточки,
   название без префикса, «Рекомендуем!», список возможностей, цена «от …». */
.ks-tariff-modal {
  position: fixed;
  inset: 0;
  z-index: 100000;
  display: flex;
  align-items: flex-start;
  justify-content: center;
  padding: 24px 12px;
  overflow-y: auto;
  font-family: 'Montserrat', sans-serif;
  color: #2D2B55;
}
.ks-tariff-modal * { box-sizing: border-box; font-family: inherit; }
.ks-tariff-modal[hidden] { display: none; }
body.ks-tariff-lock { overflow: hidden; }
.ks-tariff-backdrop { position: fixed; inset: 0; background: rgba(28,27,58,.55); }
.ks-tariff-dialog {
  position: relative;
  width: 100%;
  max-width: 1040px;
  margin: auto;
  background: #fff;
  border-radius: 12px;
  padding: 28px 24px 24px;
  box-shadow: 0 12px 40px rgba(0,0,0,.2);
}
.ks-tariff-title { margin: 0 0 20px; text-align: center; font-size: 24px; font-weight: 700; color: #2D2B55; }
.ks-tariff-close {
  position: absolute;
  top: 10px;
  right: 12px;
  width: 36px;
  height: 36px;
  border: 0;
  border-radius: 50%;
  background: transparent;
  color: #7B7B9E;
  font-size: 26px;
  line-height: 1;
  cursor: pointer;
}
.ks-tariff-close:hover { background: #EEEEFC; color: #43469D; }
.ks-tariff-cards { display: grid; grid-template-columns: repeat(3, 1fr); gap: 16px; }
.ks-tariff-card {
  position: relative;
  display: flex;
  flex-direction: column;
  padding: 22px 20px 20px;
  border: 1.5px solid #E0DFF0;
  border-radius: 12px;
  background: #fff;
}
.ks-tariff-card.is-recommended { border-color: #43469D; box-shadow: 0 6px 20px rgba(67,70,157,.15); }
.ks-tariff-card.is-selected { border-color: #43469D; background: #F7F7FD; }
.ks-tariff-name { margin: 0; font-size: 26px; font-weight: 700; color: #43469D; }
.ks-tariff-subtitle { margin: 4px 0 12px; font-size: 14px; color: #7B7B9E; }
.ks-tariff-badge {
  position: absolute;
  top: 18px;
  right: 16px;
  padding: 4px 10px;
  border-radius: 12px;
  background: #43469D;
  color: #fff;
  font-size: 11px;
  font-weight: 700;
}
.ks-tariff-features { list-style: none; margin: 0 0 16px; padding: 0; flex: 1 1 auto; }
.ks-tariff-features li { position: relative; padding-left: 18px; margin-bottom: 6px; font-size: 13px; line-height: 1.45; }
.ks-tariff-features li::before { content: '+'; position: absolute; left: 0; top: 0; font-weight: 700; color: #43469D; }
.ks-tariff-price { margin: 0 0 14px; font-size: 30px; font-weight: 700; color: #2D2B55; }
.ks-tariff-price span { font-size: 16px; font-weight: 500; color: #7B7B9E; }
.ks-tariff-modal .ks-tariff-choose {
  width: 100%;
  padding: 13px 16px;
  border: 1.5px solid #43469D;
  border-radius: 8px;
  background: #43469D;
  color: #fff;
  font-size: 15px;
  font-weight: 700;
  cursor: pointer;
  transition: all .15s;
}
.ks-tariff-modal .ks-tariff-choose:hover { background: #363880; }
.ks-tariff-note { margin: 18px 0 0; font-size: 12px; color: #7B7B9E; text-align: center; line-height: 1.5; }

@media (max-width: 760px) {
  .ks-tariff-cards { grid-template-columns: 1fr; }
  .ks-tariff-dialog { padding: 24px 14px 18px; }
  .ks-tariff-title { font-size: 20px; padding-right: 30px; }
  .ks-tariff-name { font-size: 22px; }
  .ks-tariff-price { font-size: 24px; }
}
