@font-face{font-family:Geist;font-style:normal;font-display:swap;font-weight:400 500;src:url(/fonts/geist-latin-wght-normal.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root[data-mode=light]{--bg: #f2f2f2;--card: #fafafa;--card-hover: #f3f3f3;--ink: #0f0f0f;--ink-2: #1f1f1f;--ink-3: #333333;--ink-4: #5c5c5c;--hair: rgba(0, 0, 0, .1)}:root{--bg: #0f0f0f;--card: #1a1a1a;--card-hover: #202020;--ink: #ffffff;--ink-2: #e6e6e6;--ink-3: #cccccc;--ink-4: #999999;--hair: rgba(255, 255, 255, .1);--sans: "Geist", system-ui, -apple-system, sans-serif;--mono: ui-monospace, "SF Mono", Menlo, monospace;--cjk: "Liu Jian Mao Cao";--sig-name-dur: .52s;--sig-name-ease: cubic-bezier(.22, .61, .36, 1);--sig-dither-start: .38s;--sig-dither-stag: 30ms;--sig-dither-dur: .38s;--sig-dither-steps: 4;--sig-body-lead: .18s;--sig-body-stag: 28ms;--sig-body-dur: .56s;--sig-body-ease: cubic-bezier(.22, .61, .36, 1)}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--sans);font-size:16px;line-height:24px;font-weight:430;letter-spacing:-.011em;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}main{min-height:100svh;max-width:680px;margin:0 auto;padding:144px 20px 80px;display:flex;flex-direction:column;justify-content:space-between;gap:96px}.stack{display:flex;flex-direction:column;gap:72px}.intro{display:flex;flex-direction:column;gap:24px}.namerow{display:flex;align-items:flex-start;gap:16px}.name{margin:0;flex:1 0 0;min-width:0;color:var(--ink)}.handle{margin:0;width:128px;flex-shrink:0;letter-spacing:-.01em;text-align:right;color:var(--ink-4);text-decoration:none;transition:color .15s ease}.handle:hover{color:var(--ink-2)}.handle:focus-visible{outline:1px solid var(--ink-4);outline-offset:2px;border-radius:2px}.bio{display:flex;flex-direction:column;gap:16px}.bio p{margin:0;color:var(--ink-4);text-wrap:pretty}a.u{color:var(--ink-3);cursor:pointer;text-decoration:none;transition:color .15s ease}a.u:hover{color:var(--ink)}a.u:focus-visible{outline:1px solid var(--ink-4);outline-offset:2px;border-radius:2px}.loc{display:flex;align-items:center;gap:10px}.loc p{margin:0;color:var(--ink-4)}.sw{position:relative;width:17px;height:17px;flex-shrink:0;background:none;border:0;padding:0;cursor:pointer;color:var(--ink-4)}.sw:hover{color:var(--ink-2)}.sw:focus-visible{outline:2px solid var(--ink-2);outline-offset:3px;border-radius:2px}.sw svg{position:absolute;inset:0;width:100%;height:100%;transition:opacity .5s cubic-bezier(.4,0,.2,1),transform .5s cubic-bezier(.4,0,.2,1)}.sw .sun{opacity:0;transform:rotate(-90deg) scale(.6)}.sw .moon{opacity:1;transform:none}:root[data-mode=light] .sw .sun{opacity:1;transform:none}:root[data-mode=light] .sw .moon{opacity:0;transform:rotate(90deg) scale(.6)}.namerow .sw{margin-left:auto;align-self:center}.section{display:flex;flex-direction:column;gap:16px}.label{margin:0;color:var(--ink-2)}.group{display:flex;flex-direction:column;gap:16px;padding-bottom:8px}.company{position:relative;margin:0;padding-top:10px;color:var(--ink-3)}.company:before{content:"";position:absolute;top:0;left:0;right:0;height:1px;background:var(--hair);transform-origin:left center}.rows{display:flex;flex-direction:column;gap:0;margin:-8px 0}.row{display:flex;align-items:center;gap:6px;padding:8px 0 8px 16px;color:var(--ink-4);text-decoration:none;white-space:nowrap;transition:opacity .15s ease,color .15s ease}.row .title{flex-shrink:0}.row .year{margin-left:auto;flex-shrink:0;font-variant-numeric:tabular-nums}.row .arrow,.row .lock{opacity:0;transform:translate(-4px);transition:opacity .15s ease,transform .15s ease}.row .lock{display:inline-flex;align-items:center;line-height:0;cursor:help}.row.link{cursor:pointer}.row.locked{cursor:default}.row.link:focus-visible{outline:1px solid var(--ink-4);outline-offset:3px;border-radius:2px}@media(hover:hover)and (pointer:fine){.rows:has(.row:hover) .row{opacity:.3}.rows:has(.row:hover) .row:hover{opacity:1}.row:hover{color:var(--ink-2)}.row.link:hover .arrow,.row.locked:hover .lock{opacity:1;transform:translate(0)}.row.locked:hover .lock{opacity:.55}}.grid{display:flex;align-items:flex-start;gap:8px}.col{flex:1 0 0;min-width:0;display:flex;flex-direction:column;gap:8px}.card{position:relative;aspect-ratio:316 / var(--h);overflow:hidden;display:flex;align-items:flex-end;padding:8px;border-radius:8px;background:var(--card);color:var(--ink);text-decoration:none}.card .media{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}.card .preview{position:absolute;top:0;left:0;width:400%;height:400%;border:0;transform:scale(.25);transform-origin:0 0;pointer-events:none;opacity:0;transition:opacity .4s ease}.card .preview.ready{opacity:1}.card .preview.day{width:100%;height:100%;transform:none;transition:opacity .7s cubic-bezier(.4,0,.2,1)}.card .preview.day.on{opacity:1;pointer-events:auto}.card .preview.day.parked{display:none}@media(pointer:coarse){.card .preview.day.on{pointer-events:none}}.card.motion{background:var(--bg)}.card.motion .media{mix-blend-mode:screen}:root[data-mode=light] .card.motion:before{content:"";position:absolute;inset:0;z-index:1;border-radius:inherit;pointer-events:none;box-shadow:inset 0 0 0 1px var(--hair)}.caption{position:relative;z-index:1;display:flex;align-items:flex-end;justify-content:space-between;gap:12px;width:100%;font-size:15px;line-height:1;white-space:nowrap}.caption.end{justify-content:flex-end}.caption .muted,.caption .date{opacity:.6}.card.motion .caption{opacity:0;transform:translateY(3px);transition:opacity .18s ease,transform .18s ease}.card.motion:after{content:"";position:absolute;inset:auto 0 0;height:46%;background:linear-gradient(transparent,#0000009e);opacity:0;transition:opacity .18s ease;pointer-events:none}:root[data-mode=light] .card.motion:after{background:linear-gradient(#f2f2f200,#f2f2f2db)}:root:not([data-mode=light]) .card.motion:after{background:linear-gradient(#0f0f0f00,#0f0f0fcc)}.card.motion:hover .caption,.card.motion:focus-visible .caption{opacity:1;transform:translateY(0)}.card.motion:hover:after,.card.motion:focus-visible:after{opacity:1}.card.link{cursor:pointer;transition:background-color .15s ease}.card.link:not(.motion):hover{background:var(--card-hover)}.card.link:focus-visible{outline:1px solid var(--ink-4);outline-offset:2px}.viewer[hidden]{display:none}.viewer{position:fixed;inset:0;z-index:40;display:flex;align-items:center;justify-content:center;padding:24px}.viewer-scrim{position:absolute;inset:0;background:#000000b8;backdrop-filter:blur(3px);animation:v-fade .2s ease both}.viewer-win{position:relative;display:flex;flex-direction:column;width:min(1120px,100%);height:min(760px,100%);border-radius:10px;overflow:hidden;background:var(--card);border:1px solid rgba(255,255,255,.12);box-shadow:0 24px 70px #0000008c;animation:v-in .26s cubic-bezier(.2,.8,.2,1) both}@keyframes v-fade{0%{opacity:0}}@keyframes v-in{0%{opacity:0;transform:translateY(10px) scale(.985)}}.viewer-bar{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:12px;padding:7px 10px;border-bottom:1px solid rgba(255,255,255,.09);background:#ffffff05;flex-shrink:0}.viewer-name{display:flex;align-items:center;gap:7px;justify-content:center;color:var(--ink-2);white-space:nowrap}.viewer-btn{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;border:0;border-radius:5px;background:transparent;color:var(--ink-4);cursor:pointer;text-decoration:none;flex-shrink:0}.viewer-btn:hover{background:#ffffff17;color:var(--ink)}.viewer-btn:focus-visible{outline:1px solid var(--ink-4);outline-offset:1px}#viewer-close{justify-self:start}.viewer-url{justify-self:end;color:#5c5c5c;font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.viewer-frame{flex:1;width:100%;border:0;background:var(--bg)}body.viewer-open{overflow:hidden}@media(max-width:680px){.viewer{padding:0}.viewer-win{width:100%;height:100%;border-radius:0;border:0}.viewer-url{display:none}}footer{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}.quote{margin:0;flex:1 0 0;min-width:0;color:var(--ink-3)}.quote .cjk{font-family:var(--cjk),var(--sans);font-size:.92em;letter-spacing:.02em}.links{display:flex;gap:12px;flex-shrink:0;white-space:nowrap}.links a{color:var(--ink-4);text-decoration:none}.links a:hover{color:var(--ink)}.links a:focus-visible{outline:1px solid var(--ink-4);outline-offset:2px;border-radius:2px}html[data-anim] .rv{animation-duration:var(--dur, .55s);animation-timing-function:var(--ease, cubic-bezier(.2, .8, .2, 1));animation-fill-mode:backwards;animation-delay:calc(var(--i, 0) * var(--stag, 26ms) + var(--lead, 0ms))}html[data-anim] .rv.settled,html[data-anim] .rv.settled .ch{animation:none}@keyframes a-fadeup{0%{opacity:0;transform:translateY(8px)}}@keyframes a-blurup{0%{opacity:0;filter:blur(8px);transform:translateY(16px)}}@keyframes a-fade{0%{opacity:0}}@keyframes a-tile{0%{opacity:0;transform:scale(.96)}}@keyframes a-settle{0%{opacity:0;transform:scale(.985)}}@keyframes a-track{0%{opacity:0;letter-spacing:.06em}}@keyframes a-ink{0%{opacity:.5;-webkit-mask-size:100% 0%;mask-size:100% 0%}to{opacity:1;-webkit-mask-size:100% 100%;mask-size:100% 100%}}@keyframes a-line{0%{transform:scaleX(0)}}@keyframes a-intro{0%{opacity:0;transform:translateY(6px);filter:blur(3px) brightness(var(--light-brightness, 1))}}html[data-anim=signature] .rv{animation-name:a-blurup;animation-delay:calc(var(--sig-body-lead) + var(--b, 0) * var(--sig-body-stag));animation-duration:var(--sig-body-dur);animation-timing-function:var(--sig-body-ease)}html[data-anim=signature] .intro .rv{animation-name:a-intro}html[data-anim=signature] .name,html[data-anim=signature] #theme-switch{animation:a-fadeup var(--sig-name-dur) var(--sig-name-ease) backwards;animation-delay:0ms}html[data-anim=signature] .handle{animation:none;opacity:1}html[data-anim=signature] .handle .ch{animation:a-fade var(--sig-dither-dur) steps(var(--sig-dither-steps),end) both;animation-delay:calc(var(--sig-dither-start) + var(--s, 0) * var(--sig-dither-stag))}html[data-anim=fade-up] .rv{animation-name:a-fadeup}html[data-anim=blur-up] .rv{animation-name:a-blurup;--stag: 34ms;--dur: .7s}html[data-anim=cascade] .rv{animation-name:a-fadeup;--stag: 16ms;--dur: .4s}html[data-anim=progressive] .rv{animation-name:a-fadeup;animation-delay:calc(var(--t, 1) * 95ms);--dur: .6s}html[data-anim=map-settle] main{animation:a-settle .8s cubic-bezier(.16,1,.3,1) both}html[data-anim=map-settle] .rv{animation:none}html[data-anim=ink-bleed] .rv{animation-name:a-ink;-webkit-mask-image:linear-gradient(#000,#000);mask-image:linear-gradient(#000,#000);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:top left;mask-position:top left;--stag: 30ms;--dur: .5s;--ease: cubic-bezier(.22, .61, .36, 1)}html[data-anim=dither] .rv{animation-name:a-fade;--stag: 26ms;--dur: .6s;--ease: steps(6, end)}html[data-anim=hairline] .company:before{animation:a-line .6s cubic-bezier(.2,.8,.2,1) both;animation-delay:calc(var(--i, 0) * 26ms)}html[data-anim=hairline] .rv{animation-name:a-fade;--stag: 22ms;--lead: .26s;--dur: .5s}html[data-anim=tiles-first] .rv{animation-name:a-fadeup;--stag: 20ms;--lead: .3s}html[data-anim=tiles-first] .rv.card{animation-name:a-tile;animation-delay:calc(var(--ci, 0) * 55ms);--dur: .6s}html[data-anim=type-settle] .rv{animation-name:a-track;--stag: 28ms;--dur: .7s}@media(prefers-reduced-motion:reduce){html[data-anim] .rv,html[data-anim] main,html[data-anim] .name,html[data-anim] .handle .ch,html[data-anim] .company:before{animation:none!important}.card.link,.row,.row .arrow{transition:none}}@media(max-width:680px){main{padding:64px 16px 40px;gap:48px}.stack{gap:48px}.namerow{justify-content:space-between}.name{flex:0 1 auto}.handle{width:auto;text-align:right}.row{white-space:normal;gap:12px}}html.theming,html.theming *,html.theming *:before,html.theming *:after{transition-property:background-color,color,border-color,fill,stroke,box-shadow,text-decoration-color!important;transition-duration:.7s!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}html.theming .card .preview.day{transition-property:opacity!important}html.theming .sw svg{transition-property:opacity,transform!important;transition-duration:.5s!important}.light,.window{position:fixed;inset:0;z-index:30;pointer-events:none;overflow:hidden}.light{mix-blend-mode:multiply}@media(max-width:680px){.light,.window{display:none}}.window{mix-blend-mode:screen;opacity:0}:root[data-mode=light] .window{mix-blend-mode:multiply}.window canvas{width:100%;height:100%;display:block}.light-receiver{filter:brightness(var(--light-brightness, 1));text-shadow:0 .35px .6px rgba(246,228,190,var(--light-rim, 0)),0 0 3px rgba(245,225,185,var(--light-glow, 0))}@media(forced-colors:active){.light-receiver{filter:none;text-shadow:none}}.lp[hidden],.lp [hidden]{display:none!important}.lp{position:fixed;left:16px;bottom:16px;z-index:50;width:220px;background:#181816e0;backdrop-filter:blur(20px);border:1px solid rgba(255,255,255,.12);border-radius:8px;font-family:var(--mono);font-size:11px;letter-spacing:0;color:#999;overflow:hidden}.lp button{font:inherit;color:inherit;background:none;border:0;cursor:pointer}.lp-head{display:flex;justify-content:space-between;width:100%;padding:8px 10px;color:#e6e6e6!important}.lp-chev{transition:transform .2s}.lp{max-height:calc(100vh - 32px);overflow-y:auto;scrollbar-width:thin}.lp.closed .lp-chev{transform:rotate(-90deg)}.lp.closed .lp-body{display:none}.lp.closed{width:196px}.lp-body{padding:0 10px 10px;display:flex;flex-direction:column;gap:8px}.lp-shapes{display:flex;flex-wrap:wrap;gap:4px}.lp-shapes button{padding:4px 7px;border-radius:4px;border:1px solid rgba(255,255,255,.1)!important}.lp-shapes button:hover{color:#e6e6e6}.lp-shapes button[aria-pressed=true]{background:#e6e6e6;color:#141414}.lp-row{display:grid;grid-template-columns:58px 1fr 30px;align-items:center;gap:6px}.lp-source{display:flex;justify-content:space-between;color:#aaa;font-size:10px;padding-top:4px}.lp-hour{grid-template-columns:30px 1fr 58px}.lp-hour output{white-space:nowrap;color:#aaa}.lp-arrival{display:flex;flex-direction:column;gap:8px;padding-top:6px;border-top:1px solid rgba(255,255,255,.1)}.lp-arrival svg{display:block;touch-action:none;max-width:170px;margin:0 auto;overflow:visible}.lp-arrival .ac-box{fill:none;stroke:#ffffff24;stroke-width:.6}.lp-arrival .ac-arm{stroke:#ffffff59;stroke-width:.6}.lp-arrival .ac-curve{fill:none;stroke:#e6e6e6;stroke-width:1.4}.lp-arrival .ac-handle{fill:#e6e6e6;cursor:grab}.lp-arrival .ac-play{fill:#ff4da6}#lp-arrival-read{display:block;color:#aaa;line-height:1.5;white-space:normal}.lp-row input{width:100%;accent-color:#e6e6e6;margin:0}.lp-row output{text-align:right;color:#666}.lp-actions{display:flex;gap:4px}.lp-actions button{flex:1;padding:4px;border-radius:4px;border:1px solid rgba(255,255,255,.1)!important}.lp-actions button[aria-pressed=true]{background:#ded9cc;color:#171715}.lp-actions button:hover{color:#e6e6e6}
