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