/* ============================================================================
   Metal Virtus Group — фирменный слой, вариант V1 «Кузня» (T025).
   Подключается ПОСЛЕДНИМ на панели, терминале и странице подключения.
   Цвета — только токены design-system.css (генерируются из brand/tokens.json);
   здесь — характер бренда: знак MVG, заголовки Oswald прописными, фаска 45°
   в правом верхнем углу, прямые кромки, прогресс цветом «горячего металла».
   Первоисточник: brand/v1/brandbook.html. Разметку экранов не меняет.

   Фаска никогда не обрезает кольцо фокуса: у кнопки угол вырезан фоном
   (градиент), у карточки угол рисует псевдоэлемент ПОД содержимым
   (isolation + z-index:-1), clip-path не используется.
   ========================================================================= */
:root {
  --r-xs: 0; --r-sm: 0; --r-md: 0; --r-lg: 0; --r-xl: 0;
  --chamfer-card: 20px;   /* карточки панели (макет mock-panel.html) */
  --chamfer-cut: 10px;    /* кнопка панели: катет 14 px = 10 px по нормали */
}
.terminal { --chamfer-cut: 17px; }  /* терминал: катет 24 px */

/* ---------- Знак MVG ---------- */
.brand-lockup { display: inline-flex; align-items: center; gap: 10px; line-height: 1; color: inherit; }
.brand-lockup svg { display: block; width: auto; max-inline-size: none; flex: 0 0 auto; stroke: none; overflow: visible; }
.brand-lockup path { stroke: none; }
.brand-lockup .brand-plate { fill: var(--brand-accent); }
.brand-lockup .brand-name { fill: currentColor; }
.brand-short { font-family: var(--font-display); font-weight: 600; font-size: 26px; letter-spacing: .06em; }

.panel .brand { color: var(--text-1); text-decoration: none; }
/* .panel a (accent-fg) перекрывал цвет ссылки «К содержимому» на акцентной подложке. */
.panel .skip-link { color: var(--accent-on); }
.crm-sidebar .brand { padding: 6px 10px 26px; }
.crm-sidebar .brand-logo, .panel--public .mobile-brand .brand-logo { height: 28px; }
.mobile-brand .brand-sign { height: 34px; }
.panel:not(.panel--public) .mobile-brand .brand-logo,
.panel--public .mobile-brand :is(.brand-sign, .brand-short) { display: none; }

/* ---------- Панель: типографика ---------- */
.panel h1 {
  font-family: var(--font-display); font-weight: 600; font-size: 40px; line-height: 1.1;
  letter-spacing: .02em; text-transform: uppercase; text-wrap: balance;
}
.panel h2:not(:where(.order-tile h2, .employee-card h2)) {
  font-family: var(--font-display); font-weight: 600; line-height: 1.15;
  letter-spacing: .03em; text-transform: uppercase;
}
.panel :is(.order-tile, .employee-card) h2 { font-weight: 700; letter-spacing: 0; }
.panel :is(.result-ribbon dd, .analytics-summary dd) {
  font-family: var(--font-display); font-weight: 600; font-size: 34px; line-height: 1.05;
  letter-spacing: .01em; font-variant-numeric: tabular-nums;
}
.panel .legal-name { margin: var(--sp-6) 0 0; color: var(--text-2); font-size: 18px; }
@media (max-width: 650px) {
  .panel h1 { font-size: 32px; }
  .panel :is(.result-ribbon dd, .analytics-summary dd) { font-size: 28px; }
}

/* ---------- Прямые кромки ---------- */
dialog,
.panel :is(.btn, .input, .select, .textarea, .quick-status, .urgency-control, .order-tile, .task-card,
  .board-column, .column-empty, .overview-panel, .employee-card, .analytics-trend, .analytics-summary dl,
  .analytics-table-wrap, .list-row, .point-panel, .credential-panel, .login-form, .production-order,
  .workspace-filters, .people-filters, .analytics-filters, .view-tabs a, .people-summary a, .more-menu a,
  .crm-sections a, .crm-mobile-nav a, .state-pill, .work-comment, .work-urgent, .assignee-menu,
  .assignee-picker > summary, .absence-alert, .key-result, .save-feedback, .dialog-loading, fieldset,
  .connection-dot),
.terminal :is(.btn, .worker-photo, .worker-header, .current-job, .next-jobs, .job-status, .recorded,
  .camera-preview, #point-status, .shared-form input, .shared-form textarea) { border-radius: 0; }
.stretched-link::after, .production-order h3 > a::after, .shift-state::before,
.panel progress, .terminal progress,
.panel progress::-webkit-progress-value, .terminal progress::-webkit-progress-value { border-radius: 0; }

/* ---------- Прогресс: «горячий металл», ≥ 3:1 к шкале ---------- */
.panel progress::-webkit-progress-value, .terminal progress::-webkit-progress-value { background: var(--chart-work); }
.panel progress::-moz-progress-bar, .terminal progress::-moz-progress-bar { background: var(--chart-work); }
.trend-bar::before { background: var(--chart-work); }

/* ---------- Основная кнопка: фаска вырезана фоном, кольцо фокуса снаружи целиком ---------- */
:is(.panel, .terminal) .btn--primary {
  --btn-fill: var(--accent);
  --btn-plate: linear-gradient(225deg, transparent var(--chamfer-cut), var(--btn-fill) var(--chamfer-cut)) border-box;
  background: var(--btn-plate); border-color: transparent; box-shadow: none;
}
:is(.panel, .terminal) .btn--primary:hover:not(:disabled):not(.is-loading) { --btn-fill: var(--accent-hover); background: var(--btn-plate); border-color: transparent; }
:is(.panel, .terminal) .btn--primary:active:not(:disabled) { --btn-fill: var(--accent-active); background: var(--btn-plate); border-color: transparent; }
.terminal .btn--primary:disabled { --btn-fill: var(--surface-2); background: var(--btn-plate); border-color: transparent; color: var(--text-2); }

/* ---------- Выбранный раздел: та же фаска, меньше ---------- */
.crm-sections a[aria-current] { background: linear-gradient(225deg, transparent 8.5px, var(--accent-bg) 8.5px) border-box; }

/* ---------- Карточки панели: фаска псевдоэлементом под содержимым ---------- */
:is(.overview-panel, .order-tile, .employee-card, .analytics-trend, .point-panel, .credential-panel,
  .login-form, .production-order, .panel .list-row) { position: relative; isolation: isolate; }
:is(.overview-panel, .order-tile, .employee-card, .analytics-trend, .point-panel, .credential-panel,
  .login-form, .production-order, .panel .list-row)::before {
  content: ""; position: absolute; top: -1px; right: -1px; z-index: -1; pointer-events: none;
  width: calc(var(--chamfer-card) * 1.5); height: calc(var(--chamfer-card) * 1.5);
  background: linear-gradient(225deg, var(--surface-0) calc(var(--chamfer-card) * .6718),
    var(--border) calc(var(--chamfer-card) * .6718), var(--border) calc(var(--chamfer-card) * .7425),
    transparent calc(var(--chamfer-card) * .7425));
}
:is(.overview-panel, .order-tile, .employee-card, .analytics-trend, .point-panel, .credential-panel,
  .login-form, .production-order, .list-row) :is(.overview-panel, .order-tile, .employee-card,
  .analytics-trend, .point-panel, .credential-panel, .login-form, .production-order, .list-row)::before { content: none; }

/* ---------- Терминал ---------- */
.terminal h1 { font-family: var(--font-display); font-weight: 600; line-height: 1.1; letter-spacing: .04em; text-transform: uppercase; }
.terminal .worker-header h1 { font-family: var(--font-sans); font-weight: 700; letter-spacing: 0; text-transform: none; }
/* Знак — в верхней полосе (T027): ширина по месту, не больше исходных 72 px высоты. */
.terminal .terminal-brand { color: var(--text-1); }
.terminal .terminal-brand .brand-lockup { display: flex; width: 100%; }
.terminal .terminal-brand .brand-logo { width: 100%; max-width: 527px; height: auto; max-height: 72px; }
.terminal .waiting #clock {
  font-family: var(--font-display); font-weight: 600; font-size: clamp(120px, 22vmin, 220px); line-height: .95;
  letter-spacing: -.01em; margin: 0 0 var(--sp-6);
}
.terminal .waiting h1 { font-size: 48px; }
/* Количества — JetBrains Mono; прежний вариативный файл начинался с 500, сохраняем ту же плотность. */
.terminal :is(.work-count, .job-remaining strong) { font-weight: 500; }
.terminal .camera-login {
  font-family: var(--font-display); font-weight: 600; font-size: 40px;
  letter-spacing: .06em; text-transform: uppercase;
}
.terminal .terminal-legal { color: var(--text-3); }  /* место — terminal.css (T027): справа снизу на высоких экранах, иначе в потоке */
.terminal .btn:focus-visible, .terminal #point-status:focus-visible { outline: 4px solid var(--focus-ring); outline-offset: 4px; }
/* Белая подсветка камеры: кольцо фокуса тёмное, иначе оранжевое на белом < 3:1. */
.terminal.camera-light { --focus-ring: var(--camera-ink); }

/* Рифлёный лист: только на спокойных экранах (ожидание, подключение), тон в тон, к центру гаснет. */
body.terminal:has(#terminal-welcome:not([hidden]))::before,
body.terminal:has(.connect-form)::before {
  content: ""; position: fixed; top: 0; right: 0; bottom: 0; width: min(760px, 35vw); z-index: -1; pointer-events: none;
  background: var(--surface-2);
  -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='36' height='36'%3E%3Cg fill='black'%3E%3Crect x='-8' y='-1.8' width='16' height='3.6' rx='1.8' transform='translate(9 9) rotate(-45)'/%3E%3Crect x='-8' y='-1.8' width='16' height='3.6' rx='1.8' transform='translate(27 9) rotate(45)'/%3E%3Crect x='-8' y='-1.8' width='16' height='3.6' rx='1.8' transform='translate(27 27) rotate(-45)'/%3E%3Crect x='-8' y='-1.8' width='16' height='3.6' rx='1.8' transform='translate(9 27) rotate(45)'/%3E%3C/g%3E%3C/svg%3E") 0 0 / 36px 36px repeat, linear-gradient(90deg, transparent, #000 70%);
  -webkit-mask-composite: source-in;
  mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='36' height='36'%3E%3Cg fill='black'%3E%3Crect x='-8' y='-1.8' width='16' height='3.6' rx='1.8' transform='translate(9 9) rotate(-45)'/%3E%3Crect x='-8' y='-1.8' width='16' height='3.6' rx='1.8' transform='translate(27 9) rotate(45)'/%3E%3Crect x='-8' y='-1.8' width='16' height='3.6' rx='1.8' transform='translate(27 27) rotate(-45)'/%3E%3Crect x='-8' y='-1.8' width='16' height='3.6' rx='1.8' transform='translate(9 27) rotate(45)'/%3E%3C/g%3E%3C/svg%3E") 0 0 / 36px 36px repeat, linear-gradient(90deg, transparent, #000 70%);
  mask-composite: intersect;
}
body.terminal.camera-light::before { content: none; }
