/*
 * Foundry — the Tendra Systems design system for internal tools, as one
 * plain-CSS file for apps without Tailwind (static pages, server templates).
 * Tailwind / shadcn apps use foundry-tailwind.css instead.
 *
 * Source of truth: docs/foundry/ (tokens/, guidelines/, components/).
 * Rules: docs/design-system.md.
 *
 * Copy this file and fonts/ next to it. Fonts are self-hosted: apps must
 * render with no internet. Archivo has no Cyrillic, so Ukrainian text falls
 * back to the system sans; that is expected.
 *
 * Theme: light by default, dark when the OS asks for it. `data-theme` on
 * <html> pins either one regardless of the OS.
 */

/* ----- fonts ----- */
@font-face {
  font-family: "Archivo";
  font-style: normal;
  font-display: swap;
  font-weight: 100 900;
  src: url("fonts/archivo-latin-ext-wght-normal.woff2") format("woff2-variations");
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: "Archivo";
  font-style: normal;
  font-display: swap;
  font-weight: 100 900;
  src: url("fonts/archivo-latin-wght-normal.woff2") format("woff2-variations");
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: "JetBrains Mono";
  font-style: normal;
  font-display: swap;
  font-weight: 100 800;
  src: url("fonts/jetbrains-mono-cyrillic-wght-normal.woff2") format("woff2-variations");
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
@font-face {
  font-family: "JetBrains Mono";
  font-style: normal;
  font-display: swap;
  font-weight: 100 800;
  src: url("fonts/jetbrains-mono-latin-wght-normal.woff2") format("woff2-variations");
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

/* ----- tokens: scale ----- */
:root {
  --gray-50: #F7F8F6;
  --gray-100: #F0F1EE;
  --gray-200: #E4E6E1;
  --gray-300: #CFD2CC;
  --gray-400: #AEB2A9;
  --gray-500: #868C83;
  --gray-600: #656B61;
  --gray-700: #4A4F47;
  --gray-800: #2A2D26;
  --gray-900: #1C1F1B;

  --font-display: "Archivo", "Helvetica Neue", Arial, sans-serif;
  --font-body: "Archivo", "Helvetica Neue", Arial, sans-serif;
  --font-mono: "JetBrains Mono", "SF Mono", Consolas, monospace;

  --text-xs: 11px;
  --text-sm: 12px;
  --text-base: 13px;
  --text-md: 15px;
  --text-lg: 18px;
  --text-xl: 22px;
  --text-2xl: 28px;
  --text-3xl: 36px;

  --leading-tight: 1.15;
  --leading-snug: 1.35;
  --leading-normal: 1.5;

  --weight-regular: 400;
  --weight-medium: 500;
  --weight-semibold: 600;
  --weight-bold: 700;

  --tracking-tight: -0.01em;
  --tracking-wide: 0.06em;

  --space-1: 4px;
  --space-2: 8px;
  --space-3: 12px;
  --space-4: 16px;
  --space-5: 20px;
  --space-6: 24px;
  --space-8: 32px;
  --space-10: 40px;
  --space-12: 48px;
  --space-16: 64px;

  --radius-sm: 4px;
  --radius-md: 6px;
  --radius-lg: 8px;
  --radius-full: 999px;

  --container-max: 1280px;

  --ease-standard: cubic-bezier(0.2, 0, 0, 1);
  --duration-fast: 120ms;
  --duration-base: 180ms;
  --duration-slow: 260ms;
}

/* ----- tokens: light (default) ----- */
:root {
  --accent-100: #E3F3EC;
  --accent-200: #C1E4D5;
  --accent-500: #3AA57E;
  --accent-600: #2E8A69;
  --accent-700: #256F55;

  --warning-base: #B8863A;
  --warning-border: #D9A857;
  --warning-bg: #F3E4CB;
  --warning-fg: #8A5A1F;

  --danger-base: #B2493F;
  --danger-border: #C97365;
  --danger-bg: #F5DEDA;
  --danger-fg: #8C3B32;

  --info-base: #5B7A96;
  --info-border: #86A8BC;
  --info-bg: #DEE8EE;
  --info-fg: #3D5A72;

  --bg-canvas: var(--gray-50);
  --bg-surface: #FFFFFF;
  --bg-surface-raised: #FFFFFF;
  --bg-inset: var(--gray-100);
  --bg-overlay: rgba(28, 31, 27, 0.44);

  --border-subtle: var(--gray-200);
  --border-default: var(--gray-300);
  --border-strong: var(--gray-400);

  --fg-primary: var(--gray-900);
  --fg-secondary: var(--gray-600);
  --fg-tertiary: var(--gray-500);
  --fg-on-accent: #FFFFFF;
  --fg-disabled: var(--gray-400);

  --accent-solid: var(--accent-500);
  --accent-solid-hover: var(--accent-600);
  --accent-solid-active: var(--accent-700);
  --accent-tint: var(--accent-100);
  --accent-tint-border: var(--accent-200);
  /* Text on accent-tint and on danger fills; Foundry's own values are too dim in dark. */
  --accent-fg: var(--accent-700);
  --fg-on-danger: #FFFFFF;

  --color-success: var(--accent-500);
  --color-warning: var(--warning-base);
  --color-danger: var(--danger-base);
  --color-info: var(--info-base);
  --focus-ring: var(--accent-500);

  /* Chart series, in this order (design-system.md "Charts"). Not status. */
  --chart-1: #2E8A69;  /* mint */
  --chart-2: #5B93CD;  /* slate */
  --chart-3: #C17392;  /* rose */
  --chart-4: #636EB2;  /* indigo */
  --chart-5: #758639;  /* olive */
  --chart-6: #9575B9;  /* violet */
  --chart-7: #716400;  /* ochre */
  --chart-8: #0698A4;  /* teal */

  --shadow-sm: 0 1px 2px rgba(20, 22, 18, 0.06);
  --shadow-md: 0 2px 6px rgba(20, 22, 18, 0.08), 0 1px 2px rgba(20, 22, 18, 0.04);
  --shadow-lg: 0 8px 24px rgba(20, 22, 18, 0.14), 0 2px 6px rgba(20, 22, 18, 0.06);

  color-scheme: light;
}

/* ----- tokens: dark ----- */
/* Declared twice on purpose: once for an explicit data-theme="dark", once for
   the OS preference when nothing is pinned. Keep the two blocks identical. */
:root[data-theme="dark"] {
  --bg-canvas: #17191A;
  --bg-surface: #1E211D;
  --bg-surface-raised: #242822;
  --bg-inset: #121412;
  --bg-overlay: rgba(0, 0, 0, 0.6);
  --border-subtle: #2C2F29;
  --border-default: #3A3E36;
  --border-strong: #565B54;
  --fg-primary: #EDEEEB;
  --fg-secondary: #B7BBB2;
  --fg-tertiary: #7D8279;
  --fg-on-accent: #0F1210;
  --fg-disabled: #565B54;
  --accent-500: #45BB8E;
  --accent-600: #3AA57E;
  --accent-700: #2E8A69;
  --accent-100: #1D3229;
  --accent-200: #234A3B;
  --accent-solid: var(--accent-500);
  --accent-solid-hover: #56C99C;
  --accent-solid-active: var(--accent-600);
  --accent-tint: var(--accent-100);
  --accent-tint-border: var(--accent-200);
  --accent-fg: #7FD3B0;
  --fg-on-danger: #0F1210;
  --warning-base: #D0A052;
  --warning-border: #A87A3C;
  --warning-bg: #3A2E1A;
  --warning-fg: #E8C98A;
  --danger-base: #C97365;
  --danger-border: #9C5548;
  --danger-bg: #3A2420;
  --danger-fg: #E3A79A;
  --info-base: #7FA3BC;
  --info-border: #5A7A90;
  --info-bg: #1F2C34;
  --info-fg: #B9D2E0;
  --color-success: var(--accent-500);
  --color-warning: var(--warning-base);
  --color-danger: var(--danger-base);
  --color-info: var(--info-base);
  --focus-ring: var(--accent-500);
  --chart-1: #3AA57E;
  --chart-2: #4078B0;
  --chart-3: #A45978;
  --chart-4: #708ED0;
  --chart-5: #6D7D2F;
  --chart-6: #A77BBB;
  --chart-7: #9F8331;
  --chart-8: #0698A4;
  --shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.3);
  --shadow-md: 0 2px 8px rgba(0, 0, 0, 0.4), 0 1px 2px rgba(0, 0, 0, 0.3);
  --shadow-lg: 0 12px 32px rgba(0, 0, 0, 0.5), 0 2px 8px rgba(0, 0, 0, 0.35);
  color-scheme: dark;
}
@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) {
    --bg-canvas: #17191A;
    --bg-surface: #1E211D;
    --bg-surface-raised: #242822;
    --bg-inset: #121412;
    --bg-overlay: rgba(0, 0, 0, 0.6);
    --border-subtle: #2C2F29;
    --border-default: #3A3E36;
    --border-strong: #565B54;
    --fg-primary: #EDEEEB;
    --fg-secondary: #B7BBB2;
    --fg-tertiary: #7D8279;
    --fg-on-accent: #0F1210;
    --fg-disabled: #565B54;
    --accent-500: #45BB8E;
    --accent-600: #3AA57E;
    --accent-700: #2E8A69;
    --accent-100: #1D3229;
    --accent-200: #234A3B;
    --accent-solid: var(--accent-500);
    --accent-solid-hover: #56C99C;
    --accent-solid-active: var(--accent-600);
    --accent-tint: var(--accent-100);
    --accent-tint-border: var(--accent-200);
    --accent-fg: #7FD3B0;
    --fg-on-danger: #0F1210;
    --warning-base: #D0A052;
    --warning-border: #A87A3C;
    --warning-bg: #3A2E1A;
    --warning-fg: #E8C98A;
    --danger-base: #C97365;
    --danger-border: #9C5548;
    --danger-bg: #3A2420;
    --danger-fg: #E3A79A;
    --info-base: #7FA3BC;
    --info-border: #5A7A90;
    --info-bg: #1F2C34;
    --info-fg: #B9D2E0;
    --color-success: var(--accent-500);
    --color-warning: var(--warning-base);
    --color-danger: var(--danger-base);
    --color-info: var(--info-base);
    --focus-ring: var(--accent-500);
    --chart-1: #3AA57E;
    --chart-2: #4078B0;
    --chart-3: #A45978;
    --chart-4: #708ED0;
    --chart-5: #6D7D2F;
    --chart-6: #A77BBB;
    --chart-7: #9F8331;
    --chart-8: #0698A4;
    --shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.3);
    --shadow-md: 0 2px 8px rgba(0, 0, 0, 0.4), 0 1px 2px rgba(0, 0, 0, 0.3);
    --shadow-lg: 0 12px 32px rgba(0, 0, 0, 0.5), 0 2px 8px rgba(0, 0, 0, 0.35);
    color-scheme: dark;
  }
}

/* ----- base ----- */
*, *::before, *::after { box-sizing: border-box; }
html, body { margin: 0; padding: 0; }
body {
  background: var(--bg-canvas);
  color: var(--fg-primary);
  font-family: var(--font-body);
  font-size: var(--text-base);
  line-height: var(--leading-normal);
  -webkit-font-smoothing: antialiased;
}
h1, h2, h3, h4 {
  font-family: var(--font-display);
  font-weight: var(--weight-semibold);
  line-height: var(--leading-tight);
  margin: 0;
}
a { color: var(--accent-solid); text-decoration: none; }
a:hover { color: var(--accent-solid-hover); text-decoration: underline; }
code, pre, kbd, .mono { font-family: var(--font-mono); }
::selection { background: var(--accent-tint-border); }
:focus-visible { outline: 2px solid var(--focus-ring); outline-offset: 2px; }

/* ----- components (specs: docs/foundry/components) ----- */

/* Section label above content: the one place UI copy is uppercase. */
.eyebrow {
  font-size: var(--text-xs);
  font-weight: var(--weight-semibold);
  text-transform: uppercase;
  letter-spacing: var(--tracking-wide);
  color: var(--fg-tertiary);
}

.btn {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  height: 34px;
  padding: 0 14px;
  font: var(--weight-semibold) var(--text-base) / 1 var(--font-body);
  border-radius: var(--radius-md);
  border: 1px solid transparent;
  background: var(--accent-solid);
  color: var(--fg-on-accent);
  cursor: pointer;
  text-decoration: none;
  transition: background var(--duration-fast) var(--ease-standard), border-color var(--duration-fast) var(--ease-standard);
}
.btn:hover { background: var(--accent-solid-hover); color: var(--fg-on-accent); text-decoration: none; }
.btn:active { background: var(--accent-solid-active); }
.btn:disabled, .btn[aria-disabled="true"] { opacity: 0.45; cursor: not-allowed; }
.btn-sm { height: 28px; padding: 0 10px; font-size: var(--text-sm); }
.btn-secondary { background: var(--bg-surface); color: var(--fg-primary); border-color: var(--border-default); }
.btn-secondary:hover { background: var(--bg-inset); color: var(--fg-primary); }
.btn-ghost { background: transparent; color: var(--fg-primary); }
.btn-ghost:hover { background: var(--bg-inset); color: var(--fg-primary); }
.btn-danger { background: var(--danger-base); color: var(--fg-on-danger); }
.btn-danger:hover { background: var(--danger-fg); color: var(--fg-on-danger); }

.card {
  background: var(--bg-surface);
  border: 1px solid var(--border-subtle);
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow-sm);
  padding: var(--space-4);
}

.badge {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 3px 8px;
  border-radius: var(--radius-full);
  font-size: var(--text-xs);
  font-weight: var(--weight-semibold);
  text-transform: uppercase;
  letter-spacing: var(--tracking-wide);
  background: var(--bg-inset);
  color: var(--fg-secondary);
}
.badge::before {
  content: "";
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: var(--fg-tertiary);
  flex-shrink: 0;
}
.badge.no-dot::before { display: none; }
.badge-success { background: var(--accent-tint); color: var(--accent-fg); }
.badge-success::before { background: var(--accent-solid); }
.badge-warning { background: var(--warning-bg); color: var(--warning-fg); }
.badge-warning::before { background: var(--warning-base); }
.badge-danger { background: var(--danger-bg); color: var(--danger-fg); }
.badge-danger::before { background: var(--danger-base); }
.badge-info { background: var(--info-bg); color: var(--info-fg); }
.badge-info::before { background: var(--info-base); }

.status-dot {
  display: inline-block;
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: currentColor;
  flex-shrink: 0;
}

.input, .select, .textarea {
  font: var(--text-base) / var(--leading-normal) var(--font-body);
  background: var(--bg-surface);
  color: var(--fg-primary);
  border: 1px solid var(--border-default);
  border-radius: var(--radius-md);
  padding: 7px 10px;
  outline: none;
}
.input:focus, .select:focus, .textarea:focus { border-color: var(--focus-ring); }
.input:disabled { background: var(--bg-inset); }

.table { width: 100%; border-collapse: collapse; font-size: var(--text-sm); }
.table th {
  text-align: left;
  padding: 8px 10px;
  border-bottom: 1px solid var(--border-default);
  color: var(--fg-tertiary);
  font-weight: var(--weight-semibold);
  font-size: var(--text-xs);
  text-transform: uppercase;
  letter-spacing: var(--tracking-wide);
}
.table td { padding: 8px 10px; border-bottom: 1px solid var(--border-subtle); }

.tabs { display: flex; gap: var(--space-5); border-bottom: 1px solid var(--border-default); }
.tabs > a, .tabs > button {
  padding: 8px 2px;
  margin-bottom: -1px;
  border: 0;
  border-bottom: 2px solid transparent;
  background: none;
  font: var(--weight-semibold) var(--text-sm) / 1.4 var(--font-body);
  color: var(--fg-tertiary);
  cursor: pointer;
  text-decoration: none;
}
.tabs > a:hover, .tabs > button:hover { color: var(--fg-primary); text-decoration: none; }
.tabs > [aria-current="page"], .tabs > [aria-selected="true"], .tabs > .is-active {
  color: var(--fg-primary);
  border-bottom-color: var(--accent-solid);
}

/* Segmented control: 2-4 short inline options (Foundry's ViewSwitcher shape).
   <div class="segmented" role="group"><button aria-pressed="true">…</button>… */
.segmented {
  display: inline-flex;
  flex-shrink: 0;
  border: 1px solid var(--border-default);
  border-radius: var(--radius-md);
  overflow: hidden;
}
.segmented > button {
  height: 30px;
  padding: 0 var(--space-3);
  border: 0;
  background: var(--bg-surface);
  font: var(--weight-semibold) var(--text-sm) / 1 var(--font-body);
  color: var(--fg-tertiary);
  cursor: pointer;
  transition: background var(--duration-fast) var(--ease-standard), color var(--duration-fast) var(--ease-standard);
}
.segmented > button + button { border-left: 1px solid var(--border-default); }
.segmented > button:hover { color: var(--fg-primary); }
.segmented > button[aria-pressed="true"] { background: var(--bg-inset); color: var(--fg-primary); }
.segmented > button:disabled { cursor: progress; }
.segmented > button:focus-visible { outline-offset: -2px; }
.segmented-sm > button { height: 22px; padding: 0 var(--space-2); font-size: var(--text-xs); }

/* App header: mark + "Tendra Systems" → the hub, app name → the app's home.
   See design-system.md "App header". */
.app-header {
  position: sticky;
  top: 0;
  z-index: 20;
  display: flex;
  align-items: center;
  gap: var(--space-6);
  height: 52px;
  padding: 0 var(--space-6);
  background: var(--bg-surface);
  border-bottom: 1px solid var(--border-subtle);
}
.app-brand { display: flex; align-items: center; gap: var(--space-3); }
.app-brand a, .app-brand a:hover { color: var(--fg-primary); text-decoration: none; }
.app-brand .company { display: flex; align-items: center; gap: var(--space-2); font-weight: var(--weight-bold); font-size: var(--text-md); letter-spacing: var(--tracking-tight); }
.app-brand .company svg { width: 22px; height: 22px; flex-shrink: 0; }
.app-brand .app-name { font-weight: var(--weight-medium); color: var(--fg-secondary); }
.app-brand .app-name:hover { color: var(--fg-primary); }
.app-header nav { display: flex; gap: var(--space-1); margin-left: auto; }
.app-header nav a {
  padding: 6px 10px;
  border-radius: var(--radius-md);
  color: var(--fg-secondary);
  font-weight: var(--weight-medium);
}
.app-header nav a:hover { background: var(--bg-inset); color: var(--fg-primary); text-decoration: none; }
.app-header nav a[aria-current="page"] { background: var(--bg-inset); color: var(--fg-primary); }

.container { max-width: var(--container-max); margin: 0 auto; padding: var(--space-6); }

/* The log/terminal viewer stays dark in every theme. */
.terminal {
  background: #121412;
  color: #D5D8D0;
  font: var(--text-sm) / 1.55 var(--font-mono);
  border-radius: var(--radius-lg);
  padding: var(--space-3) var(--space-4);
  overflow: auto;
}
