/* Iris DS — утилиты лендинга (статичный слой поверх tokens.css).
   Источник: design/handoff_iris_interface/tokens/{typography,effects}.css — копия канона;
   4 var(--leading/tracking-*) заменены литералами — у theme.ts нет таких токенов.
   Токены НЕ объявлять здесь — только в generated tokens.css. */

/* Роль-классы тайпскейла (DESIGN.md §3). Совпадают с variant'ами <Txt>. */
.iris-h1     { font-family: var(--font-display); font-size: var(--text-xxl); font-weight: var(--weight-bold); color: var(--text); line-height: 1.2; /* литералы: у theme.ts нет leading/tracking-токенов (канон typography.css) */ }
.iris-title  { font-family: var(--font-display); font-size: var(--text-md); font-weight: var(--weight-semibold); color: var(--text); line-height: 1.4; }
.iris-body   { font-family: var(--font-ui); font-size: var(--text-md); font-weight: var(--weight-regular); color: var(--text); line-height: 1.5; }
.iris-meta   { font-family: var(--font-ui); font-size: var(--text-sm); font-weight: var(--weight-medium); color: var(--text-secondary); }
.iris-muted  { font-family: var(--font-ui); font-size: var(--text-sm); font-weight: var(--weight-regular); color: var(--text-secondary); }
.iris-label  { font-family: var(--font-ui); font-size: var(--text-xs); font-weight: var(--weight-bold); color: var(--accent-text); letter-spacing: 0.6px; text-transform: uppercase; }
.iris-mono   { font-family: var(--font-evidence); font-size: var(--text-mono); font-weight: var(--weight-regular); color: var(--text-secondary); }

/* Срез-фаска как утилита: машинная форма контролов (круг = человек, срез = система). */
.iris-cut-xs { clip-path: polygon(0 0, calc(100% - var(--cut-xs)) 0, 100% var(--cut-xs), 100% 100%, var(--cut-xs) 100%, 0 calc(100% - var(--cut-xs))); }
.iris-cut-sm { clip-path: polygon(0 0, calc(100% - var(--cut-sm)) 0, 100% var(--cut-sm), 100% 100%, var(--cut-sm) 100%, 0 calc(100% - var(--cut-sm))); }
.iris-cut-md { clip-path: polygon(0 0, calc(100% - var(--cut-md)) 0, 100% var(--cut-md), 100% 100%, var(--cut-md) 100%, 0 calc(100% - var(--cut-md))); }
.iris-cut-lg { clip-path: polygon(0 0, calc(100% - var(--cut-lg)) 0, 100% var(--cut-lg), 100% 100%, var(--cut-lg) 100%, 0 calc(100% - var(--cut-lg))); }

/* LED — квадратная сигнальная лампа (не иконка): маркер тона у чипов, бейджей, кодов. */
.iris-led { display: inline-block; width: 4px; height: 4px; flex-shrink: 0; background: currentColor; box-shadow: 0 0 6px -1px currentColor; }

/* Живой аврора-фон как утилита: <div class="iris-aurora"> за контентом. */
.iris-aurora { background: var(--aurora); }

/* Фирменная анимация апертуры — короткое «приоткрытие» (share / тумблеры приватности). */
@keyframes iris-aperture-pulse {
  0%, 100% { transform: scale(1); }
  40%      { transform: scale(0.9); }
  70%      { transform: scale(1.04); }
}
.iris-aperture--pulse { animation: iris-aperture-pulse var(--dur-slow) var(--ease-out); }

/* Курсор «_» — brand-device в инпут-строке пульта и вордмарке. */
@keyframes iris-caret-blink { 50% { opacity: 0; } }
.iris-caret { color: var(--accent); font-weight: var(--weight-semibold); animation: iris-caret-blink 1.1s steps(1) infinite; }

/* Инлайн-спиннер (ActionChip loading, Spinner-примитив). */
@keyframes iris-spin { to { transform: rotate(360deg); } }
.iris-spin { animation: iris-spin 0.7s linear infinite; }

/* Skeleton-пульс (окно Time-to-first-widget). */
@keyframes iris-skeleton-pulse { 0%, 100% { opacity: 1; } 50% { opacity: 0.45; } }
.iris-skeleton--shimmer { animation: iris-skeleton-pulse 1.4s var(--ease-out) infinite; }

/* Reduced-motion: все декоративные анимации → мгновенно/пауза (DESIGN.md §9.5). */
@media (prefers-reduced-motion: reduce) {
  .iris-aperture--pulse { animation: none; }
  .iris-caret { animation: none; }
  .iris-spin { animation-duration: 1.4s; }
  .iris-skeleton--shimmer { animation: none; }
}
