/* EXPONENTA — design tokens (packages/brand)
   Source of truth: /opt/automation/brand/EXPONENTA-brand.md + site/DESIGN.md
   Consumers: site (Astro), client cabinet, Telegram Mini App.
   Fonts are self-hosted (OFL): PT Sans (400/700/400i) + PT Mono — the same pair as our commercial proposals
   and audits (ops/audit/deck). Owner 21.09.2026: Unbounded dropped. cyrillic(+ext) + latin(+ext). */

@font-face { font-family: "PT Sans"; font-style: italic; font-weight: 400; font-display: swap;
  src: url("fonts/pt-sans-cyrillic-ext-400-italic.woff2") format("woff2"); unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; }
@font-face { font-family: "PT Sans"; font-style: italic; font-weight: 400; font-display: swap;
  src: url("fonts/pt-sans-cyrillic-400-italic.woff2") format("woff2"); unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; }
@font-face { font-family: "PT Sans"; font-style: italic; font-weight: 400; font-display: swap;
  src: url("fonts/pt-sans-latin-ext-400-italic.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: "PT Sans"; font-style: italic; font-weight: 400; font-display: swap;
  src: url("fonts/pt-sans-latin-400-italic.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+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }
@font-face { font-family: "PT Sans"; font-style: normal; font-weight: 400; font-display: swap;
  src: url("fonts/pt-sans-cyrillic-ext-400-normal.woff2") format("woff2"); unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; }
@font-face { font-family: "PT Sans"; font-style: normal; font-weight: 400; font-display: swap;
  src: url("fonts/pt-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: "PT Sans"; font-style: normal; font-weight: 400; font-display: swap;
  src: url("fonts/pt-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: "PT Sans"; font-style: normal; font-weight: 400; font-display: swap;
  src: url("fonts/pt-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+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }
@font-face { font-family: "PT Sans"; font-style: normal; font-weight: 700; font-display: swap;
  src: url("fonts/pt-sans-cyrillic-ext-700-normal.woff2") format("woff2"); unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; }
@font-face { font-family: "PT Sans"; font-style: normal; font-weight: 700; font-display: swap;
  src: url("fonts/pt-sans-cyrillic-700-normal.woff2") format("woff2"); unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; }
@font-face { font-family: "PT Sans"; font-style: normal; font-weight: 700; font-display: swap;
  src: url("fonts/pt-sans-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 { font-family: "PT Sans"; font-style: normal; font-weight: 700; font-display: swap;
  src: url("fonts/pt-sans-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+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }
@font-face { font-family: "PT Mono"; font-style: normal; font-weight: 400; font-display: swap;
  src: url("fonts/pt-mono-cyrillic-ext-400-normal.woff2") format("woff2"); unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; }
@font-face { font-family: "PT Mono"; font-style: normal; font-weight: 400; font-display: swap;
  src: url("fonts/pt-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: "PT Mono"; font-style: normal; font-weight: 400; font-display: swap;
  src: url("fonts/pt-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: "PT Mono"; font-style: normal; font-weight: 400; font-display: swap;
  src: url("fonts/pt-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+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }

:root {
  /* colour — brand kit: lime is the single accent; text on lime is always black */
  --lime: #D7DF21;
  --lime-deep: #B9C01C;      /* lime on light bg when it must read as text-ish */
  --lime-glow: rgba(215, 223, 33, .18);
  --black: #0A0A0A;          /* page background (dark theme is default) */
  --ink: #141414;            /* raised surface on black */
  --ink-2: #1C1C1C;
  --paper: #F2F2EE;          /* text on dark; light-section background */
  --grey: #EDEDED;
  --muted: rgba(242, 242, 238, .62);
  --muted-2: rgba(242, 242, 238, .40);
  --line: rgba(242, 242, 238, .12);
  --line-strong: rgba(242, 242, 238, .28);
  --line-dark: rgba(10, 10, 10, .16);
  --line-dark-strong: rgba(10, 10, 10, .55);

  /* type */
  --font-display: "PT Sans", "Arial", system-ui, sans-serif;
  --font-body: "PT Sans", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
  --font-mono: "PT Mono", ui-monospace, SFMono-Regular, Menlo, monospace;

  /* fluid type scale (360 → 1440) */
  --t-micro: clamp(0.66rem, 0.62rem + 0.18vw, 0.75rem);
  --t-label: clamp(0.72rem, 0.68rem + 0.20vw, 0.82rem);
  --t-body:  clamp(0.98rem, 0.92rem + 0.28vw, 1.12rem);
  --t-lead:  clamp(1.08rem, 0.98rem + 0.55vw, 1.42rem);
  --t-h4:    clamp(1.05rem, 0.95rem + 0.55vw, 1.45rem);
  --t-h3:    clamp(1.30rem, 1.10rem + 0.95vw, 2.00rem);
  --t-h2:    clamp(1.90rem, 1.20rem + 3.40vw, 4.60rem);
  --t-h1:    clamp(2.05rem, 1.10rem + 5.20vw, 6.60rem);
  --t-giant: clamp(4.00rem, 2.00rem + 14vw, 18rem);

  /* spacing */
  --s-1: clamp(0.25rem, 0.23rem + 0.10vw, 0.31rem);
  --s-2: clamp(0.50rem, 0.46rem + 0.20vw, 0.63rem);
  --s-3: clamp(0.75rem, 0.68rem + 0.33vw, 0.94rem);
  --s-4: clamp(1.00rem, 0.91rem + 0.43vw, 1.25rem);
  --s-5: clamp(1.50rem, 1.37rem + 0.65vw, 1.88rem);
  --s-6: clamp(2.00rem, 1.83rem + 0.87vw, 2.50rem);
  --s-7: clamp(3.00rem, 2.74rem + 1.30vw, 3.75rem);
  --s-8: clamp(4.50rem, 3.50rem + 4.00vw, 7.50rem);
  --s-9: clamp(6.00rem, 4.50rem + 6.00vw, 11rem);

  --gutter: clamp(1rem, 4.5vw, 4rem);
  --max: 1440px;

  /* motion */
  --ease-out: cubic-bezier(.16, 1, .3, 1);
  --ease-in-out: cubic-bezier(.65, 0, .35, 1);
  --dur-fast: .22s;
  --dur: .6s;
  --dur-slow: 1.1s;
}

/* Brand motif helpers ---------------------------------------------------- */

/* Display type: heavy caps, tight leading */
.t-display { font-family: var(--font-display); font-weight: 900; text-transform: uppercase; line-height: .92; letter-spacing: -.02em; }
/* Mono label: letter-spaced caps, used for kickers, badges, rotated edge captions */
.t-label { font-family: var(--font-mono); font-size: var(--t-label); text-transform: uppercase; letter-spacing: .14em; font-weight: 500; }

/* Rotated edge captions (identity boards). Only ≥ md — see DESIGN.md */
.edge { position: absolute; font-family: var(--font-mono); font-size: var(--t-micro); letter-spacing: .18em; text-transform: uppercase; color: var(--muted-2); writing-mode: vertical-rl; pointer-events: none; }
.edge--left { left: calc(var(--gutter) * .35); top: 50%; transform: translateY(-50%) rotate(180deg); }
.edge--right { right: calc(var(--gutter) * .35); top: 50%; transform: translateY(-50%); }

/* Visible column grid — thin vertical lines over the whole page */
.gridlines { position: fixed; inset: 0; z-index: 0; pointer-events: none; display: grid; grid-template-columns: repeat(6, 1fr); max-width: var(--max); margin: 0 auto; padding: 0 var(--gutter); mix-blend-mode: difference; opacity: .85; }
.gridlines > i { border-left: 1px solid rgba(255,255,255,.2); }
.gridlines > i:last-child { border-right: 1px solid rgba(255,255,255,.2); }

/* Selection */
::selection { background: var(--lime); color: #000; }
