*,:before,:after{box-sizing:border-box;margin:0;padding:0}:root{--bg:#fff;--card-bg:#fff;--card-border:#e5e7eb;--card-shadow:#0000000f;--text-primary:#111827;--text-secondary:#6b7280;--text-tertiary:#9ca3af;--link-color:#374151;--link-hover:#111827;--divider:#f3f4f6;--toggle-bg:#f3f4f6;--toggle-icon:#6b7280;--tag-bg:#f3f4f6;--tag-text:#374151}[data-theme=dark]{--bg:#0f0f0f;--card-bg:#1a1a1a;--card-border:#2a2a2a;--card-shadow:#0000004d;--text-primary:#f3f4f6;--text-secondary:#9ca3af;--text-tertiary:#6b7280;--link-color:#d1d5db;--link-hover:#f3f4f6;--divider:#2a2a2a;--toggle-bg:#2a2a2a;--toggle-icon:#9ca3af;--tag-bg:#2a2a2a;--tag-text:#d1d5db}body{background-color:var(--bg);color:var(--text-primary);min-height:100dvh;padding:24px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;transition:background-color .3s,color .3s}.theme-toggle{background:var(--toggle-bg);width:40px;height:40px;color:var(--toggle-icon);cursor:pointer;z-index:10;border:none;border-radius:50%;justify-content:center;align-items:center;transition:background-color .3s,color .3s,transform .2s;display:flex;position:fixed;top:20px;right:20px}.theme-toggle:hover{transform:scale(1.1)}.theme-toggle svg{width:20px;height:20px;transition:opacity .3s}.icon-sun,.icon-moon{position:absolute}[data-theme=dark] .icon-sun{opacity:1}[data-theme=dark] .icon-moon,:root:not([data-theme=dark]) .icon-sun{opacity:0}:root:not([data-theme=dark]) .icon-moon{opacity:1}.site-nav{z-index:10;gap:16px;display:flex;position:fixed;top:24px;left:24px}.site-nav a{color:var(--text-tertiary);font-size:13px;text-decoration:none;transition:color .2s}.site-nav a:hover,.site-nav a.active{color:var(--text-primary)}.card{background:var(--card-bg);border:1px solid var(--card-border);width:100%;max-width:460px;box-shadow:0 4px 24px var(--card-shadow);border-radius:16px;padding:40px 36px;transition:background-color .3s,border-color .3s,box-shadow .3s}.name{letter-spacing:-.02em;font-size:24px;font-weight:700;line-height:1.2}.title{color:var(--text-secondary);margin-top:4px;font-size:15px;font-weight:400}.location{color:var(--text-tertiary);margin-top:4px;font-size:13px}.divider{background:var(--divider);height:1px;margin:24px 0;transition:background-color .3s}.section-label{text-transform:uppercase;letter-spacing:.06em;color:var(--text-tertiary);margin-bottom:8px;font-size:11px;font-weight:600}.bio{color:var(--text-secondary);font-size:14px;line-height:1.7}.section+.section{margin-top:20px}.experience-list{flex-direction:column;gap:10px;list-style:none;display:flex}.experience-item{justify-content:space-between;align-items:baseline;gap:12px;display:flex}.experience-company{color:var(--text-primary);font-size:14px;font-weight:500}.experience-role{color:var(--text-tertiary);margin-top:1px;font-size:12px}.experience-period{color:var(--text-tertiary);white-space:nowrap;flex-shrink:0;font-size:12px}.oss-list{flex-direction:column;gap:8px;list-style:none;display:flex}.oss-item a{color:var(--text-primary);font-size:14px;font-weight:500;text-decoration:none;transition:color .2s}.oss-item a:hover{color:var(--link-hover)}.oss-item .oss-desc{color:var(--text-tertiary);margin-top:1px;font-size:12px}.skills-list{flex-wrap:wrap;gap:6px;display:flex}.skill-tag{background:var(--tag-bg);color:var(--tag-text);border-radius:100px;padding:3px 10px;font-size:12px;transition:background-color .3s,color .3s}.social-links{gap:20px;margin-top:28px;display:flex}.social-links a{color:var(--link-color);align-items:center;transition:color .2s,transform .2s;display:flex}.social-links a:hover{color:var(--link-hover);transform:translateY(-2px)}.social-links svg{width:20px;height:20px}.page-home{justify-content:center;align-items:center;min-height:calc(100dvh - 48px);display:flex}.blog-container{max-width:640px;margin:0 auto;padding-top:40px}.page-title{letter-spacing:-.02em;margin-bottom:32px;font-size:24px;font-weight:700}.post-list{flex-direction:column;gap:24px;list-style:none;display:flex}.post-item a{color:inherit;border:1px solid var(--card-border);background:var(--card-bg);border-radius:12px;padding:20px;text-decoration:none;transition:border-color .2s,box-shadow .2s;display:block}.post-item a:hover{border-color:var(--text-tertiary);box-shadow:0 2px 12px var(--card-shadow)}.post-title{font-size:16px;font-weight:600;line-height:1.4}.post-description{color:var(--text-secondary);margin-top:4px;font-size:14px;line-height:1.6}.post-date{color:var(--text-tertiary);margin-top:8px;font-size:12px;display:block}.blog-post{max-width:640px;margin:0 auto;padding-top:40px}.blog-post-header{margin-bottom:32px}.blog-post-title{letter-spacing:-.02em;font-size:28px;font-weight:700;line-height:1.3}.blog-post-date{color:var(--text-tertiary);margin-top:8px;font-size:13px}.blog-post-tags{gap:6px;margin-top:12px;display:flex}.blog-post-back{color:var(--text-tertiary);margin-top:48px;font-size:13px;text-decoration:none;transition:color .2s;display:inline-block}.blog-post-back:hover{color:var(--text-primary)}.prose{color:var(--text-secondary);font-size:15px;line-height:1.8}.prose h2{color:var(--text-primary);margin-top:40px;margin-bottom:12px;font-size:20px;font-weight:600}.prose h3{color:var(--text-primary);margin-top:32px;margin-bottom:8px;font-size:17px;font-weight:600}.prose p{margin-bottom:16px}.prose a{color:var(--text-primary);text-underline-offset:2px;text-decoration:underline;transition:color .2s}.prose a:hover{color:var(--link-hover)}.prose ul,.prose ol{margin-bottom:16px;padding-left:20px}.prose li{margin-bottom:4px}.prose blockquote{border-left:3px solid var(--divider);color:var(--text-tertiary);margin:16px 0;padding-left:16px;font-style:italic}.prose code{background:var(--tag-bg);color:var(--tag-text);border-radius:4px;padding:2px 6px;font-size:.9em}.prose pre{background:var(--tag-bg);border-radius:8px;margin:16px 0;padding:16px;overflow-x:auto}.prose pre code{background:0 0;padding:0;font-size:13px;line-height:1.6}.prose img{border-radius:8px;max-width:100%;margin:16px 0}.prose hr{background:var(--divider);border:none;height:1px;margin:32px 0}@media (width<=480px){.card{padding:32px 24px}.name{font-size:22px}.site-nav{top:16px;left:16px}.blog-post-title{font-size:24px}}
