:root{--color-ink: #242424;--color-ink-subtle: #555555;--color-ink-muted: #6b6b6b;--color-ink-faint: #9b9b9b;--color-ink-lighter: #d4d4d4;--color-border: #e6e6e6;--color-border-faint: #f5f5f5;--color-surface: #ffffff;--color-surface-subtle: #f9f9f9;--color-surface-faint: #f5f5f5;--color-surface-tag: #f2f2f2;--color-accent: #0066cc;--color-accent-dark: #004499;--color-accent-bg: rgba(0, 102, 204, 0.05);--color-accent-ring: rgba(0, 102, 204, 0.1);--color-linkedin: #0077b5;--color-linkedin-dark: #006699;--color-success: #10b981;--font-sans: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif;--font-mono: "SF Mono", Menlo, Monaco, Consolas, monospace;--weight-regular: 400;--weight-medium: 500;--weight-semibold: 600;--weight-bold: 700;--text-2xs: 0.6875rem;--text-xs: 0.75rem;--text-sm: 0.8125rem;--text-base: 1rem;--text-brand: 0.85rem;--text-toc: 1.125rem;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 20px;--space-6: 24px;--space-7: 28px;--space-8: 32px;--space-9: 36px;--space-10: 40px;--space-12: 48px;--space-15: 60px;--space-16: 64px;--space-20: 80px;--radius-sm: 3px;--radius-md: 4px;--radius-lg: 8px;--radius-pill: 20px;--radius-badge: 16px;--radius-circle: 50%;--transition-fast: 0.2s;--transition-normal: 0.3s}*{margin:0;padding:0;box-sizing:border-box}body{font-family:var(--font-sans);line-height:1.6;color:var(--color-ink);background:var(--color-surface);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-size:var(--text-base)}.wrapper{max-width:1400px;margin:0 auto;padding:0 var(--space-6) var(--space-20)}.content-container{display:grid;grid-template-columns:200px 1fr 300px;gap:var(--space-12);align-items:start}@media (max-width: 1200px){.content-container{grid-template-columns:1fr 280px}.content-container .sidebar-left{display:none}}@media (max-width: 768px){.content-container{grid-template-columns:1fr}.content-container .sidebar-right{display:none}}header{padding:19px 0;border-bottom:1px solid var(--color-border);margin-bottom:38px}header .header-content{display:flex;justify-content:space-between;align-items:center}header h1{font-size:var(--text-brand);font-weight:var(--weight-semibold);letter-spacing:0.12em}header h1 a{color:var(--color-ink-faint);text-decoration:none;transition:color var(--transition-fast)}header h1 a:hover{color:var(--color-ink-muted)}header .header-nav{display:flex;gap:var(--space-6);align-items:center}header .header-nav .nav-link{color:var(--color-ink-muted);text-decoration:none;font-size:0.9em;font-weight:var(--weight-medium);transition:color var(--transition-fast)}header .header-nav .nav-link:hover{color:var(--color-ink)}header .header-nav .nav-link.nav-icon{font-size:1.3em;display:inline-flex;align-items:center;justify-content:center}header .header-nav .nav-link.nav-icon i{transition:transform var(--transition-fast)}header .header-nav .nav-link.nav-icon:hover i{transform:translateY(-2px)}header .header-nav .nav-link.nav-icon .fa-linkedin{color:var(--color-linkedin)}header .header-nav .nav-link.nav-icon .fa-file-pdf{color:#dc3545}header .header-nav .nav-link.nav-icon .fa-file-code{color:#007acc}header .header-nav .nav-link.nav-button{padding:var(--space-2) var(--space-5);border:1px solid var(--color-ink);border-radius:var(--space-6);color:var(--color-ink);font-weight:var(--weight-semibold);transition:all var(--transition-fast)}header .header-nav .nav-link.nav-button:hover{background:var(--color-ink);color:var(--color-surface)}header .site-description{display:none}.bio-section{max-width:680px;margin:0 auto var(--space-15);padding:var(--space-10) 0;border-bottom:1px solid var(--color-border)}.bio-section .bio-text{font-size:1.15em;line-height:1.7;color:#292929}h1,h2,h3,h4,h5,h6{font-weight:var(--weight-bold);letter-spacing:-0.015em;color:var(--color-ink);line-height:1.25}h2{font-size:1.8em;margin:var(--space-12) 0 var(--space-6)}h3{font-size:1.4em;margin:var(--space-9) 0 var(--space-4)}main{max-width:100%;margin:0;min-width:0}main>h2:first-child{margin-top:0}.sidebar-left{position:sticky;top:var(--space-6);align-self:start}.sidebar-right{position:sticky;top:var(--space-6);align-self:start}.table-of-contents{font-size:var(--text-sm)}.table-of-contents .toc-header{font-weight:var(--weight-semibold);font-size:var(--text-xs);text-transform:uppercase;color:var(--color-ink-muted);margin-bottom:var(--space-4)}.table-of-contents #toc-list{display:flex;flex-direction:column;gap:var(--space-3)}.table-of-contents .toc-link{color:var(--color-ink-muted);text-decoration:none;line-height:1.4;transition:all var(--transition-fast);display:block;padding-left:var(--space-2);border-left:2px solid transparent;margin-left:-8px}.table-of-contents .toc-link:hover{color:var(--color-ink)}.table-of-contents .toc-link.active{color:var(--color-accent);font-weight:var(--weight-semibold);border-left-color:var(--color-accent);background:var(--color-accent-bg)}.table-of-contents .toc-link.toc-h3{padding-left:var(--space-6);font-size:var(--text-sm)}.post-timeline{font-size:var(--text-sm)}.post-timeline .timeline-header{font-weight:var(--weight-bold);font-size:var(--text-toc);color:var(--color-ink);margin-bottom:var(--space-6)}.post-timeline .timeline-track{position:relative;display:flex;flex-direction:column;gap:0}.post-timeline .timeline-track::before{content:'';position:absolute;left:6px;top:12px;bottom:12px;width:2px;background:var(--color-border)}.post-timeline .timeline-item{position:relative;display:flex;align-items:flex-start;gap:var(--space-3);text-decoration:none;padding:var(--space-2) 0;transition:all var(--transition-normal) ease}.post-timeline .timeline-item .timeline-dot{position:relative;z-index:1;width:14px;height:14px;border-radius:var(--radius-circle);background:var(--color-surface);border:2px solid var(--color-ink-lighter);flex-shrink:0;transition:all var(--transition-normal) ease;margin-top:2px}.post-timeline .timeline-item .timeline-year{color:var(--color-ink-muted);font-size:var(--text-xs);font-weight:var(--weight-medium);line-height:1.2;min-width:32px;transition:all var(--transition-normal) ease}.post-timeline .timeline-item .timeline-content{display:flex;flex-direction:column;gap:var(--space-1);opacity:0;max-height:0;overflow:hidden;transition:all var(--transition-normal) ease;transform:translateX(-10px)}.post-timeline .timeline-item .timeline-content .timeline-date{font-size:var(--text-2xs);color:var(--color-ink-muted);font-weight:var(--weight-regular);line-height:1.2}.post-timeline .timeline-item .timeline-content .timeline-title{color:var(--color-ink);font-size:var(--text-sm);line-height:1.3;font-weight:var(--weight-medium)}.post-timeline .timeline-item:hover .timeline-dot{background:var(--color-accent);border-color:var(--color-accent);transform:scale(1.3);box-shadow:0 0 0 var(--space-1) var(--color-accent-ring)}.post-timeline .timeline-item:hover .timeline-year{color:var(--color-accent);font-weight:var(--weight-semibold)}.post-timeline .timeline-item:hover .timeline-content{opacity:1;max-height:100px;transform:translateX(0)}.sidebar-widget{background:var(--color-surface-subtle);border-radius:var(--radius-lg);padding:var(--space-6);margin-bottom:var(--space-6)}.sidebar-widget:last-child{margin-bottom:0}.author-card .author-bio{font-size:0.9375rem;line-height:1.6;color:var(--color-ink);margin-bottom:var(--space-5)}.author-card .author-links{display:flex;flex-direction:column;gap:var(--space-3)}.author-card .author-link{display:inline-flex;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-4);background:var(--color-surface);color:var(--color-ink);text-decoration:none;border-radius:var(--radius-md);font-size:0.9375rem;font-weight:var(--weight-medium);transition:all var(--transition-fast);border:1px solid var(--color-border)}.author-card .author-link i{color:var(--color-linkedin);font-size:1.1em}.author-card .author-link:hover{background:var(--color-surface-faint);transform:translateY(-1px)}.author-card .author-link.author-link-button{background:var(--color-ink);color:var(--color-surface);border-color:var(--color-ink)}.author-card .author-link.author-link-button:hover{background:#3d3d3d}.tags-widget .widget-title{font-weight:var(--weight-semibold);font-size:var(--text-sm);color:var(--color-ink);margin-bottom:var(--space-4)}.tags-widget .tags-list{display:flex;flex-wrap:wrap;gap:var(--space-2)}.tags-widget .sidebar-tag{display:inline-block;padding:6px var(--space-3);background:var(--color-surface);color:var(--color-ink-muted);border-radius:var(--radius-badge);font-size:var(--text-sm);font-weight:var(--weight-regular);border:1px solid var(--color-border)}a{color:var(--color-accent);text-decoration:none;transition:color var(--transition-fast)}a:hover{color:var(--color-accent-dark)}.posts-grid{display:grid;gap:var(--space-16);margin:0;max-width:100%}.post-card{display:flex;flex-direction:column}.post-card:last-child{padding-bottom:var(--space-10)}.post-card .post-card-image-link{display:block;margin-bottom:var(--space-8);overflow:hidden;border-radius:var(--radius-md);background:var(--color-surface-faint)}.post-card .post-card-image-link .post-card-image{width:100%;height:auto;display:block;aspect-ratio:16 / 9;object-fit:cover;transition:transform var(--transition-normal) ease}.post-card .post-card-image-link .post-card-image:hover{transform:scale(1.03)}.post-card .post-card-content{flex:1}.post-card .post-card-date{display:block;font-size:var(--text-sm);color:var(--color-ink-muted);margin-bottom:var(--space-4);font-weight:var(--weight-regular);letter-spacing:0}.post-card .post-card-title{margin:0 0 var(--space-4) 0;font-size:2rem;line-height:1.25;font-weight:var(--weight-medium);letter-spacing:-0.01em}.post-card .post-card-title a{color:var(--color-ink-subtle);text-decoration:none}.post-card .post-card-title a:hover{color:#333333}.post-card .post-card-subtitle{font-size:var(--text-base);line-height:1.5;color:var(--color-ink-muted);margin-bottom:var(--space-4);font-weight:var(--weight-regular)}.post-card .post-card-excerpt{font-size:var(--text-base);line-height:1.5;color:var(--color-ink-muted);margin-bottom:var(--space-5);font-weight:var(--weight-regular)}.post-card .post-card-meta{display:flex;align-items:center;gap:var(--space-2);flex-wrap:wrap;margin-top:var(--space-5)}.post-card .post-card-meta .reading-time{font-size:var(--text-sm);color:var(--color-ink-muted);font-weight:var(--weight-regular)}.post-card .post-card-tags{display:flex;gap:var(--space-2);flex-wrap:wrap}.post-card .post-card-tags .tag-badge{display:inline-block;padding:6px var(--space-3);background:var(--color-surface-tag);color:var(--color-ink-muted);border-radius:var(--radius-pill);font-size:var(--text-sm);font-weight:var(--weight-regular)}.no-posts{text-align:center;color:var(--color-ink-muted);font-style:italic;padding:var(--space-15) var(--space-5)}.post{max-width:100%}.post-hero{margin:-20px 0 var(--space-12) 0;width:100%}.post-hero img{width:100%;height:auto;display:block;border-radius:var(--radius-lg);box-shadow:0 2px 12px rgba(0,0,0,0.08)}.post-hero .image-caption{text-align:center;font-size:0.85em;color:var(--color-ink-muted);font-style:italic;margin-top:var(--space-3);line-height:1.4}.post-header{margin-bottom:38px;padding-bottom:19px;border-bottom:1px solid var(--color-border)}.post-header h1{font-size:2.5em;line-height:1.2;margin-bottom:var(--space-4);font-weight:var(--weight-medium);color:var(--color-ink-subtle);letter-spacing:normal}.post-header .post-subtitle{font-size:1.3em;line-height:1.4;color:var(--color-ink-muted);margin-bottom:19px;font-weight:var(--weight-regular)}.post-header .post-meta-wrapper{display:flex;align-items:center;justify-content:space-between;gap:var(--space-6)}.post-header .post-meta{font-size:0.9em;color:var(--color-ink-muted);display:flex;align-items:center;flex-wrap:wrap;gap:var(--space-2);margin:0}.post-header .post-meta time{font-variant-numeric:tabular-nums}.post-header .post-meta .post-header-tags{display:flex;gap:var(--space-2);margin-left:var(--space-2)}.post-header .post-meta .post-header-tags .tag-inline{background:var(--color-surface-faint);padding:2px var(--space-2);border-radius:var(--radius-sm);font-size:0.9em}.post-header .share-button-group{display:flex;gap:var(--space-3);flex-shrink:0}.post-header .share-button{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;padding:0;border:1px solid var(--color-border);border-radius:var(--radius-circle);background:var(--color-surface);color:var(--color-ink);font-size:1em;text-decoration:none;cursor:pointer;transition:all var(--transition-fast);font-family:inherit}.post-header .share-button i{font-size:0.95em}.post-header .share-button:hover{background:var(--color-surface-faint);border-color:var(--color-ink-lighter);transform:translateY(-2px)}.post-header .share-button.copied{background:var(--color-success);color:var(--color-surface);border-color:var(--color-success)}.post-header .share-linkedin{background:var(--color-linkedin);color:var(--color-surface);border-color:var(--color-linkedin)}.post-header .share-linkedin:hover{background:var(--color-linkedin-dark);border-color:var(--color-linkedin-dark)}.post-content{font-size:1.05em;line-height:1.8;color:var(--color-ink)}.post-content p{margin:var(--space-7) 0}.post-content h2{margin-top:var(--space-12);margin-bottom:var(--space-5)}.post-content h3{margin-top:var(--space-9);margin-bottom:var(--space-4)}.post-content img{max-width:100%;height:auto;margin:var(--space-10) 0;border-radius:var(--radius-md)}.post-content code{background:var(--color-surface-faint);padding:3px 6px;border-radius:var(--radius-sm);font-size:0.9em;font-family:var(--font-mono);color:var(--color-ink)}.post-content pre{background:var(--color-surface-faint);padding:var(--space-5);border-radius:var(--radius-md);overflow-x:auto;margin:var(--space-8) 0}.post-content pre code{background:none;padding:0}.post-content ul,.post-content ol{margin:var(--space-6) 0;padding-left:var(--space-7)}.post-content ul li,.post-content ol li{margin:var(--space-3) 0;line-height:1.7}.post-content blockquote{border-left:3px solid var(--color-ink);padding-left:var(--space-5);margin:var(--space-8) 0;font-style:italic;color:var(--color-ink-muted)}.post-content .table-wrapper{overflow-x:auto;margin:var(--space-8) 0;-webkit-overflow-scrolling:touch}.post-content table{width:100%;border-collapse:collapse;margin:var(--space-8) 0;font-size:0.9em;line-height:1.5;white-space:nowrap}.post-content table th,.post-content table td{padding:var(--space-3) var(--space-4);border:1px solid var(--color-border);text-align:left;vertical-align:top;white-space:normal;min-width:100px}.post-content table th{background:var(--color-surface-faint);font-weight:var(--weight-semibold);white-space:nowrap}.post-content table tr:nth-child(even){background:var(--color-surface-subtle)}.post-content hr{border:none;border-top:1px solid var(--color-border);margin:var(--space-12) 0}.post-content a{color:var(--color-accent);text-decoration:underline;text-decoration-color:rgba(0,102,204,0.3);text-underline-offset:2px}.post-content a:hover{text-decoration-color:var(--color-accent)}.post-comments{margin-top:var(--space-15);padding-top:var(--space-10);border-top:1px solid var(--color-border)}.post-comments h2{font-size:1.4em;margin:0 0 var(--space-6) 0}.post-footer{margin-top:var(--space-15);padding-top:var(--space-10);border-top:1px solid var(--color-border)}.post-footer .post-navigation .back-link{color:var(--color-ink-muted);text-decoration:none;font-size:0.95em;display:inline-block;transition:color var(--transition-fast)}.post-footer .post-navigation .back-link:hover{color:var(--color-ink)}.archive-container{margin:var(--space-10) 0}.archive-year{margin-bottom:var(--space-12)}.archive-year h2{font-size:2em;margin-bottom:var(--space-6);color:var(--color-ink)}.archive-posts{display:flex;flex-direction:column;gap:var(--space-5)}.archive-post{display:flex;gap:var(--space-6);padding:var(--space-4) 0;border-bottom:1px solid var(--color-border-faint)}.archive-post:last-child{border-bottom:none}.archive-post .archive-date{font-size:0.85em;color:var(--color-ink-muted);font-weight:var(--weight-medium);min-width:60px;padding-top:var(--space-1)}.archive-post .archive-post-info{flex:1}.archive-post .archive-post-info h3{font-size:1.2em;margin:0 0 var(--space-2) 0;font-weight:var(--weight-semibold)}.archive-post .archive-post-info h3 a{color:var(--color-ink);text-decoration:none}.archive-post .archive-post-info h3 a:hover{color:var(--color-accent)}.archive-post .archive-post-info .archive-tags{display:flex;gap:6px;flex-wrap:wrap}.bio-links-page{display:flex;gap:var(--space-4);flex-wrap:wrap;margin:var(--space-8) 0}.bio-links-page .bio-link{display:inline-flex;align-items:center;gap:var(--space-2);padding:var(--space-3) var(--space-6);background:var(--color-surface-faint);color:var(--color-ink);text-decoration:none;border-radius:var(--radius-md);font-size:var(--text-base);font-weight:var(--weight-medium);transition:all var(--transition-fast)}.bio-links-page .bio-link i{font-size:1.1em}.bio-links-page .bio-link .fa-linkedin{color:var(--color-linkedin)}.bio-links-page .bio-link .fa-file-pdf{color:#dc3545}.bio-links-page .bio-link .fa-file-code{color:#007acc}.bio-links-page .bio-link:hover{background:var(--color-border);transform:translateY(-1px)}.bio-disclaimer{font-size:0.9em;color:var(--color-ink-muted);font-style:italic;line-height:1.6;padding-top:var(--space-8);border-top:1px solid var(--color-border);margin-top:var(--space-12)}footer{text-align:center;padding-top:var(--space-15);margin-top:var(--space-20);border-top:1px solid var(--color-border);color:var(--color-ink-muted);font-size:0.9em}@media (max-width: 768px){body{font-size:var(--text-base)}.wrapper{padding:var(--space-6) var(--space-4) var(--space-15)}header{margin-bottom:var(--space-10)}header .header-content{flex-direction:column;align-items:flex-start;gap:var(--space-4)}header h1{font-size:1.6em}header .header-nav{gap:var(--space-4)}header .header-nav .nav-link{font-size:0.85em}.bio-section{padding:var(--space-6) 0;margin-bottom:var(--space-10)}.bio-section .bio-text{font-size:var(--text-base)}main h2{font-size:1.5em;margin:var(--space-8) 0 var(--space-4)}.post-card{padding-bottom:var(--space-8)}.post-card .post-card-title{font-size:1.4em}.post-header h1{font-size:1.8em}.post-content{font-size:var(--text-base)}.post-content p{margin:var(--space-5) 0}}@media (max-width: 480px){header h1{font-size:1.4em}.post-header h1{font-size:1.6em}.share-button-group{flex-direction:column}.share-button-group .share-button{width:100%;justify-content:center}}
