/* Токены портала. Значения — СТРОГО из docs/design/design-tokens.md
   (вендорский файл зафиксирован на коммите, не правим) и docs/design/
   typography.md. Шрифтовой стек — адаптация 1 docs/ДИЗАЙН.md (ru).
   Компоненты в app.css используют только var(--…): магические числа
   мимо токенов — ошибка на ревью (контракт ДИЗАЙН.md). */

:root {
  /* ── 1. Цвета (design-tokens.md §1) ─────────────────────────────── */
  --apple-bg-white: #FFFFFF;
  --apple-bg-dark: #1D1D1F;
  --apple-bg-light-gray: #F5F5F7;
  --apple-bg-elevated: #FBFBFD;

  --apple-text-primary: #1D1D1F;
  --apple-text-secondary: #6E6E73;
  --apple-text-tertiary: #86868B;
  --apple-text-on-dark: #F5F5F7;
  --apple-text-white: #FFFFFF;

  --apple-link-blue: #0066CC;
  --apple-link-blue-hover: #0077ED;
  --apple-accent-green: #2D8C3C;
  --apple-accent-orange: #E85D04;
  --apple-accent-red: #E30000;

  /* ── 2. Отступы (design-tokens.md §2) ───────────────────────────── */
  --apple-section-gap: 100px;
  --apple-section-gap-sm: 80px;
  --apple-section-gap-lg: 120px;

  --apple-component-gap-sm: 16px;
  --apple-component-gap-md: 32px;
  --apple-component-gap-lg: 48px;

  --apple-card-padding: 32px;
  --apple-card-padding-sm: 24px;
  --apple-card-padding-lg: 40px;

  --apple-content-max-width: 980px;
  --apple-content-max-width-lg: 1200px;

  /* ── 3. Веса шрифта (design-tokens.md §3) ───────────────────────── */
  --apple-weight-title: 600;
  --apple-weight-title-bold: 700;
  --apple-weight-title-heavy: 800;
  --apple-weight-title-black: 900;
  --apple-weight-body: 400;
  --apple-weight-body-medium: 500;

  /* ── 4. Радиусы (design-tokens.md §4) ───────────────────────────── */
  --apple-radius-card: 18px;
  --apple-radius-card-sm: 12px;
  --apple-radius-card-lg: 20px;
  --apple-radius-button: 980px;
  --apple-radius-badge: 8px;
  --tc-space-xs: 4px;
  --tc-space-sm: 8px;
  --tc-space-md: 12px;
  --tc-font-size-small: 14px;
  --tc-font-size-caption-sm: 13px;

  /* ── 5. Тени (design-tokens.md §5) ──────────────────────────────── */
  --apple-shadow-card: 0 2px 8px rgba(0, 0, 0, 0.04),
                       0 8px 24px rgba(0, 0, 0, 0.08);
  --apple-shadow-hover: 0 4px 12px rgba(0, 0, 0, 0.06),
                        0 12px 32px rgba(0, 0, 0, 0.12);
  --apple-shadow-sm: 0 1px 4px rgba(0, 0, 0, 0.04),
                     0 4px 12px rgba(0, 0, 0, 0.06);
  --apple-shadow-modal: 0 8px 20px rgba(0, 0, 0, 0.08),
                        0 20px 60px rgba(0, 0, 0, 0.16);

  /* ── 6. Градиенты (design-tokens.md §6; у нас в ходу только фоновые —
        текстовые градиенты не применяем: ДИЗАЙН.md запрещает декор
        ради декора) ────────────────────────────────────────────────── */
  --apple-gradient-bg-light: linear-gradient(180deg, #FBFBFD 0%, #F5F5F7 100%);
  --apple-gradient-bg-dark: linear-gradient(180deg, #1D1D1F 0%, #000000 100%);

  /* ── 7. Трекинг (design-tokens.md §7) ───────────────────────────── */
  --apple-tracking-en-title: -0.015em;
  --apple-tracking-en-title-tight: -0.02em;
  --apple-tracking-en-title-loose: 0.01em;
  --apple-tracking-body: 0em;

  /* ── 8. Межстрочные (design-tokens.md §8) ───────────────────────── */
  --apple-leading-title: 1.1;
  --apple-leading-title-tight: 1.05;
  --apple-leading-title-loose: 1.15;
  --apple-leading-body: 1.53;
  --apple-leading-body-tight: 1.5;
  --apple-leading-body-loose: 1.58;

  /* ── 9. Брейкпоинты (design-tokens.md §9). В @media var() не
        работает, поэтому медиа-запросы в app.css пишутся теми же
        числами 734/1068/1440px — это задокументированный паттерн
        самого design-tokens.md, а не магические числа ─────────────── */
  --apple-breakpoint-sm: 734px;
  --apple-breakpoint-md: 1068px;
  --apple-breakpoint-lg: 1440px;

  /* ── Размеры шрифта (typography.md §3) ──────────────────────────── */
  --apple-font-size-hero: 56px;
  --apple-font-size-hero-min: 48px;
  --apple-font-size-hero-max: 80px;
  --apple-font-size-subtitle: 28px;
  --apple-font-size-subtitle-min: 24px;
  --apple-font-size-subtitle-max: 32px;
  --apple-font-size-body: 17px;
  --apple-font-size-body-min: 17px;
  --apple-font-size-body-max: 21px;
  --apple-font-size-caption: 12px;
  --apple-font-size-caption-max: 14px;

  /* ── Шрифтовой стек — адаптация 1 docs/ДИЗАЙН.md (интерфейс на
        русском; SF Pro содержит кириллицу, Inter — веб-фолбэк;
        веб-шрифты не грузим намеренно: портал живёт без внешних
        зависимостей, системного стека достаточно) ─────────────────── */
  --apple-font-display: -apple-system, BlinkMacSystemFont, "SF Pro Display", "Segoe UI", Inter, Roboto, sans-serif; /* lint-allow: адаптация 1 ДИЗАЙН.md — ru-стек, причина в комментарии выше */
  --apple-font-text: -apple-system, BlinkMacSystemFont, "SF Pro Display", "Segoe UI", Inter, Roboto, sans-serif; /* lint-allow: адаптация 1 ДИЗАЙН.md — ru-стек, причина в комментарии выше */

  /* ── Семантические статус-цвета портала. Производные от вендорских
        акцентов (единственный акцент экрана — #0066CC; статусы —
        семантические цвета design-tokens.md §1) ───────────────────── */
  --tc-status-created: var(--apple-text-secondary);
  --tc-status-working: var(--apple-link-blue);
  --tc-status-approval: var(--apple-accent-orange);
  --tc-status-production: var(--apple-accent-green);
  --tc-status-shipped: var(--apple-text-tertiary);
  --tc-danger: var(--apple-accent-red);
  --tc-warning: var(--apple-accent-orange);
  --tc-success: var(--apple-accent-green);

  /* ── Компонентные размеры портала. Все — производные вендорских
        значений (половины/четверти шага), чтобы в app.css не появлялись
        числа «из головы». Рабочие экраны плотнее лендинга: отступы
        секций 24–40px — адаптация 4 docs/ДИЗАЙН.md ────────────────── */
  --tc-screen-gap: var(--apple-card-padding-sm);          /* 24px между блоками экрана */
  --tc-screen-gap-lg: var(--apple-card-padding);          /* 32px */
  --tc-screen-pad: var(--apple-card-padding-sm);          /* 24px поля экрана */
  --tc-screen-pad-lg: var(--apple-card-padding-lg);       /* 40px поля на широких */
  --tc-control-pad-y: var(--apple-radius-badge);          /* 8px вертикаль кнопок/полей */
  --tc-control-pad-x: var(--apple-component-gap-sm);      /* 16px горизонталь кнопок/полей */
  --tc-row-gap: var(--apple-component-gap-sm);            /* 16px */
  --tc-border-width: 1px;
  --tc-avatar-size: 56px;
  --tc-viewer-min-height: 480px;
  --tc-menu-min-width: 200px;
  --tc-login-card-max-width: 400px;
  --tc-notify-modal-max-width: 420px;  /* модалка попапа (docs/ДИЗАЙН.md адаптация 10) */
  --tc-overlay-scrim: rgba(0, 0, 0, 0.4);
  --tc-hover-lift: -2px;               /* подъём карточки при наведении (паттерн layout-patterns.md) */
  --tc-user-col-login: 80px;           /* минимумы колонок таблицы пользователей */
  --tc-user-col-name: 120px;
  --tc-user-col-role: 140px;
  --tc-user-col-seen: 110px;

  /* ── Панели зоны вьюера (docs/ДИЗАЙН.md адаптации 3 и 6). Полупрозрачные
         компактные панели поверх тёмной сцены: контраст на тёмном важнее
         бренда, поэтому палитра своя и зафиксирована токенами, а не hex в
         инжектированном <style>. ─────────────────────────────────────── */
  --tc-viewer-panel-bg: rgba(20, 22, 26, 0.72);
  --tc-viewer-panel-border: rgba(255, 255, 255, 0.12);
  --tc-viewer-panel-text: #E8EAF0;
  --tc-viewer-panel-text-dim: rgba(232, 234, 240, 0.6);
  --tc-viewer-accent: #6DB3F2;       /* светлее #0066CC: на сцене бренд нечитаем */
  --tc-viewer-radius: 10px;
  --tc-viewer-blur: 8px;
  --tc-viewer-summary-inset: 12px;   /* отступ сводки плана от края сцены */
  --tc-viewer-summary-width: 260px;
  --tc-viewer-summary-pad: 10px 12px;
  --tc-viewer-summary-gap: 3px 10px;
  --tc-viewer-summary-head-gap: 6px;
  --tc-viewer-label-tracking: 0.04em; /* микроподписи капсом на тёмном */

  /* Тайминг hover-перехода (паттерн design-tokens.md §5 «hover elevates the
     shadow»): единый для карточек и кнопок, магические 0.3s в компонентах запрещены. */
  --tc-hover-transition: 0.3s ease;

  /* Нажатие кнопки (docs/ДИЗАЙН.md, адаптация 8): короче hover-перехода —
     отклик «под пальцем»; scale — только transform без reflow; overlay —
     затемнение inset-тенью поверх любого цвета кнопки, в тёмной теме своё. */
  --tc-press-transition: 0.12s ease-out;
  --tc-press-scale: 0.97;
  --tc-press-overlay: rgba(0, 0, 0, 0.08);

  /* ── Цвета типов конструкций (docs/СЛОВАРИ.md §Конструкции). Семантическая
     палитра для FDI-клавиш плана: выбранный зуб с конструкцией «загорается»
     её цветом (order.js вешает fdi-keys-constr-<id> на контейнер, CSS красит
     через var()). Это свойство архитектуры, а не декоративный hex в коде. ────── */
  --tc-constr-crown: var(--apple-link-blue);       /* Коронка — акцент-синий */
  --tc-constr-bridge: var(--apple-accent-green);   /* Мост — зелёный */
  --tc-constr-inlay: var(--apple-accent-orange);   /* Вкладка — оранжевый */
  --tc-constr-veneer: #8E44AD;                     /* Винир — фиолетовый (вне палитры токенов) */
  --tc-constr-removable: var(--apple-text-secondary); /* Съёмный — серый */
  --tc-surface-2: #F0F4F8;
  --tc-infer-input-width: 80px; /* Съёмный — серый */
  --tc-constr-implant: #D7263D;                    /* Имплант — красный (вне палитры токенов) */
  /* ── Семантические тематические токены (v0.1.13) ─────────────────────────
     Единственные «цветные» токены, к которым обращается app.css (фоны
     панелей/холста, тексты, ссылки, границы, тени; вендорские --apple-*
     на страницах не используются). По умолчанию равны вендорским значениям,
     блок [data-theme="dark"] ниже переопределяет ТОЛЬКО этот слой — вендор
     docs/design остаётся эталоном светлой палитры, линтер сверяет --apple-*
     без исключений (docs/ДИЗАЙН.md, адаптация 7). */
  --tc-bg-canvas: var(--apple-gradient-bg-light);   /* фон крупных экранов (вход) */
  --tc-bg-canvas-solid: var(--apple-bg-light-gray); /* сплошной фон кабинета */
  --tc-bg-panel: var(--apple-bg-white);             /* панели, карточки, шапка, модалки */
  --tc-bg-soft: var(--apple-bg-light-gray);         /* мягкие заливки: hover, чипы, плашки */
  --tc-bg-strong: var(--apple-bg-dark);             /* контрастная тёмная полоса (вьюер-хост) */
  --tc-text-primary: var(--apple-text-primary);
  --tc-text-secondary: var(--apple-text-secondary);
  --tc-text-tertiary: var(--apple-text-tertiary);
  --tc-text-on-accent: var(--apple-text-white);     /* текст на цветных (кнопки/бейджи) */
  --tc-text-on-strong: var(--apple-text-on-dark);   /* текст на --tc-bg-strong */
  --tc-link: var(--apple-link-blue);
  --tc-link-hover: var(--apple-link-blue-hover);
  --tc-border: var(--apple-bg-light-gray);          /* тонкие линии-разделители */
  --tc-border-strong: var(--apple-text-tertiary);   /* границы полей/карточек */
  --tc-shadow-card: var(--apple-shadow-card);
  --tc-shadow-hover: var(--apple-shadow-hover);
  --tc-shadow-sm: var(--apple-shadow-sm);
  --tc-shadow-modal: var(--apple-shadow-modal);

  /* ── Очередь заказов: таблица, панель фильтров, скелетон (E2, D01).
        Группа table/toolbar — производные вендорских шагов, чтобы в app.css
        не появлялись числа «из головы». Ширины колонок — рабочие, а не
        декларативные: номер/статус/срок не должны прыгать от строки к строке. */
  --tc-table-font-size: var(--apple-font-size-caption-max);
  --tc-table-head-font-size: var(--apple-font-size-caption);
  --tc-table-cell-pad-y: var(--tc-space-sm);
  --tc-table-cell-pad-x: var(--tc-space-md);
  --tc-table-head-pad-y: var(--tc-space-md);
  --tc-table-min-width: 1110px;
  --tc-table-radius: var(--apple-radius-card-sm);
  --tc-table-head-bg: var(--tc-bg-soft);
  --tc-table-row-hover-bg: var(--tc-bg-soft);
  --tc-table-card-pad: var(--tc-space-md);
  --tc-table-card-gap: var(--tc-space-sm);
  --tc-table-col-number: 72px;
  --tc-table-col-patient: 140px;
  --tc-table-col-clinic: 150px;
  --tc-table-col-works: 140px;
  --tc-table-col-status: 140px;
  --tc-table-col-assignee: 120px;
  --tc-table-col-due: 96px;
  --tc-table-col-priority: 96px;
  --tc-table-col-updated: 112px;
  --tc-table-col-actions: 44px;
  --tc-toolbar-pad: var(--tc-space-md);
  --tc-toolbar-gap: var(--tc-space-sm);
  --tc-filter-max-width: 220px;
  --tc-search-max-width: 320px;
  --tc-control-height: 36px;
  --tc-status-icon-size: 14px;
  --tc-priority-mark-size: 6px;
  --tc-skeleton-duration: 1.4s;
  --tc-skeleton-bg: var(--tc-bg-soft);
  --tc-skeleton-shine: var(--apple-bg-elevated);
  --tc-banner-pad: var(--tc-space-md);
  --tc-columns-menu-min-width: 220px;
  --tc-tooltip-max-width: 320px;
  --tc-sr-size: 1px;
  --tc-table-head-z: 2;
  --tc-menu-z: 20;
  --tc-orders-panel-min-height: 160px;

  /* ── Мастерская (E4, frontend-design F04/F05): каркас, шаги, боковые
        панели, поля шага. Ширины — рабочие: левая панель объектов не должна
        отъедать сцену, правая держит поля ввода читаемыми. Все значения
        производны от вендорских шагов — магических чисел в app.css нет. */
  --tc-workshop-gap: var(--apple-component-gap-sm);
  --tc-workshop-panel-pad: var(--apple-card-padding-sm);
  --tc-workshop-left-width: 264px;
  --tc-workshop-right-width: 320px;
  --tc-workshop-left-width-lg: 288px;
  --tc-workshop-right-width-lg: 352px;
  --tc-workshop-viewer-min-height: 420px;
  --tc-workshop-step-gap: var(--tc-space-xs);
  --tc-workshop-step-pad: var(--tc-control-pad-y) var(--tc-control-pad-x);
  --tc-workshop-step-no-size: var(--apple-card-padding-sm);
  --tc-workshop-banner-pad: var(--tc-space-md);
  --tc-workshop-banner-radius: var(--apple-radius-card-sm);
  --tc-workshop-banner-accent: var(--tc-space-xs);
  --tc-workshop-tag-pad: 0 var(--tc-space-sm);
  --tc-workshop-file-name-max: 180px;
  --tc-workshop-scene-note-max: 340px;
  --tc-workshop-scene-note-inset: var(--tc-space-md);
  --tc-workshop-fallback-pad: var(--apple-card-padding-sm);
  --tc-workshop-tabs-height: var(--tc-control-height);
  --tc-workshop-subtle-bg: var(--tc-bg-soft);
  --tc-workshop-save-saved: var(--tc-success);
  --tc-workshop-save-dirty: var(--tc-warning);
  --tc-workshop-save-saving: var(--tc-link);
  --tc-workshop-save-error: var(--tc-danger);
  --tc-workshop-banner-warning: var(--tc-warning);
  --tc-workshop-banner-error: var(--tc-danger);
  --tc-workshop-banner-success: var(--tc-success);
  --tc-workshop-banner-info: var(--tc-border-strong);

  /* ── Проверка и выдача (E5, frontend-design F07): очередь, деталь
        проверки, чек-лист, вкладка выдачи и статус сборки. Размеры —
        производные вендорских шагов, чтобы в app.css не было чисел
        «из головы»; цвета — семантические --tc-status/--tc-*. */
  --tc-reviews-gap: var(--apple-component-gap-sm);
  --tc-reviews-list-width: 360px;
  --tc-reviews-list-width-lg: 420px;
  --tc-reviews-row-pad: var(--tc-space-md);
  --tc-reviews-detail-pad: var(--apple-card-padding-sm);
  --tc-reviews-banner-pad: var(--tc-space-md);
  --tc-reviews-banner-accent: var(--tc-space-xs);
  --tc-reviews-banner-radius: var(--apple-radius-card-sm);
  --tc-reviews-table-min-width: 520px;
  --tc-reviews-param-key: 120px;
  --tc-reviews-sticky-top: var(--tc-space-md);
  --tc-reviews-code-max: 240px;
  --tc-issue-gap: var(--tc-space-md);
  --tc-issue-side-width: 320px;
  --tc-issue-table-min-width: 560px;
  --tc-issue-block-pad: var(--apple-card-padding-sm);
  --tc-font-mono: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
}/* ── Тёмная тема (v0.1.13) ─────────────────────────────────────────────────
   Включается атрибутом data-theme="dark" на <html>: index.html применяет его
   ДО первой отрисовки из localStorage["tc-theme"] (анти-мигание), переключатель
   «Светлая/Тёмная» — в профиле (account.js). Переопределяются только --tc-*
   семантические токены: вендорские --apple-* не тронуты (docs/ДИЗАЙН.md,
   адаптация 7). Рабочая область 3D-вьюера остаётся тёмной в обеих темах
   (адаптация 3) — её --tc-viewer-* и панельные токены не трогаем. */
[data-theme="dark"] {
  color-scheme: dark;

  --tc-bg-canvas: linear-gradient(180deg, #161618 0%, #0A0A0C 100%);
  --tc-bg-canvas-solid: #161618;
  --tc-bg-panel: #1C1C1E;
  --tc-bg-soft: #2C2C2E;
  --tc-bg-strong: #000000;

  --tc-text-primary: #F5F5F7;
  --tc-text-secondary: #A1A1A6;
  --tc-text-tertiary: #8E8E93;
  --tc-text-on-accent: #FFFFFF;
  --tc-text-on-strong: #F5F5F7;

  --tc-link: #2997FF;
  --tc-link-hover: #64B2FF;

  --tc-border: #3A3A3C;
  --tc-border-strong: #55555A;

  --tc-shadow-card: 0 2px 8px rgba(0, 0, 0, 0.45), 0 8px 24px rgba(0, 0, 0, 0.55);
  --tc-shadow-hover: 0 4px 12px rgba(0, 0, 0, 0.5), 0 12px 32px rgba(0, 0, 0, 0.65);
  --tc-shadow-sm: 0 1px 4px rgba(0, 0, 0, 0.4), 0 4px 12px rgba(0, 0, 0, 0.5);
  --tc-shadow-modal: 0 8px 20px rgba(0, 0, 0, 0.55), 0 20px 60px rgba(0, 0, 0, 0.75);

  --tc-press-overlay: rgba(0, 0, 0, 0.18);

  --tc-overlay-scrim: rgba(0, 0, 0, 0.65);
  --tc-surface-2: #101216;

  --tc-status-created: var(--tc-text-secondary);
  --tc-status-working: var(--tc-link);
  --tc-status-approval: #FF9F0A;
  --tc-status-production: #32D74B;
  --tc-status-shipped: var(--tc-text-tertiary);
  --tc-danger: #FF453A;
  --tc-warning: #FF9F0A;
  --tc-success: #32D74B;

  --tc-constr-crown: #2997FF;
  --tc-constr-bridge: #32D74B;
  --tc-constr-inlay: #FF9F0A;
  --tc-constr-veneer: #B06AC3;
  --tc-constr-removable: var(--tc-text-secondary);
  --tc-constr-implant: #FF453A;

  /* Таблица очереди: в тёмной теме шапка и подсветка строки чуть светлее
     панели, а блик скелетона — заметнее мягкой заливки. */
  --tc-table-head-bg: #232326;
  --tc-table-row-hover-bg: #232326;
  --tc-skeleton-shine: #3A3A3C;
}

}
