:root{
--ink-950:#12141a;--ink-900:#181b22;--ink-850:#1e222b;--ink-800:#252a34;--ink-700:#343b48;--ink-600:#4a5262;
--ink-400:#7b8394;--ink-300:#9aa1b0;--ink-200:#c1c6d0;--ink-100:#e7e9ee;--ink-050:#f5f6f8;
--steel-700:#33556f;--steel-500:#4d7691;--steel-400:#6b95ad;--steel-300:#93b7c8;--steel-200:#c3dae3;
--iron-600:#a8461f;--iron-500:#d9622b;--iron-400:#e8804c;--iron-300:#f0a578;--iron-100:#fbe4d4;
--paper-100:#f6f4f0;--paper-200:#ece8e0;

--bg:var(--ink-950);
--surface:var(--ink-900);
--surface-raised:var(--ink-850);
--surface-sunken:var(--ink-950);
--border:var(--ink-700);
--border-strong:var(--ink-600);
--text-primary:var(--ink-100);
--text-secondary:var(--ink-300);
--text-tertiary:var(--ink-400);
--text-on-accent:var(--ink-050);
--accent:var(--iron-500);
--accent-hover:var(--iron-400);
--accent-active:var(--iron-600);
--accent-soft:rgba(217,98,43,0.14);
--link:var(--steel-300);
--link-hover:var(--steel-200);
--focus-ring:var(--steel-400);

--paper-bg:var(--paper-100);
--paper-surface:#ffffff;
--paper-border:var(--paper-200);
--paper-text:var(--ink-900);
--paper-text-secondary:var(--ink-600);
--paper-accent:var(--iron-600);

--desk:#f5f5f4;
}

@font-face{font-family:"IBM Plex Sans";font-style:normal;font-weight:400;font-display:swap;src:url("/assets/fonts/ibm-plex-sans-400.woff2") format("woff2");}
@font-face{font-family:"IBM Plex Sans";font-style:normal;font-weight:700;font-display:swap;src:url("/assets/fonts/ibm-plex-sans-700.woff2") format("woff2");}
@font-face{font-family:"IBM Plex Mono";font-style:normal;font-weight:400 600;font-display:swap;src:url("/assets/fonts/ibm-plex-mono-var.woff2") format("woff2");}

:root{
--font-sans:"IBM Plex Sans",ui-sans-serif,system-ui,"Segoe UI",Roboto,sans-serif;
--font-mono:"IBM Plex Mono",ui-monospace,"SF Mono",Consolas,monospace;

--text-2xs:0.75rem;
--text-xs:0.8125rem;
--text-sm:0.9375rem;
--text-base:1.0625rem;
--text-lg:1.25rem;
--text-xl:1.5rem;
--text-2xl:1.875rem;
--text-3xl:2.375rem;
--text-4xl:3rem;
--text-5xl:3.75rem;

--leading-tight:1.15;
--leading-snug:1.35;
--leading-normal:1.6;
--tracking-tight:-0.02em;
--tracking-normal:0;
--tracking-wide:0.06em;
--tracking-label:0.12em;

--weight-regular:400;
--weight-medium:500;
--weight-semibold:600;
--weight-bold:700;
}

:root{
--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-24:96px;

--radius-sm:4px;--radius-md:8px;--radius-lg:12px;--radius-full:999px;

--shadow-sm:0 1px 2px rgba(0,0,0,0.4);
--shadow-md:0 8px 20px rgba(0,0,0,0.35);
--shadow-lg:0 16px 40px rgba(0,0,0,0.45);
--shadow-inset:inset 0 1px 0 rgba(255,255,255,0.04);

--ease-standard:cubic-bezier(0.2,0.6,0.2,1);
--duration-fast:120ms;
--duration-base:200ms;

--container-max:1120px;
--container-narrow:720px;
}

/* Paper shell. The export wrapped the resume in a <doc-page> custom element
   whose shadow DOM supplied the desk background and the letter-sized white
   sheet. That element required the bundler's 37KB scaffold script, which this
   page does not ship, so the sheet presentation is reproduced here in plain CSS. */
*{box-sizing:border-box}
body{margin:0;background:var(--desk)}
.doc-sheet{min-height:100vh;padding:48px 24px}
.page{width:8.5in;max-width:100%;margin:0 auto;background:var(--paper-surface);border-radius:7px;box-shadow:0 2px 10px rgba(20,20,19,0.12)}

.page{font-family:var(--font-sans);color:var(--paper-text);padding:0.55in 0.6in;display:flex;flex-direction:column;gap:14px}
h1{margin:0;font-size:26px;letter-spacing:var(--tracking-tight);color:var(--paper-text)}
.role{font-family:var(--font-mono);font-size:11px;letter-spacing:var(--tracking-label);text-transform:uppercase;color:var(--paper-accent);margin-top:4px}
.contact{font-size:11.5px;color:var(--paper-text-secondary);margin-top:6px;display:flex;gap:14px;flex-wrap:wrap}
.contact a{color:var(--paper-accent);text-decoration:none}
h2{font-family:var(--font-mono);font-size:11px;letter-spacing:var(--tracking-label);text-transform:uppercase;color:var(--paper-accent);border-bottom:1px solid var(--paper-border);padding-bottom:4px;margin:0 0 8px}
.job{margin-bottom:10px;break-inside:avoid}
.job-head{display:flex;justify-content:space-between;align-items:baseline;font-weight:600;font-size:13.5px}
.job-dates{font-family:var(--font-mono);font-size:10.5px;color:var(--paper-text-secondary);white-space:nowrap}
.job ul{margin:4px 0 0;padding-left:16px;font-size:12px;color:var(--paper-text-secondary);line-height:1.45}
.job ul li{margin-bottom:2px}
.two-col{display:flex;gap:28px}
.two-col>div{flex:1}
.chips{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}
.chip{font-family:var(--font-mono);font-size:9.5px;text-transform:uppercase;letter-spacing:0.06em;background:var(--paper-border);color:var(--paper-text-secondary);padding:3px 8px;border-radius:999px}
.summary{font-size:12.5px;color:var(--paper-text-secondary);line-height:1.5;max-width:100%}

/* Education entries — replaces the template's four inline style attributes. */
.edu-degree{font-size:12.5px}
.edu-school{font-size:11.5px;color:var(--paper-text-secondary)}
.edu-school + .edu-degree{margin-top:8px}

@media (max-width:720px){
  .doc-sheet{padding:16px 12px}
  .page{padding:24px 20px}
  .two-col{flex-direction:column;gap:14px}
}

@page{size:letter;margin:0}
@media print{
  body{background:#fff}
  .doc-sheet{padding:0;min-height:0}
  .page{width:auto;max-width:none;border-radius:0;box-shadow:none;margin:0}
}
