:root{color-scheme:light;color:#202733;font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;background:#fff;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:5rem}body{margin:0;line-height:1.7}a{color:inherit;text-decoration:none}a:focus-visible{outline-offset:4px;border-radius:3px;outline:2px solid #2563eb}.container{width:min(100% - 40px,960px);margin-inline:auto}.site-header{z-index:10;background:#fff;border-bottom:1px solid #e8ebef;position:sticky;top:0}.header-inner{justify-content:space-between;align-items:center;gap:24px;min-height:76px;display:flex}.brand{font-size:1.1rem;font-weight:700}.nav-list{gap:28px;margin:0;padding:0;list-style:none;display:flex}.nav-list a,.text-link{color:#606a79;transition:color .16s}.nav-list a:hover,.nav-list a[aria-current=page],.text-link:hover{color:#1d4ed8}main{min-height:65vh}.hero{max-width:760px;padding:88px 0 72px}h1,h2,h3{letter-spacing:-.025em;line-height:1.25}h1{margin:14px 0 20px;font-size:clamp(2.4rem,6vw,3.5rem)}h2{font-size:1.55rem}.lead{color:#526070;font-size:1.12rem}.section{padding:32px 0 60px}.section-heading{justify-content:space-between;align-items:center;gap:16px;margin-bottom:24px;display:flex}.project-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:20px;display:grid}.project-card{border:1px solid #e2e6eb;border-radius:10px;height:100%;padding:25px;transition:border-color .18s,box-shadow .18s,transform .18s;display:block}.project-card:hover{border-color:#a7b8cf;transform:translateY(-2px);box-shadow:0 6px 18px #14283c0f}.project-title{font-size:1.1rem;font-weight:650;display:block}.project-summary,.muted{color:#606a79}.project-summary{margin:12px 0}.technologies{color:#64748b;font-size:.85rem}.content-page{max-width:760px;padding:60px 0 80px}.content-page section{margin-top:42px}.site-footer{color:#64748b;border-top:1px solid #e8ebef;margin-top:60px;padding:26px 0;font-size:.88rem}.footer-inner{justify-content:space-between;gap:24px;display:flex}@media (width<=640px){.container{width:min(100% - 32px,960px)}.header-inner{min-height:64px}.nav-list{gap:14px;font-size:.85rem}.hero{padding:60px 0 44px}.project-grid{grid-template-columns:1fr}.footer-inner{flex-wrap:wrap}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{transition:none!important;animation:none!important}.project-card:hover{transform:none}}.brand-icon{flex:none;width:23px;height:23px;display:inline-flex}.brand-icon svg{fill:currentColor;width:100%;height:100%}.social-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;display:grid}.social-chip{border:1px solid #e2e6eb;border-radius:8px;align-items:center;gap:12px;padding:14px;transition:border-color .16s,background .16s;display:flex}.social-chip:hover{background:#f8fafc;border-color:#a7b8cf}@media (width<=640px){.header-inner{flex-wrap:wrap;justify-content:center;gap:8px;padding-block:12px}.nav-list{flex-wrap:wrap;justify-content:center}}.article-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:20px;margin-top:20px;display:grid}.article-card{background:#fff;border:1px solid #e2e6eb;border-radius:10px;flex-direction:column;min-width:0;transition:transform .18s,box-shadow .18s,border-color .18s;display:flex;overflow:hidden}.article-card:hover{border-color:#b7c6da;transform:translateY(-2px);box-shadow:0 8px 24px #14283c12}.article-image{aspect-ratio:16/9;color:#64748b;letter-spacing:-.03em;background:#edf2f7;justify-content:center;align-items:center;font-size:1.25rem;font-weight:700;display:flex;overflow:hidden}.article-image img{object-fit:cover;width:100%;height:100%;transition:transform .25s;display:block}.article-card:hover .article-image img{transform:scale(1.025)}.article-content{flex-direction:column;flex:1;gap:10px;padding:20px;display:flex}.article-meta{color:#64748b;flex-wrap:wrap;gap:12px;font-size:.8rem;display:flex}.article-card-title{overflow-wrap:anywhere;margin:0;font-size:1.07rem;line-height:1.45}.article-description{color:#606a79;-webkit-line-clamp:3;-webkit-box-orient:vertical;margin:0;font-size:.9rem;line-height:1.65;display:-webkit-box;overflow:hidden}.article-tags{flex-wrap:wrap;gap:6px;margin-top:auto;padding-top:8px;display:flex}.article-tags span{color:#52647a;background:#f1f5f9;border-radius:5px;padding:4px 8px;font-size:.76rem}.dev-empty{color:#64748b;text-align:center;background:#f8fafc;border:1px dashed #cbd5e1;border-radius:10px;padding:26px}.dev-profile-link{margin-top:22px;font-size:.9rem}.dev-profile-link a{color:#1d4ed8}.dev-profile-link a:hover{text-underline-offset:4px;text-decoration:underline}@media (width<=640px){.article-grid{grid-template-columns:1fr}}@media (prefers-reduced-motion:reduce){.article-card:hover,.article-card:hover .article-image img{transform:none}}.dev-load-more{color:#334155;font:inherit;cursor:pointer;background:#fff;border:1px solid #cbd5e1;border-radius:8px;margin:32px auto 0;padding:12px 26px;font-size:.92rem;transition:background-color .16s,border-color .16s;display:block}.dev-load-more:hover{background:#f1f5f9;border-color:#94a3b8}.dev-load-more:focus-visible{outline-offset:3px;outline:2px solid #2563eb}.dev-load-more:disabled{cursor:wait;opacity:.65}.dev-load-more[hidden]{display:none}.article-categories{flex-wrap:wrap;gap:9px;margin:32px 0 24px;display:flex}.article-categories[hidden]{display:none}.category-button{color:#526070;font:inherit;cursor:pointer;background:#fff;border:1px solid #e2e8f0;border-radius:999px;padding:9px 15px;font-size:.85rem;line-height:1.4;transition:background-color .16s,border-color .16s,color .16s}.category-button:hover{background:#f1f5f9;border-color:#cbd5e1}.category-button[aria-pressed=true]{color:#fff;background:#334155;border-color:#334155;font-weight:600}.category-button:focus-visible{outline-offset:3px;outline:2px solid #2563eb}@media (prefers-reduced-motion:reduce){.category-button{transition:none}}.home-articles .article-grid{overscroll-behavior-x:contain;scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch;grid-template-columns:none;grid-auto-columns:260px;grid-auto-flow:column;gap:16px;margin-top:20px;padding:2px 2px 14px;scroll-padding-inline:2px;display:grid;overflow-x:auto}.home-articles .article-card{scroll-snap-align:start}.home-articles .article-content{gap:8px;padding:16px}.home-articles .article-card-title{font-size:.96rem}.home-articles .article-description{-webkit-line-clamp:2;font-size:.84rem}.home-articles .article-image{aspect-ratio:16/9}.home-articles .article-tags span{font-size:.72rem}@media (width<=640px){.home-articles .article-grid{grid-auto-columns:min(78vw,260px);gap:12px}}@media (prefers-reduced-motion:reduce){.home-articles .article-grid{scroll-snap-type:none}}.project-cover-link{border-radius:10px;width:min(100%,520px);margin:30px auto 16px;display:block}.project-cover{border:1px solid #e2e6eb;border-radius:10px;width:100%;height:auto;display:block}.project-cover-link:hover .project-cover{border-color:#94a3b8}.project-body{margin-top:36px}.project-body h2{margin:32px 0 14px}.project-body p,.project-body ul,.project-body ol{margin:0 0 18px}.project-body li+li{margin-top:6px}.project-body a{color:#1d4ed8;text-underline-offset:3px;text-decoration:underline}.project-result-figure{width:min(100%,520px);margin:32px auto}.project-result-figure a{display:block}.project-result-figure img{border:1px solid #e2e6eb;border-radius:10px;width:100%;height:auto;margin:0;display:block}.project-result-figure figcaption{color:#64748b;text-align:center;margin-top:10px;font-size:.82rem;line-height:1.6}
