@import url('/theme.css?v=rose-1');
:root {
  --section-inset: 0px;
  --summary-width: 280px;
  --column-gap: 32px;
  --section-gap: 88px;
}
* { box-sizing: border-box; }
html { scroll-padding-top: 24px; }
body { margin: 0; background: var(--paper); color: var(--ink); font-family: var(--sans); font-size: 16px; font-weight: 400; line-height: 1.8; letter-spacing: -.02em; word-break: keep-all; overflow-wrap: anywhere; -webkit-font-smoothing: antialiased; }
h1, h2, h3, p { margin-top: 0; }
a { color: inherit; text-decoration: none; }
a:hover { color: var(--accent); text-decoration: underline; text-underline-offset: 5px; }
a:focus-visible, button:focus-visible { outline: 2px solid var(--accent); outline-offset: 5px; }
::selection { background: var(--highlight); }
.page { max-width: 960px; margin: auto; padding: 0 32px; }
.folio-home .page { max-width: 1160px; padding: 0 48px; }
.skip { position: absolute; top: -100px; left: 16px; padding: 9px 16px; background: white; z-index: 30; }
.skip:focus { top: 10px; }
.identity { display: flex; justify-content: space-between; align-items: center; gap: 32px; padding: 56px 0 32px; border-bottom: 1px solid var(--rule); }
.identity-home { display: flex; flex-direction: column; gap: 9px; }
.identity-home:hover { text-decoration: none; }
.identity h1 { font-size: 58px; font-weight: 300; line-height: 1.1; letter-spacing: -.055em; margin: 0; }
.identity-home > span { font-family: var(--sans); font-size: 12px; letter-spacing: .03em; color: var(--muted); }
@media (prefers-reduced-motion: no-preference) {
  .folio-home .identity-home {
    animation: identity-fade-in 500ms ease-out both;
  }
  @keyframes identity-fade-in {
    from { opacity: 0; }
    to { opacity: 1; }
  }
}
@media print {
  .folio-home .identity-home { animation: none; }
}
.folio-intro { padding: 40px 0 32px; }
.folio-intro h2 { font-size: 24px; font-weight: 300; line-height: 1.5; margin: 0 0 16px; color: var(--accent); }
.about-copy { width: 100%; font-size: 16px; line-height: 1.9; }
.about-copy p { margin: 0 0 14px; }
.about-copy p:last-child { margin-bottom: 0; }
.about-copy strong { font-weight: 400; background: var(--highlight); padding: 2px 3px; box-decoration-break: clone; -webkit-box-decoration-break: clone; }
.about-copy p:first-child { font-size: 18px; line-height: 1.85; letter-spacing: -.02em; margin-bottom: 16px; }
.hiring-note { margin-top: 24px; font-size: 15px; line-height: 1.9; color: var(--body-ink); }
.hiring-note p { margin: 0 0 8px; }
.hiring-note .hiring-invitation { color: var(--accent); }
.hiring-note .hiring-email { margin-bottom: 0; color: var(--accent); }
.recent-writing { padding: 24px 0 16px; }
.recent-writing-heading { display: flex; align-items: baseline; justify-content: space-between; gap: 20px; margin-bottom: 16px; }
.recent-writing-heading h2 { font-size: 24px; font-weight: 300; line-height: 1.5; margin: 0; color: var(--accent); }
.recent-writing-more { display: inline-block; margin-top: 16px; font-size: 13px; color: var(--accent); text-decoration: underline; text-underline-offset: 4px; padding: 4px 0; }
.recent-writing-heading h2 a { font: inherit; color: inherit; text-decoration: none; padding: 0; }
.recent-writing-heading h2 a:hover { text-decoration: underline; text-underline-offset: 5px; }
.recent-writing-list { border-top: 1px solid var(--line); }
.recent-article { display: grid; grid-template-columns: minmax(0, 1fr) 104px; align-items: center; gap: 24px; padding: 16px 0; border-bottom: 1px solid var(--line); min-width: 0; }
.recent-article:hover { text-decoration: none; }
.recent-article img, .recent-article-placeholder { display: block; grid-column: 2; grid-row: 1; width: 104px; height: 64px; object-fit: contain; background: #fff; }
.recent-article-placeholder { display: grid; place-items: center; color: var(--accent); font-size: 24px; }
.recent-article-copy { display: flex; flex-direction: column; grid-column: 1; grid-row: 1; min-width: 0; }
.recent-article-meta { order: 2; display: flex; align-items: baseline; flex-wrap: wrap; gap: 4px 8px; font: 12px/1.7 var(--sans); color: var(--muted); }
.recent-article time { font: inherit; color: inherit; }
.recent-article h3 { order: 1; font-size: 18px; font-weight: 500; line-height: 1.65; margin: 0 0 8px; word-break: keep-all; }
.recent-article:hover h3 { color: var(--accent); text-decoration: underline; text-underline-offset: 4px; }
.folio-group, .folio-background { scroll-margin-top: 24px; margin-top: var(--section-gap); }
.folio-group-primary { margin-top: 64px; }
.folio-group-heading { margin-bottom: 16px; }
.folio-group-heading h2 { font-size: 24px; font-weight: 300; margin: 0; line-height: 1.5; color: var(--accent); }
.section-label { display: none; }
.folio-entry { display: grid; grid-template-columns: var(--summary-width) minmax(0, 1fr); gap: var(--column-gap); padding: 32px 0; margin-left: var(--section-inset); scroll-margin-top: 24px; }
.folio-entry + .folio-entry { border-top: 1px solid #f0f0ee; }
.folio-entry-summary { min-width: 0; }
.folio-entry h3 { font-size: 20px; font-weight: 500; line-height: 1.5; letter-spacing: -.03em; margin: 0; text-wrap: wrap; }
.folio-date { font-family: var(--sans); font-size: 12px; line-height: 1.7; color: var(--muted); margin: 8px 0 0; letter-spacing: 0; }
.folio-role { font-size: 14px; line-height: 1.7; color: var(--body-ink); margin: 8px 0 0; }
.folio-entry-body { min-width: 0; }
.folio-bullets { margin: 0; padding-left: 18px; font-size: 16px; line-height: 1.85; color: var(--body-ink); }
.folio-bullets li { padding-left: 2px; }
.folio-bullets > li + li { margin-top: 9px; }
.folio-bullets li::marker { color: var(--muted); font-size: .7em; }
.contribution { font-weight: 400; }
.contribution mark { color: inherit; font-weight: inherit; background: var(--highlight); padding: 2px 3px; box-decoration-break: clone; -webkit-box-decoration-break: clone; }
.contribution-evidence { margin: 5px 0; padding-left: 15px; font-size: 13px; line-height: 1.8; color: var(--muted); list-style: circle; }
.folio-scope { margin: 0 0 12px; font-size: 14px; line-height: 1.8; color: var(--muted); }
.folio-entry-links { display: flex; flex-wrap: wrap; gap: 8px 24px; font-size: 13px; margin-top: 16px; }
.folio-entry-links a { color: var(--accent); text-decoration: underline; text-underline-offset: 4px; }
.folio-date-linked { display: flex; align-items: baseline; flex-wrap: wrap; gap: 8px 16px; }
.folio-date-linked .folio-entry-links { margin: 0; font-size: inherit; line-height: inherit; }
.folio-entry-primary { padding: 40px 0; }
.folio-entry-primary h3 { font-size: 28px; font-weight: 500; }
.folio-entry-primary .folio-bullets { font-size: 16px; }
.folio-entry.compact-entry { display: block; padding: 24px 0; }
.folio-entry.compact-entry h3 { font-size: 20px; line-height: 1.5; font-weight: 500; letter-spacing: -.03em; text-wrap: wrap; word-break: keep-all; overflow-wrap: normal; }
.compact-entry .folio-role { margin-top: 8px; }
.compact-entry .folio-entry-summary { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 0 24px; }
.compact-entry h3 { grid-column: 1 / -1; grid-row: 1; }
.compact-entry .folio-role { grid-column: 1; grid-row: 2; }
.compact-entry .folio-date { grid-column: 2; grid-row: 2; margin: 8px 0 0; white-space: nowrap; }
.folio-company { font-size: 14px; line-height: 1.8; color: var(--muted); margin: 0 0 16px; }
.background-row { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: baseline; gap: 8px 24px; padding: 24px 0; margin-left: var(--section-inset); }
.background-row > div { display: contents; }
.background-row + .background-row { border-top: 1px solid #f0f0ee; }
.background-row h3 { grid-column: 1 / -1; grid-row: 1; font-size: 20px; font-weight: 500; line-height: 1.5; margin: 0; }
.background-row p { grid-column: 1; grid-row: 2; font-size: 14px; line-height: 1.7; color: var(--muted); margin: 0; }
.background-row > span { grid-column: 2; grid-row: 2; font: 12px/1.7 var(--sans); color: var(--muted); white-space: nowrap; }
/* Supporting pages share the same readable type and quiet navigation. */
.header { display: flex; align-items: center; justify-content: space-between; gap: 24px; padding: 29px 0; border-bottom: 1px solid var(--line); font-size: 14px; }
.name { font-weight: 400; }
.name span { font-size: 11px; color: var(--muted); font-weight: 400; margin-left: 6px; }
.page-intro { padding: 55px 0 31px; }
.page-intro h1 { font-size: clamp(32px, 4vw, 42px); line-height: 1.45; font-weight: 300; letter-spacing: -.04em; margin-bottom: 19px; }
.eyebrow { font-size: 12px; letter-spacing: .06em; color: var(--muted); margin-bottom: 17px; }
.intro { font-size: 20px; line-height: 1.85; max-width: 720px; margin-bottom: 18px; }
.meta { font-size: 13px; color: var(--muted); }
.back { display: inline-block; margin-top: 29px; font-size: 14px; color: var(--muted); }
.back + .page-intro { padding-top: 28px; border-bottom: 1px solid var(--line); margin-bottom: 30px; }
.prose { max-width: 750px; padding-bottom: 40px; font-size: 17px; line-height: 1.9; }
.prose p { margin-bottom: 20px; color: var(--ink); }
.prose h2 { font-size: 23px; line-height: 1.6; margin: 43px 0 17px; font-weight: 400; }
.prose h3 { font-size: 18px; margin: 25px 0 10px; font-weight: 400; }
.prose strong { font-weight: 400; background: var(--highlight); }
.prose a, .text-link { text-decoration: underline; text-underline-offset: 4px; }
.prose .note { font-size: 13px; color: var(--muted); border-left: 2px solid var(--line); padding-left: 14px; }
.text-link { font-size: 14px; color: var(--accent); }
.numbers { display: flex; flex-wrap: wrap; gap: 24px; margin: 24px 0; padding: 23px 0; border-block: 1px solid var(--line); }
.numbers dt { font-size: 24px; font-weight: 400; }
.numbers dd { font-size: 13px; color: var(--muted); margin: 4px 0 0; }
.timeline { margin: 0; }
.timeline > div { display: grid; grid-template-columns: 180px 1fr; gap: 16px; border-bottom: 1px solid var(--line); padding: 18px 0; }
.timeline dt { font-size: 13px; color: var(--muted); }
.timeline dd { margin: 0; }
.timeline small { display: block; font-size: 13px; color: var(--muted); }
.related h2 { font-size: 18px; }
.writing-row { display: flex; justify-content: space-between; gap: 20px; padding: 18px 0; border-bottom: 1px solid var(--line); font-size: 15px; }
.next-work { display: flex; justify-content: space-between; gap: 20px; padding: 32px 0; font-size: 15px; }
.filters { display: flex; flex-wrap: wrap; gap: 12px 24px; padding: 0 0 18px; border-bottom: 1px solid var(--rule); }
.filters button { appearance: none; border: 0; padding: 5px 0; font: inherit; font-size: 14px; color: var(--muted); background: none; cursor: pointer; }
.filters .is-on { color: var(--accent); font-weight: 400; text-decoration: underline; text-underline-offset: 6px; }
.article-row { display: grid; grid-template-columns: 1fr 95px; gap: 28px; padding: 27px 0; border-bottom: 1px solid var(--line); }
.article-row h2 { font-size: 20px; line-height: 1.6; font-weight: 400; margin-bottom: 10px; }
.article-row p { font-size: 15px; color: var(--muted); margin: 0; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.article-row > .meta { text-align: right; padding-top: 5px; }
.article-row:hover { text-decoration: none; }
.article-row:hover h2 { text-decoration: underline; text-underline-offset: 5px; }
.is-hidden { display: none; }
#feed-list { padding-bottom: 45px; }
@media (max-width: 900px) {
  :root { --summary-width: 185px; --column-gap: 24px; }
}
@media (max-width: 600px) {
  :root { --section-inset: 0px; --section-gap: 64px; }
  .page, .folio-home .page { padding: 0 22px; }
  .identity { padding: 28px 0 22px; gap: 24px; align-items: center; }
  .identity h1 { font-size: 40px; }
  .identity-home > span { font-size: 10px; }
  .folio-intro { display: block; padding: 25px 0; }
  .recent-writing { padding: 12px 0 22px; }
  .recent-writing-heading { display: flex; align-items: baseline; justify-content: space-between; margin-bottom: 14px; }
  .recent-writing-heading h2 { margin: 0; }
  .recent-article { grid-template-columns: minmax(0, 1fr) 88px; gap: 16px; padding: 18px 0; }
  .recent-article img, .recent-article-placeholder { width: 88px; height: 64px; }
  .recent-article h3 { font-size: 16px; line-height: 1.65; }
  .folio-intro h2 { margin: 0 0 18px; }
  .about-copy { font-size: 15px; line-height: 1.9; }
  .about-copy p:first-child { font-size: 18px; }
  .folio-group-primary { margin-top: 48px; }
  .folio-group-heading { margin-bottom: 16px; }
  .folio-entry, .folio-entry-primary { display: block; padding: 25px 0; }
  .folio-entry-primary h3 { font-size: 26px; }
  .folio-entry.compact-entry { padding: 24px 0; }
  .compact-entry .folio-entry-summary { display: grid; gap: 0 12px; }
  .folio-entry-summary { display: block; }
  .folio-entry-body { margin-top: 17px; }
  .folio-bullets, .folio-entry-primary .folio-bullets { font-size: 15px; }
  .contribution-evidence { font-size: 13px; }
  .background-row { gap: 8px 12px; }
  .compact-entry .folio-role, .background-row p { grid-column: 1 / -1; }
  .compact-entry .folio-date, .background-row > span { grid-column: 1 / -1; grid-row: 3; }
  .header { gap: 20px; }
  .name span { display: none; }
  .page-intro { padding-top: 37px; }
  .intro { font-size: 18px; }
  .prose { font-size: 16px; }
  .prose h2 { font-size: 21px; }
  .timeline > div { grid-template-columns: 1fr; gap: 5px; }
  .article-row { grid-template-columns: 1fr; gap: 9px; }
  .article-row > .meta { text-align: left; }
  .article-row > .meta br { display: none; }
  .article-row h2 { font-size: 19px; }
}
@media print {
  .page, .folio-home .page { max-width: none; padding: 0; }
  .folio-entry-links, footer, .skip, .recent-writing { display: none; }
  .identity { padding-top: 0; }
  .folio-entry-primary { background: none; border: 0; border-bottom: 1px solid var(--line); padding: 20px 0; }
  .folio-entry, .background-row { break-inside: avoid; }
  .folio-entry { display: block; margin-left: 0; }
  .folio-group { margin-top: 25px; }
  .folio-group-heading { break-after: avoid; }
}
