/* GENERATED FILE, do not edit by hand.
 * Source: connecta-platform apps/frontend/web/shared/primereact-preset/src/css-variables.ts
 * (connectaGlobalCss, built from shared/tokens/src). Regenerate with
 * `pnpm tokens:sync`; `pnpm tokens:check` fails when this copy drifts.
 * sha256 of the body below: 8a809c397300fff317d74aebba2fcabae7e37a593e470140691bb4c974884921
 */
:root {
  /* === Brand palette === */
  --connecta-coral: #F35F49;
  --connecta-lime: #DEFB50;
  --connecta-pale-lime: #ECFDA8;
  --connecta-plum: #571B32;
  --connecta-sky: #BAE6FD;
  --connecta-lavender: #FBE1FD;
  --connecta-ink: #0F1A24;
  --connecta-paper: #FFFFFF;

  /* === Tints === */
  --tint-coral: #FDEAE5;
  --tint-lime: #ECFDA8;
  --tint-sky: #E4F3FC;
  --tint-lavender: #FBE1FD;
  --tint-plum: #F6ECF0;
  /* Quiet ink wash (reference bundle maps tint-ink to neutral-100): the
     absence calendar's in-range band and the form's quiet notices use it.
     Was referenced but NEVER DEFINED - invalid var() collapsed the range
     band to transparent, so a picked 5-day absence showed as two detached
     squares with nothing between them ("calendar is broken", staging QA). */
  --tint-ink: #EEF1F3;
  /* Deep sky ink: legible foreground on sky tints (School/Teacher scope
     pills + school glyphs). Not a new brand hue - a readable shade of sky. */
  --tint-sky-ink: #1f6d96;

  /* === Neutrals === */
  --neutral-0: #FFFFFF;
  --neutral-50: #F7F8F9;
  --neutral-100: #EEF1F3;
  --neutral-200: #DDE2E7;
  --neutral-300: #C3CBD3;
  --neutral-400: #98A2AD;
  --neutral-500: #6B7682;
  --neutral-600: #4D5762;
  --neutral-700: #343C46;
  --neutral-800: #1E2630;
  --neutral-900: #0F1A24;

  /* === Semantic foreground / background === */
  --fg-1: #0F1A24;
  --fg-2: #343C46;
  --fg-3: #6B7682;
  --fg-4: #98A2AD;
  --fg-on-ink: #FFFFFF;
  --fg-on-coral: #FFFFFF;
  --fg-on-lime: #0F1A24;

  --bg-page: #FFFFFF;
  --bg-subtle: #F7F8F9;
  --bg-muted: #EEF1F3;
  --bg-inverse: #0F1A24;
  --bg-card: #FFFFFF;
  --bg-card-soft: #F7F8F9;

  --border-1: #DDE2E7;
  --border-2: #C3CBD3;
  --border-strong: #0F1A24;

  /* === Action (ink primary) === */
  --action-primary-bg: #0F1A24;
  --action-primary-fg: #FFFFFF;
  --action-primary-hover: #1E2630;
  --action-ghost-fg: #0F1A24;
  --action-ghost-border: #DDE2E7;
  --action-muted-bg: #EEF1F3;
  --action-muted-fg: #0F1A24;
  --action-floating-bg: #DEFB50;
  --action-floating-fg: #0F1A24;
  --action-floating-hover: #ECFDA8;

  /* === Important (coral) - check / error / destructive === */
  --important-bg: #FDEAE5;
  --important-fg: #0F1A24;
  --important-accent: #F35F49;
  --important-strong-bg: #F35F49;
  --important-strong-fg: #FFFFFF;

  /* === Highlight (lime) === */
  --highlight-bg: #DEFB50;
  --highlight-fg: #0F1A24;
  --highlight-soft: #ECFDA8;

  /* === GoodTalk intervention states === */
  --state-nudge-bg: #FDEAE5;
  --state-nudge-fg: #0F1A24;
  --state-nudge-accent: #F35F49;
  --state-pause-bg: #EEF1F3;
  --state-pause-fg: #0F1A24;
  --state-pause-accent: #6B7682;
  --state-warn-bg: #FDEAE5;
  --state-warn-fg: #0F1A24;
  --state-warn-accent: #F35F49;
  --state-alert-bg: #FDEAE5;
  --state-alert-fg: #571B32;
  --state-alert-accent: #F35F49;
  --state-ok-bg: #DEFB50;
  --state-ok-fg: #0F1A24;
  --state-ok-accent: #DEFB50;

  /* === Cosmo (curious-blue AI assistant) === */
  --cosmo-bg: #EAF6FE;
  --cosmo-accent: #2A6FA8;
  --socratic-accent: #DEFB50;

  /* === Audience scopes === */
  --scope-school-bg: #F7F8F9;
  --scope-school-tint: #E4F3FC;

  /* === Message bubbles === */
  --bubble-self-bg: #0F1A24;
  --bubble-self-fg: #FFFFFF;
  --bubble-other-bg: #EEF1F3;
  --bubble-other-fg: #0F1A24;
  --bubble-teacher-bg: #E4F3FC;
  --bubble-teacher-fg: #0F1A24;
  --bubble-parent-bg: #F6ECF0;
  --bubble-parent-fg: #571B32;
  --bubble-socratic-bg: #ECFDA8;
  --bubble-socratic-fg: #0F1A24;

  /* === Role badges === */
  --role-child-bg: #FBE1FD;
  --role-child-fg: #0F1A24;
  --role-child-name: #712D76;
  --role-teacher-bg: #BAE6FD;
  --role-teacher-fg: #0F1A24;
  --role-teacher-name: #1F6D96;
  --role-parent-bg: #F6ECF0;
  --role-parent-fg: #571B32;
  --role-parent-name: #571B32;

  /* === Radii === */
  --r-xs: 4px;
  --r-sm: 8px;
  --r-md: 12px;
  --r-lg: 16px;
  --r-xl: 20px;
  --r-2xl: 28px;
  --r-pill: 9999px;

  /* === Shadows === */
  --shadow-1: 0 1px 2px rgba(15, 26, 36, 0.04), 0 1px 1px rgba(15, 26, 36, 0.03);
  --shadow-2: 0 4px 12px rgba(15, 26, 36, 0.06), 0 1px 2px rgba(15, 26, 36, 0.04);
  --shadow-3: 0 12px 32px rgba(15, 26, 36, 0.10), 0 2px 6px rgba(15, 26, 36, 0.05);

  /* === Overlay layers (UI consolidation OV-8) ===
     --scrim: the one dialog scrim, ink at 45% (never pure black). PrimeReact's
     dialog mask reads it as --maskbg (connecta-global.css). --z-*: the stacking
     order of the hand-built overlays; PrimeReact layers its dialogs from 1100,
     between --z-media and --z-top. */
  --scrim: rgba(15, 26, 36, 0.45);
  --z-overlay: 50;
  --z-overlay-raised: 60;
  --z-media: 1000;
  --z-top: 9999;

  /* === Selection rings + lime highlight (exam flow redesign) ===
     Option cards / rows / pills rest on --ring-rest and take --ring-selected
     when picked; the "Как работи" tour rings its target with --ring-tour; an
     answer or picked tag is underlined with --highlight-lime. */
  --ring-rest: inset 0 0 0 1px rgba(15, 26, 36, 0.10);
  --ring-selected: inset 0 0 0 2px var(--connecta-ink);
  --ring-tour: 0 0 0 2px var(--connecta-ink), 0 0 0 6px var(--connecta-lime);
  --highlight-lime: linear-gradient(transparent 62%, var(--connecta-lime) 62%);

  /* === Sticker tokens (student shell, v7 handoff; design-language.md
     "student sticker tier"). Strokes are ink; shadows are hard (no blur); a
     pressed sticker translates by exactly its shadow offset. Only the student
     shell's sticker style reads these. === */
  --sticker-stroke: 2px solid var(--connecta-ink);
  --sticker-stroke-light: 1.5px solid var(--connecta-ink);
  --sticker-stroke-hero: 3px solid var(--connecta-ink);
  /* The homework upload card's dashed twin of the tier A stroke. */
  --sticker-stroke-dashed: 2px dashed var(--connecta-ink);
  /* The 1/1 drop a pressed thread bubble keeps (no press token: the bubble
     slides by --sticker-press-s). */
  --sticker-shadow-xs: 1px 1px 0 var(--connecta-ink);
  --sticker-shadow-s: 2px 2px 0 var(--connecta-ink);
  --sticker-shadow-s-plus: 2px 3px 0 var(--connecta-ink);
  --sticker-shadow-m: 3px 4px 0 var(--connecta-ink);
  --sticker-shadow-m-selected: 4px 5px 0 var(--connecta-ink);
  /* A raised sticker (the thread bubble with its action menu open): it moves
     by --sticker-raise onto this drop, so the drop stays put. No press. */
  --sticker-shadow-m-raised: 5px 6px 0 var(--connecta-ink);
  --sticker-raise: translate(-2px, -2px);
  --sticker-shadow-l: 4px 4px 0 var(--connecta-ink);
  --sticker-shadow-xl: 8px 8px 0 var(--connecta-ink);
  --sticker-shadow-ink: 6px 8px 0 var(--connecta-lime);
  --sticker-shadow-ink-md: 4px 5px 0 var(--connecta-lime);
  --sticker-shadow-ink-sm: 2px 2px 0 var(--connecta-lime);
  --sticker-shadow-ink-tile: 5px 6px 0 var(--connecta-lime);
  /* Trail nodes and the continue-here nudge (STICKER-MAP.md): done and
     current nodes drop in ink at 18%, open nodes in --neutral-300; the nudge
     bubble drops lime 0/3; the current-stop ring sits 8px outside the
     node's 1px edge (the inset counts from inside that edge, so it adds the
     edge width). */
  --sticker-shadow-node-done: 0px 4px 0 color-mix(in srgb, var(--connecta-ink) 18%, transparent);
  --sticker-shadow-node-todo: 0px 4px 0 var(--neutral-300);
  --sticker-shadow-nudge: 0px 3px 0 var(--connecta-lime);
  --sticker-node-ring-inset: -9px;
  --sticker-press-s: translate(2px, 2px);
  --sticker-press-s-plus: translate(2px, 3px);
  --sticker-press-m: translate(3px, 4px);
  --sticker-press-m-selected: translate(4px, 5px);
  --sticker-press-l: translate(4px, 4px);
  --sticker-press-xl: translate(8px, 8px);
  --sticker-press-ink: translate(6px, 8px);
  --sticker-press-ink-md: translate(4px, 5px);
  --sticker-press-ink-sm: translate(2px, 2px);
  --sticker-press-ink-tile: translate(5px, 6px);
  /* Tier C soft sticker (STICKER-MAP.md): ink at reduced opacity, mixed
     over the brand ink so no literal colour reaches a stylesheet. */
  --sticker-stroke-soft: 1.5px solid color-mix(in srgb, var(--connecta-ink) 28%, transparent);
  --sticker-shadow-soft: 2px 3px 0 color-mix(in srgb, var(--connecta-ink) 14%, transparent);
  --sticker-press-soft: translate(2px, 3px);
  --sticker-press-scale: 0.98;
  --sticker-press-scale-icon: 0.96;
  --sticker-r-row: 14px;
  --sticker-r-tile: 10px;
  --sticker-r-sheet: 18px;
  --sticker-r-sheet-lg: 22px;
  --sticker-r-bubble: 18px 18px 4px 18px;
  /* Measured v7 box sizes (chats list, thread, homework page map). */
  --sticker-chat-list-gap: 10px;
  --sticker-chat-avatar: 44px;
  --sticker-chat-image-mat: 6px;
  --sticker-reaction-h: 26px;
  --sticker-map-chip-h: 44px;
  --dur-sticker-press: 120ms;
  --dur-sticker-sheet: 260ms;
  --dur-sticker-fill-min: 360ms;
  --dur-sticker-fill-max: 700ms;
  --dur-sticker-ring: 900ms;

  /* === Spacing (4pt grid) === */
  --s-1: 4px;
  --s-2: 8px;
  --s-3: 12px;
  --s-4: 16px;
  --s-5: 20px;
  --s-6: 24px;
  --s-7: 32px;
  --s-8: 40px;
  --s-9: 56px;
  --s-10: 72px;
  --s-11: 96px;

  /* === Typography === */
  --font-sans: var(--font-sofia-sans), "Sofia Sans", ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
  --font-mono: var(--font-sofia-sans), "Sofia Sans", ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
  /* One multiplier for one surface's type. 1 everywhere by default; a surface
     that needs its type larger sets it on its root (the Флаш карти builder
     runs 1.1). A custom property resolves where it is declared, so the --t-*
     tokens below (and the shorthands built from them: --t-eyebrow,
     --t-screen-title, --t-bar-title) are fixed here at the root's 1 and do
     NOT follow a surface's own multiplier; only a size a stylesheet declares
     as calc(<px> * var(--type-scale, 1)) resolves it at the element and
     follows. The shell titles are meant not to follow: one screen title size
     on every screen (HD-2). */
  --type-scale: 1;
  --t-display-lg: calc(70px * var(--type-scale));
  --t-display: calc(53px * var(--type-scale));
  --t-h1: calc(40px * var(--type-scale));
  --t-h2: calc(31px * var(--type-scale));
  --t-h3: calc(24px * var(--type-scale));
  --t-h4: calc(20px * var(--type-scale));
  --t-body-lg: calc(20px * var(--type-scale));
  --t-body: calc(18px * var(--type-scale));
  --t-body-sm: calc(15px * var(--type-scale));
  --t-caption: calc(14px * var(--type-scale));
  --t-micro: calc(12px * var(--type-scale));
  --measure-narrow: 44ch;
  --measure-intro: 62ch;
  --measure-body: 72ch;
  --lh-tight: 1.1;
  --lh-snug: 1.25;
  --lh-normal: 1.45;
  --lh-loose: 1.6;
  --w-regular: 400;
  --w-medium: 500;
  --w-semi: 600;
  --w-bold: 700;
  /* Numerals in tiles (stats, marks, date tiles) and the student settings
     title; was hard-coded 800 or the undeclared --w-black
     (docs/design-system/student-profile-kit.md "New tokens"). */
  --w-heavy: 800;
  /* Uppercase label tracking: the profile eyebrow, kind pills, the verified
     pill (design-language "uppercase + .08em tracking + semibold"). */
  --tracking-caps: 0.08em;
  /* The one eyebrow (design-language "Casing": uppercase, tracked, semibold):
     the font shorthand a CSS Module reads with letter-spacing
     var(--tracking-caps) and text-transform: uppercase. The Eyebrow component
     draws the same thing; a th / dt / label that cannot be the component reads
     this. Resolved here at the root, so it does not follow a surface's own
     --type-scale (the Eyebrow component does, through its calc). */
  --t-eyebrow: var(--w-semi) var(--t-micro) / 1.3 var(--font-sans);
  /* The two title sizes (UI consolidation HD-2, batch decision 2026-11-06):
     the screen title, 24px / 800, and the bar title (a phone app bar, a
     detail page's title, a name in a profile hero), 20px / 700. The shells
     and the title components read these; typography.ts carries the same two
     as SCREEN_TITLE / BAR_TITLE for inline styles. */
  --t-screen-title: var(--w-heavy) var(--t-h3) / 1.15 var(--font-sans);
  --t-bar-title: var(--w-bold) var(--t-h4) / 1.15 var(--font-sans);

  /* === Background pattern + cursor glow (matches connecta.education landing) ===
     Warm off-white paper, 32px notebook grid at 8% ink, plus a coral radial
     glow that follows the cursor via JS-driven --gx/--gy CSS vars. */
  --pattern-paper: #fafaf8;
  --pattern-grid-line: rgba(15, 26, 36, 0.08);
  --pattern-grid-size: 32px;
  --gx: -9999px;
  --gy: -9999px;

  /* === Motion === */
  --ease-standard: cubic-bezier(0.2, 0, 0, 1);
  --ease-emphasis: cubic-bezier(0.3, 0, 0, 1);
  --dur-fast: 140ms;
  --dur-base: 220ms;
  --dur-slow: 360ms;
  --dur-ambient: 1600ms;
  --dur-reach: 1900ms;
  --dur-phrase: 2600ms;
  --stagger-block: 150ms;
  /* Celebration moments (student shell v3 only; design-language.md). */
  --ease-overshoot: cubic-bezier(0.34, 1.56, 0.64, 1);
  --ease-overshoot-soft: cubic-bezier(0.34, 1.4, 0.64, 1);
  --ease-odometer: cubic-bezier(0.34, 1.3, 0.64, 1);
  --ease-draw: cubic-bezier(0.3, 0, 0, 1);
  --ease-launch: cubic-bezier(0.5, 0, 0.75, 0);
  --ease-glance: cubic-bezier(0.4, 0, 0.2, 1);
  --dur-cx-fade-up: 360ms;
  --dur-cx-pop: 420ms;
  --dur-cx-pop-small: 320ms;
  --dur-cx-burst: 720ms;
  --dur-cx-rise: 1100ms;
  --dur-cx-rings: 2400ms;
  --dur-cx-float: 3200ms;
  --dur-cx-hover: 1400ms;
  --dur-cx-launch: 650ms;
  --dur-cx-bubble: 3400ms;
  --dur-cx-fly: 950ms;
  --dur-cx-tick: 320ms;

  /* === Socrat surface tokens (design handoff tokens/socrat-tokens.css) ===
     Layered after the DS tokens above - only the Socrat ("Учене") surface
     reads these; every consumer also carries a matching hex fallback. */
  --sk-page: #FBFCF7;
  --sk-page-desktop: #F6F7F8;
  --sk-paper: #FFFEF9;
  --sk-panel: #FFFFFF;
  --sk-ink: #0F1A24;
  --sk-lime: #DEFB50;
  --sk-fg-2: #5A6470;
  --sk-fg-3: #8B939C;
  --sk-line-strong: #E2E4DE;
  --sk-line-soft: #EDEFF1;
  --sk-line-paper: #EDEFDF;
  --sk-grid-line: rgba(15, 26, 36, 0.035);
  --sk-hover: #F0F2F3;
  --sk-error: #F35F49;
  --sk-error-wash: #FCE4DE;
  --sk-hand-ok: #0F1A24;
  --sk-field: #F1F2EF;
  --sk-role-student: #BAE6FD;
  --sk-avatar-person: #571B32;

  /* === PrimeReact lara-light-indigo overrides ===
     The lara theme uses these CSS vars; redefining them here re-skins
     PrimeReact components to the Connecta brand without forking the theme. */
  --primary-color: #0F1A24;
  --primary-color-text: #FFFFFF;
  --primary-50: #F7F8F9;
  --primary-100: #EEF1F3;
  --primary-200: #DDE2E7;
  --primary-300: #C3CBD3;
  --primary-400: #98A2AD;
  --primary-500: #6B7682;
  --primary-600: #4D5762;
  --primary-700: #343C46;
  --primary-800: #1E2630;
  --primary-900: #0F1A24;
  --text-color: #0F1A24;
  --text-color-secondary: #6B7682;
  --surface-ground: #F7F8F9;
  --surface-card: #FFFFFF;
  --surface-overlay: #FFFFFF;
  --surface-border: #DDE2E7;
  --surface-hover: #EEF1F3;
  --surface-0: #FFFFFF;
  --surface-50: #F7F8F9;
  --surface-100: #EEF1F3;
  --surface-200: #DDE2E7;
  --surface-300: #C3CBD3;
  --surface-400: #98A2AD;
  --surface-500: #6B7682;
  --surface-600: #4D5762;
  --surface-700: #343C46;
  --surface-800: #1E2630;
  --surface-900: #0F1A24;
  --border-radius: 12px;
  --font-family: var(--font-sans);
  --focus-ring: 0 0 0 2px #0F1A2433;
}
