/* Оформление портала (срез 1): перенос принятого макета UI Lab —
 * prototypes/ui-lab/prototype/assets/app.css (волна 2, ветка design/ui-lab),
 * подмножество для экрана входа P-01 и мини-экрана аккаунта. Остальные
 * секции переезжают вместе со своими экранами.
 *
 * Все значения — переменные `--pf-*` из /portal/tokens.css (пакет
 * @promptyflow/ui-tokens). Произвольные цветовые литералы запрещены
 * стандартом UI: если чего-то не хватает — это повод дополнить пакет,
 * а не написать здесь #hex.
 */

*,
*::before,
*::after {
  box-sizing: border-box;
}

html {
  color-scheme: light dark;
}

/* Атрибут `hidden` должен прятать что угодно: display у кнопки не должен
 * перебивать встроенное `display: none` (урок волны 2 UI Lab). */
[hidden] {
  display: none !important;
}

body {
  margin: 0;
  background: var(--pf-color-surface-sunken);
  color: var(--pf-color-text-primary);
  font-family: var(--pf-typography-body-family);
  font-size: var(--pf-typography-body-size);
  line-height: var(--pf-typography-body-line-height);
}

:focus-visible {
  outline: 2px solid var(--pf-color-border-focus);
  outline-offset: 2px;
  border-radius: var(--pf-radius-sm);
}

h1, h2, h3, p, ul, ol, dl, dd, figure {
  margin: 0;
}

/* Типографика ролями. */

.pf-h2 {
  font-size: var(--pf-typography-heading2-size);
  font-weight: var(--pf-typography-heading2-weight);
  line-height: var(--pf-typography-heading2-line-height);
}

.pf-lead {
  color: var(--pf-color-text-secondary);
  max-width: 60ch;
}

.pf-small {
  font-size: var(--pf-typography-body-small-size);
  line-height: var(--pf-typography-body-small-line-height);
  color: var(--pf-color-text-secondary);
}

.pf-caption {
  font-size: var(--pf-typography-caption-size);
  font-weight: var(--pf-typography-caption-weight);
  line-height: var(--pf-typography-caption-line-height);
  color: var(--pf-color-text-muted);
}

/* Кнопки. */

.pf-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: var(--pf-space-sm);
  min-height: var(--pf-size-control-md);
  min-width: var(--pf-size-min-target);
  padding: 0 var(--pf-space-lg);
  border: 1px solid var(--pf-color-border-strong);
  border-radius: var(--pf-radius-md);
  background: var(--pf-color-surface-raised);
  color: var(--pf-color-text-primary);
  font: inherit;
  font-size: var(--pf-typography-body-small-size);
  cursor: pointer;
  transition: background var(--pf-motion-fast) var(--pf-motion-easing-standard);
}

.pf-btn:hover:not(:disabled) {
  background: var(--pf-color-surface-selected);
}

.pf-btn:disabled {
  opacity: 0.55;
  cursor: not-allowed;
}

.pf-btn--quiet {
  border-color: transparent;
  background: transparent;
}

.pf-btn--lg {
  min-height: var(--pf-size-control-lg);
  padding: 0 var(--pf-space-xl);
  font-size: var(--pf-typography-body-size);
}

/* Кнопка Google: вид задаёт Google (K-21). Здесь — только каркас;
 * при реализации ставится официальная кнопка по их правилам. */
.pf-btn--google {
  background: var(--pf-color-surface-canvas);
  border-color: var(--pf-color-border-strong);
  color: var(--pf-color-text-primary);
  font-weight: 500;
}

/* Графического знака Google на кнопке нет — см. комментарий в portal.js. */

/* Карточка. */

.pf-card {
  background: var(--pf-color-surface-canvas);
  border: 1px solid var(--pf-color-border-subtle);
  border-radius: var(--pf-radius-lg);
  padding: var(--pf-space-xl);
  box-shadow: var(--pf-shadow-sm);
}

/* Плашка состояния. */

.pf-notice {
  display: flex;
  gap: var(--pf-space-md);
  align-items: flex-start;
  padding: var(--pf-space-lg);
  border: 1px solid var(--pf-color-border-subtle);
  border-left-width: 4px;
  border-radius: var(--pf-radius-md);
  background: var(--pf-color-surface-raised);
  text-align: left;
}

.pf-notice__icon {
  flex: none;
  width: 20px;
  height: 20px;
  margin-top: 2px;
}

.pf-notice__body {
  display: flex;
  flex-direction: column;
  gap: var(--pf-space-sm);
}

.pf-notice__title {
  font-weight: 600;
}

.pf-notice--error {
  border-left-color: var(--pf-color-border-danger);
  color: var(--pf-color-text-danger);
}

.pf-notice--error .pf-notice__body {
  color: var(--pf-color-text-primary);
}

.pf-notice--warn {
  border-left-color: var(--pf-color-surface-warning);
  color: var(--pf-color-text-warning);
}

.pf-notice--warn .pf-notice__body {
  color: var(--pf-color-text-primary);
}

/* Знак продукта. */

.pf-brand__mark {
  width: 24px;
  height: 24px;
  color: var(--pf-color-text-accent);
}

/* Одинокая карточка по центру экрана (вход). */

.pf-solo {
  min-height: 100vh;
  display: grid;
  place-items: center;
  padding: var(--pf-space-2xl);
}

.pf-solo__card {
  width: 100%;
  max-width: 440px;
  text-align: center;
  display: flex;
  flex-direction: column;
  gap: var(--pf-space-lg);
  align-items: center;
}
