/* bricolage-grotesque-vietnamese-wght-normal */
@font-face {
  font-family: 'Bricolage Grotesque Variable';
  font-style: normal;
  font-display: swap;
  font-weight: 200 800;
  src: url(/_astro/bricolage-grotesque-vietnamese-wght-normal.BUzh504Q.woff2) format('woff2-variations');
  unicode-range: U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB;
}

/* bricolage-grotesque-latin-ext-wght-normal */
@font-face {
  font-family: 'Bricolage Grotesque Variable';
  font-style: normal;
  font-display: swap;
  font-weight: 200 800;
  src: url(/_astro/bricolage-grotesque-latin-ext-wght-normal.CcLUaPy7.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;
}

/* bricolage-grotesque-latin-wght-normal */
@font-face {
  font-family: 'Bricolage Grotesque Variable';
  font-style: normal;
  font-display: swap;
  font-weight: 200 800;
  src: url(/_astro/bricolage-grotesque-latin-wght-normal.DLoelf7F.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+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
}/* source-serif-4-cyrillic-ext-wght-normal */
@font-face {
  font-family: 'Source Serif 4 Variable';
  font-style: normal;
  font-display: swap;
  font-weight: 200 900;
  src: url(/_astro/source-serif-4-cyrillic-ext-wght-normal.DHTKMUil.woff2) format('woff2-variations');
  unicode-range: U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F;
}

/* source-serif-4-cyrillic-wght-normal */
@font-face {
  font-family: 'Source Serif 4 Variable';
  font-style: normal;
  font-display: swap;
  font-weight: 200 900;
  src: url(/_astro/source-serif-4-cyrillic-wght-normal.B1g8a0vD.woff2) format('woff2-variations');
  unicode-range: U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116;
}

/* source-serif-4-greek-wght-normal */
@font-face {
  font-family: 'Source Serif 4 Variable';
  font-style: normal;
  font-display: swap;
  font-weight: 200 900;
  src: url(/_astro/source-serif-4-greek-wght-normal.BpXpdlRW.woff2) format('woff2-variations');
  unicode-range: U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF;
}

/* source-serif-4-vietnamese-wght-normal */
@font-face {
  font-family: 'Source Serif 4 Variable';
  font-style: normal;
  font-display: swap;
  font-weight: 200 900;
  src: url(/_astro/source-serif-4-vietnamese-wght-normal.BsaNuasd.woff2) format('woff2-variations');
  unicode-range: U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB;
}

/* source-serif-4-latin-ext-wght-normal */
@font-face {
  font-family: 'Source Serif 4 Variable';
  font-style: normal;
  font-display: swap;
  font-weight: 200 900;
  src: url(/_astro/source-serif-4-latin-ext-wght-normal.BVZ5su8S.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-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF;
}

/* source-serif-4-latin-wght-normal */
@font-face {
  font-family: 'Source Serif 4 Variable';
  font-style: normal;
  font-display: swap;
  font-weight: 200 900;
  src: url(/_astro/source-serif-4-latin-wght-normal.DMe4EKeb.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+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
}/* source-serif-4-cyrillic-ext-wght-italic */
@font-face {
  font-family: 'Source Serif 4 Variable';
  font-style: italic;
  font-display: swap;
  font-weight: 200 900;
  src: url(/_astro/source-serif-4-cyrillic-ext-wght-italic.y6hTrs-Y.woff2) format('woff2-variations');
  unicode-range: U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F;
}

/* source-serif-4-cyrillic-wght-italic */
@font-face {
  font-family: 'Source Serif 4 Variable';
  font-style: italic;
  font-display: swap;
  font-weight: 200 900;
  src: url(/_astro/source-serif-4-cyrillic-wght-italic.CRzqOTyj.woff2) format('woff2-variations');
  unicode-range: U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116;
}

/* source-serif-4-greek-wght-italic */
@font-face {
  font-family: 'Source Serif 4 Variable';
  font-style: italic;
  font-display: swap;
  font-weight: 200 900;
  src: url(/_astro/source-serif-4-greek-wght-italic.CUp-f2uw.woff2) format('woff2-variations');
  unicode-range: U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF;
}

/* source-serif-4-vietnamese-wght-italic */
@font-face {
  font-family: 'Source Serif 4 Variable';
  font-style: italic;
  font-display: swap;
  font-weight: 200 900;
  src: url(/_astro/source-serif-4-vietnamese-wght-italic.D3EGHrWW.woff2) format('woff2-variations');
  unicode-range: U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB;
}

/* source-serif-4-latin-ext-wght-italic */
@font-face {
  font-family: 'Source Serif 4 Variable';
  font-style: italic;
  font-display: swap;
  font-weight: 200 900;
  src: url(/_astro/source-serif-4-latin-ext-wght-italic.B_cmBfNX.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-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF;
}

/* source-serif-4-latin-wght-italic */
@font-face {
  font-family: 'Source Serif 4 Variable';
  font-style: italic;
  font-display: swap;
  font-weight: 200 900;
  src: url(/_astro/source-serif-4-latin-wght-italic.B-rCj6ir.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+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
}/* Tokens. The jacket is wool; the page is paper; the pin is orange. */
/* Metric-matched fallbacks. While the web fonts load (a second or two on a slow phone), text sets in a system face scaled
   to the web face's widths, so when the web font swaps in, lines wrap the same and the page doesn't shift. The size-adjust
   values were measured in Chrome by comparing a long sample's width in each pair (October 2026); re-measure if a face
   changes. Georgia and Helvetica Neue are on every Apple device; elsewhere the stack falls through to Arial, then the
   system face, unadjusted. */
@font-face { font-family: "Source Serif Fallback"; src: local("Georgia"); font-weight: 100 500; size-adjust: 107%; }
@font-face { font-family: "Source Serif Fallback"; src: local("Georgia Bold"), local("Georgia-Bold"); font-weight: 600 900; size-adjust: 94.8%; }
@font-face { font-family: "Source Serif Fallback"; src: local("Georgia Italic"), local("Georgia-Italic"); font-style: italic; font-weight: 100 900; size-adjust: 96.5%; }
@font-face { font-family: "Bricolage Fallback"; src: local("Helvetica Neue"), local("HelveticaNeue"); font-weight: 100 450; size-adjust: 102.3%; }
@font-face { font-family: "Bricolage Fallback"; src: local("Helvetica Neue Medium"), local("HelveticaNeue-Medium"); font-weight: 451 650; size-adjust: 102.3%; }
@font-face { font-family: "Bricolage Fallback"; src: local("Helvetica Neue Bold"), local("HelveticaNeue-Bold"); font-weight: 651 900; size-adjust: 102.1%; }
@font-face { font-family: "Bricolage Fallback Arial"; src: local("Arial"), local("ArialMT"); size-adjust: 106.9%; }

:root {
  --wool: #1a2030;
  --wool-2: #232b3d;
  --wool-edge: #3a4660;
  --paper: #f6f4ee;
  --paper-2: #ecebe4;
  --ink: #15171c;
  --graphite: #6f6e69;
  --faint: #e2dfd6;
  --orange: #fb590a;
  --orange-text: #c24300;
  --mark: #ffe7d2;
  /* derived: the glass nav over paper, hairlines, and the phone nav pills */
  --paper-glass: rgba(246, 244, 238, 0.78);
  --paper-glass-solid: rgba(246, 244, 238, 0.96);
  --line: rgba(21, 23, 28, 0.08);
  --pill-bg: rgba(21, 23, 28, 0.06);
  --pill-line: rgba(21, 23, 28, 0.12);

  --display: "Bricolage Grotesque Variable", "Bricolage Fallback", "Bricolage Fallback Arial", system-ui, sans-serif;
  --text: "Source Serif 4 Variable", "Source Serif Fallback", Georgia, serif;

  --measure: 34em;
  --gutter: clamp(18px, 4vw, 48px);
  --nav-h: 64px;
}

*, *::before, *::after { box-sizing: border-box; }
html { background: var(--paper); color-scheme: light; }

/* Dark: the paper goes to a warm near-black, the ink to off-white; wool and orange stay. The photo panels are dark in
   both modes, and the prints on the desk are paper in both, because they're objects on the page, not the page. */
@media (prefers-color-scheme: dark) {
  :root {
    --paper: #121419;
    --paper-2: #1a1d24;
    --ink: #ece9e1;
    --graphite: #a09e96;
    --faint: #2a2e37;
    --orange-text: #ff8a4c;
    --mark: #4a2a14;
    --paper-glass: rgba(18, 20, 25, 0.72);
    --paper-glass-solid: rgba(18, 20, 25, 0.96);
    --line: rgba(236, 233, 225, 0.1);
    --pill-bg: rgba(236, 233, 225, 0.08);
    --pill-line: rgba(236, 233, 225, 0.16);
  }
  html { color-scheme: dark; }
}
body {
  margin: 0;
  background: var(--paper);
  color: var(--ink);
  font-family: var(--text);
  font-size: 19px;
  line-height: 1.55;
  font-variant-numeric: tabular-nums;
  -webkit-font-smoothing: antialiased;
}
a { color: inherit; text-decoration-thickness: 1px; text-underline-offset: 3px; }
a:hover { color: var(--orange-text); }
::selection { background: var(--mark); }
:focus-visible { outline: 2px solid var(--orange); outline-offset: 3px; }
img { max-width: 100%; height: auto; display: block; }

h1, h2, h3 { font-family: var(--display); font-weight: 500; letter-spacing: -0.025em; line-height: 1.02; margin: 0 0 0.5em; }
h1 { font-size: clamp(40px, 5.2vw, 72px); font-weight: 400; }
h2 { font-size: clamp(32px, 3.6vw, 52px); }
h3 { font-size: clamp(22px, 2vw, 26px); font-weight: 700; letter-spacing: -0.02em; }
p { margin: 0 0 1.2em; max-width: var(--measure); }

.kicker {
  font-family: var(--display);
  font-size: 14px;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: var(--orange-text);
  margin: 0 0 22px;
}

/* Section pages share one column */
.page {
  max-width: 1120px;
  margin: 0 auto;
  padding: calc(var(--nav-h) + 56px) var(--gutter) 96px;
}
.page-head { margin-bottom: 48px; }
.page-head p { font-size: 22px; line-height: 1.45; }

/* Running text (posts, about) */
.prose { max-width: var(--measure); }
.prose p { max-width: none; }
/* paragraphs sit apart, as on About; no indents, no drop cap */
.prose h2, .prose h3 { margin-top: 1.8em; }
.prose h2 { font-size: clamp(26px, 2.6vw, 34px); }
.prose h3 { font-size: 22px; }
.prose blockquote {
  margin: 1.6em 0;
  padding: 0 0 0 1.2em;
  border-left: 3px solid var(--orange);
  font-style: italic;
  color: var(--ink);
}
.prose img { margin: 1.6em 0 0.6em; outline: 6px solid var(--faint); outline-offset: -6px; }
.prose img + em, .prose figcaption { display: block; font-size: 16px; color: var(--graphite); margin-bottom: 1.6em; }
.prose ul, .prose ol { padding-left: 1.4em; }
.prose li { margin: 0.3em 0; }
.prose hr { border: 0; border-top: 1px solid var(--faint); margin: 2.4em 0; }
.prose code { font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: 0.88em; background: var(--paper-2); padding: 0.1em 0.35em; border-radius: 3px; }
.prose pre { background: var(--wool); color: #e8e6e1; padding: 20px 24px; overflow: auto; border-radius: 4px; font-size: 15px; line-height: 1.5; }
.prose pre code { background: none; padding: 0; color: inherit; }

/* Sidenotes: Markdown footnotes become margin notes on wide screens */
.prose .footnotes { font-size: 16px; color: var(--graphite); border-top: 1px solid var(--faint); margin-top: 2.5em; padding-top: 1em; }
.prose .footnotes ol { padding-left: 1.4em; }
/* links in running text stay findable without striping a link-dense paragraph */
.prose a { text-decoration-color: color-mix(in srgb, currentColor 35%, transparent); text-underline-offset: 4px; }
.prose a:hover { text-decoration-color: currentColor; }
.prose sup a { text-decoration: none; color: var(--orange-text); font-family: var(--display); font-weight: 700; padding: 0 0.1em; }

/* Lists of things: writing index, projects */
.entries { list-style: none; margin: 0; padding: 0; }
.entries li { border-top: 1px solid var(--faint); padding: 20px 0; display: grid; grid-template-columns: 1fr auto; gap: 24px; align-items: baseline; }
.entries li:last-child { border-bottom: 1px solid var(--faint); }
.entries a { text-decoration: none; font-family: var(--display); font-weight: 500; font-size: clamp(22px, 2.3vw, 30px); letter-spacing: -0.02em; }
.entries .what { color: var(--graphite); display: block; font-size: 17px; margin-top: 4px; }
.entries time, .entries .meta { color: var(--graphite); font-size: 16px; font-family: var(--display); letter-spacing: 0.02em; }

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
}
.nav[data-astro-cid-wpvy4v7s] {
  position: fixed;
  inset: 0 0 auto;
  z-index: 10;
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 16px;
  height: var(--nav-h);
  padding: 0 var(--gutter);
  color: var(--ink);
  background: var(--paper-glass);
  -webkit-backdrop-filter: blur(16px) saturate(1.4);
  backdrop-filter: blur(16px) saturate(1.4);
  border-bottom: 1px solid var(--line);
}

@supports not (backdrop-filter: blur(1px)) {
  .nav[data-astro-cid-wpvy4v7s] {
    background: var(--paper-glass-solid);
  }
}

.nav__name[data-astro-cid-wpvy4v7s] {
  font-family: var(--display);
  font-weight: 700;
  letter-spacing: .24em;
  text-transform: uppercase;
  font-size: 15px;
  text-decoration: none;
  white-space: nowrap;
}

.nav__menu[data-astro-cid-wpvy4v7s] {
  list-style: none;
  display: flex;
  gap: clamp(14px, 2.4vw, 30px);
  margin: 0;
  padding: 0;
}

.nav__menu[data-astro-cid-wpvy4v7s] a[data-astro-cid-wpvy4v7s] {
  font-family: var(--display);
  font-size: 15px;
  font-weight: 500;
  text-decoration: none;
  letter-spacing: .02em;
  padding: 6px 0;
}

.nav__menu[data-astro-cid-wpvy4v7s] a[data-astro-cid-wpvy4v7s]:hover, .nav__menu[data-astro-cid-wpvy4v7s] a[data-astro-cid-wpvy4v7s][aria-current] {
  text-decoration: underline;
  text-underline-offset: 6px;
  text-decoration-thickness: 2px;
  text-decoration-color: var(--orange);
}

.nav__toggle[data-astro-cid-wpvy4v7s] {
  display: none;
}

.nav--split[data-astro-cid-wpvy4v7s] {
  background: linear-gradient(90deg, #161a248c 0 46%, var(--paper-glass) 46% 100%);
  border-bottom-color: var(--line);
}

.nav--split[data-astro-cid-wpvy4v7s] .nav__name[data-astro-cid-wpvy4v7s] {
  color: #fff;
}

@media (width <= 820px) {
  .nav[data-astro-cid-wpvy4v7s] {
    padding: 0 18px;
  }

  .nav--split[data-astro-cid-wpvy4v7s] {
    background: #161a2499;
    color: #fff;
    border-bottom-color: #ffffff1f;
  }

  .nav--split-desktop[data-astro-cid-wpvy4v7s] {
    background: var(--paper-glass);
    color: var(--ink);
    border-bottom-color: var(--line);
  }

  .nav--split-desktop[data-astro-cid-wpvy4v7s] .nav__name[data-astro-cid-wpvy4v7s] {
    color: var(--ink);
  }

  .nav__name[data-astro-cid-wpvy4v7s] {
    font-size: 14px;
    letter-spacing: .2em;
  }

  .nav__toggle[data-astro-cid-wpvy4v7s] {
    display: none;
  }

  .nav__menu[data-astro-cid-wpvy4v7s] {
    display: flex;
    gap: 8px;
  }

  .nav__menu[data-astro-cid-wpvy4v7s] a[data-astro-cid-wpvy4v7s] {
    display: inline-block;
    font-size: 13px;
    font-weight: 600;
    letter-spacing: .02em;
    line-height: 1;
    padding: 9px 13px;
    border-radius: 999px;
    text-decoration: none;
    color: inherit;
    background: var(--pill-bg);
    border: 1px solid var(--pill-line);
    -webkit-backdrop-filter: blur(12px) saturate(1.3);
    backdrop-filter: blur(12px) saturate(1.3);
  }

  .nav__menu[data-astro-cid-wpvy4v7s] a[data-astro-cid-wpvy4v7s]:hover, .nav__menu[data-astro-cid-wpvy4v7s] a[data-astro-cid-wpvy4v7s][aria-current] {
    text-decoration: none;
  }

  .nav__menu[data-astro-cid-wpvy4v7s] a[data-astro-cid-wpvy4v7s][aria-current] {
    background: var(--ink);
    border-color: var(--ink);
    color: var(--paper);
  }

  .nav--split[data-astro-cid-wpvy4v7s] .nav__menu[data-astro-cid-wpvy4v7s] a[data-astro-cid-wpvy4v7s] {
    background: #ffffff24;
    border-color: #ffffff47;
    color: #fff;
  }

  .nav--split[data-astro-cid-wpvy4v7s] .nav__menu[data-astro-cid-wpvy4v7s] a[data-astro-cid-wpvy4v7s][aria-current] {
    background: #ffffffeb;
    border-color: #0000;
    color: var(--ink);
  }

  .nav--split-desktop[data-astro-cid-wpvy4v7s] .nav__menu[data-astro-cid-wpvy4v7s] a[data-astro-cid-wpvy4v7s] {
    background: var(--pill-bg);
    border-color: var(--pill-line);
    color: var(--ink);
  }

  .nav--split-desktop[data-astro-cid-wpvy4v7s] .nav__menu[data-astro-cid-wpvy4v7s] a[data-astro-cid-wpvy4v7s][aria-current] {
    background: var(--ink);
    border-color: var(--ink);
    color: var(--paper);
  }
}
.footer[data-astro-cid-jo6i4kqk] {
  border-top: 1px solid var(--faint);
  margin-top: 48px;
}

.footer__in[data-astro-cid-jo6i4kqk] {
  max-width: 1120px;
  margin: 0 auto;
  padding: 40px var(--gutter) 56px;
  display: flex;
  flex-wrap: wrap;
  gap: 18px 40px;
  align-items: baseline;
}

.footer__name[data-astro-cid-jo6i4kqk] {
  font-family: var(--display);
  letter-spacing: .26em;
  text-transform: uppercase;
  font-size: 13px;
  margin: 0;
}

ul[data-astro-cid-jo6i4kqk] {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  gap: 22px;
  flex-wrap: wrap;
}

li[data-astro-cid-jo6i4kqk] a[data-astro-cid-jo6i4kqk] {
  font-family: var(--display);
  font-size: 15px;
  text-decoration: none;
}

li[data-astro-cid-jo6i4kqk] a[data-astro-cid-jo6i4kqk]:hover {
  text-decoration: underline;
  text-underline-offset: 5px;
  text-decoration-color: var(--orange);
}

.footer__fine[data-astro-cid-jo6i4kqk] {
  margin: 0;
  flex-basis: 100%;
  color: var(--graphite);
  font-size: 15px;
  font-style: italic;
}
