/* CV — palette and type borrowed from construct-landing, without the CRT effects */

:root {
  --bg: #fafafa;
  --bg-elevated: #ffffff;
  --fg: #141414;
  --fg-secondary: #3a3a3a;
  --fg-muted: #6e6e6e;
  --accent: #0057e0;
  --accent-hover: #0047b8;
  --accent-soft: rgba(0, 87, 224, 0.08);
  --border: #e3e3e3;
  --border-subtle: #ececec;
  --live: #1a9f48;
  --nav-bg: rgba(250, 250, 250, 0.9);

  --font-mono: 'JetBrains Mono', 'SF Mono', Menlo, Consolas, monospace;
  --font-sans: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;

  --space-xs: 0.5rem;
  --space-sm: 1rem;
  --space-md: 1.5rem;
  --space-lg: 2rem;
  --space-xl: 3rem;
  --space-2xl: 4rem;

  color-scheme: light;
}

/* Dark = the construct-landing palette */
:root[data-theme="dark"] {
  --bg: #090909;
  --bg-elevated: #111111;
  --fg: #e8e8e8;
  --fg-secondary: #c4c4c4;
  --fg-muted: #818181;
  --accent: #3d82ff;
  --accent-hover: #6a9fff;
  --accent-soft: rgba(0, 98, 255, 0.12);
  --border: #1e1e1e;
  --border-subtle: #161616;
  --live: #2ee65f;
  --nav-bg: rgba(9, 9, 9, 0.9);
  color-scheme: dark;
}

/* Both languages live in the markup, CSS hides one */
html:not([data-lang="en"]) [data-l="en"],
html[data-lang="en"] [data-l="ru"] {
  display: none !important;
}

@font-face { font-family: 'JetBrains Mono'; font-weight: 400; font-display: swap; src: url('fonts/JetBrainsMono-Regular.woff2') format('woff2'); }
@font-face { font-family: 'JetBrains Mono'; font-weight: 500; font-display: swap; src: url('fonts/JetBrainsMono-Medium.woff2') format('woff2'); }
@font-face { font-family: 'JetBrains Mono'; font-weight: 700; font-display: swap; src: url('fonts/JetBrainsMono-Bold.woff2') format('woff2'); }

* { box-sizing: border-box; }

html { scroll-behavior: smooth; scroll-padding-top: 72px; }

body {
  margin: 0;
  font-family: var(--font-sans);
  background: var(--bg);
  color: var(--fg);
  line-height: 1.65;
  font-size: 16px;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  transition: background 0.2s ease, color 0.2s ease;
}

a { color: var(--accent); text-decoration: none; transition: color 0.2s ease; }
a:hover { color: var(--accent-hover); text-decoration: underline; text-underline-offset: 3px; }
a:focus-visible, button:focus-visible { outline: 2px solid var(--accent); outline-offset: 3px; border-radius: 2px; }

code {
  background: var(--accent-soft);
  padding: 0.05rem 0.35rem;
  border-radius: 4px;
  font-family: var(--font-mono);
  font-size: 0.85em;
  color: var(--accent);
}

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

/* ── Nav ── */
.page-nav {
  position: sticky;
  top: 0;
  z-index: 100;
  height: 56px;
  background: var(--nav-bg);
  border-bottom: 1px solid var(--border);
  backdrop-filter: blur(12px);
  display: flex;
  align-items: center;
}
.page-nav .container { display: flex; align-items: center; gap: var(--space-md); width: 100%; }
.nav-logo { font: 700 0.9375rem var(--font-mono); color: var(--fg); }
.nav-logo:hover { color: var(--accent); text-decoration: none; }

.nav-links { display: flex; gap: var(--space-md); list-style: none; margin: 0 0 0 auto; padding: 0; font-size: 0.875rem; }
.nav-links a { color: var(--fg-muted); }
.nav-links a:hover { color: var(--fg); text-decoration: none; }

.nav-controls { display: flex; gap: var(--space-xs); }
.lang-toggle { display: inline-flex; border: 1px solid var(--border); border-radius: 6px; overflow: hidden; }
.lang-toggle button,
.theme-toggle {
  font: 500 0.8125rem var(--font-mono);
  background: none;
  border: 0;
  color: var(--fg-muted);
  padding: 4px 10px;
  cursor: pointer;
  transition: color 0.2s ease, background 0.2s ease;
}
.lang-toggle button:hover, .theme-toggle:hover { color: var(--accent); }
.lang-toggle button[aria-pressed="true"] { background: var(--accent); color: #fff; }
.theme-toggle { border: 1px solid var(--border); border-radius: 6px; line-height: 1; padding: 4px 8px; display: inline-flex; align-items: center; }
.theme-toggle svg { width: 16px; height: 16px; }
.theme-toggle .icon-sun { display: none; }
:root[data-theme="dark"] .theme-toggle .icon-sun { display: block; }
:root[data-theme="dark"] .theme-toggle .icon-moon { display: none; }

/* ── Header ── */
header { padding: var(--space-2xl) 0 var(--space-xl); border-bottom: 1px solid var(--border); }

.hero { display: flex; align-items: center; gap: var(--space-lg); margin-bottom: var(--space-lg); }
.hero__photo {
  flex: 0 0 auto;
  width: 140px;
  height: 140px;
  object-fit: cover;
  border-radius: 50%;
  border: 1px solid var(--border);
}
h1 {
  font-family: var(--font-mono);
  font-size: clamp(2rem, 5vw, 3rem);
  margin: 0 0 var(--space-xs);
  letter-spacing: -0.02em;
  font-weight: 700;
  line-height: 1.1;
}
.hero-tagline { margin: 0; font-size: 1.125rem; color: var(--fg); font-weight: 500; }
.hero-tagline .stack { display: block; font-family: var(--font-mono); color: var(--accent); font-size: 0.9375rem; font-weight: 400; }

.meta { display: flex; flex-wrap: wrap; gap: 0.25rem 1.25rem; margin: var(--space-sm) 0 0; padding: 0; list-style: none; font-size: 0.875rem; color: var(--fg-muted); }
.meta .live::before {
  content: "";
  display: inline-block;
  width: 7px;
  height: 7px;
  margin-right: 0.4rem;
  border-radius: 50%;
  background: var(--live);
  vertical-align: 0.1em;
}

header p.lead { font-size: 1.0625rem; color: var(--fg-secondary); max-width: 720px; }

.hero-cta { display: flex; flex-wrap: wrap; gap: var(--space-sm); margin-top: var(--space-lg); }
.hero-cta a {
  display: inline-flex;
  align-items: center;
  padding: 0.65rem 1.3rem;
  border-radius: 6px;
  font-weight: 500;
  font-size: 0.9375rem;
  border: 1px solid var(--border);
  color: var(--fg);
  transition: background 0.2s ease, color 0.2s ease, border-color 0.2s ease;
}
.hero-cta a:hover { text-decoration: none; border-color: var(--accent); color: var(--accent); }
.hero-cta .hero-cta__primary { background: var(--accent); border-color: var(--accent); color: #fff; }
.hero-cta .hero-cta__primary:hover { background: var(--accent-hover); border-color: var(--accent-hover); color: #fff; }

/* ── Sections ── */
section { padding: var(--space-2xl) 0; border-bottom: 1px solid var(--border-subtle); }
section:last-of-type { border-bottom: none; }
h2 { font-family: var(--font-mono); font-size: clamp(1.375rem, 3vw, 1.75rem); margin: 0 0 var(--space-lg); letter-spacing: -0.02em; font-weight: 700; line-height: 1.2; }

.job {
  padding: var(--space-md) var(--space-lg);
  margin-bottom: var(--space-md);
  background: var(--bg-elevated);
  border: 1px solid var(--border);
  border-radius: 8px;
}
.job__head { display: flex; justify-content: space-between; align-items: baseline; gap: 0.25rem var(--space-sm); flex-wrap: wrap; }
.job h3 { margin: 0; font-size: 1.0625rem; font-weight: 600; }
.job__stack { color: var(--accent); font-weight: 400; font-family: var(--font-mono); font-size: 0.9em; }
.job__period { font: 0.8125rem var(--font-mono); color: var(--fg-muted); white-space: nowrap; }
.job__note { margin: var(--space-xs) 0 0; font-size: 0.9375rem; color: var(--fg-muted); }
.job ul { margin: var(--space-sm) 0 0; padding: 0; list-style: none; }
.job li { position: relative; padding-left: 1.2rem; margin-bottom: 0.4rem; color: var(--fg-secondary); font-size: 0.9375rem; }
.job li::before { content: "–"; position: absolute; left: 0; color: var(--fg-muted); }
.job__links { margin: var(--space-sm) 0 0; font-size: 0.875rem; }

.skills { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: var(--space-sm); margin: 0; }
.skills > div { padding: var(--space-sm) var(--space-md); border: 1px solid var(--border); border-radius: 8px; background: var(--bg-elevated); }
.skills dt { font: 500 0.75rem var(--font-mono); letter-spacing: 0.08em; text-transform: uppercase; color: var(--fg-muted); }
.skills dd { margin: 0.25rem 0 0; color: var(--fg); font-size: 0.9375rem; }

.contacts { list-style: none; margin: 0; padding: 0; }
.contacts li { display: flex; gap: var(--space-md); padding: 0.6rem 0; border-bottom: 1px solid var(--border-subtle); }
.contacts__key { flex: 0 0 7rem; font: 500 0.75rem var(--font-mono); letter-spacing: 0.08em; color: var(--fg-muted); padding-top: 0.2rem; }

footer { padding: var(--space-xl) 0; color: var(--fg-muted); font-size: 0.8125rem; text-align: center; }

/* ── Mobile ── */
@media (max-width: 640px) {
  .container { padding: 0 var(--space-sm); }
  .nav-links { display: none; }
  .nav-controls { margin-left: auto; }
  header { padding: var(--space-lg) 0; }
  .hero { flex-direction: column; align-items: flex-start; gap: var(--space-md); }
  .hero__photo { width: 104px; height: 104px; }
  .job { padding: var(--space-sm); }
  .contacts li { flex-direction: column; gap: 0; }
  .contacts__key { flex: none; }
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { transition: none !important; }
  html { scroll-behavior: auto; }
}

@media print {
  :root, :root[data-theme="dark"] { --bg: #fff; --bg-elevated: #fff; --fg: #000; --fg-secondary: #222; --fg-muted: #555; --border: #ccc; --accent: #000; }
  .page-nav, .hero-cta { display: none !important; }
  .job, .skills > div { break-inside: avoid; }
}
