:root{--radius: 8px;--font-serif: "Crimson Pro", serif;--font-sans: "Inter", sans-serif;--font-mono: "Fira Code", monospace;--step--1: clamp(.85rem, .8rem + .2vw, .95rem);--step-0: clamp(1rem, .95rem + .3vw, 1.125rem);--step-1: clamp(1.25rem, 1.15rem + .6vw, 1.5rem);--step-2: clamp(1.6rem, 1.4rem + 1vw, 2rem);--step-3: clamp(2.2rem, 1.8rem + 1.5vw, 2.8rem);--step-4: clamp(2.8rem, 2rem + 2vw, 3.5rem);--space-xs: .5rem;--space-sm: .75rem;--space-md: 1.25rem;--space-lg: 2rem;--space-xl: 3.5rem}:root[data-theme=light]{--bg: #f4ecd8;--surface: #ebdbb2;--border: #d5c4a1;--text-primary: #3c3836;--text-secondary: #665c54;--accent: #b16286;--accent-soft: #d3869b;--code-bg: #e5d5b5}:root[data-theme=dark]{--bg: #282828;--surface: #32302f;--border: #504945;--text-primary: #ebdbb2;--text-secondary: #a89984;--accent: #d3869b;--accent-soft: #b16286;--code-bg: #3c3836}*,*:before,*:after{box-sizing:border-box}html{font-size:16px}body{margin:0;background:var(--bg);color:var(--text-primary);font-family:var(--font-serif);font-size:var(--step-0);line-height:1.7;transition:background .25s ease,color .25s ease}.site-header{border-bottom:1px solid var(--border);background:var(--bg)}.site-inner{max-width:1100px;margin:0 auto;padding:var(--space-md);display:flex;justify-content:space-between;align-items:center}.site-title{font-family:var(--font-sans);font-weight:600;font-size:var(--step-1);text-decoration:none;color:var(--text-primary)}#theme-toggle{background:transparent;border:1px solid var(--border);border-radius:var(--radius);padding:.4rem .75rem;cursor:pointer;color:var(--text-primary);display:flex;align-items:center;gap:.5rem}#theme-toggle:hover{border-color:var(--accent)}.theme-icon{font-size:1.2rem;transition:transform .3s ease}.sun{display:none}.moon{display:block}:root[data-theme=dark] .sun{display:block}:root[data-theme=dark] .moon{display:none}.site-main{max-width:1100px;margin:0 auto;padding:var(--space-xl) var(--space-md)}h1,h2,h3,h4{font-family:var(--font-sans);font-weight:600;line-height:1.2;margin-top:var(--space-lg)}h1{font-size:var(--step-4);margin-top:0}h2{font-size:var(--step-2)}h3{font-size:var(--step-1)}p{margin:var(--space-md) 0}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}.node-card{border:1px solid var(--border);background:var(--surface);border-radius:var(--radius);padding:var(--space-lg);transition:border .2s ease}.node-card:hover{border-color:var(--accent-soft)}hr{border:none;border-top:1px solid var(--border);margin:var(--space-xl) 0}.prose code{font-family:var(--font-mono);background:var(--code-bg);padding:.15rem .35rem;border-radius:4px;font-size:.9em}.prose pre{background:var(--code-bg);padding:var(--space-md);border-radius:var(--radius);overflow-x:auto;font-family:var(--font-mono)}.prose blockquote{border-left:4px solid var(--accent);padding-left:var(--space-md);color:var(--text-secondary);margin:var(--space-lg) 0}button,a{transition:color .2s ease,border-color .2s ease}section{margin:4rem 0;align-items:center;align-content:center}.hero h1{font-size:2.5rem;margin-bottom:.5rem;text-align:center}.subtitle{font-size:1.25rem;max-width:700px;text-align:center;margin:0 auto}.intro{max-width:700px;margin-top:1rem;margin:1rem auto 0;opacity:.8;text-align:center}.about-hero{text-align:center;padding:var(--space-xl) var(--space-md)}.about-subtitle{font-size:var(--step-1);color:var(--text-secondary);margin-top:var(--space-md)}.about-content{max-width:700px;margin:0 auto;padding:var(--space-md)}.about-content section{margin-bottom:var(--space-xl)}.about-content h2{margin-top:0}.node{max-width:800px;margin:0 auto}.node-header{margin-bottom:var(--space-lg)}.thread-badge{display:inline-flex;align-items:center;gap:.35rem;background:var(--code-bg);padding:.25rem .5rem;border-radius:4px;font-size:.75rem;font-family:var(--font-mono);margin-top:var(--space-sm)}.thread-badge i{font-size:.85rem}.tags{display:flex;flex-wrap:wrap;gap:var(--space-xs);list-style:none;padding:0;margin:var(--space-sm) 0 0}.tag{background:var(--surface);color:var(--accent);padding:.25rem .5rem;border-radius:4px;font-size:.75rem;font-family:var(--font-mono)}.node-core,.node-media,.node-context{margin-top:var(--space-lg)}.node-context details{background:var(--code-bg);border-radius:var(--radius);overflow:hidden}.node-context summary{padding:var(--space-sm) var(--space-md);cursor:pointer;font-family:var(--font-mono);font-size:.85rem;background:var(--border)}.node-context summary:hover{background:var(--border)}.context-label{font-weight:600}.context-hint{opacity:.7;font-size:.8rem}.node-references{margin-top:var(--space-xl);padding-top:var(--space-lg);border-top:1px solid var(--border)}.node-references ul{list-style:none;padding:0}.node-references li{margin-bottom:var(--space-xs)}.node-references a{font-family:var(--font-mono);font-size:.9rem}.media-item{margin:var(--space-md) 0}.media-item img,.media-item video{max-width:100%;border-radius:var(--radius)}.file-download{display:inline-flex;align-items:center;gap:var(--space-xs);background:var(--accent);color:#fff;padding:.5rem 1rem;border-radius:var(--radius);text-decoration:none;font-size:.9rem}.file-download:hover{background:var(--accent-soft)}.social-links{display:flex;gap:var(--space-sm)}.social-link{color:var(--text-secondary);transition:color .2s ease}.social-link:hover{color:var(--accent)}@media(max-width:640px){.social-links{gap:var(--space-xs)}.social-link{padding:.25rem}}.project-list{display:grid;gap:1.5rem;margin-top:2rem}.project-card{display:block;padding:1.5rem;border:1px solid var(--border);border-radius:8px;text-decoration:none}.project-card:hover{background:var(--surface)}.btn{display:inline-block;padding:.75rem 1.5rem;border-radius:var(--radius);font-weight:600;text-decoration:none;transition:all .2s ease}.btn{background:var(--accent);color:#fff;border:1px solid var(--accent)}.btn:hover{background:var(--accent-soft);border-color:var(--accent-soft);text-decoration:none}.btn-outline{background:transparent;color:var(--accent);border:1px solid var(--border)}.btn-outline:hover{background:var(--surface);border-color:var(--accent);color:var(--accent)}.section-intro{color:var(--text-secondary);max-width:600px;margin:.5rem auto 2rem;text-align:center}.view-all{text-align:center;margin-top:2rem}.view-all a{color:var(--accent)}.hero{text-align:center;padding:var(--space-xl) var(--space-md)}.hero-links{display:flex;gap:1rem;justify-content:center;flex-wrap:wrap;margin-top:var(--space-lg)}.about-me{background:var(--surface);padding:var(--space-xl);border-radius:var(--radius);border:1px solid var(--border)}.bio{font-size:1.1rem;line-height:1.8}.focus{margin-top:var(--space-md);color:var(--text-secondary)}.experience .job{background:var(--surface);padding:var(--space-lg);border-radius:var(--radius);margin-bottom:var(--space-md);border:1px solid var(--border)}.experience .job-header{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:var(--space-md)}.experience .job-header strong{font-size:var(--step-1);color:var(--text-primary)}.experience .date{color:var(--text-secondary);font-size:var(--step--1);font-family:var(--font-mono)}.skills{margin:var(--space-xl) 0}.skills-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:var(--space-md)}.skill-category{background:var(--surface);padding:var(--space-lg);border-radius:var(--radius);border:1px solid var(--border)}.skill-category h3{font-size:var(--step-0);margin-bottom:var(--space-sm);border-bottom:1px solid var(--border);padding-bottom:var(--space-xs)}.skill-category p{margin:0;color:var(--text-secondary);font-size:.9rem}.project-tags{margin:.5rem 0}.project-desc{color:var(--text-secondary);font-size:.9rem;line-height:1.6}@media(max-width:640px){.hero-links{flex-direction:column;align-items:center}.btn{width:100%;text-align:center}.experience .job-header{flex-direction:column}.hero h1{font-size:2rem}}.site-nav{display:flex;gap:var(--space-md);font-family:var(--font-sans);font-size:var(--step--1);margin-left:auto;margin-right:var(--space-md)}.site-nav a{color:var(--text-secondary);text-decoration:none}.site-nav a:hover{color:var(--accent);text-decoration:none}@media(max-width:640px){.site-nav{display:none}}.hero{text-align:left;padding:var(--space-xl) 0 var(--space-lg);max-width:780px;margin:0 auto}.hero h1{font-size:var(--step-4);margin:0 0 var(--space-sm);letter-spacing:-.02em;text-align:left}.hero-tagline{font-family:var(--font-sans);font-size:var(--step-1);color:var(--text-secondary);margin:0;font-weight:400}.work{max-width:780px;margin:0 auto;padding:var(--space-lg) 0 var(--space-xl)}.work h1,.work h2{margin-top:0;margin-bottom:var(--space-lg);text-align:left;font-size:var(--step-2)}.work-list{list-style:none;padding:0;margin:0}.work-item{margin:0;border-top:1px solid var(--border)}.work-list .work-item:last-child{border-bottom:1px solid var(--border)}.work-link{display:grid;grid-template-columns:4rem 1fr;gap:var(--space-md);padding:var(--space-md) var(--space-xs);text-decoration:none;color:inherit;align-items:baseline;transition:background .15s ease}.work-link:hover{background:var(--surface);text-decoration:none}.work-year{font-family:var(--font-mono);font-size:var(--step--1);color:var(--text-secondary);letter-spacing:.02em}.work-body{display:flex;flex-direction:column;gap:var(--space-xs);min-width:0}.work-title{font-family:var(--font-sans);font-weight:600;font-size:var(--step-1);color:var(--text-primary);line-height:1.3}.work-summary{color:var(--text-secondary);opacity:.8;font-size:var(--step-0);line-height:1.5;font-family:var(--font-serif)}.work-tags{display:flex;flex-wrap:wrap;gap:var(--space-xs);margin-top:var(--space-xs);font-family:var(--font-mono);font-size:.72rem;color:var(--text-secondary);letter-spacing:.02em}.work-tag:before{content:"·";margin-right:var(--space-xs);opacity:.5}.work-tags>.work-tag:first-child:before{content:"";margin-right:0}.work-all{margin-top:var(--space-lg);font-family:var(--font-mono);font-size:var(--step--1);color:var(--text-secondary)}.work-all a{color:var(--text-secondary)}.work-all a:hover{color:var(--accent)}@media(max-width:640px){.work-link{grid-template-columns:1fr;gap:var(--space-xs)}.work-year{font-size:.7rem}}.now{max-width:720px;margin:0 auto;padding:var(--space-xl) 0}.now h1{margin-top:0;margin-bottom:var(--space-sm);text-align:left}.now-meta{font-family:var(--font-sans);color:var(--text-secondary);font-size:var(--step--1);margin-top:0}.now-footer{margin-top:var(--space-xl);padding-top:var(--space-md);border-top:1px solid var(--border);font-family:var(--font-mono);font-size:.78rem;color:var(--text-secondary)}.site-footer{border-top:1px solid var(--border);margin-top:var(--space-xl);padding:var(--space-lg) 0;background:var(--bg)}.site-footer .site-inner{font-family:var(--font-mono);font-size:.78rem;color:var(--text-secondary);letter-spacing:.02em;padding:0 var(--space-md)}.footer-authorship a,.footer-contact a{color:var(--text-secondary);text-decoration:underline;text-decoration-color:var(--border);text-underline-offset:3px}.footer-authorship a:hover,.footer-contact a:hover{color:var(--accent);text-decoration-color:currentColor}.footer-contact{display:flex;gap:var(--space-xs);align-items:center}.footer-sep{opacity:.5}@media(max-width:640px){.site-footer .site-inner{flex-direction:column;gap:var(--space-xs);align-items:flex-start}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}
