:root{--bg: #fafafa;--bg-elevated: #f0f0f0;--bg-hover: #e4e4e7;--text: #1a1a2e;--text-muted: #6b7280;--text-heading: #111118;--link: #2563eb;--link-hover: #1d4ed8;--link-visited: #7c3aed;--border: #d1d5db;--accent: #2563eb;--font-body: "Source Sans 3", "Source Sans Pro", -apple-system, sans-serif;--font-heading: "Space Grotesk", -apple-system, sans-serif;--font-code: "Source Code Pro", ui-monospace, Menlo, Consolas, monospace;--container-max: 900px;--content-max: 700px;--sidebar-width: 200px;--gap: 1.5rem}@media (prefers-color-scheme: dark){:root{--bg: #3d444d;--bg-elevated: #4a525a;--bg-hover: #606870;--text: #e8e8e8;--text-muted: #9ca3af;--text-heading: #ffffff;--link: #93c5fd;--link-hover: #bfdbfe;--link-visited: #c4b5fd;--border: #6b7280;--accent: #60a5fa}}*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}html{font-size:16px;-webkit-text-size-adjust:100%}body{font-family:var(--font-body);font-weight:400;line-height:1.7;color:var(--text);background-color:var(--bg);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}h1,h2,h3,h4,h5,h6{font-family:var(--font-heading);color:var(--text-heading);line-height:1.3;margin-bottom:0.75em}h1{font-size:2rem;font-weight:700}h2{font-size:1.5rem;font-weight:700}h3{font-size:1.25rem;font-weight:500}h4{font-size:1.1rem;font-weight:500}p{margin-bottom:1.5em}a{color:var(--link);text-decoration:none;transition:color 0.15s ease}a:hover{color:var(--link-hover)}a:visited{color:var(--link-visited)}img{max-width:100%;height:auto;display:block}blockquote{border-left:3px solid var(--border);padding-left:1em;margin:1.5em 0;font-style:italic;color:var(--text-muted)}hr{border:none;border-top:1px solid var(--border);margin:2rem 0}ul,ol{margin-bottom:1.5em;padding-left:1.5em}li{margin-bottom:0.25em}code{font-family:var(--font-code);font-size:0.9em;background:var(--bg-elevated);padding:0.15em 0.4em;border-radius:3px}pre{background:var(--bg-elevated);padding:1rem;border-radius:4px;overflow-x:auto;margin-bottom:1.5em;line-height:1.6}pre code{background:none;padding:0;font-size:0.875rem}table{width:100%;border-collapse:collapse;margin-bottom:1.5em}table th,table td{padding:0.5rem 0.75rem;border-bottom:1px solid var(--border);text-align:left}table th{font-family:var(--font-heading);font-weight:500;color:var(--text-heading)}::selection{background:var(--accent);color:var(--bg)}.skip-link{position:absolute;top:-100%;left:1rem;padding:0.5rem 1rem;background:var(--accent);color:var(--bg);z-index:100;border-radius:0 0 4px 4px}.skip-link:focus{top:0}.topbar{display:flex;align-items:center;justify-content:space-between;padding:1rem var(--gap);max-width:var(--container-max);margin:0 auto}.topbar__logo{display:flex;align-items:center;gap:0.5rem;text-decoration:none;color:var(--text-heading)}.topbar__logo:visited{color:var(--text-heading)}.topbar__logo svg{height:36px;width:auto}.topbar__actions{display:flex;align-items:center;gap:0.25rem}.topbar__icon{display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;color:var(--text);border:none;background:none;cursor:pointer;border-radius:4px;transition:background 0.15s ease, color 0.15s ease}.topbar__icon:hover{background:var(--bg-hover);color:var(--text-heading)}.topbar__icon:visited{color:var(--text)}.topbar__icon svg{width:20px;height:20px;fill:currentColor}.topbar__divider{border:none;border-top:1px solid var(--border);margin:0}.container{max-width:var(--container-max);margin:0 auto;padding:2rem var(--gap)}.container--narrow{max-width:var(--content-max)}.blog-layout{display:grid;grid-template-columns:var(--sidebar-width) 1fr;gap:3rem;max-width:var(--container-max);margin:0 auto;padding:2rem var(--gap)}.blog-layout__sidebar{position:sticky;top:2rem;align-self:start;text-align:right}.blog-layout__main{min-width:0}.footer__divider{border:none;border-top:1px solid var(--border);margin:0}.footer{max-width:var(--container-max);margin:0 auto;padding:1.5rem var(--gap);display:flex;justify-content:space-between;align-items:center;color:var(--text-muted);font-size:0.875rem}.footer a{color:var(--text-muted)}.footer a:hover{color:var(--link)}.hero{text-align:center;max-width:var(--content-max);margin:0 auto 3rem}.hero__photo{width:180px;height:180px;border-radius:50%;object-fit:cover;margin:0 auto 1.5rem;border:3px solid var(--border)}.hero__name{font-family:var(--font-heading);font-size:2rem;font-weight:700;color:var(--text-heading);margin-bottom:0.25rem}.hero__tagline{font-size:1rem;color:var(--text-muted);margin-bottom:1.5rem}.hero__bio{text-align:left;margin:0 auto}.post-list{list-style:none;padding:0}.post-list__heading{font-family:var(--font-heading);font-size:1.25rem;font-weight:500;color:var(--text-muted);text-transform:uppercase;letter-spacing:0.05em;margin-bottom:1.5rem}.post-list__item{padding:0.75rem 0;border-bottom:1px solid rgba(107,114,128,0.3)}.post-list__item:last-child{border-bottom:none}.post-list__header{display:flex;justify-content:space-between;align-items:baseline}.post-list__title{font-family:var(--font-heading);font-size:1.1rem;font-weight:500}.post-list__title a{color:var(--link)}.post-list__title a:hover{color:var(--link-hover)}.post-list__title a:visited{color:var(--link-visited)}.post-list__date{font-size:0.875rem;color:var(--text-muted);white-space:nowrap;margin-left:1rem}.post-list__excerpt{font-size:0.9rem;color:var(--text-muted);margin-top:0.35rem;margin-bottom:0;line-height:1.5}.post-list__more{display:inline-block;margin-top:1.5rem;font-family:var(--font-heading);font-size:1rem;font-weight:500}.post-list__more::after{content:" \2192"}.sidebar__identity{margin-bottom:2rem}.sidebar__site-name{font-family:var(--font-heading);font-size:1.5rem;font-weight:700;color:var(--text-heading);text-decoration:none;display:block}.sidebar__site-name:hover{color:var(--link-hover)}.sidebar__byline{font-size:0.875rem;color:var(--text-muted);margin-top:0.25rem}.sidebar__nav{list-style:none;padding:0}.sidebar__nav-item{margin-bottom:0.5rem}.sidebar__nav-item a{color:var(--text);font-size:0.95rem;text-decoration:none}.sidebar__nav-item a:hover{color:var(--link)}.post__header{margin-bottom:2rem}.post__title{font-size:2rem;margin-bottom:0.25rem}.post__meta{font-size:0.875rem;color:var(--text-muted)}.post__content img{border-radius:4px;margin:1.5em 0}.post__content h2{margin-top:2em}.post__content h3{margin-top:1.5em}.search-toggle{position:relative}.search-input{position:absolute;right:0;top:50%;transform:translateY(-50%);width:0;padding:0;border:1px solid var(--border);border-radius:4px;background:var(--bg-elevated);color:var(--text);font-family:var(--font-body);font-size:0.9rem;opacity:0;transition:width 0.25s ease, opacity 0.2s ease, padding 0.25s ease;outline:none}.search-input.is-open{width:250px;padding:0.5rem 0.75rem;opacity:1}.search-input::placeholder{color:var(--text-muted)}.search-results{position:absolute;right:0;top:calc(50% + 28px);width:300px;max-height:400px;overflow-y:auto;background:var(--bg-elevated);border:1px solid var(--border);border-radius:4px;display:none;z-index:50}.search-results.is-open{display:block}.search-results__item{display:block;padding:0.6rem 0.75rem;color:var(--text);text-decoration:none;border-bottom:1px solid rgba(107,114,128,0.3);font-size:0.9rem}.search-results__item:last-child{border-bottom:none}.search-results__item:hover{background:var(--bg-hover)}.search-results__item small{display:block;color:var(--text-muted);font-size:0.8rem}.hamburger{display:none}.archive__year{font-family:var(--font-heading);font-size:1.5rem;font-weight:700;color:var(--text-heading);margin-top:2rem;margin-bottom:0.5rem}.archive__month{font-family:var(--font-heading);font-size:1.1rem;font-weight:500;color:var(--text-muted);margin-top:1.25rem;margin-bottom:0.5rem}.archive__list{list-style:none;padding:0}.archive__item{display:flex;justify-content:space-between;align-items:baseline;padding:0.4rem 0}.archive__item a{color:var(--link)}.archive__item a:hover{color:var(--link-hover)}.archive__date{font-size:0.875rem;color:var(--text-muted);white-space:nowrap;margin-left:1rem}.project{margin-bottom:3rem;padding-bottom:2rem;border-bottom:1px solid rgba(107,114,128,0.3)}.project:last-child{border-bottom:none}.project__title{font-size:1.5rem;margin-bottom:0.25rem}.project__title a{color:var(--text-heading)}.project__title a:hover{color:var(--link)}.project__meta{font-size:0.875rem;color:var(--text-muted);margin-bottom:1rem}.project__description{color:var(--text)}.mobile-menu{display:none;position:fixed;top:0;left:0;width:280px;height:100%;background:var(--bg-elevated);z-index:200;padding:2rem 1.5rem;transform:translateX(-100%);transition:transform 0.25s ease;box-shadow:4px 0 20px rgba(0,0,0,0.3)}.mobile-menu.is-open{transform:translateX(0)}.mobile-menu__close{display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;background:none;border:none;color:var(--text);cursor:pointer;margin-bottom:1rem;margin-left:-0.5rem}.mobile-menu__close svg{width:20px;height:20px;fill:currentColor}.mobile-menu__overlay{display:none;position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(0,0,0,0.5);z-index:199}.mobile-menu__identity{margin-bottom:2rem;text-align:left}.mobile-menu__site-name{font-family:var(--font-heading);font-size:1.5rem;font-weight:700;color:var(--text-heading);text-decoration:none;display:block}.mobile-menu__byline{font-size:0.875rem;color:var(--text-muted);margin-top:0.25rem}.mobile-menu__nav{list-style:none;padding:0}.mobile-menu__nav-item{margin-bottom:0.75rem}.mobile-menu__nav-item a{color:var(--text);font-size:1.1rem;text-decoration:none;display:block;padding:0.5rem 0}.mobile-menu__nav-item a:hover{color:var(--link)}@media (max-width: 768px){.hamburger{display:inline-flex}.mobile-menu{display:block}.blog-layout{display:block}.blog-layout__sidebar{display:none}.blog-layout__main{width:100%}.search-input.is-open{width:180px}}@media (max-width: 480px){:root{--gap: 1rem}h1,.post__title,.hero__name{font-size:1.6rem}.hero__photo{width:140px;height:140px}.post-list__header{flex-direction:column;gap:0.15rem}.post-list__date{margin-left:0}.search-input.is-open{width:150px}.footer{flex-direction:column;gap:0.5rem;text-align:center}}
