:root{--fg:#111;--bg:#fff;--muted:#666;--link:#b60000}*{box-sizing:border-box;margin:0;padding:0}body,html{height:100%;color:var(--fg);background:var(--bg);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;line-height:1.6;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}header{border-bottom:1px solid #eee;padding:1rem 0}.header-content{max-width:720px;margin:0 auto;padding:0 1rem;display:flex;justify-content:space-between;align-items:center}.site-title{font-size:1.25rem;font-weight:600;color:var(--fg);text-decoration:none}nav{display:flex;gap:1.5rem}nav a{color:var(--fg);text-decoration:none;font-weight:500}nav a:hover{color:var(--link)}main{max-width:720px;margin:0 auto;padding:2rem 1rem}.cta-section{background:linear-gradient(135deg,#f8f9fa,#e9ecef);border:1px solid #e9ecef;border-radius:12px;padding:2rem;margin:2rem 0;text-align:center}.cta-text{font-size:1.1rem;color:var(--fg);margin-bottom:1.5rem;font-weight:500}.cta-buttons{display:flex;gap:1rem;justify-content:center;flex-wrap:wrap}.cta-button{display:inline-flex;align-items:center;justify-content:center;padding:.75rem 1.5rem;border-radius:8px;font-weight:600;font-size:.95rem;text-decoration:none;transition:all .2s ease;min-width:120px}.cta-button.primary{background:var(--link);color:white;border:2px solid var(--link)}.cta-button.primary:hover{background:#a00000;border-color:#a00000;transform:translateY(-1px);box-shadow:0 4px 12px rgba(182,0,0,.3)}.cta-button.secondary{background:white;color:var(--fg);border:2px solid #ddd}.cta-button.secondary:hover{border-color:var(--link);color:var(--link);transform:translateY(-1px);box-shadow:0 4px 12px rgba(0,0,0,.1)}@media (max-width:640px){.cta-buttons{flex-direction:column;align-items:center}.cta-button{width:100%;max-width:300px}}h1,h2,h3,h4,h5,h6{font-weight:600;line-height:1.3;margin-bottom:1rem}h1{font-size:2rem}h2{font-size:1.5rem}h3{font-size:1.25rem}p{margin-bottom:1rem;color:var(--fg)}a{color:var(--link);text-decoration:underline;text-underline-offset:.125rem;text-decoration-thickness:1px}a:hover{text-decoration-thickness:2px}ol,ul{margin-bottom:1rem;padding-left:1.5rem}li{margin-bottom:.25rem}.expandable{border-top:1px solid #eee;overflow:hidden}.expandable:first-child{border-top:none}.expandable-trigger{width:100%;background:none;border:none;font-family:inherit;font-size:inherit;font-weight:600;cursor:pointer;color:var(--fg);padding:1rem 0;text-align:left;display:flex;align-items:center;gap:.5rem;transition:color .2s ease}.expandable-trigger:hover{color:var(--link)}.expandable-trigger:focus{outline:2px solid var(--link);outline-offset:2px;border-radius:2px}.expandable-icon{font-size:.75rem;transition:transform .3s cubic-bezier(.4,0,.2,1);display:inline-block;color:var(--muted)}.expandable-icon.open{transform:rotate(90deg)}.expandable-title{flex:1}.expandable-content{overflow:hidden;transition:height .3s cubic-bezier(.4,0,.2,1);will-change:height}.expandable-inner{padding:.5rem 0 1.5rem 1.25rem;color:var(--fg);opacity:0;transform:translateY(-8px);transition:opacity .25s ease .1s,transform .25s ease .1s}.expandable-content.open .expandable-inner{opacity:1;transform:translateY(0)}article{margin-bottom:2rem}article h1{margin-bottom:.5rem}article time{color:var(--muted);display:block}article time,pre{font-size:.9rem;margin-bottom:1rem}pre{padding:1rem;border-radius:4px;overflow-x:auto}code,pre{background:#f5f5f5}code{font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,Courier,monospace;padding:.125rem .25rem;border-radius:2px;font-size:.9em}pre code{background:none;padding:0}img{max-width:100%;height:auto;border-radius:4px;margin-bottom:1rem}.blog-post-item{margin-bottom:2rem;padding-bottom:1rem;border-bottom:1px solid #eee}.blog-post-item:last-child{border-bottom:none}.blog-post-title{font-size:1.25rem;font-weight:600;margin-bottom:.5rem}.blog-post-meta{color:var(--muted);font-size:.9rem;margin-bottom:.5rem}.blog-post-summary{color:var(--fg)}.page-header{margin-bottom:2.5rem}.page-intro{color:var(--muted);font-size:1.05rem;line-height:1.7;margin-top:.5rem;max-width:65ch}.projects-grid{display:flex;flex-direction:column;gap:2.5rem}.project-card{border:1px solid #eee;border-radius:8px;overflow:hidden;transition:all .3s cubic-bezier(.4,0,.2,1);background:#fff;position:relative}.project-card:hover{border-color:#ddd;box-shadow:0 8px 24px rgba(0,0,0,.06);transform:translateY(-4px)}.project-card:focus-within{outline:2px solid var(--link);outline-offset:2px}.project-image-container{width:100%;height:280px;background:linear-gradient(135deg,#f8f9fa,#e9ecef);border-bottom:1px solid #eee;overflow:hidden;position:relative}.project-image-placeholder{width:100%;height:100%;display:flex;align-items:center;justify-content:center;color:var(--muted);font-size:.95rem;font-weight:500;letter-spacing:.025em}.project-content{padding:1.75rem;display:flex;flex-direction:column;gap:1rem}.project-title{font-size:1.5rem;font-weight:600;line-height:1.3;color:var(--fg);margin:0}.project-description{color:var(--fg);line-height:1.7;font-size:1rem;margin:0}.project-tags{display:flex;flex-wrap:wrap;gap:.5rem;padding:0;margin:0}.project-tag{display:inline-flex;align-items:center;padding:.4rem .85rem;background:#f8f9fa;color:var(--fg);font-size:.875rem;font-weight:500;border-radius:6px;border:1px solid #e9ecef;transition:all .2s ease}.project-tag:hover{background:#e9ecef;border-color:#dee2e6}.project-links{display:flex;gap:1.5rem;flex-wrap:wrap;margin-top:.25rem}.project-link{color:var(--link);text-decoration:none;font-weight:600;font-size:.95rem;transition:all .2s ease;padding:.25rem 0;position:relative;display:inline-flex;align-items:center;gap:.25rem}.project-link:after{content:"";position:absolute;bottom:0;left:0;width:0;height:2px;background-color:var(--link);transition:width .3s ease}.project-link:hover{color:#a00000}.project-link:hover:after{width:100%}.project-link:focus{outline:2px solid var(--link);outline-offset:2px;border-radius:2px}@media (max-width:768px){.page-header{margin-bottom:2rem}.page-intro{font-size:1rem}.projects-grid{gap:2rem}.project-image-container{height:220px}.project-content{padding:1.5rem}.project-title{font-size:1.35rem}.project-description{font-size:.95rem}.project-tag{font-size:.8rem;padding:.35rem .75rem}.project-links{gap:1.25rem}}@media (max-width:480px){.project-image-container{height:180px}.project-content{padding:1.25rem}.project-title{font-size:1.25rem}.project-links{flex-direction:column;gap:.75rem}.project-link{width:fit-content}}