@font-face{font-family:Libre Caslon Display;src:url(/fonts/libre-caslon-display-latin-400-normal.woff2) format("woff2");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:Libre Caslon Text;src:url(/fonts/libre-caslon-text-latin-400-normal.woff2) format("woff2");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:Libre Caslon Text;src:url(/fonts/libre-caslon-text-latin-400-italic.woff2) format("woff2");font-weight:400;font-style:italic;font-display:swap}@font-face{font-family:Libre Caslon Text;src:url(/fonts/libre-caslon-text-latin-700-normal.woff2) format("woff2");font-weight:700;font-style:normal;font-display:swap}:root{--fog: #EBEAE5;--press: #000000;--pencil: #5E5D58;--pen: #2440B0;--hairline: rgba(0, 0, 0, .22);--display: "Libre Caslon Display", "Adobe Caslon Pro", Georgia, serif;--text: "Libre Caslon Text", "Adobe Caslon Pro", Georgia, serif;--t-hero: clamp(33px, 3.6vw, 52px);--t-title: clamp(44px, 4.8vw, 72px);--t-h2: 32px;--t-h3: 24px;--t-list: 24px;--t-body: 20px;--t-meta: 16px;--t-note: 15px;--sidebar: 250px;--margin: 80px;--measure: 36em}*{margin:0;padding:0;box-sizing:border-box}html{scroll-behavior:smooth;background:var(--fog)}body{font-family:var(--text);font-size:var(--t-body);line-height:1.62;color:var(--press);background:var(--fog);font-variant-numeric:oldstyle-nums;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;display:flex;min-height:100vh}a{color:inherit;text-decoration:underline;text-decoration-color:var(--pen);text-decoration-thickness:1px;text-underline-offset:.22em}a:hover,a:focus{color:var(--pen)}:focus-visible{outline:2px solid var(--pen);outline-offset:3px}img{max-width:100%;height:auto}.meta,.post-meta,.resume-meta{font-style:italic;font-size:var(--t-meta);color:var(--pencil)}#sidebar{width:var(--sidebar);flex-shrink:0;min-height:100vh;height:100vh;position:sticky;top:0;overflow-y:auto;padding:40px 28px 40px 36px;border-right:1px solid var(--hairline)}#logo-sidebar h1{font-family:var(--display);font-weight:400;font-size:28px;line-height:1.1;letter-spacing:-.01em;margin-bottom:40px}#logo-sidebar h1 a{text-decoration:none}#sidebar-nav ul{list-style:none}#sidebar-nav ul li{margin-bottom:4px}#sidebar-nav ul li a,#projects-toggle-btn{display:inline-block;padding:3px 0;font-family:var(--text);font-size:17px;color:var(--press);text-decoration:none;background:none;border:none;text-align:left;cursor:pointer}#sidebar-nav ul li a:hover,#sidebar-nav ul li a:focus,#projects-toggle-btn:hover,#projects-toggle-btn:focus{color:var(--pen)}#sidebar-nav a[aria-current=page]{text-decoration:underline;text-decoration-color:var(--pen);text-decoration-thickness:1px;text-underline-offset:.22em}#projects-toggle-btn .expander-icon{display:inline-block;margin-left:.35em;color:var(--pencil)}#projects-submenu[hidden]{display:none}#projects-submenu{margin:2px 0 8px 1em}#projects-submenu li{margin-bottom:0}#sidebar-nav #projects-submenu li a{font-size:var(--t-note);font-style:italic;color:var(--pencil);line-height:1.4}#sidebar-nav #projects-submenu li a:hover,#sidebar-nav #projects-submenu li a:focus{color:var(--pen)}.submenu-note{font-size:var(--t-note);font-style:italic;color:var(--pencil)}.menu-toggle{display:none;height:44px;padding:0 4px;border:none;background:none;font-family:var(--text);font-style:italic;font-size:17px;color:var(--press);cursor:pointer}#page-content-wrapper{flex-grow:1;min-width:0;display:flex;flex-direction:column}main{width:100%;max-width:calc(var(--measure) + 2 * var(--margin));padding:88px var(--margin) 0;flex-grow:1}.content-section{margin-bottom:72px}.content-section:last-of-type{margin-bottom:0}.content-section h2{font-family:var(--display);font-weight:400;font-size:var(--t-h2);line-height:1.1;letter-spacing:-.01em;margin-bottom:28px}main>.content-section:first-child>h2{font-size:var(--t-title);line-height:1.02;letter-spacing:-.018em;margin-bottom:36px}.content-section h3{font-family:var(--display);font-weight:400;font-size:var(--t-h3);line-height:1.2;margin:44px 0 14px}.content-section h4{font-family:var(--text);font-weight:700;font-size:var(--t-body);line-height:1.35;margin-bottom:4px}.content-section p,#about-content p,.blog-post-content p{margin:0}.content-section p+p,#about-content p+p,.blog-post-content p+p{text-indent:1.6em}.content-section ul,.content-section ol,#about-content ul,#about-content ol,.blog-post-content ul,.blog-post-content ol{margin:16px 0 20px;padding-left:1.3em}.content-section li,#about-content li,.blog-post-content li{margin-bottom:6px}.content-section li::marker,#about-content li::marker,.blog-post-content li::marker{color:var(--pencil)}.content-section p+ul,.content-section p+ol{margin-top:16px}.hairlist,.project-grid,#blog-posts-container,.content-section .talk-list,.content-section .start-here-links{margin:0;list-style:none;padding-left:0;border-bottom:1px solid var(--hairline)}.hero-sentence{font-family:var(--display);font-size:var(--t-hero);line-height:1.12;letter-spacing:-.012em;max-width:17em}#hero{margin-bottom:88px}.start-here-section h2{margin-bottom:8px}.start-here-section .meta{margin-bottom:20px}.start-here-links{margin:0}.start-here-links li{position:relative;border-top:1px solid var(--hairline);padding:20px 0;list-style:none}.start-here-links a{font-size:var(--t-list);line-height:1.25;text-decoration:none}.start-here-links .meta{display:block;margin:4px 0 0}.loop{position:absolute;left:-28px;top:-2px;width:calc(100% + 40px);height:calc(100% + 6px);pointer-events:none}.start-note{position:absolute;right:0;top:-14px;font-style:italic;font-size:var(--t-note);color:var(--pen);background:var(--fog);padding:0 6px}.plate{margin:0 0 32px}.plate img,.headshot{display:block;width:280px;max-width:100%;height:auto;filter:saturate(.85)}.plate figcaption{margin-top:10px}#about-content h1,#about-content h2,#about-content h3{font-family:var(--display);font-weight:400;line-height:1.2;margin:36px 0 12px}#about-content h1{font-size:var(--t-h2)}#about-content h2{font-size:var(--t-h3)}#about-content h3{font-size:var(--t-body)}.project-grid{margin-top:8px}.project-card{border-top:1px solid var(--hairline);padding:22px 0}.project-card h3,.content-section .project-card h3{font-family:var(--text);font-size:var(--t-list);line-height:1.25;margin:0 0 4px}.project-card h3 a{text-decoration:none}.project-card p{font-size:17px;color:var(--pencil);margin-bottom:6px}.btn-view-project{font-style:italic;font-size:var(--t-meta)}.project-thumbnail{display:block;width:100%;max-width:360px;margin-bottom:14px}.blog-post-summary{border-top:1px solid var(--hairline);padding:22px 0}.blog-post-summary h3,.content-section .blog-post-summary h3{font-family:var(--text);font-size:var(--t-list);line-height:1.25;margin:2px 0 6px}.blog-post-summary h3 a{text-decoration:none}.blog-post-summary>p:last-child{font-size:17px;color:var(--pencil);text-indent:0}.back-link{font-style:italic;font-size:var(--t-meta);margin-bottom:48px!important}.post-label{margin-bottom:14px!important}#blog-post .blog-post-full>h2{font-size:var(--t-title);line-height:1.02;letter-spacing:-.018em;margin-bottom:48px}.blog-post-content h1,.blog-post-content h2,.blog-post-content h3{font-family:var(--display);font-weight:400;line-height:1.2;margin:40px 0 12px}.blog-post-content h1{font-size:var(--t-h2)}.blog-post-content h2{font-size:var(--t-h3)}.blog-post-content h3{font-size:var(--t-body)}.blog-post-content hr{border:0;border-top:1px solid var(--hairline);margin:28px 0}.blog-post-content hr+p,.blog-post-content h1+p,.blog-post-content h2+p,.blog-post-content h3+p{text-indent:0}.post-next{margin-top:88px;padding-top:24px;border-top:1px solid var(--press)}.post-next a{display:block;margin-top:6px;font-family:var(--display);font-size:36px;line-height:1.1;text-decoration:none}#talks h3{font-size:var(--t-h2);margin:56px 0 12px}.talk-list{margin:0}#talks .talk-list{padding-left:0;margin:0}#talks .talk-entry{display:flex;gap:24px;padding:16px 0;margin:0;border-top:1px solid var(--hairline)}.talk-date{flex:0 0 7em;font-style:italic;font-size:var(--t-meta);color:var(--pencil);padding-top:3px}.talk-details{display:flex;flex-direction:column}.talk-role{font-style:italic;font-size:var(--t-meta);color:var(--pencil)}.resume-entry{margin-bottom:28px}.resume-entry ul{margin-top:8px}#business-ideas-nav{margin:36px 0 0}#business-ideas-nav h3{font-family:var(--text);font-style:italic;font-size:var(--t-meta);color:var(--pencil);margin:0 0 8px}.nav-links{display:flex;flex-wrap:wrap;gap:6px 22px;font-size:17px}.business-ideas-list li{margin-bottom:14px}.art-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:48px 32px;margin-top:32px}.art-item h3,.content-section .art-item h3{font-family:var(--text);font-size:22px;margin:0 0 4px}.art-item p{font-size:17px;color:var(--pencil);margin-bottom:12px}.art-item canvas{display:block;max-width:100%;border:1px solid var(--hairline);cursor:pointer;margin-bottom:14px}.btn-expand-art{padding:0;border:0;background:none;font-family:var(--text);font-style:italic;font-size:var(--t-meta);color:var(--press);text-decoration:underline;text-decoration-color:var(--pen);text-decoration-thickness:1px;text-underline-offset:.22em;cursor:pointer;min-height:44px}.btn-expand-art:hover,.btn-expand-art:focus{color:var(--pen)}.button,.art-regenerate-btn,.art-modal-close{height:44px;padding:0 22px;border:0;border-radius:22px;background:var(--pen);color:var(--fog);font-family:var(--text);font-style:italic;font-size:var(--t-meta);display:inline-flex;align-items:center;cursor:pointer;text-decoration:none}.button:hover,.art-regenerate-btn:hover,.art-modal-close:hover{color:var(--fog)}.art-modal-close{background:none;color:var(--press);padding:0 8px}.art-modal-close:hover{color:var(--pen)}.art-modal{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000b8;display:flex;align-items:center;justify-content:center;z-index:1000}.art-modal-content{background:var(--fog);padding:24px;max-width:92vw;max-height:92vh;overflow:auto}.art-modal-controls{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.art-modal canvas{display:block;max-width:100%;height:auto}.disc{float:right;width:136px;height:136px;margin:-24px 0 24px 32px;border-radius:50%;background:var(--pen);color:var(--fog);display:flex;align-items:center;justify-content:center;text-align:center;font-style:italic;font-size:19px;line-height:1.15;text-decoration:none;transform:rotate(-11deg)}.disc:hover,.disc:focus{color:var(--fog)}.site-foot{display:flex;justify-content:space-between;align-items:flex-start;gap:32px;margin:120px var(--margin) 0;max-width:calc(var(--measure) + 12em);padding:28px 0 56px;border-top:1px solid var(--press)}.foot-where{font-size:var(--t-meta);line-height:1.7}.foot-sign{display:flex;flex-direction:column;align-items:flex-end;gap:6px}.crest{display:block;width:112px;height:auto}.crest--stamp{transform:rotate(-8deg)}.signature{display:block;width:210px;height:auto}.project-shell-page #page-content-wrapper{height:100vh;overflow:hidden}#project-shell{max-width:none;padding:0;display:flex}.project-frame{flex-grow:1;width:100%;border:none;background:#fff}.loading-message{font-style:italic;color:var(--pencil);padding:16px 0}.error-message{font-style:italic;padding:16px 0}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}@media (max-width: 1100px){:root{--margin: 48px}}@media (max-width: 800px){:root{--margin: 20px;--t-body: 18px;--t-list: 21px;--t-h2: 28px;--t-h3: 22px}body{flex-direction:column}#sidebar{width:100%;height:auto;min-height:0;position:static;overflow:visible;padding:14px var(--margin);border-right:none;border-bottom:1px solid var(--hairline);display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center}#logo-sidebar h1{font-size:22px;margin:0}.menu-toggle{display:block}#sidebar-nav{flex-basis:100%}#sidebar.has-menu:not(.menu-open) #sidebar-nav{display:none}#sidebar-nav>ul{display:flex;flex-direction:column;padding:12px 0 8px}#sidebar-nav ul li a,#projects-toggle-btn{min-height:44px;display:flex;align-items:center;padding:0}#sidebar-nav #projects-submenu li a{min-height:36px}main{padding-top:48px}.content-section,#hero{margin-bottom:56px}.loop{left:-14px;width:calc(100% + 22px)}#talks .talk-entry{flex-direction:column;gap:2px}.talk-date{flex-basis:auto;padding-top:0}.disc{width:104px;height:104px;font-size:15px;margin:-8px 0 16px 20px}.site-foot{flex-direction:column;margin-top:72px}.foot-sign{align-items:flex-start}.signature{width:170px}.post-next a{font-size:28px}.project-shell-page{height:100vh;height:100dvh}.project-shell-page #page-content-wrapper{height:auto;flex-grow:1;min-height:0}}@media (prefers-reduced-motion: reduce){html{scroll-behavior:auto}*{animation:none!important;transition:none!important}}
