/* Generated by sync-design-system.mjs — DS tokens inlined to kill the @import waterfall. */

/* ===== tokens/fonts.css ===== */
/* ===== FONTS ===== */
/* LinkYourSkill uses Inter (variable) as its single typeface. Self-hosted here —
   no Google Fonts CDN — so consumers stay offline-capable and DSGVO-clean (no
   visitor-IP leak to Google). Binaries: tokens/fonts/*.woff2 (Inter, SIL OFL 1.1,
   via @fontsource-variable/inter). The product loads the same face via next/font;
   var(--font-inter) keeps working verbatim. */

/* inter-cyrillic-ext-wght-normal */
@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-display: swap;
  font-weight: 100 900;
  src: url(./tokens/fonts/inter-cyrillic-ext-wght-normal.woff2) format('woff2-variations');
  unicode-range: U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F;
}

/* inter-cyrillic-wght-normal */
@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-display: swap;
  font-weight: 100 900;
  src: url(./tokens/fonts/inter-cyrillic-wght-normal.woff2) format('woff2-variations');
  unicode-range: U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116;
}

/* inter-greek-ext-wght-normal */
@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-display: swap;
  font-weight: 100 900;
  src: url(./tokens/fonts/inter-greek-ext-wght-normal.woff2) format('woff2-variations');
  unicode-range: U+1F00-1FFF;
}

/* inter-greek-wght-normal */
@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-display: swap;
  font-weight: 100 900;
  src: url(./tokens/fonts/inter-greek-wght-normal.woff2) format('woff2-variations');
  unicode-range: U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF;
}

/* inter-vietnamese-wght-normal */
@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-display: swap;
  font-weight: 100 900;
  src: url(./tokens/fonts/inter-vietnamese-wght-normal.woff2) format('woff2-variations');
  unicode-range: U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB;
}

/* inter-latin-ext-wght-normal */
@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-display: swap;
  font-weight: 100 900;
  src: url(./tokens/fonts/inter-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;
}

/* inter-latin-wght-normal */
@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-display: swap;
  font-weight: 100 900;
  src: url(./tokens/fonts/inter-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;
}

:root {
  /* Product exposes the face through this variable (next/font). Alias to the
     self-hosted Inter so var(--font-inter) resolves identically here. */
  --font-inter: "Inter";
}


/* ===== tokens/colors.css ===== */
/* ===== COLORS — "Dark Cosmic" ===== */
/* LinkYourSkill ships a dark-first palette (default) plus a light theme scope.
   Base values are raw hexes / rgbas; semantic aliases reference them so product
   surfaces, cards and buttons stay theme-aware.

   Source of truth: src/app/globals.css in linkyourskill-ai/linkyourskill.ai. */

:root {
  /* ---- Brand purple ramp ---- */
  --accent-1: #a855f7;        /* primary brand purple */
  --accent-2: #7c3aed;        /* deep violet — gradient end */
  --accent-light: #c084fc;    /* lavender — links, labels, accents-on-dark */
  --accent-soft: #e9d5ff;     /* pale lavender — inverse-surface accents */
  --accent-deep: #6d28d9;     /* violet-700 — light-theme headings */
  --accent-deepest: #4c1d95;  /* violet-900 — secondary button text (light) */

  /* ---- Backgrounds (dark default) ---- */
  --bg: #0a0a18;              /* page base */
  --bg-deep: #06060f;         /* deepest — html background, nav solid */

  /* ---- Text ---- */
  --text: #ffffff;
  --text-heading: #ffffff;
  --muted: #b4bcc8;           /* AA-safe muted on glass cards */

  /* ---- Surfaces & glass ---- */
  --card-bg: rgba(255, 255, 255, 0.03);
  --card-border: rgba(255, 255, 255, 0.07);
  --surface: rgba(18, 18, 35, 0.98);       /* opaque panel / modal */
  --surface-alt: rgba(10, 10, 22, 0.6);    /* inset frame */
  --input-bg: rgba(255, 255, 255, 0.05);
  --input-border: rgba(255, 255, 255, 0.1);
  --nav-bg: rgba(6, 6, 15, 0.92);
  --nav-bg-solid: rgba(6, 6, 15, 1);
  --overlay-bg: rgba(6, 6, 15, 0.88);

  /* ---- Inverse surface (dark panel that stays dark in light mode) ---- */
  --inverse-surface-bg: rgba(10, 10, 22, 0.88);
  --inverse-surface-border: rgba(255, 255, 255, 0.12);
  --inverse-surface-fg: #ffffff;
  --inverse-surface-muted: rgba(255, 255, 255, 0.74);
  --inverse-surface-accent: #e9d5ff;

  /* ---- Secondary button ---- */
  --btn-secondary-border: rgba(255, 255, 255, 0.15);
  --btn-secondary-hover-bg: rgba(255, 255, 255, 0.04);
  --btn-secondary-color: #ffffff;

  /* ---- Semantic status ---- */
  --success: #22c55e;
  --success-deep: #16a34a;
  --success-on-dark: #4ade80;
  --warning: #f59e0b;
  --warning-text-dark: #fcd34d;
  --danger: #ef4444;
  --danger-text-dark: #fca5a5;
  --info: var(--accent-1);

  /* ---- Code snippet syntax ---- */
  --code-bg: rgba(0, 0, 0, 0.4);
  --code-border: rgba(168, 85, 247, 0.2);
  --code-string: #22c55e;
  --code-keyword: var(--accent-light);
}

/* ===== LIGHT THEME ===== */
/* Opt-in via <html class="light">. Soft lavender backgrounds, purple headings. */

html.light {
  --bg: #f5f0ff;
  --bg-deep: #faf8ff;
  --text: #1a1a2e;
  --text-heading: #6d28d9;
  --muted: #555a66;
  --card-bg: rgba(255, 255, 255, 0.85);
  --card-border: rgba(124, 58, 237, 0.2);
  --surface: rgba(255, 255, 255, 0.98);
  --surface-alt: rgba(245, 240, 255, 0.6);
  --input-bg: rgba(0, 0, 0, 0.03);
  --input-border: rgba(0, 0, 0, 0.25);
  --nav-bg: rgba(250, 248, 255, 0.92);
  --nav-bg-solid: rgba(250, 248, 255, 1);
  --overlay-bg: rgba(255, 255, 255, 0.88);
  --inverse-surface-bg: rgba(18, 18, 35, 0.94);
  --inverse-surface-accent: #f3e8ff;
  --btn-secondary-border: rgba(124, 58, 237, 0.2);
  --btn-secondary-hover-bg: rgba(124, 58, 237, 0.05);
  --btn-secondary-color: #4c1d95;
}


/* ===== tokens/typography.css ===== */
/* ===== TYPOGRAPHY ===== */
/* One typeface — Inter — across marketing and platform. Tight negative tracking
   on headings, generous line-height on body. Gradient-text treatment is reserved
   for hero highlights and the wordmark (see effects.css / .gradient-text). */

:root {
  /* ---- Families ---- */
  --font-sans: var(--font-inter), "Inter", system-ui, -apple-system, "Segoe UI", sans-serif;
  --font-mono: ui-monospace, "SFMono-Regular", "Menlo", "Consolas", monospace;

  /* ---- Weights ---- */
  --weight-regular: 400;
  --weight-medium: 500;
  --weight-semibold: 600;
  --weight-bold: 700;
  --weight-extrabold: 800;

  /* ---- Fluid display sizes (clamp: min, preferred, max) ---- */
  --text-hero: clamp(24px, 5vw, 52px);      /* h1 hero headline */
  --text-h2: clamp(24px, 3.5vw, 38px);      /* section headline */
  --text-lead: clamp(16px, 2.2vw, 19px);    /* hero subtitle / lead */
  --text-body-lg: clamp(15px, 2vw, 18px);   /* intro body */

  /* ---- Fixed steps ---- */
  --text-h3: 20px;       /* card titles */
  --text-body: 15px;     /* default body / card copy */
  --text-sm: 14px;       /* secondary, nav links */
  --text-xs: 13px;       /* meta, captions */
  --text-2xs: 11px;      /* eyebrow / uppercase label */

  /* ---- Line heights ---- */
  --leading-tight: 1.18;   /* hero headline */
  --leading-heading: 1.3;
  --leading-snug: 1.5;     /* default body */
  --leading-relaxed: 1.7;  /* long-form paragraphs */

  /* ---- Letter spacing ---- */
  --tracking-hero: -0.03em;
  --tracking-heading: -0.02em;
  --tracking-tight: -0.01em;
  --tracking-eyebrow: 0.12em;   /* uppercase labels */

  /* ---- Semantic aliases ---- */
  --font-display: var(--font-sans);
  --font-body: var(--font-sans);
}


/* ===== tokens/spacing.css ===== */
/* ===== SPACING & LAYOUT ===== */
/* The product drives section rhythm from a small set of layout variables that
   shift at each breakpoint (--section-pad-x, --nav-height, --section-max).
   Component padding follows a loose 4px-based scale. */

:root {
  /* ---- Base 4px scale ---- */
  --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;
  --space-20: 80px;
  --space-25: 100px;   /* default vertical section padding */

  /* ---- Layout frame (desktop defaults; product overrides per breakpoint) ---- */
  --section-pad-x: 6%;        /* horizontal page gutter */
  --section-max: 1200px;      /* content max width */
  --nav-height: 72px;

  /* ---- Common gaps ---- */
  --gap-card: 32px;       /* grid gap between cards */
  --gap-tight: 8px;
  --gap-inline: 24px;     /* footer / nav inline gap */

  /* ---- Component padding ---- */
  --pad-card: 40px;          /* .glass-card desktop */
  --pad-card-snug: 24px;     /* .glass-card mobile / compact */
  --pad-btn-y: 14px;
  --pad-btn-x: 32px;
}

/* The product narrows gutters and nav height as the viewport shrinks. */
@media (max-width: 479px) {
  :root { --section-pad-x: 4%; --nav-height: 60px; }
}
@media (min-width: 480px) and (max-width: 767px) {
  :root { --section-pad-x: 5%; --nav-height: 60px; }
}
@media (min-width: 1600px) {
  :root { --section-pad-x: 8%; --section-max: 1400px; }
}


/* ===== tokens/effects.css ===== */
/* ===== EFFECTS — radius, shadow, glow, gradients ===== */
/* The cosmic look is built from: glassy translucent cards, purple glow shadows,
   a 135° brand gradient (buttons + gradient-text), and large blurred radial
   "cosmic glow" blobs behind content. */

:root {
  /* ---- Corner radius ---- */
  --radius-sm: 10px;     /* code blocks, chips */
  --radius-md: 12px;     /* buttons, badges */
  --radius-lg: 16px;     /* compact cards */
  --radius-xl: 20px;     /* glass cards */
  --radius-2xl: 24px;    /* modals */
  --radius-full: 9999px;

  /* ---- Brand gradient ---- */
  --gradient-brand: linear-gradient(135deg, var(--accent-1), var(--accent-2));
  --gradient-brand-bright: linear-gradient(135deg, var(--accent-light), var(--accent-1), var(--accent-2));
  --gradient-success: linear-gradient(135deg, var(--success), var(--success-deep));

  /* ---- Shadows ---- */
  --shadow-card: 0 8px 32px rgba(0, 0, 0, 0.5), 0 0 24px rgba(168, 85, 247, 0.06);
  --shadow-glow: 0 0 30px rgba(168, 85, 247, 0.35), 0 4px 15px rgba(0, 0, 0, 0.3);
  --shadow-glow-hover: 0 0 40px rgba(168, 85, 247, 0.5), 0 6px 20px rgba(0, 0, 0, 0.4);
  --shadow-modal: 0 20px 60px rgba(0, 0, 0, 0.6), 0 0 50px rgba(168, 85, 247, 0.12);

  /* ---- Glass blur ---- */
  --blur-glass: blur(16px);  /* @kind other */
  --blur-nav: blur(20px);    /* @kind other */
  --blur-overlay: blur(10px); /* @kind other */

  /* ---- Transitions ---- */
  --ease-out: cubic-bezier(0.16, 1, 0.3, 1);     /* @kind other */
  --ease-pop: cubic-bezier(0.17, 0.67, 0.35, 1.1); /* @kind other */
  --dur-fast: 0.2s;  /* @kind other */
  --dur-base: 0.3s;  /* @kind other */
}

/* Light theme softens the glow into a gentle drop shadow. */
html.light {
  --shadow-card: 0 4px 24px rgba(124, 58, 237, 0.08), 0 1px 3px rgba(0, 0, 0, 0.06);
  --shadow-glow: 0 0 20px rgba(168, 85, 247, 0.2), 0 4px 12px rgba(0, 0, 0, 0.08);
  --shadow-glow-hover: 0 0 28px rgba(168, 85, 247, 0.3), 0 6px 16px rgba(0, 0, 0, 0.1);
}

/* ===== Brand gradient text ===== */
.gradient-text {
  background: var(--gradient-brand-bright);
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
  color: transparent;
}


/* ===== tokens/base.css ===== */
/* ===== BASE LAYER ===== */
/* Reset + the signature reusable classes the product relies on globally:
   glass cards, gradient buttons, code snippets, inverse surfaces, cosmic glow.
   These mirror src/app/globals.css so cards/components render identically. */

*,
*::before,
*::after {
  box-sizing: border-box;
}

html {
  scroll-behavior: smooth;
  -webkit-text-size-adjust: 100%;
  background: var(--bg-deep);
}

body {
  margin: 0;
  font-family: var(--font-sans);
  background: var(--bg);
  color: var(--text);
  line-height: var(--leading-snug);
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
}

img {
  max-width: 100%;
  height: auto;
  display: block;
}

/* ===== HEADINGS ===== */
h1, h2, h3, h4 {
  margin: 0;
  color: var(--text-heading);
  font-weight: var(--weight-bold);
}
h1 {
  font-size: var(--text-hero);
  font-weight: var(--weight-extrabold);
  line-height: var(--leading-tight);
  letter-spacing: var(--tracking-hero);
}
h2 {
  font-size: var(--text-h2);
  letter-spacing: var(--tracking-heading);
}
h3 {
  font-size: var(--text-h3);
}
p { margin: 0; }
a { color: inherit; text-decoration: none; }

/* ===== GLASS CARDS ===== */
.glass-card {
  background: var(--card-bg);
  border: 1px solid var(--card-border);
  border-radius: var(--radius-xl);
  padding: var(--pad-card);
  transition: border-color var(--dur-base), box-shadow var(--dur-base);
}
/* backdrop-filter is an expensive paint operation on mobile GPUs — apply the
   glass blur only from the tablet/desktop breakpoint up. Light theme disables
   it entirely (higher-specificity rule below). */
@media (min-width: 768px) {
  .glass-card {
    /* Standard property ONLY. Tailwind v4 / Lightning CSS treats
       backdrop-filter and -webkit-backdrop-filter as aliases and keeps only the
       LAST declaration when both are authored — shipping both made consumers
       lose the standard property, leaving a -webkit-only rule that Chromium
       ignores (no blur). Standard alone renders in Chromium/Firefox/Safari 18+;
       Safari < 18 degrades gracefully (no blur, card stays legible). */
    backdrop-filter: var(--blur-glass);
  }
}
.glass-card:hover {
  box-shadow: var(--shadow-card);
}
.glass-card.highlight {
  border-color: rgba(168, 85, 247, 0.4);
  background: rgba(168, 85, 247, 0.04);
}
.glass-card.highlight:hover {
  border-color: rgba(168, 85, 247, 0.6);
}
html.light .glass-card {
  box-shadow: var(--shadow-card);
  backdrop-filter: none;
  -webkit-backdrop-filter: none;
}

/* ===== BUTTONS ===== */
.btn-primary {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: var(--space-2);
  background: var(--gradient-brand);
  border: none;
  padding: var(--pad-btn-y) var(--pad-btn-x);
  border-radius: var(--radius-md);
  color: #fff;
  font-family: inherit;
  font-size: 16px;
  font-weight: var(--weight-semibold);
  letter-spacing: var(--tracking-tight);
  cursor: pointer;
  box-shadow: var(--shadow-glow);
  transition: transform var(--dur-fast), box-shadow var(--dur-fast);
  -webkit-tap-highlight-color: transparent;
}
.btn-primary:hover { transform: translateY(-1px); box-shadow: var(--shadow-glow-hover); }
.btn-primary:active { transform: translateY(0); }
.btn-primary.small { padding: 11px 22px; font-size: var(--text-sm); }
.btn-primary.large { padding: 18px 52px; font-size: 18px; border-radius: 14px; }

.btn-secondary {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: var(--space-2);
  background: transparent;
  border: 1px solid var(--btn-secondary-border);
  padding: var(--pad-btn-y) 28px;
  border-radius: var(--radius-md);
  color: var(--btn-secondary-color);
  font-family: inherit;
  font-size: 15px;
  font-weight: var(--weight-medium);
  cursor: pointer;
  transition: border-color var(--dur-fast), background var(--dur-fast);
  -webkit-tap-highlight-color: transparent;
}
.btn-secondary:hover { background: var(--btn-secondary-hover-bg); }
.btn-secondary.small { padding: 11px 22px; font-size: var(--text-sm); }

.btn-link {
  background: none;
  border: none;
  color: var(--muted);
  font-family: inherit;
  font-size: 15px;
  font-weight: var(--weight-medium);
  cursor: pointer;
  padding: var(--pad-btn-y) var(--space-4);
  transition: color var(--dur-fast);
  -webkit-tap-highlight-color: transparent;
}
.btn-link:hover { color: var(--text); }

/* ===== CODE SNIPPET ===== */
.code-snippet {
  background: var(--code-bg);
  border: 1px solid var(--code-border);
  border-radius: var(--radius-sm);
  padding: 14px;
  font-family: var(--font-mono);
  font-size: 12px;
  line-height: var(--leading-relaxed);
  color: var(--code-keyword);
  overflow-x: auto;
}
.code-snippet .code-string { color: var(--code-string); }
.code-snippet .code-muted { color: var(--muted); }

/* ===== INVERSE SURFACE (stays dark in both themes) ===== */
.inverse-surface {
  background: var(--inverse-surface-bg);
  border: 1px solid var(--inverse-surface-border);
  color: var(--inverse-surface-fg);
}
.inverse-surface-accent { color: var(--inverse-surface-accent); }
.inverse-surface-muted { color: var(--inverse-surface-muted); }

/* ===== CHECK BADGE (green pill used in lists/hero) ===== */
.check-badge {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 22px;
  height: 22px;
  border-radius: var(--radius-full);
  background: var(--gradient-success);
  color: #fff;
  font-size: 12px;
  font-weight: var(--weight-bold);
  flex-shrink: 0;
}

/* ===== EYEBROW LABEL ===== */
.eyebrow {
  font-size: var(--text-2xs);
  font-weight: var(--weight-bold);
  text-transform: uppercase;
  letter-spacing: var(--tracking-eyebrow);
  color: var(--accent-light);
}

/* ===== COSMIC GLOW BACKDROP ===== */
/* Large blurred radial blobs behind content. Place inside a position:relative
   container with overflow hidden, or fixed on a full page. */
.cosmic-glow {
  position: absolute;
  pointer-events: none;
  z-index: 0;
  border-radius: 50%;
  filter: blur(120px);
}
.cosmic-glow-1 {
  width: min(800px, 90vw);
  height: 600px;
  top: -150px;
  right: -200px;
  background: radial-gradient(ellipse, rgba(168, 85, 247, 0.25) 0%, rgba(124, 58, 237, 0.12) 40%, transparent 70%);
}
.cosmic-glow-2 {
  width: min(600px, 80vw);
  height: 600px;
  bottom: 10%;
  left: -200px;
  background: radial-gradient(ellipse, rgba(124, 58, 237, 0.1) 0%, transparent 70%);
}

