:root{color-scheme:light;--space-3xs:2px;--space-2xs:4px;--space-xs:8px;--space-sm:12px;--space-md:16px;--space-lg:24px;--space-xl:32px;--space-2xl:48px;--space-3xl:72px;--space-4xl:104px;--text-xs:.75rem;--text-sm:.8125rem;--text-md:.9375rem;--text-body:1.0625rem;--text-lg:1.1875rem;--text-xl:1.5rem;--text-2xl:1.875rem;--text-3xl:2.5rem;--text-4xl:3.25rem;--ease-out:cubic-bezier(.16, 1, .3, 1);--dur-micro:.12s;--dur-short:.2s;--color-paper:oklch(95.4% .009 92);--color-paper-2:oklch(92.8% .01 90);--color-paper-3:oklch(89.6% .011 88);--color-sheet:oklch(97.8% .006 92);--color-ink:oklch(24% .014 60);--color-ink-2:oklch(33% .012 60);--color-muted:oklch(48% .014 60);--color-rule:oklch(89% .01 80);--color-rule-2:oklch(74% .012 75);--color-accent:oklch(42% .105 352);--color-accent-2:oklch(35% .1 352);--color-accent-ink:oklch(97% .005 92);--color-focus:oklch(43% .115 352);--color-scrim:oklch(24% .015 60/.34);--color-error:oklch(48% .15 27);--color-success:oklch(46% .09 150);--container:1200px;--gutter:40px;--measure:34em;--control-h:28px;--font-display:"Newsreader", "Noto Serif CJK SC", "Source Han Serif SC", "Songti SC", "SimSun", Georgia, serif;--font-body:"Newsreader", "Noto Serif CJK SC", "Source Han Serif SC", "Songti SC", "SimSun", Georgia, serif;--font-ui:"Hanken Grotesk", "Noto Sans CJK SC", "Source Han Sans SC", "PingFang SC", "Microsoft YaHei", ui-sans-serif, system-ui, sans-serif;--font-outlier:"IBM Plex Mono", ui-monospace, "SFMono-Regular", Menlo, monospace;--radius-card:2px;--radius-pill:2px;--rule-hair:1px;--rule-bar:1px;--shadow-card:none;--z-raised:10;--z-sticky:200;--z-sticky-nav:300;--z-modal:400;--z-toast:500;--z-tooltip:600}@media (width<=60rem){:root{--gutter:28px}}@media (width<=40rem){:root{--gutter:20px;--text-3xl:2.125rem;--text-4xl:2.5rem}}*,:before,:after{box-sizing:border-box}html,body{overflow-x:clip}html{scrollbar-color:var(--color-rule-2) var(--color-paper);scroll-padding-top:5rem}body{background:var(--color-paper);color:var(--color-ink);font-family:var(--font-body);font-size:var(--text-body);font-kerning:normal;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;caret-color:var(--color-accent);margin:0;line-height:1.72}::selection{background:color-mix(in oklab, var(--color-accent) 16%, transparent);color:var(--color-ink)}:focus-visible{outline:2px solid var(--color-focus);outline-offset:3px;border-radius:1px}a{color:inherit;text-underline-offset:.2em;text-decoration-thickness:1px}h1,h2,h3,h4,h5,h6{font-family:var(--font-display);letter-spacing:0;text-wrap:balance;overflow-wrap:break-word;min-width:0;margin:0;font-weight:500;line-height:1.22}h1{font-size:var(--text-3xl)}p{text-wrap:pretty;margin:0}ul,ol{margin:0}img,video{max-width:100%;height:auto;display:block}svg{display:block}[hidden]{display:none!important}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer}table{border-collapse:collapse}.wrap{width:100%;max-width:var(--container);padding-inline:var(--gutter);margin-inline:auto}.measure{max-width:var(--measure)}.num,time,td.num{font-variant-numeric:tabular-nums}.visually-hidden{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.ui{font-family:var(--font-ui)}.mono{font-family:var(--font-outlier)}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}.now-note{margin-top:var(--space-sm);font-family:var(--font-ui);font-size:var(--text-xs);color:var(--color-muted)}.now-note a{color:var(--color-ink-2)}.summary{gap:var(--space-md);margin-top:var(--space-lg);border-top:var(--rule-hair) solid var(--color-rule-2);border-bottom:var(--rule-hair) solid var(--color-rule);grid-template-columns:repeat(4,minmax(0,1fr));display:grid}.summary__item{padding:var(--space-sm) 0}.summary__item+.summary__item{border-left:var(--rule-hair) solid var(--color-rule);padding-left:var(--space-md)}.summary__value{font-family:var(--font-display);font-variant-numeric:tabular-nums;font-size:1.625rem;font-weight:600;line-height:1.2;display:block}.summary__label{font-family:var(--font-ui);font-size:var(--text-xs);color:var(--color-muted);margin-top:2px;display:block}@media (width<=40rem){.summary{gap:0 var(--space-md);grid-template-columns:repeat(2,minmax(0,1fr))}.summary__item:nth-child(3){border-left:0;padding-left:0}}.calendar{padding-top:var(--space-xl)}.calendar__head{justify-content:space-between;align-items:baseline;gap:var(--space-2xs) var(--space-md);border-bottom:var(--rule-hair) solid var(--color-rule-2);margin-bottom:var(--space-sm);flex-wrap:wrap;padding-bottom:7px;display:flex}.calendar__head h2{font-size:1.0625rem;font-weight:600}.calendar__head p{font-family:var(--font-ui);font-size:var(--text-xs);color:var(--color-muted)}.calendar__scroll{padding-bottom:var(--space-2xs);overflow-x:auto}.calendar__months{grid-template-columns:repeat(var(--weeks), 12px);font-family:var(--font-ui);color:var(--color-muted);gap:0;min-width:max-content;margin-bottom:4px;font-size:.5625rem;display:grid}.calendar__months span{white-space:nowrap}.calendar__grid{grid-template-rows:repeat(7,10px);grid-auto-columns:10px;grid-auto-flow:column;gap:2px;width:max-content;display:grid}.calendar__day{background:var(--color-paper-2);border-radius:1px;width:10px;height:10px}.calendar__day.l1{background:color-mix(in oklab, var(--color-accent) 22%, var(--color-paper-2))}.calendar__day.l2{background:color-mix(in oklab, var(--color-accent) 38%, var(--color-paper-2))}.calendar__day.l3{background:color-mix(in oklab, var(--color-accent) 64%, var(--color-paper-2))}.calendar__day.l4{background:var(--color-accent)}.calendar__day.is-empty{visibility:hidden}.calendar__foot{justify-content:space-between;gap:var(--space-xs);margin-top:var(--space-xs);font-family:var(--font-ui);color:var(--color-muted);flex-wrap:wrap;font-size:.625rem;display:flex}.calendar__legend{align-items:center;gap:3px;display:inline-flex}.calendar__legend .calendar__day{display:inline-block}.timeline{padding-top:var(--space-xl)}.timeline .calendar__head{margin-bottom:var(--space-md)}.timeline__month+.timeline__month{margin-top:var(--space-lg)}.timeline__month-head{justify-content:space-between;align-items:baseline;gap:var(--space-md);border-bottom:var(--rule-hair) solid var(--color-rule-2);padding-bottom:5px;display:flex}.timeline__month-head h3{font-family:var(--font-outlier);letter-spacing:.05em;font-size:.6875rem;font-weight:500}.timeline__month-head p{font-family:var(--font-ui);color:var(--color-muted);font-size:.625rem}.timeline__projects{margin:0;padding:0;list-style:none}.timeline__projects>li+li{border-top:var(--rule-hair) solid var(--color-rule)}.timeline__project-head{align-items:baseline;gap:var(--space-sm);cursor:pointer;padding:8px 0;list-style:none;display:flex}.timeline__project-head::-webkit-details-marker{display:none}.timeline__project-head:after{content:"+";font-family:var(--font-outlier);color:var(--color-muted);margin-left:auto;font-size:.75rem}.timeline__project[open] .timeline__project-head:after{content:"−"}.timeline__repo{font-family:var(--font-ui);color:var(--color-ink-2);font-size:.75rem}.timeline__count{font-family:var(--font-ui);color:var(--color-muted);font-size:.625rem}.timeline__prs{margin:0 0 var(--space-xs);padding:0 0 0 var(--space-md);border-left:var(--rule-hair) solid var(--color-rule-2);list-style:none}.timeline__row{gap:var(--space-sm);grid-template-columns:2.75rem minmax(0,1fr) auto;align-items:baseline;padding:6px 0;display:grid}.timeline__row+.timeline__row{border-top:var(--rule-hair) solid var(--color-rule)}.timeline__date{font-family:var(--font-outlier);color:var(--color-muted);font-size:.625rem}.timeline__main{min-width:0}.timeline__title{overflow-wrap:anywhere;font-size:.9375rem;line-height:1.45;text-decoration:none;display:block}.timeline__title:hover{color:var(--color-accent-2)}@media (width<=44rem){.calendar__scroll{overflow-x:visible}.calendar__grid{grid-template-rows:repeat(7,5px);grid-auto-columns:5px;gap:1px}.calendar__day{width:5px;height:5px}.calendar__months{grid-template-columns:repeat(var(--weeks), 6px);margin-bottom:3px;font-size:.5rem}}@media (width<=40rem){.timeline__row{grid-template-columns:2.75rem minmax(0,1fr)}.timeline__row .badge{grid-column:2;justify-self:start;margin-top:3px}.timeline__prs{padding-left:var(--space-sm)}}
