:root{--paper:#fbfaf7;--ink:#000;--ink-soft:#565049;--ink-faint:#a29c93;--rule:#e4e0d7;--d-health:#2f6b5e;--d-compliance:#7a3e52;--d-sport:#3b5486;--d-other:#8a6420;--serif:"Newsreader",Georgia,serif;--sans:"Instrument Sans",system-ui,sans-serif}*,:before,:after{box-sizing:border-box}html{color-scheme:light}body{background:var(--paper);color:var(--ink);font-family:var(--sans);-webkit-font-smoothing:antialiased;margin:0;font-size:16px;line-height:1.6}a{color:inherit}h1,h2,h3,h4{margin:0}.wrap{max-width:956px;margin:0 auto;padding:0 28px}.hero,.page-head,.block,.prose,.meta,.elsewhere,footer,.nav{max-width:680px}.block.wide{max-width:900px}.block.wide .block-head{max-width:none}.nav{padding:38px 0 0}.nav ul{gap:26px;margin:0;padding:0;font-size:14.5px;list-style:none;display:flex}.nav a{color:var(--ink-soft);border-bottom:1px solid #0000;padding-bottom:2px;text-decoration:none;transition:color .18s,border-color .18s}.nav a:hover,.nav a:focus-visible{color:var(--ink);border-bottom-color:var(--ink)}.nav a[aria-current]{color:var(--ink)}.hero{align-items:flex-start;gap:38px;padding:104px 0 70px;display:flex}.hero-text{flex:1;min-width:0}.masthead-name{font-family:var(--serif);letter-spacing:-.018em;margin:0;font-size:40px;font-weight:300;line-height:1.1}.masthead-role{font-family:var(--sans);color:var(--ink-soft);margin:6px 0 26px;font-size:15px}.hero-text p.lede,.hero-text p.quiet{font-family:var(--serif);letter-spacing:-.011em;max-width:36ch;margin:0 0 22px;font-size:25px;font-weight:300;line-height:1.5}.hero-text p.quiet{color:var(--ink-soft);max-width:46ch;font-size:20px}.hero-text p:last-child{margin-bottom:0}.page-head{padding:80px 0 40px}.page-head h1{font-family:var(--serif);letter-spacing:-.011em;max-width:36ch;font-size:25px;font-weight:300;line-height:1.5}.page-head h1 .dom-mark{vertical-align:middle;width:11px;height:11px;margin-right:14px;display:inline-block}.page-head p{font-family:var(--serif);color:var(--ink-soft);max-width:46ch;margin:14px 0 0;font-size:20px;font-weight:300;line-height:1.5}.block{padding-bottom:68px}.block-head{border-bottom:1px solid var(--rule);justify-content:space-between;align-items:baseline;gap:16px;padding-bottom:13px;display:flex}.block-head h2{font-family:var(--serif);letter-spacing:-.005em;font-size:19px;font-weight:400}.block-head a{color:var(--ink-soft);font-size:14px;text-decoration:none}.block-head a:hover{color:var(--ink);text-underline-offset:3px;text-decoration:underline}.entries{margin:0;padding:0;list-style:none}.entries li{border-bottom:1px solid var(--rule);grid-template-columns:1fr auto;column-gap:26px;padding:20px 0;display:grid}.entries li:last-child{border-bottom:0}.entries li.entry-group-note{border-bottom:1px solid var(--rule);padding:10px 0 18px;display:block}.entries li.entry-group-note p{font-family:var(--serif);color:var(--ink-faint);max-width:56ch;margin:0;font-size:14.5px;font-style:italic}.entries li:has(+.entry-group-note){border-bottom:0;padding-bottom:12px}.entry-title{font-family:var(--serif);letter-spacing:-.006em;grid-column:1;font-size:19.5px;font-weight:400}.entry-where{color:var(--ink-soft);grid-column:1;margin-top:2px;font-size:14.5px}.entry-note{color:var(--ink-soft);grid-column:1;max-width:48ch;margin:8px 0 0;font-size:15px;line-height:1.55}.when{color:var(--ink-faint);white-space:nowrap;font-variant-numeric:tabular-nums;grid-area:1/2;align-self:baseline;font-size:14px}.projects{margin:0;padding:0;list-style:none}.projects li{border-bottom:1px solid var(--rule)}.projects li:last-child{border-bottom:0}.projects a{border-radius:3px;margin:0 -12px;padding:21px 12px;text-decoration:none;transition:padding-left .22s cubic-bezier(.22,.61,.36,1),background-color .22s;display:block}.projects a:hover,.projects a:focus-visible{padding-left:21px}.projects h3{font-family:var(--serif);letter-spacing:-.006em;align-items:baseline;font-size:20px;font-weight:400;display:flex}.projects p{color:var(--ink-soft);max-width:50ch;margin:6px 0 0 21px;font-size:15px;line-height:1.55}.tag{vertical-align:2px;font-size:12.5px;font-weight:500;font-family:var(--sans);margin-left:11px;display:inline-block}.health{color:var(--d-health)}.compliance{color:var(--d-compliance)}.sport{color:var(--d-sport)}.other{color:var(--d-other)}.dom-mark{background:currentColor;flex:none;align-self:center;width:9px;height:9px;margin-right:12px;display:inline-block}.projects li[data-domain=health] a:hover,.projects li[data-domain=health] a:focus-visible{background:color-mix(in srgb,var(--d-health) 8%,transparent)}.projects li[data-domain=compliance] a:hover,.projects li[data-domain=compliance] a:focus-visible{background:color-mix(in srgb,var(--d-compliance) 8%,transparent)}.projects li[data-domain=sport] a:hover,.projects li[data-domain=sport] a:focus-visible{background:color-mix(in srgb,var(--d-sport) 8%,transparent)}.projects li[data-domain=other] a:hover,.projects li[data-domain=other] a:focus-visible{background:color-mix(in srgb,var(--d-other) 8%,transparent)}.filters{flex-wrap:wrap;gap:8px;margin:0 0 10px;padding:0;font-size:13px;font-weight:500;list-style:none;display:flex}.filters a{color:var(--paper);background:var(--ink-faint);border-radius:2px;padding:4px 11px;text-decoration:none;transition:background-color .18s;display:inline-block}.filters a.health{background:color-mix(in srgb,var(--d-health) 55%,var(--paper))}.filters a.compliance{background:color-mix(in srgb,var(--d-compliance) 55%,var(--paper))}.filters a.sport{background:color-mix(in srgb,var(--d-sport) 55%,var(--paper))}.filters a.other{background:color-mix(in srgb,var(--d-other) 55%,var(--paper))}.filters a[aria-current]{background:var(--ink)}.filters a.health[aria-current]{background:var(--d-health)}.filters a.compliance[aria-current]{background:var(--d-compliance)}.filters a.sport[aria-current]{background:var(--d-sport)}.filters a.other[aria-current]{background:var(--d-other)}.filters a:hover,.filters a:focus-visible{filter:none}.filters a.health:hover{background:var(--d-health)}.filters a.compliance:hover{background:var(--d-compliance)}.filters a.sport:hover{background:var(--d-sport)}.filters a.other:hover{background:var(--d-other)}.writing{margin:0;padding:0;list-style:none}.writing li{border-bottom:1px solid var(--rule)}.writing li:last-child{border-bottom:0}.writing a{grid-template-columns:1fr auto;align-items:baseline;column-gap:24px;padding:16px 0;text-decoration:none;display:grid}.writing a:hover .w-title{text-underline-offset:3px;text-decoration:underline}.w-title{font-family:var(--serif);font-size:18px;font-weight:400}.w-when{color:var(--ink-faint);white-space:nowrap;font-size:14px}.w-ext{font-family:var(--sans);color:var(--ink-faint);vertical-align:2px;margin-left:6px;font-size:12px}.year{padding-bottom:44px;position:relative}.year-label{font-family:var(--serif);color:var(--ink-faint);border-bottom:1px solid var(--rule);font-variant-numeric:tabular-nums;padding:0 0 8px;font-size:15px}.elsewhere{font-family:var(--serif);color:var(--ink-soft);max-width:46ch;margin:0 0 68px;font-size:15.5px;font-style:italic}.elsewhere a{color:var(--ink);text-underline-offset:3px}.now{grid-template-columns:1fr;gap:36px;padding-top:20px;display:grid}.now-reading .aside{max-width:50ch}.now h4{color:var(--ink-faint);margin-bottom:10px;font-size:14px;font-weight:500}.now p{margin:0;font-size:15.5px}.now-list{margin:0;padding:0;list-style:none}.now-row{align-items:center;gap:12px;padding:6px 0;display:flex}.now-row.listening{gap:18px;padding:4px 0 2px}.now-row[hidden]{display:none}.now-row.listening .np-title{font-family:var(--serif);font-size:19px;line-height:1.3}.now-row.listening span{font-size:14px}.now-row p{font-size:15.5px;line-height:1.35}.now-row span{color:var(--ink-soft);font-size:13.5px}.np-link{text-decoration:none;display:block}.np-link:hover .np-title{text-underline-offset:3px;text-decoration:underline}.cover{object-fit:cover;background:var(--rule);border-radius:1px;flex:none;display:block}.cover-blank{background:repeating-linear-gradient(to bottom,var(--paper) 0 5px,var(--rule) 5px 6px);border:1px solid var(--rule)}.aside{font-family:var(--serif);color:var(--ink-soft);margin-top:9px;font-size:15px;font-style:italic}.aside a{color:var(--ink);text-underline-offset:3px}.globe-line{border-top:1px solid var(--rule);align-items:center;gap:16px;margin-top:32px;padding-top:24px;display:flex}.globe-dot{background:radial-gradient(circle at 34% 30%, #f2efe8 0 40%, transparent 41%), radial-gradient(circle at 62% 64%, var(--d-sport) 0 4%, transparent 5%), radial-gradient(circle at 42% 47%, var(--d-health) 0 4%, transparent 5%), radial-gradient(circle at 30% 61%, var(--d-other) 0 3.5%, transparent 4.5%), #d9d4c9;border-radius:50%;flex:none;width:50px;height:50px}.globe-line p{color:var(--ink-soft);max-width:42ch;margin:0;font-size:15px}.globe-line a{color:var(--ink);text-underline-offset:3px}.prose{padding-bottom:68px}.prose p,.prose li{color:var(--ink);max-width:50ch;font-size:16.5px;line-height:1.65}.prose p{margin:0 0 18px}.prose h2{font-family:var(--serif);letter-spacing:-.006em;margin:44px 0 12px;font-size:21px;font-weight:400}.prose h3{font-family:var(--serif);margin:32px 0 10px;font-size:18.5px;font-weight:400}.prose a{text-underline-offset:3px}.prose code{font-size:.92em}.prose pre{border:1px solid var(--rule);background:#fff;border-radius:3px;padding:14px 16px;font-size:14px;line-height:1.5;overflow-x:auto}.prose ul,.prose ol{margin:0 0 18px;padding-left:22px}.prose blockquote{border-left:2px solid var(--rule);color:var(--ink-soft);margin:0 0 18px;padding-left:16px}.meta{color:var(--ink-soft);border-bottom:1px solid var(--rule);flex-wrap:wrap;gap:22px;margin:0 0 40px;padding-bottom:20px;font-size:14px;display:flex}.meta a{text-decoration:none}.meta a:hover{color:var(--ink);text-underline-offset:3px;text-decoration:underline}.shelf-wrap{vertical-align:bottom;max-width:100%;display:inline-block;overflow-x:auto}.shelf{perspective:900px;align-items:flex-end;gap:0;margin:6px 0 0;padding:0 4px 0 6px;list-style:none;display:flex}.spine-slot{height:var(--h);transform-origin:bottom;align-items:flex-end;display:flex;position:relative}.spine-slot.lean{transform-origin:0 100%;margin-right:var(--gap);transform:rotate(4deg)}.spine{width:var(--w);height:var(--h);cursor:pointer;background:var(--spine,var(--ink));transform-origin:bottom;border:0;border-radius:1px 1px 0 0;padding:0;transition:transform .55s cubic-bezier(.22,.61,.36,1),background-color .2s;display:block;position:relative;overflow:hidden;box-shadow:inset -1px 0 #fbfaf78c}.spine:hover,.spine:focus-visible{filter:brightness(1.08)}.spine.pulled{transform:translateY(-16px)rotateY(-58deg)scale(1.08)}.spine-title{writing-mode:vertical-rl;font-family:var(--sans);letter-spacing:.02em;color:var(--spine-text,var(--paper));white-space:nowrap;max-height:calc(var(--h) - 22px);text-overflow:ellipsis;pointer-events:none;font-size:10.5px;font-weight:500;position:absolute;top:8px;left:50%;overflow:hidden;transform:translate(-50%)}.shelf-board{background:var(--ink);opacity:.85;height:1px}.fmt-ebook .spine-title{font-size:9.5px}.face-slot{transform-origin:100% 100%;z-index:1;margin-right:2px;transform:rotate(-3deg)}.spine.face{background:var(--paper);box-shadow:none;border:1px solid var(--rule)}.face-cover{object-fit:cover;width:100%;height:100%;display:block}.spine.face.pulled{transform:translateY(-10px)scale(1.04)}.book-panel{border:1px solid var(--rule);color:var(--ink);background:color-mix(in srgb,var(--tint,var(--ink)) 5%,var(--paper));border-radius:3px;width:max-content;max-width:min(720px,100% - 56px);margin:auto;padding:0}.book-panel::backdrop{background:#fbfaf7b8}.book-panel-inner{grid-template-columns:auto minmax(160px,max-content);align-items:start;gap:28px;padding:24px;display:grid}.book-meta{max-width:40ch}.book-panel.has-thoughts .book-panel-inner{grid-template-columns:auto minmax(240px,40ch)}.book-cover{width:220px;height:auto;box-shadow:none;border-radius:2px;display:block}.book-cover-blank{border:1px solid var(--rule);background:repeating-linear-gradient(to bottom,var(--paper) 0 9px,var(--rule) 9px 10px);width:220px;height:330px}.book-meta h3{font-family:var(--serif);letter-spacing:-.006em;font-size:21px;font-weight:400}.book-author{color:var(--ink-soft);margin:6px 0 14px;font-size:14px}.book-blurb{color:var(--ink);margin:0 0 12px;font-size:15px;line-height:1.55}.book-thoughts{font-family:var(--serif);color:var(--ink-soft);margin:0 0 12px;font-size:15.5px;font-style:italic;line-height:1.5}.book-close{font:inherit;color:var(--ink-soft);cursor:pointer;text-underline-offset:3px;background:0 0;border:0;padding:0;font-size:14px;text-decoration:underline}.book-close:hover{color:var(--ink)}@media (width<=600px){.book-panel{width:auto}.book-panel-inner,.book-panel.has-thoughts .book-panel-inner{grid-template-columns:1fr;gap:18px}.book-cover,.book-cover-blank{width:140px;height:auto}}@media (prefers-reduced-motion:reduce){.spine.pulled{transform:none}}footer{border-top:1px solid var(--rule);color:var(--ink-soft);padding:24px 0 56px;font-size:14px}footer ul{flex-wrap:wrap;gap:22px;margin:0;padding:0;list-style:none;display:flex}footer a{text-decoration:none}footer a:hover{color:var(--ink);text-underline-offset:3px;text-decoration:underline}footer button{font:inherit;color:inherit;cursor:pointer;background:0 0;border:0;padding:0}footer button:hover{color:var(--ink);text-underline-offset:3px;text-decoration:underline}:focus-visible{outline:2px solid var(--ink);outline-offset:3px;border-radius:2px}@media (width<=600px){.hero{padding:64px 0 50px}.masthead-name{font-size:32px}.hero-text p.lede{max-width:none;font-size:21px}.hero-text p.quiet{font-size:18px}.page-head{padding:54px 0 34px}.page-head h1{font-size:21px}.page-head p{font-size:18px}.entries li{grid-template-columns:1fr}.when{grid-area:auto/1;margin-top:7px}.now{grid-template-columns:1fr;gap:26px}.now-row.listening .cover{width:72px!important;height:72px!important}}@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}
