*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}html{font-size:16px;-webkit-text-size-adjust:100%;scroll-behavior:smooth}body{font-family:"Inter",-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;font-size:1rem;line-height:1.7;color:#1a1a1a;background:#fff;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}a{color:#111827;text-decoration:underline;text-underline-offset:3px;text-decoration-color:#e5e7eb;transition:text-decoration-color .15s ease,color .15s ease}a:hover{color:#000;text-decoration-color:#000}img{max-width:100%;height:auto;display:block}ul,ol{padding-left:1.5rem}h1,h2,h3,h4,h5,h6{font-weight:600;line-height:1.3;letter-spacing:-0.02em}p{margin-bottom:1rem}p:last-child{margin-bottom:0}hr{border:none;border-top:1px solid #e5e7eb;margin:2rem 0}code{font-family:"JetBrains Mono","Fira Code","Courier New",monospace;font-size:.875em;background:#f3f4f6;padding:.15em .4em;border-radius:3px}pre{font-family:"JetBrains Mono","Fira Code","Courier New",monospace;font-size:.875rem;background:#f8f9fa;border:1px solid #e5e7eb;border-radius:6px;padding:1rem 1.5rem;overflow-x:auto;margin-bottom:1.5rem;line-height:1.6}pre code{background:none;padding:0;font-size:inherit}blockquote{border-left:3px solid #e5e7eb;padding-left:1rem;color:#6b7280;margin:1.5rem 0;font-style:italic}table{width:100%;border-collapse:collapse;font-size:.875rem;margin-bottom:1.5rem}table th,table td{text-align:left;padding:.5rem 1rem;border-bottom:1px solid #e5e7eb}table th{font-weight:600;color:#6b7280;font-size:.75rem;text-transform:uppercase;letter-spacing:.05em}.container{max-width:720px;margin:0 auto;padding:0 1.5rem}.site-header{position:sticky;top:0;z-index:100;background:hsla(0,0%,100%,.92);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);border-bottom:1px solid #e5e7eb;height:60px;display:flex;align-items:center}.nav{display:flex;align-items:center;justify-content:space-between;width:100%}.nav-logo{font-weight:600;font-size:.875rem;text-decoration:none;color:#1a1a1a;letter-spacing:-0.01em}.nav-logo:hover{color:#000;text-decoration:none}.nav-links{display:flex;list-style:none;padding:0;gap:1.5rem}.nav-links a{font-size:.875rem;color:#6b7280;text-decoration:none;transition:color .15s ease}.nav-links a:hover,.nav-links a.active{color:#1a1a1a}.nav-toggle{display:none;flex-direction:column;gap:5px;background:none;border:none;cursor:pointer;padding:.5rem}.nav-toggle span{display:block;width:22px;height:2px;background:#1a1a1a;border-radius:2px;transition:.15s ease}@media(max-width: 600px){.nav-toggle{display:flex}.nav-links{display:none;position:absolute;top:60px;left:0;right:0;background:#fff;border-bottom:1px solid #e5e7eb;flex-direction:column;padding:1rem 1.5rem;gap:.75rem}.nav-links.open{display:flex}.nav-links a{font-size:1rem}}.main-content{min-height:calc(100vh - 60px - 80px);padding:4rem 0 5rem}.site-footer{border-top:1px solid #e5e7eb;padding:1.5rem 0}.site-footer p{font-size:.875rem;color:#6b7280;margin:0}.site-footer a{color:#6b7280;text-decoration-color:rgba(0,0,0,0)}.site-footer a:hover{color:#1a1a1a;text-decoration-color:#1a1a1a}.hero{margin-bottom:5rem}.hero h1{font-size:1.875rem;margin-bottom:1rem;letter-spacing:-0.03em}.hero .hero-bio{font-size:1.125rem;color:#6b7280;max-width:560px;margin-bottom:1.5rem}.hero .hero-links{display:flex;gap:1rem;flex-wrap:wrap}.hero .hero-links a{font-size:.875rem;font-weight:500;text-decoration:none;color:#6b7280;border:1px solid #e5e7eb;padding:.5rem 1rem;border-radius:4px;transition:border-color .15s ease,color .15s ease}.hero .hero-links a:hover{border-color:#1a1a1a;color:#1a1a1a}.section{margin-bottom:5rem}.section-title{font-size:.875rem;font-weight:600;text-transform:uppercase;letter-spacing:.08em;color:#6b7280;margin-bottom:1.5rem}.section-more{margin-top:1.5rem;font-size:.875rem}.section-more a{color:#6b7280;text-decoration-color:rgba(0,0,0,0)}.section-more a:hover{color:#1a1a1a;text-decoration-color:#1a1a1a}.page-title{font-size:1.5rem;letter-spacing:-0.03em;margin-bottom:2rem}.project-grid{display:grid;grid-template-columns:1fr 1fr;gap:1rem}@media(max-width: 600px){.project-grid{grid-template-columns:1fr}}.project-card{display:block;border:1px solid #e5e7eb;border-radius:8px;overflow:hidden;text-decoration:none;color:#1a1a1a;transition:border-color .15s ease,box-shadow .15s ease}.project-card:hover{border-color:#9ca3af;box-shadow:0 2px 12px rgba(0,0,0,.06);text-decoration:none;color:#1a1a1a}.project-card .project-card-img{aspect-ratio:16/9;overflow:hidden;background:#f3f4f6}.project-card .project-card-img img{width:100%;height:100%;object-fit:cover;transition:transform .3s ease}.project-card:hover .project-card-img img{transform:scale(1.03)}.project-card .project-card-body{padding:1rem}.project-card .project-card-body h3{font-size:.875rem;font-weight:600;margin-bottom:.5rem;line-height:1.4}.project-card .project-card-body p{font-size:.875rem;color:#6b7280;line-height:1.5;margin-bottom:.75rem;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.project-card .project-card-tags{display:flex;flex-wrap:wrap;gap:.25rem}.post-list{list-style:none;padding:0}.post-item{display:flex;align-items:baseline;justify-content:space-between;gap:1rem;padding:.75rem 0;border-bottom:1px solid #e5e7eb}.post-item:first-child{border-top:1px solid #e5e7eb}@media(max-width: 500px){.post-item{flex-direction:column;gap:.25rem}}.post-item-title{font-size:.875rem;font-weight:500;text-decoration:none;color:#1a1a1a;flex:1}.post-item-title:hover{text-decoration:underline;text-underline-offset:3px}.post-item-date{font-size:.75rem;color:#6b7280;white-space:nowrap;font-variant-numeric:tabular-nums}.post-item-desc{font-size:.875rem;color:#6b7280;margin-top:.25rem;width:100%}.post{padding-top:0}.post-header{margin-bottom:2rem;padding-bottom:2rem;border-bottom:1px solid #e5e7eb}.post-meta{display:flex;align-items:center;gap:.75rem;margin-bottom:1rem;flex-wrap:wrap}.post-meta time{font-size:.875rem;color:#6b7280}.post-title{font-size:1.875rem;letter-spacing:-0.03em;margin-bottom:.75rem}@media(max-width: 600px){.post-title{font-size:1.5rem}}.post-description{font-size:1.125rem;color:#6b7280;margin-top:.75rem}.post-cover{margin-bottom:2rem;border-radius:8px;overflow:hidden;border:1px solid #e5e7eb}.post-cover img{width:100%;height:auto}.post-content h2{font-size:1.25rem;margin-top:3rem;margin-bottom:1rem;padding-bottom:.5rem;border-bottom:1px solid #e5e7eb}.post-content h3{font-size:1.125rem;margin-top:2rem;margin-bottom:.75rem}.post-content h4{font-size:1rem;margin-top:1.5rem;margin-bottom:.5rem}.post-content p{margin-bottom:1rem;color:#374151}.post-content ul,.post-content ol{margin-bottom:1rem}.post-content ul li,.post-content ol li{margin-bottom:.25rem}.post-content img{border-radius:6px;margin:1.5rem 0;border:1px solid #e5e7eb}.post-content a{color:#1a1a1a;text-decoration-color:#e5e7eb}.post-content a:hover{text-decoration-color:#1a1a1a}.post-footer{margin-top:3rem;padding-top:1.5rem;border-top:1px solid #e5e7eb}.back-link{font-size:.875rem;color:#6b7280;text-decoration:none}.back-link:hover{color:#1a1a1a}.tag{display:inline-block;font-size:.75rem;font-weight:500;background:#f3f4f6;color:#374151;padding:2px 8px;border-radius:3px;text-decoration:none}.post-tags{display:flex;flex-wrap:wrap;gap:.25rem}.btn{display:inline-block;font-size:.875rem;font-weight:500;padding:.5rem 1rem;border:1px solid #e5e7eb;border-radius:4px;text-decoration:none;color:#1a1a1a;transition:border-color .15s ease,background .15s ease;margin-top:1rem}.btn:hover{border-color:#1a1a1a;background:#f3f4f6;text-decoration:none}.about-content h2{font-size:1.125rem;margin-top:2rem;margin-bottom:.75rem}.about-content p{color:#374151}.about-content ul{color:#374151;margin-bottom:1rem}.about-content ul li{margin-bottom:.25rem}.not-found{text-align:center;padding:6rem 0}.not-found h1{font-size:6rem;font-weight:700;letter-spacing:-0.05em;color:#e5e7eb;line-height:1;margin-bottom:1rem}.not-found p{color:#6b7280;margin-bottom:1.5rem}.highlight{background:#f8f9fa;border:1px solid #e5e7eb;border-radius:6px;margin-bottom:1.5rem;overflow-x:auto}.highlight pre{border:none;background:none;margin:0;padding:1rem 1.5rem}/*# sourceMappingURL=main.css.map */