/* ТехКарта — кабинет: модальное окно входа и сообщения (разделы 12–13). Порядок файлов — см. base.css. */

/* ============================================================ 12. Окно входа */
/* Окно 480 px, радиус 12, кегли из шкалы, без своего зума (4.6). На телефоне —
   во весь экран (медиазапрос в разделе 16). */
.tk-modal {
  position: fixed;
  inset: 0;
  z-index: 50;
  background: var(--scrim);
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 24px;
  color: var(--ink);
  font: var(--t-text);
  overflow: auto;
}

.tk-modal__box {
  width: min(480px, 100%);
  display: grid;
  gap: 16px;
  justify-items: center;
}

.tk-modal__card {
  width: 100%;
  background: var(--surface);
  border-radius: var(--r-12);
  padding: 32px;
  box-shadow: var(--shadow-dialog);
  display: grid;
  gap: 24px;
}

.tk-modal__head {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  gap: 16px;
}

.tk-modal__close {
  width: 44px;
  height: 44px;
  margin: -8px -12px 0 0;
  border-radius: var(--r-8);
  display: grid;
  place-items: center;
  color: var(--ink);
  flex-shrink: 0;
}

.tk-modal__close:hover {
  background: var(--surface-2);
  color: var(--ink);
}

/* Строка под формой — внутри окна: белый текст на затемнении не держал контраст */
.tk-modal__note {
  margin: 0;
  padding-top: 16px;
  border-top: 1px solid var(--line);
  font: var(--t-small);
  color: var(--muted);
}

/* Подпись под карточкой на страницах входа (/login, код, согласие Яндекс ID / VK ID): серый текст прямо на
   размытом кабинете не держал контраст (около 2:1, #142) — на своей подложке. На телефоне фон окна и так белый
   (responsive.css), поэтому только от 768 px. */
@media (min-width: 768px) {
  .tk-modal__box > .tk-modal__note {
    justify-self: stretch; /* во всю ширину карточки: у короткой подписи подложка была бы уже окна */
    padding: 12px 16px;
    border-top: 0;
    border-radius: var(--r-12);
    background: var(--surface);
    box-shadow: var(--shadow-dialog);
  }
}

/* ============================================================ 13. Уведомления */
/* Встроенное уведомление (4.6): полоса 4 px цвета статуса слева, подложка,
   значок. Классы alert--* проверяют тесты, поэтому имена прежние. Значок —
   маска поверх цвета статуса, без лишней разметки в шаблонах. */
.flash {
  display: grid;
  gap: 8px;
}

.alert {
  --alert-line: var(--line-strong);
  --alert-icon-color: var(--text-2);
  --alert-icon: url("/static/img/ui-86ea72bf.svg");
  position: relative;
  padding: 12px 16px 12px 48px;
  border-radius: var(--r-8);
  border: 1px solid var(--alert-edge, transparent);
  border-left: 4px solid var(--alert-line);
  background: var(--surface-2);
  color: var(--ink);
  font: var(--t-small);
}

.alert::before {
  content: "";
  position: absolute;
  left: 16px;
  top: 13px;
  width: 20px;
  height: 20px;
  background: var(--alert-icon-color);
  -webkit-mask: var(--alert-icon) center / contain no-repeat;
  mask: var(--alert-icon) center / contain no-repeat;
}

.alert p {
  margin: 0;
}

.alert p + p {
  margin-top: 8px;
}

.alert strong {
  font-weight: 600;
}

.alert--info {
  --alert-line: var(--primary);
  --alert-icon-color: var(--primary);
  --alert-edge: var(--primary-edge);
  background: var(--primary-tint);
}

.alert--success {
  --alert-line: var(--success);
  --alert-icon-color: var(--success);
  --alert-icon: url("/static/img/ui-6bef9338.svg");
  --alert-edge: var(--success-edge);
  background: var(--success-tint);
}

.alert--warning {
  --alert-line: var(--warning-line);
  --alert-icon-color: var(--warning);
  --alert-icon: url("/static/img/ui-1b9c6b80.svg");
  --alert-edge: var(--warning-edge);
  background: var(--warning-tint);
}

.alert--error {
  --alert-line: var(--error);
  --alert-icon-color: var(--error);
  --alert-icon: url("/static/img/ui-f92ec57c.svg");
  --alert-edge: var(--error-edge);
  background: var(--error-tint);
}

/* ------------------------------------------------------------ Из main после ответвления дизайна
   (тарифы #87, techkarta-back#108): правила main как есть, старые токены — через
   совместимые имена в base.css. */
/* Подсказки тарифа в оболочке (#87, shell/PlanNotice.tsx): текст, под ним кнопки, справа крестик */
.plan-notice {
  display: flex;
  align-items: flex-start;
  gap: 12px;
}
.plan-notice__body {
  flex: 1;
  min-width: 0;
}
.plan-notice__body .tk-btn-row {
  margin-top: 10px;
}
/* Цена перехода на тариф выше под его кнопкой (скидка за неиспользованные дни или начало периода): кнопка с подписью —
   отдельный столбец ряда, кнопки — по верху; подпись переносится, а не растягивает столбец (techkarta-back#186) */
.plan-limit {
  align-items: flex-start;
}
.plan-limit__up {
  max-width: 22rem;
}
.plan-quote {
  margin-top: 6px;
}
.plan-notice__close {
  all: unset;
  cursor: pointer;
  flex: 0 0 auto;
  width: 24px;
  height: 24px;
  display: grid;
  place-items: center;
  margin: -2px -8px 0 0;
  border-radius: 9999px;
  font-size: 20px;
  line-height: 1;
  color: var(--text-muted);
}
.plan-notice__close:hover {
  color: var(--ink);
}
.plan-notice__close:focus-visible {
  outline: 2px solid var(--primary);
  outline-offset: 2px;
}
