:root{color-scheme:light;--paper: #fffaf0;--paper-deep: #f4ead9;--ink: #25211c;--ink-soft: #4e463b;--ink-muted: #7a6f60;--rule: rgba(40, 114, 181, .055);--rule-strong: rgba(40, 114, 181, .16);--margin-rule: rgba(198, 57, 57, .18);--accent: #1f66a8;--accent-soft: rgba(31, 102, 168, .08);--line-height: 34px;--serif: ui-serif, Georgia, Cambria, "Times New Roman", Times, serif;--sans: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--mono: "SFMono-Regular", Consolas, "Liberation Mono", monospace}[data-theme=dark]{color-scheme:dark;--paper: #171716;--paper-deep: #10100f;--ink: #f1eadf;--ink-soft: #cfc5b8;--ink-muted: #948a7d;--rule: rgba(142, 185, 232, .045);--rule-strong: rgba(142, 185, 232, .14);--margin-rule: rgba(255, 111, 111, .14);--accent: #80bfff;--accent-soft: rgba(128, 191, 255, .12)}*{box-sizing:border-box}html{background:var(--paper-deep);scroll-behavior:smooth}body{margin:0;min-height:100vh;background:var(--paper-deep);color:var(--ink);font-family:var(--serif);font-size:19px;line-height:var(--line-height);-webkit-font-smoothing:antialiased}a{color:var(--accent);text-decoration-thickness:1px;text-underline-offset:.16em}a:hover{text-decoration-style:wavy}img{max-width:100%;height:auto}button{font:inherit}.site-header{max-width:920px;margin:24px auto 0;padding:0 24px;display:flex;align-items:baseline;justify-content:space-between;gap:16px;color:var(--ink-muted);font-family:var(--sans);font-size:14px}.site-mark{color:var(--ink);font-weight:700;text-decoration:none}.site-nav{display:flex;flex-wrap:wrap;gap:14px}.site-nav a{color:var(--ink-muted);text-decoration:none}.site-nav a:hover{color:var(--accent);text-decoration:underline}.theme-button{border:0;padding:0;background:transparent;color:var(--ink-muted);cursor:pointer;font-size:14px}.theme-button:hover{color:var(--accent)}.paper-shell{max-width:920px;margin:24px auto 0;padding:72px clamp(28px,8vw,96px) 88px;position:relative;background-color:var(--paper);background-image:linear-gradient(90deg,transparent 0,transparent 64px,var(--margin-rule) 64px,var(--margin-rule) 66px,transparent 66px),repeating-linear-gradient(to bottom,transparent 0,transparent calc(var(--line-height) - 1px),var(--rule) calc(var(--line-height) - 1px),var(--rule) var(--line-height));background-position:0 0,0 72px;border:1px solid var(--rule-strong);box-shadow:0 18px 55px #583c161f}[data-theme=dark] .paper-shell{box-shadow:0 18px 55px #00000052}.intro-block,.projects-section,.topic-section,.writing-section,.resume-section,.related-writing{margin-bottom:calc(var(--line-height) * 2)}.intro-block h1,.article-heading h1{margin:0 0 var(--line-height);font-size:clamp(2.2rem,7vw,4.2rem);line-height:calc(var(--line-height) * 2);letter-spacing:0}.article-heading h1{max-width:760px;font-size:clamp(2rem,5vw,3.45rem)}.intro-block .subtitle,.article-description{margin:0 0 var(--line-height);color:var(--ink-soft);font-size:1.2rem}.profile-intro{display:grid;grid-template-columns:minmax(0,1fr) 172px;align-items:start;gap:calc(var(--line-height) * 1.2)}.profile-copy{min-width:0}.profile-intro h1{font-size:3.25rem}.profile-photo{width:172px;margin:4px 0 0;justify-self:end}.profile-photo img{display:block;width:100%;aspect-ratio:1;object-fit:cover;border:1px solid var(--rule-strong);border-radius:8px;background:color-mix(in srgb,var(--paper) 82%,white);box-shadow:0 12px 30px #583c1624}[data-theme=dark] .profile-photo img{box-shadow:0 12px 30px #00000047}.section-lead{color:var(--ink-soft)}p{margin:0 0 var(--line-height)}h2{margin:calc(var(--line-height) * 2) 0 var(--line-height);font-family:var(--sans);font-size:1.15rem;line-height:var(--line-height);letter-spacing:.01em}h3{margin:0;font-family:var(--sans);font-size:1rem;line-height:var(--line-height)}.inline-links,.article-meta{display:flex;flex-wrap:wrap;gap:10px 16px;color:var(--ink-muted);font-family:var(--sans);font-size:14px}.plain-list,.writing-flat-list,.resume-list{display:grid;gap:var(--line-height)}.plain-item,.writing-flat-item,.resume-list article{padding-bottom:calc(var(--line-height) - 1px);border-bottom:1px solid var(--rule)}.plain-item p,.writing-flat-item p,.resume-list p{margin:0;color:var(--ink-soft)}.plain-item small,.writing-flat-item time,.resume-list time{display:block;color:var(--ink-muted);font-family:var(--mono);font-size:13px;line-height:var(--line-height)}.writing-flat-item h2,.writing-flat-item h3,.plain-item h3,.resume-list h3{margin:0;font-size:1.02rem}.writing-flat-item h2{font-family:var(--sans);line-height:var(--line-height)}.topic-archive+.topic-archive{margin-top:calc(var(--line-height) * 2)}.article-heading{margin-bottom:calc(var(--line-height) * 2)}.article-highlights{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin:var(--line-height) 0 0;padding:calc(var(--line-height) / 2) 0;border-top:1px solid var(--rule-strong);border-bottom:1px solid var(--rule-strong)}.article-highlights div{min-width:0}.article-highlights dt{color:var(--ink-muted);font-family:var(--sans);font-size:12px;line-height:18px;text-transform:uppercase}.article-highlights dd{margin:0;color:var(--ink);font-family:var(--sans);font-size:1rem;font-weight:700;line-height:24px}.article-hero{margin:0 0 calc(var(--line-height) * 2)}.article-hero img{display:block;width:100%;max-height:440px;object-fit:contain;border:1px solid var(--rule-strong);background:color-mix(in srgb,var(--paper) 86%,white)}.article-hero figcaption{margin-top:8px;color:var(--ink-muted);font-family:var(--sans);font-size:14px;line-height:22px}.article-toc{display:flex;flex-wrap:wrap;gap:8px 14px;margin:0 0 calc(var(--line-height) * 2);padding-bottom:calc(var(--line-height) - 1px);border-bottom:1px solid var(--rule);font-family:var(--sans);font-size:14px;line-height:22px}.article-toc span{color:var(--ink-muted);font-weight:700}.small-link{display:inline-block;margin-bottom:var(--line-height);font-family:var(--sans);font-size:14px}.reading-progress{position:fixed;top:0;left:0;z-index:40;width:100%;height:3px;transform:scaleX(0);transform-origin:left center;background:var(--accent)}.article-body{max-width:720px;margin:0 auto}.article-body>div>*:first-child{margin-top:0}.article-body p,.article-body ul,.article-body ol,.article-body blockquote,.article-body aside,.article-body figure,.article-body pre,.article-body table,.article-body .note{margin-top:0;margin-bottom:var(--line-height)}.article-body h2{margin:calc(var(--line-height) * 2) 0 var(--line-height);font-size:1.35rem;line-height:var(--line-height)}.article-body h3{margin:var(--line-height) 0 0;font-size:1.05rem}.article-body ul,.article-body ol{padding-left:1.35rem}.article-body li{margin:0}.article-body blockquote{padding-left:1rem;border-left:3px solid var(--accent);color:var(--ink-soft);font-style:italic}.article-body code{font-family:var(--mono);font-size:.9em;background:var(--accent-soft);padding:0 4px;border-radius:4px}.article-body pre{overflow-x:auto;padding:14px 16px;border:1px solid var(--rule-strong);background:color-mix(in srgb,var(--paper-deep) 70%,transparent);font-size:14px;line-height:24px}.article-body img{display:block;margin:0 auto;width:100%;max-height:620px;object-fit:contain;border:1px solid var(--rule-strong);background:color-mix(in srgb,var(--paper) 86%,white)}.article-body figcaption,.article-body .image-caption,.article-body .caption{margin-top:6px;color:var(--ink-muted);font-family:var(--sans);font-size:14px;line-height:22px}.article-body table{display:block;width:100%;overflow-x:auto;border-collapse:collapse;font-family:var(--sans);font-size:15px;line-height:24px}.article-body th,.article-body td{border:1px solid var(--rule-strong);padding:10px 12px;vertical-align:top;overflow-wrap:anywhere}.article-body th{background:var(--accent-soft);color:var(--ink);text-align:left}.article-body aside,.article-body .note{padding:14px 16px;border-left:3px solid var(--accent);background:var(--accent-soft)}.article-body aside>:first-child,.article-body .note>:first-child{margin-top:0}.article-body aside>:last-child,.article-body .note>:last-child{margin-bottom:0}.related-writing{max-width:720px;margin:calc(var(--line-height) * 3) auto 0}.resume-simple .intro-block h1{font-size:2.4rem;line-height:calc(var(--line-height) * 2)}.resume-intro{grid-template-columns:minmax(0,1fr) 148px}.resume-intro .profile-photo{width:148px}.resume-section h2{margin-top:var(--line-height)}.resume-stat-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-bottom:var(--line-height)}.resume-stat{min-width:0;padding:14px 16px;border:1px solid var(--rule-strong);border-radius:8px;background:color-mix(in srgb,var(--accent-soft) 54%,transparent);font-family:var(--sans)}.resume-stat span{display:block;color:var(--ink-muted);font-size:12px;line-height:18px;text-transform:uppercase}.resume-stat strong{display:block;margin:4px 0;color:var(--ink);font-size:1.35rem;line-height:28px}.resume-stat p{margin:0;color:var(--ink-soft);font-size:14px;line-height:22px}.capability-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.capability-panel{min-width:0;padding:16px;border:1px solid var(--rule-strong);border-radius:8px;background:color-mix(in srgb,var(--paper) 88%,var(--accent-soft))}.capability-panel-wide{grid-column:1 / -1}.capability-panel h3{margin-bottom:calc(var(--line-height) / 2)}.skill-chip-list,.domain-list{display:flex;flex-wrap:wrap;gap:8px;margin:0;padding:0;list-style:none}.skill-chip-list li{padding:2px 10px;border:1px solid var(--rule-strong);border-radius:999px;color:var(--ink-soft);font-family:var(--sans);font-size:13px;line-height:24px;background:var(--paper)}.solution-bars{display:grid;gap:12px}.solution-bar{display:grid;grid-template-columns:minmax(160px,.72fr) minmax(120px,1fr);align-items:center;gap:14px;font-family:var(--sans)}.solution-bar>span{color:var(--ink-soft);font-size:14px;line-height:22px}.solution-bar div{height:9px;overflow:hidden;border:1px solid var(--rule-strong);border-radius:999px;background:color-mix(in srgb,var(--paper-deep) 72%,transparent)}.solution-bar div span{display:block;width:var(--strength);height:100%;border-radius:inherit;background:linear-gradient(90deg,var(--accent),color-mix(in srgb,var(--accent) 55%,var(--ink)))}.domain-list{display:grid;gap:10px}.domain-list li{padding-left:12px;border-left:3px solid var(--accent)}.domain-list strong,.domain-list span{display:block;font-family:var(--sans)}.domain-list strong{color:var(--ink);font-size:14px;line-height:22px}.domain-list span{color:var(--ink-soft);font-size:13px;line-height:20px}.resume-employer{margin-bottom:var(--line-height)}.resume-employer p{margin:0;color:var(--ink-soft)}.resume-list ul{margin:0;padding-left:1.25rem;color:var(--ink-soft)}.resume-list li{margin:0}.site-footer{max-width:920px;margin:0 auto;padding:24px;color:var(--ink-muted);display:flex;flex-wrap:wrap;justify-content:space-between;gap:12px;font-family:var(--sans);font-size:14px}.site-footer p{margin:0}.site-footer nav{display:flex;gap:14px}.utility-page{max-width:920px;min-height:50vh;margin:24px auto 0;padding:72px clamp(28px,8vw,96px) 88px;background:var(--paper);border:1px solid var(--rule-strong);box-shadow:0 18px 55px #583c161f}[data-theme=dark] .utility-page{box-shadow:0 18px 55px #00000052}.utility-page h1{margin:0 0 var(--line-height);font-size:clamp(2.2rem,7vw,4rem);line-height:calc(var(--line-height) * 2)}.button-link{display:inline-flex;align-items:center;min-height:40px;padding:0 14px;border:1px solid var(--rule-strong);background:var(--accent-soft);color:var(--ink);font-family:var(--sans);font-size:14px;font-weight:700;text-decoration:none}.button-link:hover{color:var(--accent);text-decoration:underline}@media(max-width:720px){body{font-size:18px}.site-header{align-items:flex-start;flex-direction:column;margin-top:16px}.paper-shell{margin-top:16px;padding:48px 24px 64px 40px;background-image:linear-gradient(90deg,transparent 0,transparent 20px,var(--margin-rule) 20px,var(--margin-rule) 22px,transparent 22px),repeating-linear-gradient(to bottom,transparent 0,transparent calc(var(--line-height) - 1px),var(--rule) calc(var(--line-height) - 1px),var(--rule) var(--line-height));background-position:0 0,0 48px}.intro-block h1,.article-heading h1{font-size:2.4rem}.profile-intro,.resume-intro{grid-template-columns:1fr;gap:var(--line-height)}.profile-photo,.resume-intro .profile-photo{order:-1;width:132px;margin-top:0;justify-self:start}.resume-stat-grid,.capability-grid{grid-template-columns:1fr}.solution-bar{grid-template-columns:1fr;gap:6px}.article-highlights{grid-template-columns:repeat(2,minmax(0,1fr))}}
