:root{--font-sans: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif;--font-mono: "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;--fs-micro: .6875rem;--fs-mono: .8125rem;--fs-sm: .875rem;--fs-base: 1.0625rem;--fs-lg: 1.1875rem;--fs-xl: 1.5rem;--fs-2xl: 2rem;--sp-1: .25rem;--sp-2: .5rem;--sp-3: .75rem;--sp-4: 1rem;--sp-5: 1.5rem;--sp-6: 2rem;--sp-7: 3rem;--sp-8: 4rem;--sp-9: 6rem;--measure: 42rem;--radius: 4px;--radius-lg: 8px;--dur: .16s;--ease: cubic-bezier(.4, 0, .2, 1)}:root,:root[data-theme=dark]{--bg: #0e0f11;--bg-subtle: #15171a;--bg-inset: #1b1e22;--text: #e8e8e6;--text-muted: #8a8f98;--text-faint: #5c6169;--line: #22252a;--line-strong: #313640;--accent: #7ea6d9;--accent-quiet: rgba(126, 166, 217, .14);--selection: rgba(126, 166, 217, .26);color-scheme:dark}:root[data-theme=light]{--bg: #fbfbfa;--bg-subtle: #f3f3f1;--bg-inset: #ecece9;--text: #16181b;--text-muted: #6b7076;--text-faint: #9aa0a6;--line: #e4e4e1;--line-strong: #cfcfca;--accent: #2f5d8a;--accent-quiet: rgba(47, 93, 138, .1);--selection: rgba(47, 93, 138, .18);color-scheme:light}*,*:before,*:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{margin:0;background-color:var(--bg);color:var(--text);font-family:var(--font-sans);font-size:var(--fs-base);font-weight:400;line-height:1.7;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;overflow-x:hidden}#root{min-height:100vh}::selection{background:var(--selection)}h1,h2,h3,h4{margin:0;font-weight:600;line-height:1.25;letter-spacing:-.02em;color:var(--text);text-wrap:balance}h1{font-size:var(--fs-2xl)}h2{font-size:var(--fs-xl)}h3{font-size:var(--fs-lg)}h4{font-size:var(--fs-base)}p{margin:0}a{color:var(--accent);text-decoration:none;text-decoration-thickness:1px;text-underline-offset:3px;transition:color var(--dur) var(--ease)}a:hover{text-decoration:underline}strong{font-weight:600;color:var(--text)}img{max-width:100%;display:block}code,pre,kbd{font-family:var(--font-mono)}button{font:inherit;color:inherit;cursor:pointer}hr{border:0;border-top:1px solid var(--line);margin:var(--sp-6) 0}:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:2px}:focus:not(:focus-visible){outline:none}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}.wrap{width:100%;max-width:var(--measure);margin:0 auto;padding-inline:var(--sp-5)}@media(max-width:480px){.wrap{padding-inline:var(--sp-4)}}.stack{display:flex;flex-direction:column;gap:var(--sp-4)}.stack-lg{display:flex;flex-direction:column;gap:var(--sp-7)}.eyebrow{font-family:var(--font-mono);font-size:var(--fs-micro);font-weight:500;letter-spacing:.12em;text-transform:uppercase;color:var(--text-muted)}.mono{font-family:var(--font-mono);font-size:var(--fs-mono);color:var(--text-muted);font-variant-numeric:tabular-nums}.section-head{display:flex;align-items:center;gap:var(--sp-3);margin-bottom:var(--sp-5)}.section-head .rule{flex:1;height:1px;background:var(--line)}.section-head .more{font-family:var(--font-mono);font-size:var(--fs-mono);color:var(--text-muted);white-space:nowrap}.section-head .more:hover{color:var(--accent);text-decoration:none}.tag-row{display:flex;flex-wrap:wrap;gap:var(--sp-2)}.tag{font-family:var(--font-mono);font-size:var(--fs-micro);color:var(--text-muted);padding:2px var(--sp-2);border:1px solid var(--line);border-radius:var(--radius);white-space:nowrap}.tech-inline{font-family:var(--font-mono);font-size:var(--fs-micro);letter-spacing:.1em;text-transform:uppercase;color:var(--text-faint)}.link-quiet{color:var(--text);text-decoration:none}.link-quiet:hover{color:var(--accent);text-decoration:none}.back-link{display:inline-flex;align-items:center;gap:var(--sp-2);background:none;border:0;padding:0;font-family:var(--font-mono);font-size:var(--fs-mono);color:var(--text-muted);transition:color var(--dur) var(--ease)}.back-link:hover{color:var(--accent)}.state{font-family:var(--font-mono);font-size:var(--fs-mono);color:var(--text-muted);padding:var(--sp-6) 0}.state-error{color:var(--text)}.state-error:before{content:"! ";color:var(--accent)}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}.prose{color:var(--text);font-size:var(--fs-base);line-height:1.75;overflow-wrap:break-word}.prose>*+*{margin-top:var(--sp-4)}.prose h1,.prose h2,.prose h3,.prose h4{margin-top:var(--sp-7);margin-bottom:var(--sp-3);line-height:1.3}.prose h1{font-size:1.625rem}.prose h2{font-size:var(--fs-xl)}.prose h3{font-size:var(--fs-lg)}.prose h4{font-size:var(--fs-base)}.prose a{text-decoration:underline}.prose ul,.prose ol{padding-left:var(--sp-5)}.prose li+li{margin-top:var(--sp-2)}.prose li::marker{color:var(--text-faint)}.prose blockquote{margin:var(--sp-5) 0;padding-left:var(--sp-4);border-left:2px solid var(--line-strong);color:var(--text-muted)}.prose blockquote p+p{margin-top:var(--sp-3)}.prose :not(pre)>code{font-size:.875em;background:var(--bg-inset);border:1px solid var(--line);border-radius:var(--radius);padding:.1em .35em;color:var(--text)}.prose pre{margin:var(--sp-5) 0;padding:var(--sp-4);background:var(--bg-subtle);border:1px solid var(--line);border-radius:var(--radius-lg);overflow-x:auto;font-size:var(--fs-mono);line-height:1.65;tab-size:2}.prose pre code{background:none;border:0;padding:0;font-size:inherit}.prose img{border:1px solid var(--line);border-radius:var(--radius-lg);margin:var(--sp-5) 0}.prose hr{margin:var(--sp-7) 0}.prose .table-scroll{overflow-x:auto;margin:var(--sp-5) 0}.prose table{width:100%;border-collapse:collapse;font-size:var(--fs-sm)}.prose th,.prose td{text-align:left;padding:var(--sp-2) var(--sp-3);border-bottom:1px solid var(--line)}.prose th{font-family:var(--font-mono);font-size:var(--fs-micro);letter-spacing:.08em;text-transform:uppercase;color:var(--text-muted);font-weight:500}.prose kbd{font-size:.8em;border:1px solid var(--line-strong);border-bottom-width:2px;border-radius:var(--radius);padding:.1em .4em}.nav{display:flex;flex-wrap:wrap;gap:var(--sp-5);margin-top:var(--sp-6)}.nav-link{position:relative;padding-bottom:var(--sp-3);font-family:var(--font-mono);font-size:var(--fs-mono);letter-spacing:.02em;color:var(--text-muted);text-decoration:none}.nav-link:hover{color:var(--text);text-decoration:none}.nav-link.is-active{color:var(--text)}.nav-link.is-active:after{content:"";position:absolute;left:0;right:0;bottom:-1px;height:1px;background:var(--accent)}@media(max-width:640px){.nav{gap:var(--sp-4);margin-top:var(--sp-5)}}@media(max-width:480px){.nav{gap:var(--sp-3) var(--sp-4)}.nav-link{font-size:var(--fs-micro)}}.theme-toggle{flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;background:none;border:1px solid var(--line);border-radius:var(--radius);color:var(--text-muted);transition:color var(--dur) var(--ease),border-color var(--dur) var(--ease)}.theme-toggle:hover{color:var(--text);border-color:var(--line-strong)}.theme-toggle svg{width:14px;height:14px}.site-header{border-bottom:1px solid var(--line);padding-block:var(--sp-6) 0}.site-header-top{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--sp-4)}.site-identity{min-width:0}.site-name{display:inline-block;font-size:var(--fs-lg);font-weight:600;letter-spacing:-.02em;color:var(--text);text-decoration:none}.site-name:hover{color:var(--accent);text-decoration:none}.site-role{margin-top:2px;font-family:var(--font-mono);font-size:var(--fs-mono);color:var(--text-muted)}@media(max-width:480px){.site-header{padding-block:var(--sp-5) 0}.site-role{font-size:var(--fs-micro)}}.channels{list-style:none;margin:0;padding:0;border-top:1px solid var(--line)}.channel{display:grid;grid-template-columns:5.5rem 1fr;align-items:baseline;gap:var(--sp-4);padding-block:var(--sp-3);border-bottom:1px solid var(--line)}.channel-label{padding-top:2px}.channel-handle{font-family:var(--font-mono);font-size:var(--fs-mono);color:var(--text);overflow-wrap:anywhere}.channel-handle:hover{color:var(--accent);text-decoration:none}@media(max-width:480px){.channel{grid-template-columns:1fr;gap:var(--sp-1)}}.contact-icons{display:flex;align-items:center;gap:var(--sp-4);list-style:none;margin:0;padding:0}.contact-icons a{display:inline-flex;color:var(--text-muted);transition:color var(--dur) var(--ease)}.contact-icons a:hover{color:var(--text);text-decoration:none}.contact-icons svg{width:16px;height:16px}.site-footer{border-top:1px solid var(--line);padding-block:var(--sp-5)}.site-footer-inner{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-4)}@media(max-width:480px){.site-footer-inner{flex-direction:column;align-items:flex-start;gap:var(--sp-4)}}.site{display:flex;flex-direction:column;min-height:100vh}.site-main{flex:1;padding-block:var(--sp-8) var(--sp-9)}@media(max-width:640px){.site-main{padding-block:var(--sp-6) var(--sp-8)}}.project-row{display:flex;flex-direction:column;gap:var(--sp-2);padding-block:var(--sp-4);border-bottom:1px solid var(--line)}.project-row:first-child{border-top:1px solid var(--line)}.project-row-title{font-size:var(--fs-base);font-weight:600}.project-row-desc{font-size:var(--fs-sm);line-height:1.65;color:var(--text-muted)}.project-row-desc.is-clamped{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}@keyframes sk-pulse{0%,to{opacity:1}50%{opacity:.45}}.sk-bar,.sk-pulse{background:var(--bg-inset);animation:sk-pulse 1.5s var(--ease) infinite}.sk-bar{display:block;border-radius:var(--radius);flex-shrink:0}.sk-lines{display:flex;flex-direction:column;gap:var(--sp-2)}.sk-prose{margin-top:var(--sp-6);gap:var(--sp-3)}.sk-lines .sk-bar:nth-child(2){animation-delay:.12s}.sk-lines .sk-bar:nth-child(3){animation-delay:.24s}.sk-lines .sk-bar:nth-child(4){animation-delay:.36s}.project-row .sk-bar:nth-child(2){animation-delay:.12s}.project-row .sk-bar:nth-child(3){animation-delay:.24s}.intro-headline{font-size:var(--fs-2xl);max-width:28ch}.intro-body{display:flex;flex-direction:column;gap:var(--sp-4);margin-top:var(--sp-5);color:var(--text-muted)}.intro-body strong{color:var(--text)}.intro .tech-inline{margin-top:var(--sp-5)}.now-title{font-size:var(--fs-base);font-weight:600}.now .mono{margin-top:var(--sp-1)}.post-list{list-style:none;margin:0;padding:0;border-top:1px solid var(--line)}.post-item{display:grid;grid-template-columns:6.5rem 1fr;align-items:baseline;gap:var(--sp-4);padding-block:var(--sp-3);border-bottom:1px solid var(--line)}.post-date{font-size:var(--fs-micro);color:var(--text-faint)}@media(max-width:480px){.intro-headline{font-size:var(--fs-xl)}.post-item{grid-template-columns:1fr;gap:var(--sp-1)}}.career-list{list-style:none;margin:0;padding:0;border-top:1px solid var(--line)}.career-item{display:grid;grid-template-columns:7rem 1fr;gap:var(--sp-5);padding-block:var(--sp-5);border-bottom:1px solid var(--line)}.career-when{display:flex;flex-direction:column;font-size:var(--fs-micro);line-height:1.6;padding-top:3px}.career-when-end{color:var(--text-faint)}.career-when-end:before{content:"– "}.career-what{min-width:0}.career-title{font-size:var(--fs-base);font-weight:600}.career-place{margin-top:2px;font-family:var(--font-mono);font-size:var(--fs-mono);color:var(--text-muted)}.career-description{margin-top:var(--sp-3);font-size:var(--fs-sm);line-height:1.7;color:var(--text-muted)}.career-tags{margin-top:var(--sp-4)}@media(max-width:560px){.career-item{grid-template-columns:1fr;gap:var(--sp-3)}.career-when{flex-direction:row;gap:var(--sp-2)}}.article-head{margin-top:var(--sp-6);padding-bottom:var(--sp-5);border-bottom:1px solid var(--line)}.article-head time{display:block;margin-bottom:var(--sp-2);font-size:var(--fs-micro);color:var(--text-faint)}.article-title{font-size:var(--fs-2xl);text-wrap:balance}.article-head .tech-inline{margin-top:var(--sp-3)}.article-cover{width:100%;margin-top:var(--sp-6);border:1px solid var(--line);border-radius:var(--radius-lg)}.article .prose{margin-top:var(--sp-6)}@media(max-width:480px){.article-title{font-size:var(--fs-xl)}}.til-head{display:flex;justify-content:flex-end;margin-bottom:var(--sp-5)}.note-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--sp-6) var(--sp-5)}.note-card{display:flex;flex-direction:column;gap:var(--sp-3);color:var(--text);text-decoration:none}.note-card:hover{text-decoration:none}.note-thumb{width:100%;aspect-ratio:16 / 9;object-fit:cover;background:var(--bg-subtle);border:1px solid var(--line);border-radius:var(--radius-lg);transition:border-color var(--dur) var(--ease)}.note-thumb.is-empty{display:block}.note-card:hover .note-thumb{border-color:var(--line-strong)}.note-body{display:flex;flex-direction:column;gap:var(--sp-1)}.note-date{font-size:var(--fs-micro);color:var(--text-faint)}.note-title{font-size:var(--fs-sm);font-weight:500;line-height:1.5;transition:color var(--dur) var(--ease)}.note-card:hover .note-title{color:var(--accent)}.pager{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-4);margin-top:var(--sp-8);padding-top:var(--sp-5);border-top:1px solid var(--line)}.pager-step{background:none;border:0;padding:0;font-family:var(--font-mono);font-size:var(--fs-mono);color:var(--text-muted);transition:color var(--dur) var(--ease)}.pager-step:hover:not(:disabled){color:var(--accent)}.pager-step:disabled{color:var(--text-faint);opacity:.5;cursor:default}.pager-pages{display:flex;gap:var(--sp-1)}.pager-page{min-width:1.75rem;height:1.75rem;background:none;border:1px solid transparent;border-radius:var(--radius);font-family:var(--font-mono);font-size:var(--fs-mono);color:var(--text-muted);font-variant-numeric:tabular-nums;transition:color var(--dur) var(--ease),border-color var(--dur) var(--ease)}.pager-page:hover{color:var(--text)}.pager-page.is-current{color:var(--text);border-color:var(--line-strong)}@media(max-width:560px){.note-grid{grid-template-columns:1fr;gap:var(--sp-6)}}.connect-intro{color:var(--text-muted)}.connect-form{display:flex;flex-direction:column;gap:var(--sp-5);margin-top:var(--sp-7)}.field{display:flex;flex-direction:column;gap:var(--sp-2)}.field input,.field textarea{width:100%;padding:var(--sp-3);background:var(--bg-subtle);color:var(--text);border:1px solid var(--line);border-radius:var(--radius);font-family:var(--font-sans);font-size:var(--fs-sm);line-height:1.6;transition:border-color var(--dur) var(--ease)}.field textarea{resize:vertical;min-height:8rem}.field input:hover,.field textarea:hover{border-color:var(--line-strong)}.field input:focus-visible,.field textarea:focus-visible{outline:none;border-color:var(--accent)}.connect-actions{display:flex;align-items:center;flex-wrap:wrap;gap:var(--sp-4)}.submit-btn{padding:var(--sp-3) var(--sp-5);background:var(--text);color:var(--bg);border:1px solid var(--text);border-radius:var(--radius);font-family:var(--font-mono);font-size:var(--fs-mono);transition:opacity var(--dur) var(--ease)}.submit-btn:hover:not(:disabled){opacity:.85}.submit-btn:disabled{opacity:.5;cursor:default}.form-status{flex:1;min-width:14rem;font-size:var(--fs-sm);color:var(--text-muted)}.form-status.is-error{color:var(--text)}.connect-elsewhere{margin-top:var(--sp-8)}
