/* Theme candidates. Selected by <html data-theme>, set from params.theme in hugo.toml
   (or ?theme= while previewing with `hugo server`). datasheet is the current pick and the
   only one with a dark variant; pcb and notebook stay until it's confirmed. */

/* IBM Plex, self-hosted (latin subset, OFL; see /fonts/IBM-Plex-OFL.txt) */
@font-face { font-family: "IBM Plex Sans"; font-style: normal; font-weight: 400; font-display: swap; src: url("/fonts/ibm-plex-sans-latin-400-normal.woff2") format("woff2"); }
@font-face { font-family: "IBM Plex Sans"; font-style: italic; font-weight: 400; font-display: swap; src: url("/fonts/ibm-plex-sans-latin-400-italic.woff2") format("woff2"); }
@font-face { font-family: "IBM Plex Sans"; font-style: normal; font-weight: 500; font-display: swap; src: url("/fonts/ibm-plex-sans-latin-500-normal.woff2") format("woff2"); }
@font-face { font-family: "IBM Plex Sans"; font-style: normal; font-weight: 600; font-display: swap; src: url("/fonts/ibm-plex-sans-latin-600-normal.woff2") format("woff2"); }
@font-face { font-family: "IBM Plex Sans"; font-style: normal; font-weight: 700; font-display: swap; src: url("/fonts/ibm-plex-sans-latin-700-normal.woff2") format("woff2"); }
@font-face { font-family: "IBM Plex Mono"; font-style: normal; font-weight: 400; font-display: swap; src: url("/fonts/ibm-plex-mono-latin-400-normal.woff2") format("woff2"); }
@font-face { font-family: "IBM Plex Mono"; font-style: normal; font-weight: 500; font-display: swap; src: url("/fonts/ibm-plex-mono-latin-500-normal.woff2") format("woff2"); }
@font-face { font-family: "IBM Plex Mono"; font-style: normal; font-weight: 600; font-display: swap; src: url("/fonts/ibm-plex-mono-latin-600-normal.woff2") format("woff2"); }

/* ---------- datasheet: reads like a component datasheet / drawing title block ---------- */
html[data-theme^="datasheet"] {
  --bg: #fcfcfa; --fg: #121212; --muted: #575b63; --accent: #c2410c; --line: #d6d5cf; --card: #fff;
  --tint: #f1f0ea;
  --sans: "IBM Plex Sans", system-ui, sans-serif; --mono: "IBM Plex Mono", ui-monospace, monospace;
}
@media (prefers-color-scheme: dark) {
  html[data-theme^="datasheet"] { --bg: #131416; --fg: #e7e5df; --muted: #9ea1a7; --accent: #f0884a; --line: #33363b; --card: #1a1b1e; --tint: #1e2024; }
}
[data-theme^="datasheet"] body { font-size: 16px; }
[data-theme^="datasheet"] .site-header { border-bottom: 3px solid var(--fg); }
[data-theme^="datasheet"] .site-title { font-family: var(--mono); font-size: 0.95rem; font-weight: 600; text-transform: uppercase; letter-spacing: 0.06em; }
[data-theme^="datasheet"] .site-nav a { font-family: var(--mono); font-size: 0.8rem; text-transform: uppercase; letter-spacing: 0.06em; }
[data-theme^="datasheet"] .site-nav a[aria-current] { color: var(--accent); }

[data-theme^="datasheet"] .cv-intro { border: 2px solid var(--fg); }
[data-theme^="datasheet"] .cv-intro-text > * { margin: 0; padding: 12px 18px; }
[data-theme^="datasheet"] .cv-intro h1 { font-size: 2.6rem; padding-top: 18px; border-bottom: 1px solid var(--fg); }
[data-theme^="datasheet"] .cv-headline { font-family: var(--mono); font-size: 0.82rem; text-transform: uppercase; letter-spacing: 0.06em; color: var(--fg); border-bottom: 1px solid var(--fg); background: var(--tint); }
[data-theme^="datasheet"] .cv-links { border-top: 1px solid var(--fg); font-family: var(--mono); font-size: 0.82rem; text-transform: uppercase; letter-spacing: 0.04em; }

[data-theme^="datasheet"] .cv { counter-reset: sec; }
[data-theme^="datasheet"] .cv h2 { display: flex; align-items: center; padding: 0; border-top: 0; border-bottom: 2px solid var(--fg); font-family: var(--mono); font-size: 0.85rem; text-transform: uppercase; letter-spacing: 0.08em; }
[data-theme^="datasheet"] .cv h2::before { counter-increment: sec; content: counter(sec); background: var(--fg); color: var(--bg); padding: 5px 11px; margin-right: 12px; }

[data-theme^="datasheet"] .spec { border: 1px solid var(--fg); }
[data-theme^="datasheet"] .spec div { gap: 0; padding: 0; }
[data-theme^="datasheet"] .spec div:last-child { border-bottom: 0; }
[data-theme^="datasheet"] .spec dt, [data-theme^="datasheet"] .spec dd { padding: 6px 12px; }
[data-theme^="datasheet"] .spec dt { background: var(--tint); border-right: 1px solid var(--line); color: var(--fg); text-transform: uppercase; font-size: 0.72rem; letter-spacing: 0.05em; padding-top: 8px; }
[data-theme^="datasheet"] .role-when { color: var(--fg); }
[data-theme^="datasheet"] .role li::marker { color: var(--accent); }

[data-theme^="datasheet"] .projects { counter-reset: fig; }
[data-theme^="datasheet"] .project-image img { border: 1px solid var(--fg); }
[data-theme^="datasheet"] .project h3::before { counter-increment: fig; content: "Fig. " counter(fig) "  "; font-family: var(--mono); font-weight: 500; font-size: 0.8rem; color: var(--accent); }
[data-theme^="datasheet"] .site-footer p { border-top: 2px solid var(--fg); font-family: var(--mono); font-size: 0.8rem; }

/* ---------- datasheet-os: datasheet plus a little retro-OS (window title bars, grey fills
   with halftone dots, crop marks, boxed nav). Layered on the datasheet rules above. ---------- */
html[data-theme="datasheet-os"] { --fill: #dddcd5; --on-fill: #111; --dot: rgba(0, 0, 0, 0.16); }
@media (prefers-color-scheme: dark) {
  html[data-theme="datasheet-os"] { --fill: #2b2d31; --on-fill: #e7e5df; --dot: rgba(255, 255, 255, 0.12); }
}
[data-theme="datasheet-os"] a { text-decoration: underline; text-decoration-thickness: 1px; text-underline-offset: 3px; }
[data-theme="datasheet-os"] a:hover { background: var(--fill); color: var(--on-fill); text-decoration: none; }

/* boxed nav, current page inverted */
[data-theme="datasheet-os"] .site-header { padding: 14px 0; }
[data-theme="datasheet-os"] .site-header .wrap { align-items: center; }
[data-theme="datasheet-os"] .site-title { border: 1px solid var(--fg); padding: 3px 9px; text-decoration: none; }
[data-theme="datasheet-os"] .site-nav { gap: 6px; }
[data-theme="datasheet-os"] .site-nav a { color: var(--fg); border: 1px solid var(--fg); padding: 3px 9px; text-decoration: none; }
[data-theme="datasheet-os"] .site-nav a[aria-current] { background: var(--fg); color: var(--bg); }

/* the intro block becomes a window */
[data-theme="datasheet-os"] .cv-intro::before { content: "nelsonslog.com / resume"; display: block; padding: 3px 10px; background: var(--fg); color: var(--bg); font-family: var(--mono); font-size: 0.75rem; letter-spacing: 0.04em; }
[data-theme="datasheet-os"] .cv-intro h1 { position: relative; font-size: 4.2rem; font-weight: 500; line-height: 1; letter-spacing: -0.045em; padding: 30px 28px 26px; }
[data-theme="datasheet-os"] .cv-intro h1::before, [data-theme="datasheet-os"] .cv-intro h1::after { content: ""; position: absolute; width: 10px; height: 10px; border: 0 solid var(--fg); }
[data-theme="datasheet-os"] .cv-intro h1::before { top: 12px; left: 12px; border-top-width: 1px; border-left-width: 1px; }
[data-theme="datasheet-os"] .cv-intro h1::after { bottom: 12px; right: 12px; border-bottom-width: 1px; border-right-width: 1px; }
[data-theme="datasheet-os"] .cv-headline { background: var(--fill); color: var(--on-fill); border-color: var(--fg); }
[data-theme="datasheet-os"] .cv-links a { color: var(--fg); }

/* section tabs pick up the fill */
[data-theme="datasheet-os"] .cv h2::before { background: var(--fill); color: var(--on-fill); border: 1px solid var(--fg); padding: 4px 10px; }
[data-theme="datasheet-os"] .cv h3 { font-weight: 600; }
[data-theme="datasheet-os"] .role li::marker { color: var(--fg); }
[data-theme="datasheet-os"] .spec dt { background: var(--tint); }

/* project photos as little windows */
[data-theme="datasheet-os"] .project-image { display: block; border: 1px solid var(--fg); margin-bottom: 10px; text-decoration: none; }
[data-theme="datasheet-os"] .project-image::before { content: attr(data-label); display: block; padding: 2px 8px; background: var(--fg); color: var(--bg); font-family: var(--mono); font-size: 0.72rem; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
[data-theme="datasheet-os"] .project-image:hover { background: none; }
[data-theme="datasheet-os"] .project-image img { border: 0; margin: 0; }
[data-theme="datasheet-os"] .project h3::before { content: "Fig. " counter(fig); background: var(--fg); color: var(--bg); padding: 1px 6px; margin-right: 8px; font-size: 0.72rem; }
[data-theme="datasheet-os"] .project h3 a { text-decoration: none; }

/* consulting: grey panel with halftone dots */
[data-theme="datasheet-os"] .cv-consulting { background-color: var(--fill); background-image: radial-gradient(var(--dot) 1px, transparent 1.4px); background-size: 7px 7px; border: 1px solid var(--fg); padding: 0 22px 20px; color: var(--on-fill); }
[data-theme="datasheet-os"] .cv-consulting h2 { margin: 0 -22px 16px; border-bottom: 1px solid var(--fg); background: var(--bg); color: var(--fg); }
[data-theme="datasheet-os"] .cv-consulting p { background: var(--bg); color: var(--fg); border: 1px solid var(--fg); padding: 12px 16px; margin: 0; }
[data-theme="datasheet-os"] .cv-consulting a { color: var(--fg); }

@media (max-width: 640px) {
  [data-theme="datasheet-os"] .cv-intro h1 { font-size: 2.9rem; padding: 24px 20px 20px; }
  [data-theme="datasheet-os"] .cv-consulting { padding: 0 12px 12px; }
  [data-theme="datasheet-os"] .cv-consulting h2 { margin: 0 -12px 12px; }
}

/* ---------- pcb: solder-mask green, silkscreen white, copper traces and vias ---------- */
html[data-theme="pcb"] {
  --bg: #f7f6f0; --fg: #1b1f1c; --muted: #59625c; --accent: #a4561a; --line: #dcd9cc; --card: #fff;
  --mask: #17552f; --mask-dark: #0f3d21; --silk: #f3f0e4; --silk-dim: #a9c5b2; --copper: #c4762f; --gold: #e0b45a;
  --sans: "IBM Plex Sans", system-ui, sans-serif; --mono: "IBM Plex Mono", ui-monospace, monospace;
}
[data-theme="pcb"] body { font-size: 16px; }
[data-theme="pcb"] .site-header { background: var(--mask-dark); border-bottom: 0; }
[data-theme="pcb"] .site-title { color: var(--silk); font-family: var(--mono); font-weight: 600; letter-spacing: 0.02em; }
[data-theme="pcb"] .site-nav a { color: var(--silk-dim); font-family: var(--mono); font-size: 0.85rem; }
[data-theme="pcb"] .site-nav a[aria-current] { color: var(--gold); }

[data-theme="pcb"] .cv-intro { position: relative; margin-top: -40px; padding: 44px 0 36px; color: var(--silk); border-image: conic-gradient(var(--mask) 0 0) fill 0 // 0 100vmax; }
[data-theme="pcb"] .cv-intro h1 { color: var(--silk); }
[data-theme="pcb"] .cv-headline { color: var(--silk-dim); font-family: var(--mono); font-size: 0.95rem; }
[data-theme="pcb"] .cv-intro a { color: var(--gold); }
[data-theme="pcb"] .cv-links { font-family: var(--mono); font-size: 0.85rem; }
/* fiducial mark */
[data-theme="pcb"] .cv-intro::after { content: ""; position: absolute; top: 48px; right: 0; width: 26px; height: 26px; border-radius: 50%; background: radial-gradient(circle, var(--gold) 0 5px, transparent 5.5px); border: 1px solid rgba(224, 180, 90, 0.35); }

[data-theme="pcb"] .cv h2 { position: relative; padding: 0 0 8px; border-top: 0; border-bottom: 2px solid var(--copper); font-family: var(--mono); font-size: 0.85rem; text-transform: uppercase; letter-spacing: 0.08em; color: var(--mask); }
[data-theme="pcb"] .cv h2::before, [data-theme="pcb"] .cv h2::after { content: ""; position: absolute; bottom: -7px; width: 6px; height: 6px; border-radius: 50%; border: 3px solid var(--copper); background: var(--bg); }
[data-theme="pcb"] .cv h2::before { left: -6px; }
[data-theme="pcb"] .cv h2::after { right: -6px; }
[data-theme="pcb"] .spec dt, [data-theme="pcb"] .role-when { color: var(--mask); }
[data-theme="pcb"] .role li::marker { color: var(--copper); }
[data-theme="pcb"] .project-image img { border: 1px solid var(--mask); }
[data-theme="pcb"] .site-footer p { border-top: 2px solid var(--copper); font-family: var(--mono); font-size: 0.8rem; }

/* ---------- notebook: engineering notebook, graph paper, ink, red margin line ---------- */
html[data-theme="notebook"] {
  --bg: #fbf9f2; --fg: #1d2330; --muted: #5a606e; --accent: #1f47a8; --line: #d8dbe2; --card: #fffdf7;
  --sans: "Source Serif 4", Georgia, serif; --mono: "IBM Plex Mono", ui-monospace, monospace;
}
[data-theme="notebook"] body {
  background-image: linear-gradient(rgba(60, 100, 170, 0.08) 1px, transparent 1px), linear-gradient(90deg, rgba(60, 100, 170, 0.08) 1px, transparent 1px);
  background-size: 24px 24px;
}
[data-theme="notebook"] a { text-decoration: underline; text-decoration-thickness: 1px; text-underline-offset: 2px; }
[data-theme="notebook"] .site-header { border-bottom: 2px solid var(--fg); background: var(--bg); }
[data-theme="notebook"] .site-header a { text-decoration: none; }
[data-theme="notebook"] .site-title { font-size: 1.4rem; }
[data-theme="notebook"] .cv { border-left: 2px solid rgba(214, 69, 65, 0.5); padding-left: 28px; }
[data-theme="notebook"] .cv h1 { font-size: 3rem; letter-spacing: -0.01em; }
[data-theme="notebook"] .cv-headline { font-style: italic; }
[data-theme="notebook"] .cv-links a { text-decoration: none; }
[data-theme="notebook"] .cv h2 { font-size: 1.45rem; padding-top: 0; border-top: 0; border-bottom: 3px double var(--accent); padding-bottom: 4px; }
[data-theme="notebook"] .spec, [data-theme="notebook"] .spec div { border-color: rgba(29, 35, 48, 0.15); }
[data-theme="notebook"] .spec dt, [data-theme="notebook"] .role-when { color: var(--accent); }
[data-theme="notebook"] .role h3, [data-theme="notebook"] .project h3 { font-size: 1.12rem; }
[data-theme="notebook"] .project-image img { background: #fff; padding: 6px; border: 0; box-shadow: 0 1px 3px rgba(0, 0, 0, 0.18); }
[data-theme="notebook"] .post-card { background: var(--card); }
@media (max-width: 640px) {
  [data-theme="notebook"] .cv { padding-left: 14px; }
}

/* Paper is always light, whatever the screen theme. */
@media print {
  html[data-theme] { --bg: #fff; --fg: #000; --muted: #444; --line: #ccc; --accent: #000; --tint: #f1f0ea; }
  html[data-theme] body { background: #fff; font-size: 9.5pt; line-height: 1.4; }
  html[data-theme] { -webkit-print-color-adjust: exact; print-color-adjust: exact; }
  [data-theme="datasheet-os"] .cv-intro h1 { font-size: 22pt; padding: 10px 14px; }
  [data-theme="datasheet-os"] .cv-intro h1::before, [data-theme="datasheet-os"] .cv-intro h1::after { display: none; }
  [data-theme^="datasheet"] .cv-intro-text > * { padding: 6px 12px; }
  [data-theme^="datasheet"] .cv-intro h1 { font-size: 20pt; padding-top: 8px; }
  [data-theme^="datasheet"] .cv-headline { font-size: 7.5pt; }
  [data-theme^="datasheet"] .cv h2 { font-size: 8pt; }
  [data-theme^="datasheet"] .cv h2::before { padding: 2px 8px; }
  [data-theme^="datasheet"] .spec dt, [data-theme^="datasheet"] .spec dd { padding: 2px 8px; }
  [data-theme^="datasheet"] .spec dt { font-size: 6.5pt; padding-top: 4px; }
  html[data-theme] .cv-intro { box-shadow: none; border-image: none; margin-top: 0; }
}
