/* Modernist — design-system tokens and component classes, adapted for
   Waldo Ramos' personal site (accent overridden to blue for this project). */
@import url('https://fonts.googleapis.com/css2?family=Archivo:wght@400;600;800&display=swap');

:root {
  --color-bg: #f3f2f2;
  --color-surface: #eae9e9;
  --color-text: #201e1d;
  --color-accent: #2557c2;
  --color-accent-2: #2557c2;
  --color-divider: color-mix(in srgb, #201e1d 40%, transparent);

  /* Tonal ramps — generated in OKLCH on one shared lightness scale, so the
     same step of any role matches the others in visual value. */
  --color-neutral-100: #f8f4f4;
  --color-neutral-200: #eae7e7;
  --color-neutral-300: #d7d3d3;
  --color-neutral-400: #bab6b6;
  --color-neutral-500: #9b9797;
  --color-neutral-600: #7d7979;
  --color-neutral-700: #605d5d;
  --color-neutral-800: #444141;
  --color-neutral-900: #2d2b2b;

  --color-accent-100: #eef4fd;
  --color-accent-200: #d8e6fb;
  --color-accent-300: #b0cdf7;
  --color-accent-400: #7fabf0;
  --color-accent-500: #3d74e0;
  --color-accent-600: #2557c2;
  --color-accent-700: #1a3f94;
  --color-accent-800: #142f6d;
  --color-accent-900: #0f2350;

  --color-accent-2-100: #eef4fd;
  --color-accent-2-200: #d8e6fb;
  --color-accent-2-300: #b0cdf7;
  --color-accent-2-400: #7fabf0;
  --color-accent-2-500: #3d74e0;
  --color-accent-2-600: #2557c2;
  --color-accent-2-700: #1a3f94;
  --color-accent-2-800: #142f6d;
  --color-accent-2-900: #0f2350;

  --font-heading: "Archivo", system-ui, sans-serif;
  --font-heading-weight: 800;
  --font-body: "Archivo", system-ui, sans-serif;

  --space-1: 4.0px;
  --space-2: 8.0px;
  --space-3: 12.0px;
  --space-4: 16.0px;
  --space-6: 24.0px;
  --space-8: 32.0px;

  --radius-sm: 0px;
  --radius-md: 0px;
  --radius-lg: 0px;

  --shadow-sm: 0 1px 2px color-mix(in srgb, #2d2b2b 14%, transparent);
  --shadow-md: 0 3px 10px color-mix(in srgb, #2d2b2b 16%, transparent);
  --shadow-lg: 0 12px 32px color-mix(in srgb, #2d2b2b 22%, transparent);
}

*, *::before, *::after { box-sizing: border-box; }
body {
  margin: 0; min-height: 100vh;
  background: var(--color-bg); color: var(--color-text);
  font-family: var(--font-body); font-size: 15px; line-height: 1.55; font-weight: 400;
}
h1, h2, h3, h4, h5, h6 {
  font-family: var(--font-heading); font-weight: var(--font-heading-weight);
  line-height: 1.12; letter-spacing: -0.015em; margin: 0 0 var(--space-2);
}
h1 { font-size: 42px; }
h2 { font-size: 32px; }
p { margin: 0 0 var(--space-3); }
a { color: var(--color-accent); text-underline-offset: 3px; }
a:hover { color: var(--color-accent-700); }
img { display: block; max-width: 100%; }
:focus { outline: none; }
:focus-visible { outline: 2px solid var(--color-accent); outline-offset: 2px; }
::selection { background: color-mix(in srgb, var(--color-accent) 30%, transparent); }
.grayscale { filter: grayscale(1) contrast(1.08); }

/* — rules — */
.hr { height: 2px; border: 0; margin: var(--space-4) 0; background: var(--color-divider); }
.hr--flush { margin: 0; }

/* — buttons — */
.btn {
  display: inline-flex; align-items: center; justify-content: center; gap: 6px;
  cursor: pointer; text-decoration: none;
  font-family: var(--font-heading); font-weight: var(--font-heading-weight);
  font-size: 14px; line-height: 1.2; color: var(--color-text);
  background: transparent; border: 1px solid transparent;
  padding: var(--space-2) calc(var(--space-3) * 1.2);
  border-radius: var(--radius-md);
}
.btn-primary { background: var(--color-accent); color: var(--color-bg); }
.btn-primary:hover { background: var(--color-accent-600); color: var(--color-bg); }
.btn-primary:active { background: var(--color-accent-700); }
.btn-secondary { border-color: var(--color-divider); }
.btn-secondary:hover { background: color-mix(in srgb, var(--color-text) 7%, transparent); }
.btn-secondary:active { background: color-mix(in srgb, var(--color-text) 14%, transparent); }

/* — cards — */
.card {
  display: flex; flex-direction: column; gap: var(--space-2);
  padding: var(--space-3); border-radius: var(--radius-md); background: var(--color-surface);
}
.card-kicker { font-size: 10px; letter-spacing: 0.1em; text-transform: uppercase; color: var(--color-accent); }
.card-title { font-family: var(--font-heading); font-weight: var(--font-heading-weight); font-size: 17px; line-height: 1.2; }
.card-body { margin: 0; font-size: 13px; opacity: 0.8; flex: 1; }
.card-meta { display: flex; align-items: center; gap: 6px; font-size: 11px; color: color-mix(in srgb, var(--color-text) 50%, transparent); }

/* — tags — */
.tag { display: inline-flex; align-items: center; font-size: 11px; letter-spacing: 0.02em; padding: 3px 10px; border-radius: calc(var(--radius-md) * 0.75); }
.tag-outline { border: 1px solid var(--color-accent); color: var(--color-accent); }

/* — navigation — */
.nav {
  display: flex; align-items: center; gap: var(--space-4);
  padding: var(--space-3) var(--space-4);
  border-bottom: 2px solid var(--color-divider);
  position: sticky; top: 0; background: var(--color-bg); z-index: 10;
}
.nav-brand { font-family: var(--font-heading); font-weight: var(--font-heading-weight); font-size: 18px; margin-right: auto; }
.nav-links { display: flex; gap: 24px; align-items: center; }
.nav a { color: inherit; text-decoration: none; font-size: 14px; }
.nav a:hover { color: var(--color-accent); }
.lang-btn { margin-left: 16px; }

/* ══════════════ Page layout ══════════════ */

.hero {
  max-width: 1200px; margin: 0 auto; padding: 80px 32px 64px;
  display: grid; grid-template-columns: 1.3fr 1fr; gap: 56px; align-items: center;
}
.hero-kicker { font-size: 12px; letter-spacing: 0.12em; text-transform: uppercase; color: var(--color-accent-700); font-weight: 800; margin-bottom: 16px; }
.hero-name { font-size: 52px; margin: 0 0 20px; max-width: 12ch; }
.hero-bio { font-size: 18px; line-height: 1.6; max-width: 52ch; margin: 0 0 28px; opacity: 0.85; }
.hero-ctas { display: flex; gap: 12px; flex-wrap: wrap; margin-bottom: 32px; }
.hero-meta { display: flex; gap: 32px; flex-wrap: wrap; font-size: 13px; }
.hero-meta-label { opacity: 0.55; margin-bottom: 2px; }
.hero-meta-value { font-weight: 800; font-family: var(--font-heading); }
.hero-photo { width: 100%; aspect-ratio: 4/5; object-fit: cover; }

.section { max-width: 1200px; margin: 0 auto; padding: 64px 32px; }
.section-kicker { font-size: 14px; letter-spacing: 0.1em; text-transform: uppercase; color: var(--color-accent-700); margin-bottom: 40px; }
#sobre-mi .section-kicker { margin-bottom: 24px; }

.about-grid { display: grid; grid-template-columns: 1.2fr 1fr; gap: 56px; }
.about-lead { font-size: 22px; line-height: 1.5; margin: 0; font-family: var(--font-heading); font-weight: 400; max-width: 38ch; }
.about-body { font-size: 15px; line-height: 1.7; opacity: 0.8; margin: 0; white-space: pre-line; }

.stats { display: grid; grid-template-columns: repeat(4, 1fr); gap: 0; margin-top: 56px; border-top: 2px solid var(--color-divider); }
.stat-item { padding: 24px 20px 0; border-right: 1px solid var(--color-divider); }
.stat-value { font-family: var(--font-heading); font-weight: 800; font-size: 36px; }
.stat-label { font-size: 13px; opacity: 0.6; margin-top: 4px; }

.exp-row { display: grid; grid-template-columns: 140px 1fr; gap: 32px; padding: 24px 0; border-bottom: 1px solid var(--color-divider); }
.exp-years { font-family: var(--font-heading); font-weight: 800; font-size: 14px; opacity: 0.7; }
.exp-role { font-family: var(--font-heading); font-weight: 800; font-size: 19px; margin-bottom: 2px; }
.exp-company { font-size: 14px; color: var(--color-accent-700); font-weight: 600; margin-bottom: 10px; }
.exp-desc { font-size: 14px; line-height: 1.6; opacity: 0.8; margin: 0; max-width: 70ch; }

.proj-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 2px; background: var(--color-divider); }
.proj-grid .card { border-radius: 0; gap: 12px; padding: 28px; }
.proj-grid .card-title { font-size: 20px; }
.proj-grid .card-body { opacity: 0.85; font-size: 14px; }

.skill-group { margin-bottom: 28px; }
.skill-group:last-child { margin-bottom: 0; }
.skill-group-label { font-family: var(--font-heading); font-weight: 800; font-size: 15px; margin-bottom: 12px; }
.skill-tags { display: flex; gap: 8px; flex-wrap: wrap; }
.skill-tags .tag-outline { border-radius: 0; font-size: 12px; padding: 6px 14px; }

.contact { background: var(--color-accent); color: var(--color-bg); padding: 80px 32px; }
.contact-grid { max-width: 1200px; margin: 0 auto; display: grid; grid-template-columns: 1.3fr 1fr; gap: 48px; }
.contact-title { font-size: 40px; margin: 0 0 16px; max-width: 16ch; }
.contact-body { font-size: 16px; opacity: 0.9; max-width: 48ch; margin: 0; }
.contact-links { display: flex; flex-direction: column; gap: 16px; font-size: 15px; justify-content: center; }
.contact-link { color: var(--color-bg); text-decoration: none; }
.contact-link:hover { color: var(--color-bg); opacity: 0.85; }
.contact-link-primary { font-weight: 800; font-family: var(--font-heading); }
.contact-link-linkedin { border-bottom: 1px solid var(--color-bg); padding-bottom: 2px; width: fit-content; }

.footer { max-width: 1200px; margin: 0 auto; padding: 24px 32px; display: flex; justify-content: space-between; font-size: 12px; opacity: 0.6; flex-wrap: wrap; gap: 8px; }

@media (max-width: 860px) {
  .hero, .about-grid, .contact-grid { grid-template-columns: 1fr; }
  .hero-photo-wrap { order: -1; }
  .nav-links { display: none; }
  .stats { grid-template-columns: repeat(2, 1fr); }
  .exp-row { grid-template-columns: 1fr; }
  .proj-grid { grid-template-columns: 1fr; }
}
