skillok meeting
a008f4d72f373bf56330f826ea2ad0912d19c3a7
Перейти к файлу
Код
meeting srcstylesui.css
anc Интерфейс по руководству «Стиль Skillok»; одни часы записи на весь экран По skillok/skillok-develop design/SKILLOK_STYLE.md: - кнопки и поля — --radius-control 2px; поля — --field-bg, 9/11, 13px, фокус терракотой внутрь; неактивная кнопка — 0,5; .ui-danger; мишени 44px под пальцем; - подписи полей — 12px капс с разрядкой; карточки без заливки, отступы 14–16px; вкладки 32px без жирного; моноширинный — только код, числа — tabular-nums; тень — только у сообщения; - значки — icons.ts (SVG 16, контур 1,5) вместо «★ ▶ ❚❚ ✕»; - обращение на «ты» в интерфейсе и сообщениях ядра; сняты пояснения «как пользоваться»; блок проверки звука — .audio-check (не пересекается с галочкой .check). Светлая тема остаётся единственной — решение владельца для Meet (руководство просит обе темы). Шапка и меню показывают время по записанному звуку, как панель записи. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> 955f445 4 октября 2026 г.
ui.css
/* Компоненты — по руководству «Стиль Skillok» (skillok/skillok-develop,
   design/SKILLOK_STYLE.md): одна контурная кнопка, ряд вкладок с
   подчёркиванием, поля, залитые на тон темнее страницы, строки списка.
   Скругление 2px — только у кнопок и полей; карточки, бейджи, вкладки — прямые. */

*, *::before, *::after { box-sizing: border-box; font-variant-ligatures: no-contextual; }

html, body { margin: 0; }
body {
  background: var(--background);
  color: var(--color-text-primary);
  font-family: var(--font-ui);
  font-size: var(--text-md);
  line-height: 1.5;
  -webkit-font-smoothing: antialiased;
}

a { color: var(--color-accent-text); text-decoration: none; }
a:hover { text-decoration: underline; }

h1, h2, h3 { margin: 0; font-weight: 700; line-height: 1.25; }
h1 { font-size: var(--text-3xl); }
h2 { font-size: var(--text-lg); }
h3 { font-size: var(--text-md); }
p { margin: 0; }

/* Моноширинный — только код. Время и числа — тем же шрифтом с ровными цифрами. */
code, .mono { font-family: var(--font-mono); font-size: var(--text-xs); }
.mono-num { font-variant-numeric: tabular-nums; }

/* ── Кнопка: одна, контурная (как «Войти» в шапке skillok.org) ── */
.ui-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  min-height: 32px;
  max-width: 100%;
  padding: 0 14px;
  font-family: var(--font-ui);
  font-size: var(--text-sm);
  font-weight: 700;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  line-height: 20px;
  color: var(--kv-ink);
  background: transparent;
  border: 2px solid var(--kv-ink);
  border-radius: var(--radius-control);
  cursor: pointer;
  transition: background 0.12s, color 0.12s, border-color 0.12s;
  white-space: normal;
  text-wrap: balance;
  flex-shrink: 0;
}
.ui-btn:hover { background: var(--kv-ink); color: var(--background); }
.ui-btn:active { background: var(--color-accent); border-color: var(--color-accent); color: var(--color-on-accent); }
.ui-btn:focus-visible { outline: 2px solid var(--color-accent); outline-offset: 2px; }
.ui-btn[disabled] { opacity: 0.5; cursor: not-allowed; }
.ui-btn[disabled]:hover { background: transparent; color: var(--kv-ink); }
.ui-btn-sm { min-height: 28px; padding: 0 10px; font-size: var(--text-xs); }
.ui-btn svg { flex: none; width: 16px; height: 16px; }
/* Опасное действие — тот же контур цветом ошибки. */
.ui-danger { color: var(--color-error); border-color: var(--color-error); }
.ui-danger:hover { background: var(--color-error); color: var(--color-on-accent); }
/* Под пальцем — мишень не меньше 44 × 44. */
@media (pointer: coarse) {
  .ui-btn, .ui-btn-sm { min-height: 44px; min-width: 44px; }
}

/* ── Ряд вкладок ── */
.ui-underline-nav {
  display: flex;
  flex-wrap: wrap;
  gap: 0 8px;
  box-shadow: inset 0 -1px 0 var(--color-border);
}
.ui-underline-nav > a {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  height: 32px;
  padding: 0 8px;
  font-size: var(--text-md);
  color: var(--color-text-primary);
  text-decoration: none;
  white-space: nowrap;
}
.ui-underline-nav > a:hover { background: var(--color-bg-hover); }
.ui-underline-nav > a[aria-current="page"] { box-shadow: inset 0 -2px 0 var(--color-accent); }
.ui-nav-count {
  display: inline-block;
  min-width: 20px;
  padding: 0 6px;
  line-height: 20px;
  text-align: center;
  font-size: var(--text-xs);
  font-weight: 500;
  color: var(--color-text-secondary);
  background: var(--color-bg-secondary);
}
.ui-underline-nav > a[aria-current="page"] .ui-nav-count { color: var(--color-text-primary); }

/* ── Поля ── */
.field { display: grid; gap: 6px; }
/* Подпись поля (.ui-head): 12px, капс, разрядка, вторичный цвет. */
.field > label, .field-label {
  font-size: var(--text-xs); font-weight: 700; letter-spacing: 0.1em; text-transform: uppercase;
  color: var(--color-text-secondary);
}
.field-hint { font-size: var(--text-xs); color: var(--color-text-secondary); }
.input, .textarea {
  width: 100%;
  padding: 9px 11px;
  font: inherit;
  font-size: var(--text-sm);
  line-height: 1.5;
  color: var(--color-text-primary);
  background: var(--field-bg);
  border: 1px solid var(--color-border-light);
  border-radius: var(--radius-control);
}
.input::placeholder, .textarea::placeholder { color: var(--color-text-secondary); }
.input:focus, .textarea:focus { background: var(--background); outline: 2px solid var(--color-accent); outline-offset: -2px; }
.textarea { min-height: 120px; resize: vertical; line-height: 1.6; }
@media (pointer: coarse) {
  .input, .textarea { font-size: var(--text-lg); }
}
.textarea.mono { font-size: var(--text-sm); }
.check { display: flex; align-items: flex-start; gap: 8px; font-size: var(--text-md); cursor: pointer; }
.check input { margin-top: 4px; accent-color: var(--color-accent); }

/* ── Рамка-блок и список ── */
/* Карточка: рамка 1px, своей заливки нет — бумага страницы; шапка на подложке. */
.box { border: 1px solid var(--color-border); }
.box-head {
  display: flex; align-items: center; justify-content: space-between; gap: 12px;
  padding: 10px 14px; border-bottom: 1px solid var(--color-border); background: var(--color-bg-secondary);
}
.box-body { padding: 14px; display: grid; gap: 16px; }
.row {
  display: flex; align-items: baseline; gap: 16px;
  padding: 12px 16px; border-top: 1px solid var(--color-border);
}
.row:first-child { border-top: 0; }
.row:hover { background: var(--color-bg-hover); }

.muted { color: var(--color-text-secondary); }
.small { font-size: var(--text-sm); }
.xs { font-size: var(--text-xs); }
.error { color: var(--color-error); font-size: var(--text-sm); }
.ok { color: var(--color-accent-text); font-size: var(--text-sm); }
.label {
  display: inline-block; padding: 0 7px; line-height: 20px; letter-spacing: 0.06em;
  font-size: var(--text-xs); border: 1px solid var(--color-border-light); color: var(--color-text-secondary);
}
.label-accent { border-color: var(--color-accent); color: var(--color-accent-text); }