/* ══════════════════════════════════════════════════════════════════
   0-INTEL — E2B Design Tokens (v3.12.0)  ·  Tier-1 SINGLE SOURCE OF VALUES
   ──────────────────────────────────────────────────────────────────
   Извлечено из E2B Brandbook (e2b-design-tokens.json). Терминальная
   эстетика: IBM Plex Mono (UI), IBM Plex Sans (проза), оранжевый #ff8800,
   острые углы, грид-фон.

   Подключение (DRY — единственный источник значений + @font-face):
     • SPA:    <link rel="stylesheet" href="/rag-shared/styles/tokens.css"> в rag-ui/index.html
     • Widget: @import url('/rag-shared/styles/tokens.css'); в начале rag-widget.css (#3)
     • Header: @font-face document-scoped → виден shadow-root <unified-header>

   Поверхности маппят свои публичные токены (--color-*, --font-*, --radius-*)
   на эти --e2b-* (см. rag-ui.css :root / .rag-light и rag-widget.css #rag-widget).
   ИМЕНА публичных токенов НЕ менять — контракт. Здесь — только значения.

   Шрифты self-host: assets/fonts/*.woff2 → /assets/fonts/ (rag-service /assets mount;
   same-origin обеим поверхностям через nginx-фасад). Cyrillic+Latin+Latin-ext субсеты.
   ══════════════════════════════════════════════════════════════════ */

/* ─── @font-face: IBM Plex Mono (Reg 400 / Med 500 / SemiBold 600 / Bold 700) ─── */
/* cyrillic */
@font-face{font-family:'IBM Plex Mono';font-style:normal;font-weight:400;font-display:swap;src:url('/assets/fonts/ibm-plex-mono-cyrillic-400-normal.woff2') format('woff2');unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116;}
@font-face{font-family:'IBM Plex Mono';font-style:normal;font-weight:500;font-display:swap;src:url('/assets/fonts/ibm-plex-mono-cyrillic-500-normal.woff2') format('woff2');unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116;}
@font-face{font-family:'IBM Plex Mono';font-style:normal;font-weight:600;font-display:swap;src:url('/assets/fonts/ibm-plex-mono-cyrillic-600-normal.woff2') format('woff2');unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116;}
@font-face{font-family:'IBM Plex Mono';font-style:normal;font-weight:700;font-display:swap;src:url('/assets/fonts/ibm-plex-mono-cyrillic-700-normal.woff2') format('woff2');unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116;}
/* latin */
@font-face{font-family:'IBM Plex Mono';font-style:normal;font-weight:400;font-display:swap;src:url('/assets/fonts/ibm-plex-mono-latin-400-normal.woff2') format('woff2');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+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;}
@font-face{font-family:'IBM Plex Mono';font-style:normal;font-weight:500;font-display:swap;src:url('/assets/fonts/ibm-plex-mono-latin-500-normal.woff2') format('woff2');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+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;}
@font-face{font-family:'IBM Plex Mono';font-style:normal;font-weight:600;font-display:swap;src:url('/assets/fonts/ibm-plex-mono-latin-600-normal.woff2') format('woff2');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+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;}
@font-face{font-family:'IBM Plex Mono';font-style:normal;font-weight:700;font-display:swap;src:url('/assets/fonts/ibm-plex-mono-latin-700-normal.woff2') format('woff2');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+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;}
/* latin-ext */
@font-face{font-family:'IBM Plex Mono';font-style:normal;font-weight:400;font-display:swap;src:url('/assets/fonts/ibm-plex-mono-latin-ext-400-normal.woff2') format('woff2');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:'IBM Plex Mono';font-style:normal;font-weight:500;font-display:swap;src:url('/assets/fonts/ibm-plex-mono-latin-ext-500-normal.woff2') format('woff2');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:'IBM Plex Mono';font-style:normal;font-weight:600;font-display:swap;src:url('/assets/fonts/ibm-plex-mono-latin-ext-600-normal.woff2') format('woff2');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:'IBM Plex Mono';font-style:normal;font-weight:700;font-display:swap;src:url('/assets/fonts/ibm-plex-mono-latin-ext-700-normal.woff2') format('woff2');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: IBM Plex Sans (Reg 400 / Med 500 / SemiBold 600) — длинная проза ─── */
/* cyrillic */
@font-face{font-family:'IBM Plex Sans';font-style:normal;font-weight:400;font-display:swap;src:url('/assets/fonts/ibm-plex-sans-cyrillic-400-normal.woff2') format('woff2');unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116;}
@font-face{font-family:'IBM Plex Sans';font-style:normal;font-weight:500;font-display:swap;src:url('/assets/fonts/ibm-plex-sans-cyrillic-500-normal.woff2') format('woff2');unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116;}
@font-face{font-family:'IBM Plex Sans';font-style:normal;font-weight:600;font-display:swap;src:url('/assets/fonts/ibm-plex-sans-cyrillic-600-normal.woff2') format('woff2');unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116;}
/* latin */
@font-face{font-family:'IBM Plex Sans';font-style:normal;font-weight:400;font-display:swap;src:url('/assets/fonts/ibm-plex-sans-latin-400-normal.woff2') format('woff2');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+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;}
@font-face{font-family:'IBM Plex Sans';font-style:normal;font-weight:500;font-display:swap;src:url('/assets/fonts/ibm-plex-sans-latin-500-normal.woff2') format('woff2');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+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;}
@font-face{font-family:'IBM Plex Sans';font-style:normal;font-weight:600;font-display:swap;src:url('/assets/fonts/ibm-plex-sans-latin-600-normal.woff2') format('woff2');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+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;}
/* latin-ext */
@font-face{font-family:'IBM Plex Sans';font-style:normal;font-weight:400;font-display:swap;src:url('/assets/fonts/ibm-plex-sans-latin-ext-400-normal.woff2') format('woff2');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:'IBM Plex Sans';font-style:normal;font-weight:500;font-display:swap;src:url('/assets/fonts/ibm-plex-sans-latin-ext-500-normal.woff2') format('woff2');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:'IBM Plex Sans';font-style:normal;font-weight:600;font-display:swap;src:url('/assets/fonts/ibm-plex-sans-latin-ext-600-normal.woff2') format('woff2');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;}

/* ─── Значения E2B (flat-каталог; surfaces маппят свои public-токены сюда) ─── */
:root {
  /* Бренд (оранжевый — акцент в обеих темах) */
  --e2b-accent:        #ff8800;
  --e2b-accent-alt:    #e56f00;  /* hover / light-вариант */
  --e2b-accent-alpha:  #ff880029; /* 16% — фоны акцента, focus-ring */

  /* Тёмная тема (default) */
  --e2b-bg-deep:       #0a0a0a;
  --e2b-bg-primary:    #141414;
  --e2b-bg-secondary:  #1a1a1a;
  --e2b-bg-tertiary:   #1f1f1f;
  --e2b-bg-elevated:   #242424;
  --e2b-fg:            #ffffff;
  --e2b-fg-secondary:  #cccccc;
  --e2b-fg-tertiary:   #777777;
  --e2b-fg-quad:       #666666;
  --e2b-stroke:        #292929;
  --e2b-stroke-hover:  #3d3d3d;
  --e2b-stroke-subtle: #1f1f1f;

  /* Светлая тема */
  --e2b-l-accent:      #e56f00;
  --e2b-l-accent-text: #9c4700;  /* v3.14.1 AA-текст; v3.17.0: bg-elevated поднят до #e8e8e8 → ratio 4.62:1 ≥ AA */
  --e2b-l-error-text:  #b32b00;  /* v3.14.1 AA error-текст (≥4.5:1 на всех light-поверхностях) */
  --e2b-l-bg-deep:     #fafafa;
  --e2b-l-bg-primary:  #f2f2f2;
  --e2b-l-bg-secondary:#ebebeb;
  --e2b-l-bg-tertiary: #e6e6e6;
  --e2b-l-bg-elevated: #e8e8e8;  /* v3.17.0 (C6): #dcdcdc давал 4.17:1 с accent-text #9c4700 → FAIL AA; #e8e8e8 = 4.62:1 ✅ */
  --e2b-l-fg:          #000000;
  --e2b-l-fg-secondary:#333333;
  --e2b-l-fg-tertiary: #666666;
  --e2b-l-fg-quad:     #636363;  /* v3.17.0 (C6): #999999 = 2.72:1 → FAIL AA; #636363 = 4.81:1 on bg-tertiary #e6e6e6 ≥ AA ✅ (placeholder/timestamps) */
  --e2b-l-stroke:      #d6d6d6;
  --e2b-l-stroke-hover:#b8b8b8;
  --e2b-l-stroke-subtle:#ebebeb;

  /* Семантика */
  --e2b-positive:      #00d992;
  --e2b-negative:      #ff4400;
  --e2b-warning:       #ffff00;
  --e2b-info:          #59a8e1;

  /* Типографика */
  --e2b-font-mono: 'IBM Plex Mono', ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
  --e2b-font-sans: 'IBM Plex Sans', system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;

  /* Радиусы (E2B leans sharp) */
  --e2b-radius-xs:   2px;
  --e2b-radius-sm:   3px;
  --e2b-radius-md:   6px;    /* 0.375rem — основной */
  --e2b-radius-pill: 3rem;
  --e2b-radius-full: 9999px;

  /* Движение */
  --e2b-ease:        cubic-bezier(0.4, 0, 0.2, 1);
  --e2b-ease-out:    cubic-bezier(0, 0, 0.2, 1);
  --e2b-ease-spring: cubic-bezier(0.16, 1, 0.3, 1);

  /* Сигнатурный грид-фон (см. ChatBody / панель виджета) */
  --e2b-grid-size: 64px;
}
