:root{color-scheme:light;--paper: #ffffff;--surface: #f3f3f1;--raised: #ffffff;--ink: #1c1d1a;--secondary: #4d4f49;--muted: #6b6d66;--line: #e7e7e3;--line-strong: #cfcfca;--q1: #5b7cf0;--q2: #ec7fa3;--q3: #e9b949;--q4: #ee9560;--p1: var(--q1);--p2: var(--q2);--p3: var(--q3);--p4: var(--q4);--accent-bright: var(--p1);--accent: color-mix(in oklab, var(--p1) 78%, #000);--on-ink: #ffffff;--font-sans: "Inter", ui-sans-serif, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-mono: "JetBrains Mono", ui-monospace, "SF Mono", Menlo, monospace;--text-xs: .75rem;--text-sm: .8125rem;--text-md: .9375rem;--text-lg: 1.0625rem;--text-xl: clamp(1.1875rem, 1.05rem + .5vw, 1.375rem);--text-2xl: clamp(1.625rem, 1.3rem + 1.3vw, 2.125rem);--text-display: clamp(2rem, 1.4rem + 2.4vw, 3rem);--text-hero: clamp(3rem, 1.2rem + 6vw, 7rem);--text-section: clamp(1.25rem, 1.05rem + .8vw, 1.625rem);--leading-body: 1.5;--leading-prose: 1.7;--space-1: .25rem;--space-2: .5rem;--space-3: .75rem;--space-4: 1rem;--space-5: 1.125rem;--space-6: 1.5rem;--space-7: 2rem;--space-8: 2.75rem;--section-space: clamp(1.75rem, 1rem + 2vw, 2.5rem);--width-page: 57.5rem;--width-grid: 82rem;--width-text: 46rem;--width-wide: 47.5rem;--measure: 37.5rem;--meta-col: 6rem;--gutter: clamp(1.25rem, 5vw, 3rem);--header-height: 3.25rem;--radius-sm: 4px;--radius: 8px;--radius-pill: 999px;--duration: .15s}[data-theme=dark]{color-scheme:dark;--paper: #141513;--surface: #1d1f1c;--raised: #242622;--ink: #ecebe6;--secondary: #bdbcb4;--muted: #94938b;--line: #2e302c;--line-strong: #464942;--accent: color-mix(in oklab, var(--p1) 60%, #fff);--on-ink: #141513}[data-v2-mode=life]{--paper: #ffffff;--surface: #f5f2ee;--p1: var(--q2);--p2: var(--q3);--p3: var(--q4);--p4: var(--q1)}[data-theme=dark][data-v2-mode=life]{--paper: #161412;--surface: #201d1a}*,*:before,*:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;text-size-adjust:100%;scroll-behavior:smooth;scroll-padding-top:calc(var(--header-height) + var(--space-5))}body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--font-sans);font-size:var(--text-md);line-height:var(--leading-body);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;transition:background-color .3s ease;overflow-x:clip}h1,h2,h3,h4{margin:0;font-weight:500;text-wrap:balance}h1{font-size:var(--text-2xl);line-height:1.1;letter-spacing:-.022em}h2{font-size:var(--text-xl);line-height:1.2;letter-spacing:-.016em}h3{font-size:var(--text-lg);line-height:1.3;letter-spacing:-.01em}h4{font-size:var(--text-sm);line-height:1.4}p,figure,blockquote,pre,ul,ol,dl,dd{margin:0}p{text-wrap:pretty}strong,b{font-weight:600}a{color:inherit;text-decoration-thickness:1px;text-underline-offset:.22em}img,svg{display:block;max-width:100%;height:auto}button{font:inherit;color:inherit}a,button,summary{-webkit-tap-highlight-color:transparent}:focus-visible{outline:2px solid var(--accent);outline-offset:3px}h1:focus{outline:none}::selection{background:color-mix(in srgb,var(--accent) 22%,transparent)}[hidden]{display:none!important}[data-view=life],[data-v2-mode=life] [data-view=work]{display:none}[data-v2-mode=life] [data-view=life]{display:block}.container{width:min(var(--width-page),100% - 2 * var(--gutter));margin-inline:auto}.section{padding-block:var(--section-space);border-top:1px solid var(--line)}.layout-wide{--width-page: var(--width-grid)}.skip-link{position:absolute;z-index:100;top:-100px;left:var(--space-3);padding:var(--space-2) var(--space-4);border-radius:var(--radius);background:var(--ink);color:var(--on-ink);font-size:var(--text-sm)}.skip-link:focus{top:var(--space-3)}.site-header{position:sticky;top:0;z-index:30;background:color-mix(in srgb,var(--paper) 92%,transparent);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-bottom:1px solid var(--line)}.navigation{display:flex;align-items:center;gap:var(--space-6);height:var(--header-height)}.wordmark{min-width:0;margin-right:auto;overflow:hidden;text-overflow:ellipsis;font-size:var(--text-md);font-weight:500;letter-spacing:-.012em;text-decoration:none;white-space:nowrap}.nav-links{display:flex;gap:var(--space-5)}.nav-links a{color:var(--secondary);font-size:var(--text-sm);text-decoration:none;white-space:nowrap;transition:color var(--duration)}.nav-links a:hover,.nav-links a[aria-current=page]{color:var(--ink)}.nav-actions{display:flex;align-items:center;gap:var(--space-2)}.view-switch{display:flex;gap:2px;padding:3px;border-radius:var(--radius-pill);background:var(--surface)}.view-switch a{display:inline-flex;align-items:center;gap:6px;padding:4px 14px 4px 11px;border-radius:var(--radius-pill);color:var(--secondary);font-size:var(--text-xs);font-weight:500;line-height:20px;text-decoration:none;transition:color var(--duration),background-color var(--duration)}.view-switch a:hover{color:var(--ink)}.view-switch a[aria-current]{background:var(--raised);color:var(--ink);box-shadow:0 0 0 1px var(--line),0 1px 2px #0000000f}.view-switch a:before{content:"";width:6px;height:6px;border-radius:50%;background:transparent;transition:background-color var(--duration)}.view-switch a[aria-current]:before{background:var(--accent)}.icon-button{display:grid;place-items:center;width:36px;height:36px;padding:0;border:0;border-radius:var(--radius-pill);background:transparent;color:var(--secondary);cursor:pointer;transition:color var(--duration),background-color var(--duration)}.icon-button:hover{color:var(--ink)}.theme-sun,[data-theme=dark] .theme-moon{display:none}[data-theme=dark] .theme-sun{display:block}.menu-toggle{display:none}.menu-toggle span{grid-area:1 / 1;width:16px;height:1.5px;background:currentColor;transition:transform var(--duration)}.menu-toggle span:first-child{transform:translateY(-3px)}.menu-toggle span:last-child{transform:translateY(3px)}.menu-toggle[aria-expanded=true] span:first-child{transform:rotate(45deg)}.menu-toggle[aria-expanded=true] span:last-child{transform:rotate(-45deg)}.meta{color:var(--muted);font-size:var(--text-xs);line-height:1.5;font-variant-numeric:tabular-nums}.link{color:var(--ink);font-size:var(--text-sm);font-weight:500;text-decoration:underline;text-decoration-color:var(--line-strong);text-underline-offset:.25em;transition:color var(--duration),text-decoration-color var(--duration)}.link:hover{color:var(--accent);text-decoration-color:currentColor}.link:is([href^=http],[href$=".pdf"]):after{content:"↗";content:"↗" / "";display:inline-block;margin-left:.3em;color:var(--muted);font-weight:400;transition:color var(--duration)}.link:is([href^=http],[href$=".pdf"]):hover:after{color:currentColor}.link-row{display:flex;flex-wrap:wrap;gap:var(--space-2) var(--space-5);margin:0;padding:0;list-style:none}.link-back{display:inline-flex;gap:.4em;color:var(--muted);font-size:var(--text-xs);text-decoration:none;transition:color var(--duration)}.link-back:before{content:"←";content:"←" / ""}.link-back:hover{color:var(--ink)}.stretched:before{content:"";position:absolute;inset:0;z-index:1}.button{display:inline-flex;align-items:center;justify-content:center;min-height:32px;padding:0 14px;border:1px solid var(--line-strong);border-radius:var(--radius-pill);background:transparent;color:var(--ink);font-size:var(--text-sm);font-weight:500;line-height:1.2;text-decoration:none;white-space:nowrap;cursor:pointer;transition:color var(--duration),background-color var(--duration),border-color var(--duration)}.button--primary{border-color:var(--ink);background:var(--ink);color:var(--on-ink)}.button--primary:hover{border-color:var(--accent);background:var(--accent)}@media(hover:hover){.icon-button:hover{background:var(--surface)}.button:not(.button--primary):hover{border-color:var(--muted);background:var(--surface)}}.frame{overflow:hidden;border-radius:var(--radius);background:var(--surface)}.frame>img{width:100%;height:100%;object-fit:cover}.hero{display:grid;grid-template-columns:minmax(0,1fr) minmax(14rem,27rem);align-items:end;gap:var(--space-8);padding-top:clamp(4rem,8vw,8.5rem)}.hero-body{align-self:center;min-height:var(--hero-body-height, 0px);padding-bottom:clamp(var(--space-7),5vw,5rem)}.hero-measure{position:absolute;visibility:hidden;pointer-events:none}.hero-measure .hero-body{min-height:0}.hero h1{margin-bottom:var(--space-5);font-size:var(--text-hero);font-weight:600;line-height:.95;letter-spacing:-.045em}.hero-lede{font-size:clamp(1.375rem,1.1rem + 1vw,1.875rem);line-height:1.25;letter-spacing:-.02em}.hero-text{max-width:38rem;margin-top:var(--space-4);color:var(--secondary);font-size:var(--text-lg);line-height:1.55}.hero-actions{display:flex;flex-wrap:wrap;gap:var(--space-2);margin-top:var(--space-5)}.status{display:flex;align-items:center;gap:var(--space-2);margin-top:var(--space-4)}.status:before{content:"";flex:none;width:6px;height:6px;border-radius:50%;background:var(--accent)}.hero-portrait{aspect-ratio:4 / 5;border-radius:0;background:none}.hero-portrait>img{object-position:50% 0}@media(min-width:861px){.hero h1{margin-bottom:var(--space-7)}.hero-text{margin-top:var(--space-6)}.hero-actions{margin-top:3rem}.hero .status{margin-top:var(--space-8)}.hero-body{padding-bottom:clamp(5rem,8vw,8rem)}}.card{position:relative;display:flex;flex-direction:column;min-width:0}.card h3{margin-bottom:var(--space-1);font-weight:600;letter-spacing:-.014em}.card-text{color:var(--secondary);font-size:var(--text-sm)}.card-detail{margin-top:var(--space-2);color:var(--muted);font-size:var(--text-sm)}.paper-title{font-size:var(--text-sm);font-weight:600;line-height:1.4;letter-spacing:-.006em}.paper-title a{text-decoration:none}.paper-title a:hover{color:var(--accent)}.graphic{position:relative}.graphic>:is(.graphic-ink,.graphic-accent){position:absolute;inset:var(--space-4);background:var(--ink);-webkit-mask:var(--ink-mask) center / contain no-repeat;mask:var(--ink-mask) center / contain no-repeat}.graphic>.graphic-accent{background:var(--accent);-webkit-mask-image:var(--accent-mask);mask-image:var(--accent-mask)}.graphic--horrorverse{--ink-mask: url(/v2/graphics/horrorverse-ink.png);--accent-mask: url(/v2/graphics/horrorverse-accent.png)}.graphic--revision{--ink-mask: url(/v2/graphics/revision-ink.png);--accent-mask: url(/v2/graphics/revision-accent.png)}.graphic--laion{--ink-mask: url(/v2/graphics/laion-ink.png);--accent-mask: url(/v2/graphics/laion-accent.png)}.graphic--voice{--ink-mask: url(/v2/graphics/voice-ink.png);--accent-mask: url(/v2/graphics/voice-accent.png)}.graphic--thingsvision{--ink-mask: url(/v2/graphics/thingsvision-ink.png);--accent-mask: url(/v2/graphics/thingsvision-accent.png)}.graphic--century{--ink-mask: url(/v2/graphics/century-ink.png);--accent-mask: url(/v2/graphics/century-accent.png)}.graphic--conwell{--ink-mask: url(/v2/graphics/conwell-ink.png);--accent-mask: url(/v2/graphics/conwell-accent.png)}.graphic--paper-universal{--ink-mask: url(/v2/graphics/paper-universal-ink.png);--accent-mask: url(/v2/graphics/paper-universal-accent.png)}.graphic--paper-sampling{--ink-mask: url(/v2/graphics/paper-sampling-ink.png);--accent-mask: url(/v2/graphics/paper-sampling-accent.png)}.graphic--paper-coding{--ink-mask: url(/v2/graphics/paper-coding-ink.png);--accent-mask: url(/v2/graphics/paper-coding-accent.png)}.graphic--laion>:is(.graphic-ink,.graphic-accent){inset:0}.entries{margin:0;padding:0;list-style:none}.entry{position:relative;display:grid;grid-template-columns:var(--meta-col) minmax(0,1fr);align-items:baseline;gap:2px var(--space-5);padding-block:var(--space-3);border-top:1px solid var(--line)}.entry-meta{color:var(--muted);font-size:var(--text-xs);line-height:1.5;font-variant-numeric:tabular-nums}.entry-title{font-size:var(--text-sm);font-weight:600;line-height:1.4;letter-spacing:-.006em}.entry-title a{text-decoration:none;transition:color var(--duration)}.entry-title a:hover{color:var(--accent)}.entry-text{max-width:var(--width-text);margin-top:2px;color:var(--secondary);font-size:var(--text-sm)}.entry-text:first-child{margin-top:0}summary{cursor:pointer;list-style:none}summary::-webkit-details-marker{display:none}.toggle{margin-top:var(--space-2)}.toggle>summary{display:inline-flex;gap:.4em;color:var(--muted);font-size:var(--text-xs);transition:color var(--duration)}.toggle>summary:hover{color:var(--ink)}.toggle>p{max-width:var(--measure);margin-top:var(--space-2);color:var(--secondary);font-size:var(--text-sm)}.disclosure{border-top:1px solid var(--line)}.section:has(>.disclosure:last-child)+.section{border-top:0}.section:has(>.disclosure:last-child)+.section:before{display:none}.disclosure>summary{display:flex;align-items:baseline;justify-content:space-between;gap:var(--space-4);padding-block:var(--space-4);font-size:var(--text-sm);font-weight:500;transition:color var(--duration)}.disclosure>summary:hover{color:var(--accent)}.toggle>summary:after,.disclosure>summary:after{content:"+";content:"+" / "";color:var(--muted);font-weight:400}.toggle[open]>summary:after,.disclosure[open]>summary:after{content:"−";content:"−" / ""}.pills{display:flex;flex-wrap:wrap;gap:6px;margin:0;padding:0;list-style:none}.pills li{padding:1px 8px;border:1px solid var(--line);border-radius:var(--radius-pill);color:var(--secondary);font-size:var(--text-xs);line-height:1.5}.contact-email{font-size:var(--text-lg);font-weight:500;letter-spacing:-.01em;text-decoration:underline;text-decoration-color:var(--line-strong);transition:color var(--duration),text-decoration-color var(--duration)}.contact-email:hover{color:var(--accent);text-decoration-color:currentColor}.contact-links{margin-top:var(--space-4)}.work-band{padding-top:var(--space-6)}.dense.dense--work{grid-template-columns:repeat(12,minmax(0,1fr));gap:clamp(4rem,7vw,6.5rem) clamp(var(--space-7),4vw,4rem);padding-top:clamp(4rem,7vw,6.5rem)}.dense--work>*{grid-column:1 / -1}#selected-work{--work-gap: var(--space-7);--work-thumb: 8rem;--work-thumb-gap: var(--space-4)}#selected-work>:is(.work-group,.work-pair)+:is(.work-group,.work-pair){margin-top:clamp(2.5rem,4vw,3.5rem)}.group-head{display:flex;align-items:baseline;gap:var(--space-2);margin-bottom:var(--space-4);padding-bottom:var(--space-2);border-bottom:1px solid var(--line)}.group-head h3{color:var(--muted);font-size:var(--text-sm);font-weight:500;letter-spacing:0}.group-head .link{margin-left:auto;font-size:var(--text-xs)}.work-pair{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));column-gap:var(--work-gap)}#tools{display:flex;flex-direction:column;grid-column:span 2}#tools .mini--cols{flex:1;grid-template-columns:repeat(2,minmax(0,1fr));column-gap:var(--work-gap);align-content:space-between}#selected-work .post{grid-template-columns:var(--work-thumb) minmax(0,1fr);column-gap:var(--work-thumb-gap)}.dense.dense--life{grid-template-columns:repeat(12,minmax(0,1fr));gap:clamp(4rem,7vw,6.5rem) clamp(var(--space-7),4vw,4rem);padding-top:var(--space-6)}.dense--life>*{grid-column:1 / -1}.dense--life>.panel--third{grid-column:span 4}.dense--life>.panel{gap:var(--space-5)}.stories.stories--band{grid-template-columns:repeat(4,minmax(0,1fr));gap:var(--space-5)}.stories.stories--band .item{grid-template-columns:minmax(0,1fr);gap:var(--space-3)}.stories.stories--band .story-media{aspect-ratio:4 / 3}.dense--work>.panel{gap:var(--space-5)}.items.items--cols{grid-template-columns:repeat(3,minmax(0,1fr));grid-auto-rows:auto;gap:var(--space-4) var(--work-gap, var(--space-6))}.items--cols .item{grid-row:span 2;grid-template-rows:subgrid;grid-template-columns:var(--work-thumb, 7.5rem) minmax(0,1fr);column-gap:var(--work-thumb-gap, var(--space-4));row-gap:var(--space-4);align-items:start}.items--cols .item-media{grid-row:1;grid-column:1;aspect-ratio:4 / 3}.items--cols .item-head{grid-row:1;grid-column:2}.items--cols .item .card-text{grid-row:2;grid-column:1 / -1;margin:0}.items--cols .item .venue{margin-bottom:var(--space-1)}.items--cols .item :is(h3,h4){margin-bottom:var(--space-1)}.award-badge{position:relative;z-index:2;grid-row:1;grid-column:1;align-self:start;justify-self:end;display:grid;place-items:center;width:22px;height:22px;margin:5px;border-radius:50%;background:var(--raised);color:var(--accent);box-shadow:0 0 0 1px var(--line);cursor:default}.award-badge:after{content:attr(data-tip);position:absolute;right:0;bottom:calc(100% + 6px);padding:5px 9px;border-radius:var(--radius-sm);background:var(--ink);color:var(--on-ink);font-size:var(--text-xs);line-height:1.4;white-space:nowrap;opacity:0;pointer-events:none;transition:opacity var(--duration)}.award-badge:is(:hover,:focus-visible):after{opacity:1}.entries--cols{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:var(--space-5) var(--space-6)}.entries--thirds{grid-template-columns:repeat(3,minmax(0,1fr))}.panel .entries--cols>.entry{display:block;padding:0;border:0}.entries--cols .entry-meta{display:block;margin-bottom:2px}.entries--cols .entry-text{max-width:none}:is(.items,.timeline)+.entries--cols{margin-top:var(--space-2);padding-top:var(--space-5);border-top:1px solid var(--line)}.mini--cols{grid-template-columns:repeat(4,minmax(0,1fr));gap:var(--space-5) var(--space-6)}.life-band{position:relative;display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:var(--space-5);align-items:start}.life-band-text p{margin-bottom:var(--space-2);color:var(--secondary);font-size:var(--text-sm)}.life-band-photo{margin:0}.life-band-photo .frame{aspect-ratio:4 / 3}.life-band-photo img{width:100%;height:100%;object-fit:cover}.life-band-photo figcaption{margin-top:var(--space-2);color:var(--muted);font-size:var(--text-xs)}.dense{display:grid;grid-template-columns:minmax(0,1.8fr) minmax(0,1fr);gap:var(--space-8) clamp(var(--space-7),5vw,6rem);align-items:start;padding-block:var(--space-6) clamp(4rem,8vw,7rem)}.panel{display:grid;gap:var(--space-4);align-content:start;min-width:0;padding-top:var(--space-3);border-top:1px solid var(--line-strong)}.panel-head{display:flex;align-items:baseline;gap:var(--space-2);margin-bottom:var(--space-1)}.panel-head h2{font-size:var(--text-md);font-weight:600;line-height:1.3;letter-spacing:-.01em}.panel-head .count{color:var(--muted);font-size:var(--text-xs);font-variant-numeric:tabular-nums}.panel-head .link{margin-left:auto;font-size:var(--text-xs)}.panel-lede{max-width:var(--measure);margin-top:calc(-1 * var(--space-2));color:var(--secondary);font-size:var(--text-sm)}.items{display:grid;gap:var(--space-5)}.item{display:grid;grid-template-columns:10.5rem minmax(0,1fr);align-items:start;gap:var(--space-5)}.item-media{aspect-ratio:4 / 3;margin:0}.item :is(h3,h4){margin-bottom:2px;font-size:var(--text-md);font-weight:600;line-height:1.3;letter-spacing:-.01em}.item :is(h3,h4) a{text-decoration:none;transition:color var(--duration)}.item :is(h3,h4) a:hover{color:var(--accent)}.item .meta{margin-bottom:2px}.item .card-text{font-size:var(--text-sm)}.item .card-detail{margin-top:var(--space-1);font-size:var(--text-xs);line-height:1.5}.item .card-detail+.card-text{margin-top:var(--space-1)}.item-links{display:flex;flex-wrap:wrap;gap:var(--space-1) var(--space-4);margin-top:var(--space-2)}.item-links .link{font-size:var(--text-xs)}.item-links .link:not(.stretched){position:relative;z-index:2}.item-media.graphic>:is(.graphic-ink,.graphic-accent){inset:var(--space-2)}.item-media.graphic--laion>:is(.graphic-ink,.graphic-accent){inset:0}:is(.tiles,.items,.mini--icons,.posts)>:nth-child(4n+1){--tc: var(--p1)}:is(.tiles,.items,.mini--icons,.posts)>:nth-child(4n+2){--tc: var(--p2)}:is(.tiles,.items,.mini--icons,.posts)>:nth-child(4n+3){--tc: var(--p3)}:is(.tiles,.items,.mini--icons,.posts)>:nth-child(4n+4){--tc: var(--p4)}:is(.tile-media,.item-media,.tool-icon,.post-thumb,.project-dialog-media){background:color-mix(in srgb,var(--tc, var(--p1)) 7%,var(--surface))}:is(.tile-media,.item-media,.tool-icon,.post-thumb,.project-dialog-media).graphic>.graphic-ink{background:color-mix(in srgb,var(--ink) 72%,var(--tc, var(--p1)))}:is(.tile-media,.item-media,.tool-icon,.post-thumb,.project-dialog-media,.shelf-media).graphic>.graphic-accent{background:var(--tc, var(--p1))}.shelf-note .shelf-media.graphic{--tc: var(--p3)}.tiles{display:grid;gap:var(--space-6) var(--space-5)}.tiles--work{grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--space-7) var(--work-gap)}.tile-media{aspect-ratio:4 / 3;margin-bottom:var(--space-3)}.tiles--work .tile{display:grid;grid-template-columns:var(--work-thumb) minmax(0,1fr);grid-template-rows:auto 1fr auto;column-gap:var(--work-thumb-gap);align-content:start}.tiles--work .tile-media{grid-row:1 / 3;margin-bottom:0}.tiles--work .tile>:is(h3,h4,.card-text){grid-column:2}.tiles--work .tile .item-links{grid-column:1 / -1;margin-top:var(--space-3)}.tiles--work .tile .item-links{display:grid;grid-template-columns:var(--work-thumb) auto;justify-content:start;column-gap:var(--work-thumb-gap)}.tile-media--photos{display:grid;place-items:center;padding:var(--space-3)}.tile-media--photos img{width:100%;height:100%;object-fit:contain}.tile :is(h3,h4){margin-bottom:var(--space-1);font-size:var(--text-md);font-weight:600;letter-spacing:-.01em}.stats{display:flex;flex-wrap:wrap;gap:2px var(--space-3);margin:0 0 var(--space-2);padding:0;list-style:none;color:var(--muted);font-size:var(--text-xs);line-height:1.5;font-variant-numeric:tabular-nums}.stats b{color:var(--ink);font-weight:600}.tile .card-detail{font-size:var(--text-xs);line-height:1.5}.venue{margin-bottom:2px;color:var(--muted);font-size:var(--text-xs);font-variant-numeric:tabular-nums}.venue b{color:var(--ink);font-weight:600}.exp-top{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(0,1fr);gap:clamp(var(--space-7),4vw,4rem)}.exp-chart{display:flex;flex-direction:column}.exp-top .timeline{flex:1;display:flex;flex-direction:column;margin-bottom:0}.exp-top .tl-rows{flex:1;align-content:space-between}.exp-roles-head{margin:clamp(2rem,3vw,2.75rem) 0 0}.exp-edu .entry{padding-block:var(--space-2)}.timeline{display:grid;gap:var(--space-2);margin-bottom:var(--space-3)}.tl-rows{display:grid;gap:5px;margin:0;padding:0;list-style:none}.tl-row,.tl-axis{display:grid;grid-template-columns:9.5rem minmax(0,1fr);align-items:center;gap:var(--space-4)}.tl-label{overflow:hidden;color:var(--secondary);font-size:var(--text-xs);line-height:1.3;text-overflow:ellipsis;white-space:nowrap}.tl-track{position:relative;height:10px}.tl-track:before{content:"";position:absolute;left:0;right:0;top:50%;height:1px;background:var(--line)}.tl-bar{position:absolute;top:0;bottom:0;left:var(--from);right:calc(100% - var(--to));min-width:4px;border-radius:2px;background:color-mix(in srgb,var(--ink) 38%,var(--paper))}.tl-row--current .tl-bar{background:var(--accent-bright)}.tl-row--current .tl-label{color:var(--ink);font-weight:500}.tl-row--edu .tl-bar{background:repeating-linear-gradient(135deg,var(--muted) 0 1.5px,transparent 1.5px 4px);box-shadow:inset 0 0 0 1px var(--muted)}.tl-ticks{position:relative;height:1rem;color:var(--muted);font-size:.6875rem;font-variant-numeric:tabular-nums}.tl-ticks span{position:absolute;left:var(--at);transform:translate(-50%)}.panel .entry:first-child{padding-top:0;border-top:0}.panel .entry{padding-block:var(--space-3)}.entry-org{color:var(--ink)}.posts{display:grid;gap:var(--space-4);margin:0;padding:0;list-style:none}.post{position:relative;display:grid;grid-template-columns:5rem minmax(0,1fr);align-items:start;gap:var(--space-4)}.post+.post{padding-top:var(--space-4);border-top:1px solid var(--line)}.post:not(:has(.post-thumb))>div{grid-column:1 / -1}.post-thumb{aspect-ratio:4 / 3;border-radius:6px}.post-thumb.graphic>:is(.graphic-ink,.graphic-accent){inset:5px}.post-thumb--cover{display:grid;place-items:center;padding:5px}.post-thumb--cover img{width:auto;height:100%;object-fit:contain;border-radius:2px}.post .entry-meta{display:block}.mini{display:grid;gap:var(--space-3);margin:0;padding:0;list-style:none}.mini .link{font-size:var(--text-sm)}.mini p{margin-top:1px;color:var(--secondary);font-size:var(--text-xs);line-height:1.5}.mini--icons li{display:grid;grid-template-columns:2rem minmax(0,1fr);align-items:start;gap:var(--space-3)}.tool-icon{width:2rem;aspect-ratio:1;border-radius:7px}.tool-icon.graphic>:is(.graphic-ink,.graphic-accent){inset:3px}.panel .pills{gap:4px}.stories{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-6) var(--space-6)}.stories .item{grid-template-columns:8.5rem minmax(0,1fr);gap:var(--space-4)}.stories .story-media{aspect-ratio:4 / 5}.stories p{color:var(--secondary);font-size:var(--text-xs);line-height:1.55}.panel .shelf-media{margin-top:0}.panel .cover-row:last-child{border-bottom:0}.contact-strip{display:grid;gap:var(--space-3);padding-block:var(--space-3) clamp(3rem,6vw,5rem);border-top:1px solid var(--line-strong)}.contact-row{display:flex;flex-wrap:wrap;align-items:baseline;gap:var(--space-2) var(--space-6)}.contact-row .contact-email{font-size:var(--text-lg)}.contact-row .status,.contact-row .contact-links{margin-top:0}@media(max-width:1100px){.tiles--work{grid-template-columns:repeat(2,minmax(0,1fr))}.items.items--cols{grid-template-columns:minmax(0,1fr)}}@media(max-width:960px){.dense,.dense.dense--work,.dense.dense--life{grid-template-columns:minmax(0,1fr)}.dense--life>.panel--third{grid-column:1 / -1}.stories.stories--band{grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-6) var(--space-5)}.work-pair,.exp-top{grid-template-columns:minmax(0,1fr)}.work-pair{row-gap:calc(clamp(2.5rem,4vw,3.5rem) + var(--space-4))}#tools{grid-column:auto}.exp-top .tl-rows,#tools .mini--cols{align-content:start}.tiles--work,.items.items--cols{grid-template-columns:minmax(0,1fr)}.items--cols .item{grid-template-columns:10.5rem minmax(0,1fr);column-gap:var(--space-5)}.items--cols .item-media{aspect-ratio:4 / 3}.entries--cols,.mini--cols{grid-template-columns:repeat(2,minmax(0,1fr))}.life-band{grid-template-columns:repeat(4,minmax(0,1fr))}.life-band-text{grid-column:1 / -1}}@media(max-width:600px){.tiles--work,.entries--cols,.mini--cols,#tools .mini--cols{grid-template-columns:minmax(0,1fr)}.life-band{grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-4)}.tiles--work .tile{grid-template-columns:6.5rem minmax(0,1fr);column-gap:var(--space-4)}.tl-row,.tl-axis{grid-template-columns:7rem minmax(0,1fr);gap:var(--space-3)}.item,.stories .item,.stories.stories--band .item{grid-template-columns:6.5rem minmax(0,1fr);gap:var(--space-4)}.items--cols .item{grid-template-columns:6.5rem minmax(0,1fr);column-gap:var(--space-4)}#selected-work{--work-thumb: 6.5rem}.post{grid-template-columns:6.5rem minmax(0,1fr)}.tiles--work .tile .item-links{display:flex}.stories,.stories.stories--band{grid-template-columns:minmax(0,1fr)}.stories.stories--band .story-media{aspect-ratio:4 / 5}.contact-row{flex-direction:column;gap:var(--space-2)}}.story{display:grid;align-content:start;gap:var(--space-3)}.story-media{aspect-ratio:4 / 5}.story h3{margin-bottom:2px;font-size:var(--text-md);font-weight:600}.story p{color:var(--secondary);font-size:var(--text-sm)}.photo-grade{filter:sepia(.16) saturate(.9) contrast(.96) brightness(1.01)}[data-theme=dark] .photo-grade{filter:sepia(.16) saturate(.85) contrast(.95) brightness(.9)}.shelf-note{display:flex;flex-direction:column}.shelf-note h3{margin-bottom:var(--space-2)}.shelf-note .link-row{margin-top:var(--space-3)}.shelf-media{height:152px;margin-top:auto}.shelf-note .card-text{margin-bottom:var(--space-3)}.shelf-media iframe{display:block;width:100%;height:152px;border:0}.shelf-media.graphic>:is(.graphic-ink,.graphic-accent){inset:var(--space-3)}.cover-row{display:grid;grid-template-columns:var(--meta-col) minmax(0,1fr);gap:var(--space-5);padding-block:var(--space-3);border-bottom:1px solid var(--line)}.cover-row h4{padding-top:2px;color:var(--muted);font-size:var(--text-xs);font-weight:400;line-height:1.5}.covers{display:flex;flex-wrap:wrap;gap:var(--space-2);margin:0;padding:0;list-style:none}.cover{width:2.5rem;aspect-ratio:2 / 3;overflow:hidden;border-radius:2px;background:var(--surface);box-shadow:0 0 0 1px var(--line);transition:transform var(--duration)}.cover:hover{transform:translateY(-2px)}.cover img{width:100%;height:100%;object-fit:cover}.covers--dense{gap:5px}.covers--dense .cover{width:2.125rem}.cover--current{box-shadow:0 0 0 2px var(--paper),0 0 0 3px var(--accent)}.cover-placeholder{display:grid;place-items:center;height:100%;padding:3px;color:var(--muted);font-size:.5rem;line-height:1.2;text-align:center}.book-archive{margin-top:var(--space-5)}.book-archive-body{padding-block:var(--space-4) var(--space-5)}.book-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,13rem),1fr));gap:var(--space-4) var(--space-5);margin:0;padding:0;list-style:none}.archive-book{display:grid;grid-template-columns:2.75rem minmax(0,1fr);align-items:start;gap:var(--space-3)}.archive-book img,.cover-placeholder{width:2.75rem;height:auto;aspect-ratio:2 / 3;object-fit:cover;border-radius:2px;background:var(--surface)}.archive-title{font-size:var(--text-xs);font-weight:500;line-height:1.4}.archive-book .meta{margin-top:2px}.page-head{padding-block:var(--space-8) var(--space-6)}.page-head h1{margin-bottom:var(--space-3)}.page-lede{max-width:var(--measure);color:var(--secondary);font-size:var(--text-lg);line-height:1.45}.page-head--display h1{font-size:var(--text-display);line-height:1;letter-spacing:-.035em}.writing-index{margin-bottom:var(--section-space)}.year-group{display:grid;grid-template-columns:var(--meta-col) minmax(0,1fr);gap:var(--space-6);padding-top:var(--space-5);border-top:1px solid var(--line)}.year-label{padding-top:3px;color:var(--muted);font-size:var(--text-xs);font-weight:400;letter-spacing:0;font-variant-numeric:tabular-nums}.post-list{margin:0;padding:0;list-style:none}.post-row{position:relative;max-width:var(--measure);padding-bottom:var(--space-6)}.post-row+.post-row{padding-top:var(--space-5);border-top:1px solid var(--line)}.post-title{font-size:var(--text-lg);font-weight:600;line-height:1.35;letter-spacing:-.014em}.post-title a{text-decoration:none;transition:color var(--duration)}.post-row:hover .post-title a{color:var(--accent)}.post-text{margin-top:var(--space-2);color:var(--secondary)}.post-row .meta{margin-top:var(--space-3)}.article{padding-block:var(--space-7) var(--section-space)}.article-head{max-width:var(--width-wide);margin-bottom:var(--space-7);padding-bottom:var(--space-6);border-bottom:1px solid var(--line)}.article-head .link-back{margin-bottom:var(--space-6)}.article-lede{max-width:var(--measure);margin-top:var(--space-4);color:var(--secondary);font-size:var(--text-lg);line-height:1.45}.article-meta{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-3) var(--space-4);margin-top:var(--space-5)}.article--contents .article-body{display:grid;grid-template-columns:minmax(0,var(--measure)) minmax(0,1fr);gap:var(--space-8);align-items:start}.article--contents .prose>*{max-width:none}.article-contents{position:sticky;top:calc(var(--header-height) + var(--space-6));font-size:var(--text-xs);line-height:1.45}.article-contents .meta{margin-bottom:var(--space-3)}.article-contents ol{margin:0;padding:0;list-style:none;border-left:1px solid var(--line)}.article-contents li+li{margin-top:var(--space-2)}.article-contents a{display:block;margin-left:-1px;padding-left:var(--space-3);border-left:1px solid transparent;color:var(--muted);text-decoration:none;transition:color var(--duration),border-color var(--duration)}.article-contents a:hover{color:var(--ink)}.article-contents a[aria-current]{border-left-color:var(--accent);color:var(--ink)}.post-nav{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-5);width:100%;margin-bottom:var(--space-5)}.post-nav-link{display:flex;flex-direction:column;gap:var(--space-1);color:var(--ink);font-weight:500;line-height:1.4;text-decoration:none;transition:color var(--duration)}.post-nav-link:hover{color:var(--accent)}.post-nav-link--newer{grid-column:2;text-align:right}.article-foot{display:flex;flex-wrap:wrap;justify-content:space-between;gap:var(--space-3) var(--space-5);max-width:var(--measure);margin-top:var(--space-8);padding-top:var(--space-5);border-top:1px solid var(--line)}.prose{max-width:var(--width-wide);font-size:1rem;line-height:var(--leading-prose);overflow-wrap:break-word}.prose>*{max-width:var(--measure)}.prose>*+*{margin-top:1.25em}.prose>:is(.image-row,.article-image-button,figure),.prose>p:has(>:is(img,.article-image-button)){max-width:none}.prose>:is(h2,h3){clear:both}.prose>h2{margin-top:2em;font-size:var(--text-xl)}.prose>h3{margin-top:1.8em;font-size:var(--text-lg)}.prose>:is(h2,h3)+*{margin-top:.6em}.prose a{text-decoration-color:color-mix(in srgb,var(--accent) 55%,transparent);transition:color var(--duration)}.prose a:hover{color:var(--accent)}.prose :is(ul,ol){padding-left:1.25em}.prose li+li{margin-top:.5em}.prose li::marker{color:var(--muted)}.prose blockquote{padding-left:var(--space-5);border-left:2px solid var(--line-strong);color:var(--secondary)}.prose hr{margin-block:2.5em;border:0;border-top:1px solid var(--line)}.prose code{font-family:var(--font-mono);font-size:.875em}.prose :not(pre)>code{padding:.1em .35em;border-radius:var(--radius-sm);background:var(--surface)}.prose pre{padding:var(--space-4) var(--space-5);overflow-x:auto;border-radius:var(--radius);background:var(--surface);font-size:var(--text-xs);line-height:1.7}.prose pre code{font-size:inherit;white-space:pre}.prose table{display:block;overflow-x:auto;border-collapse:collapse;font-size:var(--text-sm)}.prose :is(th,td){padding:var(--space-2) var(--space-4) var(--space-2) 0;border-bottom:1px solid var(--line);text-align:left}.prose th{font-weight:500}.prose img{width:auto;max-width:100%;border-radius:var(--radius);box-shadow:0 0 0 1px var(--line)}.prose .image-row{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-4)}.prose .image-row :is(img,.article-image-button){width:100%}.prose figcaption{margin-top:var(--space-2);color:var(--muted);font-size:var(--text-xs);line-height:1.5}.article-image-button{display:block;width:fit-content;max-width:100%;padding:0;border:0;border-radius:var(--radius);background:transparent;cursor:zoom-in}.prose>.article-image-button.is-floated{float:right;width:min(11.25rem,40%);margin:.35em max(0px,100% - var(--measure)) var(--space-4) var(--space-5)}.image-viewer{max-width:min(96vw,90rem);max-height:94vh;padding:var(--space-7) var(--space-5) var(--space-5);border:1px solid var(--line);border-radius:var(--radius);background:var(--raised);color:var(--ink)}.image-viewer::backdrop{background:#000000b8}.image-viewer img{max-width:100%;max-height:calc(94vh - 6rem);margin-inline:auto;object-fit:contain}.image-viewer-close{position:absolute;top:var(--space-2);right:var(--space-2)}.more-button{padding:0;border:0;background:none;font:inherit;font-size:var(--text-xs);cursor:pointer}.tile .more-button{position:relative;z-index:2}.project-dialog{width:min(100% - 2 * var(--gutter),60rem);max-height:min(92vh,56rem);padding:0;overflow:auto;border:0;border-radius:var(--radius);background:var(--raised);color:var(--ink);overscroll-behavior:contain}.project-dialog::backdrop{background:#00000073}html:has(.project-dialog[open]){overflow:hidden}.project-dialog-close{position:absolute;z-index:3;top:var(--space-3);right:var(--space-3);background:var(--raised)}.project-dialog-media{aspect-ratio:16 / 8;border-radius:0}.project-dialog-media.graphic>:is(.graphic-ink,.graphic-accent){inset:var(--space-6)}.project-dialog-media.graphic--laion>:is(.graphic-ink,.graphic-accent){inset:var(--space-5) 0}.project-dialog-media.tile-media--photos{position:relative}.project-dialog-media.tile-media--photos img{position:absolute;inset:var(--space-5);width:calc(100% - 2 * var(--space-5));height:calc(100% - 2 * var(--space-5));object-fit:contain}.project-dialog-body{display:grid;gap:var(--space-4);padding:var(--space-6) var(--space-7) var(--space-7)}.project-dialog h2{font-size:var(--text-section);font-weight:600;line-height:1.15;letter-spacing:-.02em}.project-dialog-lede{margin-top:calc(-1 * var(--space-3));color:var(--secondary);font-size:var(--text-md)}.project-facts{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--space-6);margin-top:var(--space-2);padding-top:var(--space-4);border-top:1px solid var(--line)}.project-facts h3{margin-bottom:var(--space-1);color:var(--muted);font-size:var(--text-xs);font-weight:500;letter-spacing:0}.project-facts p{color:var(--secondary);font-size:var(--text-sm);line-height:1.6}.project-facts a{color:var(--ink);text-decoration-color:var(--line-strong);text-underline-offset:.2em}.project-facts a:hover{color:var(--accent)}@media(max-width:720px){.project-facts{grid-template-columns:minmax(0,1fr);gap:var(--space-4)}.project-dialog-body{padding:var(--space-5)}.project-dialog-media{aspect-ratio:4 / 3}}.site-footer{display:flex;flex-wrap:wrap;justify-content:space-between;gap:var(--space-2) var(--space-5);padding-block:var(--space-5) var(--space-6);border-top:1px solid var(--line);color:var(--muted);font-size:var(--text-xs)}.site-footer a{text-decoration:none;transition:color var(--duration)}.site-footer a:hover{color:var(--ink)}@media(max-width:1000px){.article--contents .article-body{display:block}.article--contents .prose>*{max-width:var(--measure)}.article--contents .prose>:is(.image-row,.article-image-button,figure),.article--contents .prose>p:has(>:is(img,.article-image-button)){max-width:none}.article-contents{display:none}}@media(max-width:860px){.navigation{gap:var(--space-5)}.nav-links{gap:var(--space-4)}.hero{grid-template-columns:minmax(0,1fr) minmax(10rem,15rem);gap:var(--space-7)}}@media(max-width:720px){.navigation{gap:var(--space-3)}.nav-actions{gap:var(--space-1)}.view-switch a{padding-inline:12px}.menu-toggle{display:grid}.nav-links{display:none;position:absolute;top:100%;left:0;right:0;flex-direction:column;gap:0;padding:var(--space-2) var(--gutter) var(--space-4);background:var(--paper);border-bottom:1px solid var(--line);box-shadow:0 16px 24px -20px #00000040}.nav-links[data-open]{display:flex}.nav-links a{padding-block:var(--space-3);color:var(--ink);font-size:var(--text-md)}.nav-links a+a{border-top:1px solid var(--line)}}@media(max-width:600px){.hero{grid-template-columns:minmax(0,1fr) 42%;column-gap:var(--space-3);row-gap:0;align-items:center;padding-top:var(--space-6)}.hero-body{display:contents}.hero h1{grid-column:1;grid-row:1;font-size:2.5rem}.hero-lede{grid-column:1;grid-row:2;align-self:start;font-size:var(--text-lg)}.hero-body>:not(h1,.hero-lede){grid-column:1 / -1}.hero-text{margin-top:var(--space-5)}.hero-body>:last-child{margin-bottom:var(--section-space)}.hero-portrait{grid-column:2;grid-row:1 / 3;align-self:stretch;aspect-ratio:3 / 4;border-radius:var(--radius);background:var(--surface)}.hero-portrait>img{transform:scale(1.15);transform-origin:50% 0}.entry{grid-template-columns:minmax(0,1fr)}.cover-row,.year-group{grid-template-columns:minmax(0,1fr);gap:var(--space-3)}.post-nav{grid-template-columns:minmax(0,1fr)}.post-nav-link--newer{grid-column:auto;text-align:left}.page-head{padding-top:var(--space-7)}.article{padding-top:var(--space-6)}.prose .image-row{grid-template-columns:minmax(0,1fr)}.prose>.article-image-button.is-floated{float:none;width:min(15rem,70%);margin:.75em 0 0}}@media(max-width:380px){.navigation{gap:var(--space-2)}.wordmark{font-size:var(--text-sm)}.nav-actions{gap:0}.view-switch a{padding-inline:10px}.icon-button{width:32px;height:32px}}:root{--ease-out: cubic-bezier(.2, .7, .2, 1)}.graphic>:is(.graphic-ink,.graphic-accent){transition:opacity .4s ease,transform .6s var(--ease-out)}@media(hover:hover){:is(.card,.shelf-note):hover .graphic>.graphic-ink{opacity:.35}:is(.card,.shelf-note):hover .graphic:is([data-hover],[data-scrub])>.graphic-ink{opacity:.6}:is(.card,.shelf-note):hover .graphic>:is(.graphic-ink,.graphic-accent){transform:scale(1.025)}.story-media img{transition:transform 1.2s var(--ease-out)}.story:hover .story-media img{transform:scale(1.03)}}.reveal-ready .graphic>:is(.graphic-ink,.graphic-accent){clip-path:inset(0 100% 0 0)}.reveal-ready .graphic.is-visible>:is(.graphic-ink,.graphic-accent){clip-path:inset(0 0 0 0);transition:clip-path 1s var(--ease-out),opacity .4s ease,transform .6s var(--ease-out)}.reveal-ready .graphic.is-visible>.graphic-accent{transition-delay:.45s,0ms,0ms}.graphic-tip{position:absolute;z-index:2;max-width:16rem;padding:6px 10px;border-radius:var(--radius-sm);background:var(--ink);color:var(--on-ink);font-size:var(--text-xs);line-height:1.4;pointer-events:none;white-space:nowrap;transform:translate(-50%,calc(-100% - 10px))}.graphic-tip small{display:block;font-size:.75rem;opacity:.7}.graphic-tip[data-below]{transform:translate(-50%,10px)}.graphic-mark{position:absolute;z-index:2;width:10px;height:10px;margin:-5px 0 0 -5px;border:2px solid var(--accent);border-radius:50%;background:var(--paper);pointer-events:none}.graphic-mark[data-cell]{margin:0;border-radius:1px;background:none}.graphic.is-scrubbing>:is(.graphic-ink,.graphic-accent){-webkit-mask-size:auto 100%;mask-size:auto 100%}.graphic[data-scrub]>:is(.graphic-ink,.graphic-accent){right:auto;left:50%;aspect-ratio:4 / 3;translate:-50% 0}.graphic-scrub-hint{position:absolute;z-index:2;right:var(--space-3);bottom:var(--space-2);color:var(--muted);font-size:.75rem;pointer-events:none}@keyframes status-pulse{0%{box-shadow:0 0 color-mix(in srgb,var(--accent) 45%,transparent)}70%,to{box-shadow:0 0 0 7px color-mix(in srgb,var(--accent) 0%,transparent)}}.status:before{animation:status-pulse 2.6s ease-out infinite}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{transition:none!important;animation:none!important}}
