:root{--bg-color: #0d0d0d;--surface-color: #161616;--text-primary: #ededed;--text-secondary: #a0a0a0;--accent-color: #00ff9d;--accent-dim: rgba(0, 255, 157, .1);--border-color: #2a2a2a;--font-mono: "Fira Code", monospace;--font-sans: "Inter", system-ui, sans-serif;--spacing-sm: .5rem;--spacing-md: 1rem;--spacing-lg: 1.5rem;--spacing-xl: 5rem}*{box-sizing:border-box;margin:0;padding:0}body{background-color:var(--bg-color);color:var(--text-primary);font-family:var(--font-sans);line-height:1.6;-webkit-font-smoothing:antialiased;min-height:100vh;display:flex;flex-direction:column}#app{max-width:720px;margin:0 auto;padding:var(--spacing-lg) var(--spacing-md);width:100%;flex:1;display:flex;flex-direction:column}#home-view{display:flex;flex-direction:column;gap:var(--spacing-xl)}.site-header{margin-bottom:3rem;border-bottom:1px solid var(--border-color);padding-bottom:var(--spacing-lg)}.logo{font-family:var(--font-mono);font-size:1.5rem;color:var(--accent-color);margin-bottom:var(--spacing-md);letter-spacing:-.05em;text-shadow:0 0 10px var(--accent-dim)}nav{display:flex;gap:var(--spacing-md)}nav a{color:var(--text-secondary);text-decoration:none;font-family:var(--font-mono);font-size:.9rem;transition:color .2s ease}nav a:hover,nav a.active{color:var(--text-primary)}nav a.active{text-decoration:underline;text-decoration-color:var(--accent-color);text-underline-offset:4px}.content-wrapper{display:flex;flex-direction:column;gap:var(--spacing-xl)}section{display:flex;flex-direction:column}.section-header{display:flex;justify-content:space-between;align-items:baseline;padding-bottom:var(--spacing-sm);margin-bottom:.5rem}.section-title{font-family:var(--font-mono);color:var(--text-secondary);font-size:.9rem;text-transform:uppercase;letter-spacing:.1em;margin:0;opacity:1}.about-content .lead{font-size:1.4rem;color:var(--text-primary);margin-bottom:var(--spacing-md);font-weight:500;line-height:1.4}.about-content{display:flex;flex-direction:column;gap:var(--spacing-md)}.about-content p{color:#ccc;max-width:65ch;margin:0}.projects-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:var(--spacing-md)}.project-card{background:var(--surface-color);border:1px solid var(--border-color);padding:var(--spacing-md);border-radius:8px;transition:transform .2s,border-color .2s}.project-card:hover{transform:translateY(-2px);border-color:var(--accent-color)}.project-title{font-size:1.1rem;color:var(--text-primary);margin-bottom:var(--spacing-sm)}.project-desc{font-size:.9rem;color:var(--text-secondary);margin-bottom:var(--spacing-md);line-height:1.5}.feed{display:flex;flex-direction:column;gap:var(--spacing-sm)}.post-link{display:block;text-decoration:none;background:transparent;padding:var(--spacing-md);border-bottom:1px solid rgba(255,255,255,.05);transition:background .2s;border-radius:4px}.post-link:hover{background:var(--surface-color)}.post-header{display:flex;justify-content:space-between;align-items:center}.post-title{font-size:1.1rem;font-weight:500;color:var(--text-primary)}.post-meta{font-family:var(--font-mono);font-size:.8rem;color:var(--text-secondary);white-space:nowrap;margin-left:var(--spacing-md)}.tag{font-family:var(--font-mono);font-size:.75rem;color:var(--text-secondary);background:var(--surface-color);padding:2px 8px;border-radius:12px;border:1px solid var(--border-color)}.hidden{display:none!important}.back-link{display:inline-block;margin-bottom:var(--spacing-lg);color:var(--accent-color);text-decoration:none;font-family:var(--font-mono);font-size:.9rem}.back-link:hover{text-decoration:underline}.post-detail{animation:fadeIn .3s ease;max-width:65ch}.post-detail .post-title{font-size:2rem;margin-bottom:var(--spacing-sm);color:var(--text-primary)}.post-detail .post-meta{margin-left:0;margin-bottom:var(--spacing-lg);display:block;font-family:var(--font-mono);color:var(--text-secondary);font-size:.8rem}.post-detail .post-content{display:block;font-size:1.1rem;line-height:1.8;color:#ddd}.post-detail .post-content p{margin-bottom:var(--spacing-md)}.post-detail .post-tags{margin-top:var(--spacing-xl);padding-top:var(--spacing-md);border-top:1px solid var(--border-color);display:flex;gap:var(--spacing-sm)}.post-detail code{background:var(--surface-color);padding:.2em .4em;border-radius:4px;font-family:var(--font-mono);font-size:.9em;color:var(--accent-color)}.pagination{display:flex;gap:var(--spacing-md);margin-top:var(--spacing-lg);justify-content:center}.page-btn{background:var(--surface-color);border:1px solid var(--border-color);color:var(--text-secondary);padding:.5rem 1rem;border-radius:4px;cursor:pointer;font-family:var(--font-mono);font-size:.9rem;text-decoration:none;transition:all .2s}.page-btn:hover:not(.disabled){border-color:var(--accent-color);color:var(--text-primary)}.page-btn.disabled{opacity:.5;cursor:not-allowed;pointer-events:none}.section-link{font-family:var(--font-mono);font-size:.8rem;color:var(--accent-color);text-decoration:none}.section-link:hover{text-decoration:underline}.site-footer{margin-top:var(--spacing-xl);padding-top:var(--spacing-lg);border-top:1px solid var(--border-color);text-align:center;color:var(--text-secondary);font-family:var(--font-mono);font-size:.8rem}.contact-card{background:var(--surface-color);border:1px solid var(--border-color);border-radius:8px;padding:var(--spacing-lg);margin-top:var(--spacing-md);max-width:400px;animation:fadeIn .4s ease}.contact-name{font-size:1.5rem;color:var(--accent-color);margin-bottom:.2rem;font-family:var(--font-mono)}.contact-role{color:var(--text-secondary);font-size:.9rem;margin-bottom:var(--spacing-lg);font-family:var(--font-mono);opacity:.8}.contact-links{display:flex;flex-direction:column;gap:var(--spacing-md)}.contact-item{display:flex;align-items:center;gap:var(--spacing-sm);color:var(--text-primary);text-decoration:none;font-size:1rem;transition:transform .2s ease,color .2s ease}.contact-item:hover{color:var(--accent-color);transform:translate(4px)}.contact-icon{font-size:1.2rem;opacity:.8}.contact-label{border-bottom:1px solid transparent}.contact-item:hover .contact-label{border-bottom-color:var(--accent-color)}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}
