@font-face{font-family:"Inter Variable";font-style:normal;font-display:swap;font-weight:100 900;
  src:url(./fonts/inter-latin-wght-normal.woff2) format("woff2-variations");
  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+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:"Inter Variable";font-style:normal;font-display:swap;font-weight:100 900;
  src:url(./fonts/inter-latin-ext-wght-normal.woff2) format("woff2-variations");
  unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}

  :root{
    --brand:#6d4aff; --paper:#f7f6fb; --surface:#fff; --ink:#17151f; --soft:#4a4560; --muted:#52505e;
    --faint:#9a94ad; --border:#e5e3ef; --hair:#edecf5;
    --sans:"Inter Variable","Inter",system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;
    --disp:"Inter Variable","Inter","Helvetica Neue",Helvetica,Arial,system-ui,sans-serif;
    --mono:ui-monospace,"SF Mono","JetBrains Mono",Menlo,Consolas,monospace;
  }
  @media (prefers-color-scheme:dark){:root{
    --brand:#8b7bff; --paper:#121118; --surface:#1b1a22; --ink:#eceaf3; --soft:#c3bed3; --muted:#a9a7b5; --faint:#6f6987;
    --border:#2c2a38; --hair:#262432;
  }}
  :root[data-theme="light"]{--brand:#6d4aff;--paper:#f7f6fb;--surface:#fff;--ink:#17151f;--soft:#4a4560;--muted:#52505e;--faint:#9a94ad;--border:#e5e3ef;--hair:#edecf5}
  :root[data-theme="dark"]{--brand:#8b7bff;--paper:#121118;--surface:#1b1a22;--ink:#eceaf3;--soft:#c3bed3;--muted:#a9a7b5;--faint:#6f6987;--border:#2c2a38;--hair:#262432}
  *{box-sizing:border-box}
  h1,h2,h3{font-family:var(--disp)}
  html{-webkit-text-size-adjust:100%}
  body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--sans);line-height:1.5;font-size:15px;-webkit-font-smoothing:antialiased}
  a{color:var(--brand);text-decoration:none}
  a:hover{text-decoration:underline}

  .controls{position:sticky;top:0;z-index:10;backdrop-filter:blur(8px);
    background:color-mix(in srgb,var(--paper) 84%,transparent);border-bottom:1px solid var(--hair)}
  .controls .in{max-width:820px;margin:0 auto;padding:10px 40px;display:flex;align-items:center;gap:12px}
  .back{font-family:var(--mono);font-size:.76rem}
  .spacer{flex:1}
  .seg{display:inline-flex;border:1px solid var(--border);border-radius:9px;overflow:hidden;background:var(--surface)}
  .seg button{appearance:none;border:0;background:transparent;color:var(--muted);font-family:var(--mono);font-size:.72rem;padding:6px 10px;cursor:pointer}
  .seg button[aria-pressed="true"]{background:var(--brand);color:#fff}
  .btn{appearance:none;font-family:var(--mono);font-size:.72rem;border:1px solid var(--border);background:var(--surface);
    color:var(--ink);padding:6px 12px;border-radius:9px;cursor:pointer;display:inline-flex;gap:6px;align-items:center}
  .btn:hover{border-color:var(--brand);color:var(--brand)}
  button:focus-visible,a:focus-visible{outline:2px solid var(--brand);outline-offset:2px;border-radius:6px}

  main{max-width:820px;margin:0 auto;padding:34px 40px 80px}
  header.cv h1{font-size:2.1rem;margin:0;letter-spacing:-.02em;font-weight:700;text-wrap:balance}
  .degrees{font-family:var(--mono);font-size:.8rem;color:var(--brand);letter-spacing:.06em;margin:5px 0 0}
  .tagline{font-size:1.08rem;color:var(--soft);margin:10px 0 0;max-width:60ch;font-weight:500}
  .contact{font-family:var(--mono);font-size:.78rem;color:var(--muted);margin:12px 0 0;display:flex;flex-wrap:wrap;gap:4px 14px}
  .summary{margin:16px 0 0;color:var(--soft);max-width:66ch}
  .summary p{margin:0 0 9px}
  .summary p:last-child{margin-bottom:0}

  section{margin-top:30px}
  h2{font-family:var(--mono);font-size:.72rem;letter-spacing:.16em;text-transform:uppercase;color:var(--brand);
    font-weight:700;margin:0 0 12px;padding-bottom:6px;border-bottom:1.5px solid var(--border);display:flex;align-items:baseline;justify-content:space-between}
  h2 .c{color:var(--faint);font-size:.86em;font-weight:400}
  .entry{margin:0 0 15px;break-inside:avoid}
  .entry .top{display:flex;justify-content:space-between;gap:14px;align-items:baseline}
  .entry .ti{font-weight:640;font-size:.98rem;letter-spacing:-.01em}
  .entry .org{color:var(--soft);font-weight:500}
  .entry .when{font-family:var(--mono);font-size:.76rem;color:var(--muted);white-space:nowrap;flex:none;font-variant-numeric:tabular-nums}
  .entry .loc{font-family:var(--mono);font-size:.74rem;color:var(--faint)}
  .entry p{margin:5px 0 0;color:var(--soft);font-size:.9rem}
  .edu{display:flex;justify-content:space-between;gap:14px;padding:6px 0;border-bottom:1px solid var(--hair)}
  .edu:last-child{border-bottom:0}
  .edu .d{font-weight:600}.edu .i{color:var(--soft)}
  .skill{display:flex;gap:10px;padding:5px 0}
  .skill .k{font-family:var(--mono);font-size:.74rem;color:var(--brand);min-width:210px;flex:none;text-transform:uppercase;letter-spacing:.04em}
  .skill .v{color:var(--soft);font-size:.9rem}
  .subh{font-family:var(--mono);font-size:.64rem;letter-spacing:.12em;text-transform:uppercase;color:var(--soft);font-weight:700;margin:14px 0 6px}
  ol.pubs{margin:0;padding-left:1.4em}
  ol.pubs li{margin:0 0 7px;font-size:.88rem;color:var(--soft);break-inside:avoid}
  ol.pubs li b{color:var(--ink);font-weight:600}
  ul.plain{list-style:none;margin:0;padding:0}
  ul.plain li{padding:7px 0;border-bottom:1px solid var(--hair);font-size:.89rem;color:var(--soft);break-inside:avoid}
  ul.plain li:last-child{border-bottom:0}
  .keep{break-inside:avoid}
  .keep.cont .edu,.keep.cont ul.plain li{border-bottom:1px solid var(--hair)}
  ul.plain li b{color:var(--ink);font-weight:600}
  .tag{font-family:var(--mono);font-size:.66rem;color:var(--muted)}

  .alias{color:var(--faint)}
  .twin{font-family:var(--mono);font-size:.76rem}

  @media (max-width:640px){.controls .in,main{padding-left:20px;padding-right:20px}.skill{flex-direction:column;gap:2px}.skill .k{min-width:0}}
  /* The browser prints its own date, title, URL and "Page 1 of N" in the page margin.
     Declaring the margin boxes, even empty, hands that space to the page, so Chrome and
     Edge print none of it and the margins stay. Safari and Firefox ignore margin boxes
     (they keep the 16mm): there it is the print dialog's "headers and footers" box. */
  @page{margin:16mm;
    @top-left{content:""}@top-center{content:""}@top-right{content:""}
    @bottom-left{content:""}@bottom-center{content:""}@bottom-right{content:""}}
  @media print{
    .controls{display:none}
    body{background:#fff;color:#000;font-size:10.5pt}
    :root{--paper:#fff;--surface:#fff;--ink:#000;--soft:#222;--muted:#444;--faint:#666;--brand:#3a2fbf;--border:#bbb;--hair:#ddd}
    main{max-width:none;padding:0}
    a{color:#000}
    section{margin-top:16pt}
    /* a bare h1 selector here lost to "header.cv h1" and the name printed at 25pt */
    header.cv h1{font-size:17pt}
    .degrees{display:none}
    .summary{max-width:none}
    .summary p,.entry p,ol.pubs li,ul.plain li,.skill .v{text-align:justify;-webkit-hyphens:auto;hyphens:auto}
  }
