/* CV imprimible (A4) · José Luis Pérez Durán */
/* ---------- Fuentes autoalojadas (Google Fonts, licencia OFL) ---------- */
@font-face { font-family: "Syne"; font-style: normal; font-weight: 600; font-display: swap; src: url("../assets/fonts/Syne-600.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: "Syne"; font-style: normal; font-weight: 700; font-display: swap; src: url("../assets/fonts/Syne-700.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: "Syne"; font-style: normal; font-weight: 800; font-display: swap; src: url("../assets/fonts/Syne-800.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: "Inter"; font-style: normal; font-weight: 400; font-display: swap; src: url("../assets/fonts/Inter-400.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: "Inter"; font-style: normal; font-weight: 500; font-display: swap; src: url("../assets/fonts/Inter-500.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: "Inter"; font-style: normal; font-weight: 600; font-display: swap; src: url("../assets/fonts/Inter-600.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: "JetBrains Mono"; font-style: normal; font-weight: 400; font-display: swap; src: url("../assets/fonts/JetBrainsMono-400.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: "JetBrains Mono"; font-style: normal; font-weight: 500; font-display: swap; src: url("../assets/fonts/JetBrainsMono-500.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: "JetBrains Mono"; font-style: normal; font-weight: 600; font-display: swap; src: url("../assets/fonts/JetBrainsMono-600.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 {
  --ink: #111420;
  --ink-2: #4a5068;
  --ink-3: #8a90a8;
  --line: #e3e5ee;
  --accent: #0a86a8;
  --accent-2: #6a5af9;
  --paper: #ffffff;
  --font-display: "Syne", "Inter", system-ui, sans-serif;
  --font-body: "Inter", system-ui, sans-serif;
  --font-mono: "JetBrains Mono", ui-monospace, monospace;
}
* { box-sizing: border-box; }
html, body { margin: 0; }
body { background: #e9ebf3; font-family: var(--font-body); color: var(--ink); font-size: 10.4pt; line-height: 1.45; -webkit-font-smoothing: antialiased; }
a { color: var(--accent); text-decoration: none; }
h1, h2, h3 { margin: 0; letter-spacing: -0.01em; }
p, ul { margin: 0; }
ul { padding: 0; list-style: none; }

.toolbar { position: sticky; top: 0; z-index: 10; display: flex; align-items: center; gap: 1rem; padding: 0.75rem 1.25rem; background: #0d1020; color: #e9ebf3; font-size: 0.9rem; }
.tb-hint { flex: 1; color: #a6abbe; font-size: 0.82rem; }
.tb-btn { padding: 0.55rem 1rem; border-radius: 999px; border: 1px solid rgba(255, 255, 255, 0.2); background: rgba(255, 255, 255, 0.06); color: #fff; font: inherit; cursor: pointer; white-space: nowrap; }
.tb-btn.primary { background: linear-gradient(120deg, var(--accent-2), var(--accent)); border-color: transparent; font-weight: 600; }
.tb-btn:hover { filter: brightness(1.1); }

.sheet { width: 210mm; min-height: 297mm; margin: 1.5rem auto 3rem; padding: 14mm 14mm 12mm; background: var(--paper); box-shadow: 0 30px 80px -30px rgba(20, 24, 60, 0.35); }

.cv-head { display: flex; justify-content: space-between; align-items: flex-end; gap: 1.5rem; padding-bottom: 5mm; border-bottom: 2px solid var(--ink); margin-bottom: 5mm; }
.cv-head h1 { font-family: var(--font-display); font-size: 26pt; font-weight: 800; line-height: 1; letter-spacing: -0.03em; }
.cv-head h1 span { background: linear-gradient(90deg, var(--accent), var(--accent-2)); -webkit-background-clip: text; background-clip: text; color: transparent; }
.cv-head .role { margin-top: 0.4rem; color: var(--ink-2); font-weight: 500; font-size: 10.5pt; }
.contact { text-align: right; font-family: var(--font-mono); font-size: 8.4pt; color: var(--ink-2); display: grid; gap: 0.15rem; }

.cols { display: grid; grid-template-columns: 1fr 62mm; gap: 8mm; }
section { margin-bottom: 5mm; break-inside: avoid-page; }
h2 { font-family: var(--font-mono); font-size: 8pt; letter-spacing: 0.14em; text-transform: uppercase; color: var(--accent); padding-bottom: 1.2mm; border-bottom: 1px solid var(--line); margin-bottom: 2.6mm; }
.lead { font-size: 10pt; color: var(--ink); }
.note { font-size: 8.6pt; color: var(--ink-3); margin-bottom: 2mm; }

.item { margin-bottom: 3.2mm; break-inside: avoid; }
.item-head { display: flex; justify-content: space-between; align-items: baseline; gap: 1rem; }
.item h3 { font-size: 10.8pt; font-weight: 700; }
.when { font-family: var(--font-mono); font-size: 8pt; color: var(--ink-3); white-space: nowrap; }
.item-sub { font-size: 8.6pt; color: var(--ink-2); margin: 0.1rem 0 0.3rem; }
.item-desc { font-size: 9.4pt; color: var(--ink); }
.item ul { margin-top: 0.3rem; display: grid; gap: 0.15rem; }
.item ul li { font-size: 8.8pt; color: var(--ink-2); padding-left: 0.9rem; position: relative; }
.item ul li::before { content: ""; position: absolute; left: 0; top: 0.55em; width: 5px; height: 5px; border-radius: 50%; background: var(--accent); opacity: 0.7; }
.item ul li b { color: var(--ink); font-weight: 600; }
.mods { font-size: 8.6pt; color: var(--ink-2); margin-top: 0.25rem; }

.side section { background: #f6f7fb; border-radius: 3mm; padding: 3.2mm 3.4mm; }
.side h2 { border-color: #dfe2ee; }
.certs { display: grid; gap: 2mm; }
.cert { display: grid; grid-template-columns: 8px 1fr; gap: 2mm; align-items: start; }
.cert .dot { width: 8px; height: 8px; border-radius: 50%; margin-top: 0.35em; }
.cert b { font-size: 8.8pt; font-weight: 600; display: block; line-height: 1.3; }
.cert-meta { font-size: 7.9pt; color: var(--ink-2); font-family: var(--font-mono); margin-top: 0.1rem; line-height: 1.4; }
.cert-meta em { font-style: normal; color: var(--accent); }
.skill-line { display: grid; gap: 0.05rem; margin-bottom: 1.8mm; }
.skill-line b { font-size: 8.6pt; font-weight: 600; }
.skill-line span { font-size: 8.4pt; color: var(--ink-2); line-height: 1.4; }
.plain { display: grid; gap: 1.2mm; font-size: 8.8pt; color: var(--ink-2); }
.plain b { color: var(--ink); font-weight: 600; }
.plain.small { font-size: 8.2pt; }
.cv-foot { margin-top: 4mm; padding-top: 2mm; border-top: 1px solid var(--line); font-family: var(--font-mono); font-size: 7.6pt; color: var(--ink-3); text-align: center; }

@media (max-width: 800px) {
  .sheet { width: auto; margin: 0; padding: 6mm; box-shadow: none; }
  .cols { grid-template-columns: 1fr; }
  .cv-head { flex-direction: column; align-items: flex-start; }
  .contact { text-align: left; }
  .toolbar { flex-wrap: wrap; }
  .tb-hint { display: none; }
}

@page { size: A4; margin: 10mm; }
@media print {
  body { background: #fff; font-size: 10pt; }
  .no-print { display: none !important; }
  .sheet { width: auto; min-height: 0; margin: 0; padding: 0; box-shadow: none; }
  .side section { background: #f6f7fb; -webkit-print-color-adjust: exact; print-color-adjust: exact; }
  a { color: var(--accent); }
}
