.astro-route-announcer{clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;top:0;left:0;overflow:hidden}.tile--intro .art-slot{overflow:hidden}.tile--work{container:work/size}.tile--work .art-slot{overflow:hidden}.tile--work .wk-list{gap:3px}.tile--work .wk-room{flex:0 0 44px}.tile--work[data-size=full] .wk-more{display:none}@container work (height<=160px){.tile--work .wk-role:not([data-first]),.tile--work .wk-more{display:none}}.bento .tile[data-lifted]{border:1px dashed color-mix(in srgb, var(--ink) 30%, transparent);background:0 0}.bento .tile[data-lifted]>*{opacity:0}.pk-layer{z-index:50;--p:0;position:fixed;inset:0}.pk-backdrop{background:color-mix(in srgb, var(--night) 62%, transparent);backdrop-filter:blur(3px)saturate(.8);opacity:var(--p);position:absolute;inset:0}.pk-front{border-radius:var(--radius);will-change:transform;box-shadow:0 calc(6px + var(--lift,0) * 30px) calc(14px + var(--lift,0) * 40px) rgb(0 0 0/calc(.25 + var(--lift,0) * .25));position:fixed}.pk-front>.tile{width:100%;height:100%}.pk-front>.tile,.pk-front>.tile *{transition:none!important;animation:none!important}.pk-front>.pk-sheen{z-index:3;border-radius:var(--radius)}.pk-card{--card-h:min(calc(100dvh - 120px), 660px, calc((100vw - 32px) * 88 / 63));height:var(--card-h);width:calc(var(--card-h) * 63 / 88);touch-action:none;will-change:transform;--mx:50%;--my:50%;--hyp:0;--bgx:50%;--bgy:50%;--sheen:0;--foil:linear-gradient(135deg, #f6e7b8 0%, #c79a46 22%, #fbf1d3 42%, #b8873a 60%, #f2dda5 78%, #a87c35 100%);outline:none;margin:auto;position:fixed;inset:0;container-type:size}.pk-card:focus-visible .pk-face{box-shadow:0 0 0 3px var(--night-ink), 0 30px 60px #00000080}.pk-face{isolation:isolate;background:var(--foil);box-shadow:0 calc(18px + var(--lift,0) * 40px) calc(40px + var(--lift,0) * 50px) #00000080, inset 0 0 0 .35cqw #ffffff59;border-radius:4.6cqw;position:absolute;inset:0;overflow:hidden;transform:translateZ(0)}.pk-print{background:radial-gradient(120% 60% at 50% 0%, color-mix(in srgb, var(--coral-2) 22%, transparent), transparent 70%), var(--night);color:var(--night-ink);border-radius:2.4cqw;flex-direction:column;gap:1.8cqw;padding:2.6cqw 3.2cqw 2.2cqw;display:flex;position:absolute;inset:3.4cqw;box-shadow:inset 0 0 0 .3cqw #0000008c,0 0 0 .25cqw #ffffff40}.pk-print>*{flex-shrink:0}.pk-top{grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"stage type""name type";align-items:end;column-gap:2cqw;display:grid}.pk-stage{font-family:var(--font-pixel);letter-spacing:.04em;text-transform:uppercase;color:var(--coral-1);grid-area:stage;margin:0;font-size:2.5cqw;line-height:1.2}.pk-name{font-family:var(--font-sans);letter-spacing:-.035em;white-space:nowrap;grid-area:name;margin:0;font-size:7cqw;font-weight:650;line-height:1.05}.pk-type{background:var(--coral-2);width:8.6cqw;height:8.6cqw;color:var(--night);box-shadow:inset 0 -.6cqw 0 var(--coral-3), 0 0 0 .4cqw var(--night-ink);border-radius:50%;grid-area:type;place-items:center;display:grid}.pk-type svg{fill:currentColor;width:62%;height:62%}.pk-art{isolation:isolate;background:var(--r1);border-radius:1.2cqw;flex:none;height:47cqw;position:relative;overflow:hidden;box-shadow:inset 0 0 0 .25cqw #0006}.pk-art:before{content:"";z-index:3;border-radius:inherit;background:var(--foil) border-box;pointer-events:none;border:.8cqw solid #0000;position:absolute;inset:0;mask:linear-gradient(#000 0 0) padding-box exclude,linear-gradient(#000 0 0)}.pk-art-scene{position:absolute;inset:0}.pk-art-scene canvas{image-rendering:pixelated;image-rendering:crisp-edges;display:block}.pk-mono{z-index:1;filter:drop-shadow(0 1.6cqw #00000047);width:25.2cqw;height:25.2cqw;position:absolute;bottom:7cqw;left:50%;translate:-50%}.pk-mono-ring{fill:var(--night)}.pk-mono-face{fill:var(--night-2)}.pk-mono-ink{fill:var(--night-ink)}.pk-species{font-family:var(--font-pixel);text-align:center;text-transform:uppercase;color:#2a1d0c;background:var(--foil);clip-path:polygon(1.6cqw 0,calc(100% - 1.6cqw) 0,100% 50%,calc(100% - 1.6cqw) 100%,1.6cqw 100%,0 50%);white-space:nowrap;text-overflow:ellipsis;margin:-.6cqw 4cqw 0;padding:.9cqw 2cqw .7cqw;font-size:2.2cqw;line-height:1.2;overflow:hidden}.pk-moves{margin:0;padding:0;list-style:none;display:grid}.pk-move{border-bottom:.25cqw solid #ffffff1a;align-items:center;display:flex;position:relative}.pk-move:last-child{border-bottom:0}.pk-move-link{min-width:0;color:inherit;transition:background var(--t-hover) var(--ease-out);border-radius:1.2cqw;flex:1;align-items:center;gap:2.4cqw;padding:1.1cqw .8cqw;text-decoration:none;display:flex}.pk-cost{flex:none;justify-content:center;width:7.4cqw;display:flex}.pk-energy{background:var(--night-ink);width:6.2cqw;height:6.2cqw;color:var(--night);border-radius:50%;place-items:center;display:grid;box-shadow:inset 0 -.5cqw #b9b2a6}.pk-energy svg{width:58%;height:58%}.pk-move-text{flex:1;min-width:0;display:grid}.pk-move-name{letter-spacing:-.02em;font-size:4.4cqw;font-weight:600;line-height:1.15}.pk-move-desc{font-family:var(--font-pixel);color:var(--night-ink-2);white-space:nowrap;text-overflow:ellipsis;font-size:2.3cqw;line-height:1.35;overflow:hidden}.pk-dmg{font-family:var(--font-sans);letter-spacing:-.03em;font-variant-numeric:tabular-nums;color:var(--night-ink);flex:none;font-size:5cqw;font-weight:600}.pk-copy{border:.3cqw solid var(--night-ink-2);color:var(--night-ink);font-family:var(--font-pixel);text-transform:uppercase;cursor:pointer;transition:background var(--t-hover) var(--ease-out), border-color var(--t-hover) var(--ease-out);background:0 0;border-radius:1cqw;align-items:center;gap:1cqw;margin-left:1cqw;padding:1.2cqw 1.6cqw;font-size:2.3cqw;display:inline-flex}.pk-copy svg{width:2.6cqw;height:2.6cqw}.pk-copy[data-copied]{border-color:var(--coral-1);color:var(--coral-1)}@media (hover:hover){.pk-move-link:hover,.pk-copy:hover{background:#ffffff12}}.pk-move-link:focus-visible,.pk-copy:focus-visible{outline:.4cqw solid var(--night-ink);outline-offset:.2cqw;box-shadow:none}.pk-stats{border-top:.25cqw solid #ffffff24;grid-template-columns:repeat(3,minmax(0,1fr));gap:1.6cqw;margin:auto 0 0;padding-top:1.6cqw;display:grid}.pk-stats>div{gap:.4cqw;display:grid}.pk-stats>div:nth-child(2){text-align:center}.pk-stats>div:last-child{text-align:right}.pk-stats dt{font-family:var(--font-pixel);text-transform:uppercase;color:var(--night-ink-2);font-size:2cqw}.pk-stats dd{white-space:nowrap;margin:0;font-size:2.9cqw;font-weight:500}.pk-flavor{color:var(--night-ink-2);text-wrap:pretty;border:.25cqw solid #d8b86c8c;border-radius:1cqw;margin:0;padding:1.4cqw 2cqw;font-size:2.7cqw;font-style:italic;line-height:1.35}.pk-foot{font-family:var(--font-pixel);text-transform:uppercase;color:var(--night-ink-2);justify-content:space-between;font-size:1.9cqw;display:flex}.pk-shine,.pk-glitter,.pk-grain,.pk-glare,.pk-sheen,.pk-holo{border-radius:inherit;pointer-events:none;position:absolute;inset:0}.pk-shine,.pk-holo{background-image:repeating-linear-gradient(0deg, #ff7773 5%, #ffed5f 10%, #a8ff5f 15%, #83fff7 20%, #7894ff 25%, #d875ff 30%, #ff7773 35%), repeating-linear-gradient(133deg, #0e152e 0%, #8fa3a3 3.8%, #8fc1c1 4.5%, #8fa3a3 5.2%, #0e152e 10%, #0e152e 12%), radial-gradient(farthest-corner circle at var(--mx) var(--my), #0000001a 12%, #00000026 20%, #00000040 120%);background-blend-mode:screen, hue, hard-light;background-size:200% 700%,300% 100%,200% 100%;background-position:0% var(--bgy), var(--bgx) var(--bgy), var(--bgx) var(--bgy);mix-blend-mode:color-dodge;filter:brightness(.85)contrast(2.4)saturate(.75)}.pk-shine{z-index:2;mix-blend-mode:overlay;filter:brightness()contrast(1.5)saturate(1.5);opacity:calc(.6 + var(--hyp) * .4);padding:3.4cqw;mask:linear-gradient(#000 0 0) exclude,linear-gradient(#000 0 0) content-box}.pk-shine--body{mix-blend-mode:color-dodge;filter:brightness(.6)contrast(1.6)saturate(.7);opacity:calc(.05 + var(--hyp) * .12);padding:0;mask:none}.pk-holo{z-index:2;filter:brightness(.7)contrast(1.8)saturate(.8);opacity:calc(.12 + var(--hyp) * .38);mask:repeating-linear-gradient(0deg,#000 0 2px,#0006 2px 3px)}.pk-glitter{z-index:3;background-image:var(--pk-glitter), var(--pk-glitter);background-size:160px 160px,224px 224px;background-position:calc(var(--bgx) * 1.4) calc(var(--bgy) * 1.4), calc(var(--bgx) * -1) calc(var(--bgy) * -1);image-rendering:pixelated;mix-blend-mode:color-dodge;mask:radial-gradient(farthest-corner circle at var(--mx) var(--my), #000 0%, #00000080 22%, transparent 55%);opacity:calc(.35 + var(--hyp) * .65)}.pk-grain{z-index:4;background-image:var(--pk-grain);image-rendering:pixelated;mix-blend-mode:overlay;opacity:.32;background-size:128px 128px;animation:.9s steps(5,end) infinite pk-grain}@keyframes pk-grain{0%{background-position:0 0}20%{background-position:-37px 21px}40%{background-position:53px -42px}60%{background-position:-18px -66px}80%{background-position:71px 9px}to{background-position:0 0}}.pk-glare{z-index:5;background-image:radial-gradient(farthest-corner circle at var(--mx) var(--my), #ffffffbf 8%, #ffffff80 22%, #00000073 95%);mix-blend-mode:overlay;opacity:calc(.25 + var(--hyp) * .55)}.pk-sheen{z-index:6;background-image:linear-gradient(105deg,#0000 38%,#ffffffb3 48%,#fff6dc40 53%,#0000 62%);background-size:300% 100%;background-position:var(--sweep,0%) 0;mix-blend-mode:soft-light;opacity:var(--sheen,0)}.pk-front>.pk-sheen{mix-blend-mode:overlay}.pk-ui{opacity:var(--ui,0);pointer-events:none;justify-content:center;align-items:center;gap:16px;display:flex;position:fixed;bottom:max(14px,50dvh + min(100dvh - 120px,660px)/-2 - 52px);left:0;right:0}.pk-ui .pxb{pointer-events:auto;--pf-fill:var(--night-2);--pf-text:var(--night-ink);--pf-line:var(--night-ink);--pf-drop:#000;--pf-focus:var(--night-ink)}.pk-hint{color:var(--night-ink-2);margin:0}@media (width<=520px){.pk-hint{display:none}}@media (prefers-reduced-motion:reduce){.pk-grain{animation:none}}.tile.tile--contact{--ct-cover-min:round(down, 34cqh, 1px);--ct-cover-max:round(down, 50cqh, 1px);--ct-av:72px;container-type:size}@container (width<=300px){.tile.tile--contact .t-content{--ct-av:54px}}.tile.tile--contact .t-art.edge-top{height:100%}.tile.tile--contact .ct-cover{overflow:hidden}.tile.tile--contact .ct-cover canvas{image-rendering:pixelated;image-rendering:crisp-edges;display:block}.tile.tile--contact .t-content{grid-template-columns:auto minmax(0,1fr);grid-template-rows:minmax(var(--ct-cover-min), var(--ct-cover-max)) auto auto minmax(0, 1fr) auto minmax(0, 1fr) auto;grid-template-areas:"cover cover""title title""bio bio"". .""meta meta"". .""hello hello";align-items:baseline;gap:0;padding:0 16px 16px;display:grid}.tile.tile--contact .t-content:before{content:"";background:var(--night);z-index:-1;grid-area:2/1/-1/-1;align-self:stretch;margin:0 -16px -16px}.tile.tile--contact .t-label{background:var(--night);color:var(--night-ink);mix-blend-mode:normal;border-radius:4px;padding:3px 6px 2px;position:absolute;top:10px;left:10px}.tile.tile--contact .t-title{padding-right:calc(var(--ct-av) + 4px);letter-spacing:-.02em;white-space:nowrap;grid-area:title;margin-top:12px;font-size:1.375rem;font-weight:600;line-height:1.15}.ct-bio{font-size:var(--text-body);color:var(--night-ink);grid-area:bio;line-height:1.4;margin:8px 0 0!important}.ct-bio .tail{color:var(--night-ink-2)}.ct-meta{flex-wrap:wrap;grid-area:meta;justify-content:space-between;align-items:center;gap:8px 12px;display:flex;margin-top:12px!important}.ct-pin{font-size:var(--text-small);color:var(--night-ink-2);align-items:center;gap:8px;margin:0;display:flex}.ct-pin-icon{fill:currentColor;flex:none}.ct-icons{gap:8px;display:flex}.ct-hello{grid-area:hello;display:flex;margin-top:12px!important}.ct-hello .ct-hello-btn,.ct-hello .ct-hello-btn .pxb-frame,.ct-hello .ct-hello-btn .pxb-body{width:100%}.tile.tile--contact .pxb{--pf-fill:var(--night-2);--pf-text:var(--night-ink);--pf-line:var(--night-ink);--pf-drop:#000;--pf-focus:var(--night-ink)}@media (hover:hover){.tile.tile--contact .pxb:hover{--pf-fill:color-mix(in srgb, var(--night-ink) 10%, var(--night-2))}}.ct-copy-wrap{display:inline-flex;position:relative}.ct-copied{background:var(--night-ink);color:var(--night);white-space:nowrap;pointer-events:none;opacity:0;transition:opacity var(--t-hover) var(--ease-out), transform var(--t-hover) var(--ease-out);border-radius:4px;padding:3px 6px 2px;position:absolute;bottom:calc(100% + 6px);left:50%;transform:translate(-50%,4px)}.ct-copy-wrap[data-copied] .ct-copied{opacity:1;transform:translate(-50%)}.ct-avatar{z-index:0;width:var(--ct-av);height:var(--ct-av);pointer-events:none;grid-area:2/1/auto/-1;place-self:start end;position:relative;margin:calc(var(--ct-av) / -2) -2px 0 0!important}.ct-av-ring{fill:var(--night)}.ct-av-face{fill:var(--night-2)}.ct-av-ink{fill:var(--night-ink)}@container (width<=300px){.tile.tile--contact .t-title{padding-right:calc(var(--ct-av) / 2 + 18px);white-space:normal}}.tile.tile--contact[data-size=compact] .t-content{--ct-cover-min:round(down, 30cqh, 1px);--ct-cover-max:round(down, 62cqh, 1px);padding:0 12px 12px}.tile.tile--contact[data-size=compact] .t-content:before{margin:0 -12px -12px}.tile.tile--contact[data-size=compact] .t-title{margin-top:8px}.tile.tile--contact[data-size=compact] .ct-hello{margin-top:8px!important}.tile.tile--contact[data-size=mini] .t-content{--ct-av:clamp(36px, round(down, 40cqmin, 18px), 54px);grid-template-rows:round(down,50cqh,1px) minmax(0,1fr);grid-template-areas:"cover cover""title title";padding:0}.tile.tile--contact[data-size=mini] .t-content:before{margin:0}.tile.tile--contact[data-size=mini] .t-label{display:none}.tile.tile--contact[data-size=mini] .ct-avatar{justify-self:center;margin:calc(var(--ct-av) / -2) 0 0!important}.cube[data-astro-cid-nllnjiug]{--cube-size:220px;width:var(--cube-size);flex-direction:column;align-items:center;gap:6px;display:flex}html:not(.js) .cube[data-astro-cid-nllnjiug]{display:none}.cube-stage[data-astro-cid-nllnjiug]{width:var(--cube-size);height:var(--cube-size);flex:none}.cube-slot[data-astro-cid-nllnjiug]{pointer-events:auto;touch-action:none;cursor:grab;-webkit-user-select:none;user-select:none;width:100%;height:100%;margin:0 auto}.cube-slot[data-astro-cid-nllnjiug][data-dragging]{cursor:grabbing}.cube--fill[data-astro-cid-nllnjiug]{width:100%;min-width:0;min-height:0}.cube--fill[data-astro-cid-nllnjiug] .cube-stage[data-astro-cid-nllnjiug]{flex:1 1 0;place-items:center;width:100%;height:auto;min-height:0;display:grid;container-type:size}.cube--fill[data-astro-cid-nllnjiug] .cube-slot[data-astro-cid-nllnjiug]{width:min(100cqw,100cqh);height:min(100cqw,100cqh)}.cube-controls[data-astro-cid-nllnjiug]{justify-content:center;gap:8px;display:flex}.cube-live[data-astro-cid-nllnjiug]{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;margin:-1px;position:absolute;overflow:hidden}@media (width<=640px){.cube[data-astro-cid-nllnjiug]:not(.cube--fill){--cube-size:160px}.cube[data-astro-cid-nllnjiug]:not(.cube--fill) .cube-controls[data-astro-cid-nllnjiug] .pxb-label{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;margin:-1px;position:absolute;overflow:hidden}}::view-transition-group(cube){z-index:1;animation-duration:var(--t-morph);animation-timing-function:var(--spring)}::view-transition-old(cube){opacity:0;animation:none}::view-transition-new(cube){animation:none}.tile--cube{container:cube-tile/size}.tile--cube .cube.tile-cube{flex:1 1 0;gap:8px;min-height:178px}.tile--cube[data-size=compact] .cube.tile-cube{min-height:96px}.tile--cube[data-size=mini] .cube.tile-cube{width:auto;min-height:0;position:absolute;inset:0 0 0 max(46%,84px)}.tile--cube[data-size=mini] .cube-controls{display:none}.tile--cube .cube-controls{flex-wrap:nowrap;flex:none}.tile--cube:not([data-size=full]) .cube-controls .pxb-label{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;margin:-1px;position:absolute;overflow:hidden}@container cube-tile (width<=235px){.tile--cube .cube-controls .pxb-label{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;margin:-1px;position:absolute;overflow:hidden}}.tile--cube[data-size=compact] .cube-controls{z-index:2;position:absolute;top:30px;right:16px}@container cube-tile (width<=179px){.tile--cube[data-size=compact] .cube-controls{position:static}.tile--cube[data-size=compact] .cube.tile-cube{min-height:140px}}.tile.tile--time .sky-slot{overflow:hidden}.tile.tile--time .sky-slot canvas{image-rendering:pixelated;image-rendering:crisp-edges;display:block}.tile--cv .art-slot{overflow:hidden}.tile--cv .cv-actions{pointer-events:none}.tile--cv .cv-actions>*{pointer-events:auto}.tile--tools .art-slot,.tile--research .art-slot,.tile--projects .t-art{overflow:hidden}.tile--projects .clawd{fill:#d97757;pointer-events:none;width:72px;height:40px;transition:transform .32s var(--ease-out);position:absolute;bottom:14px;left:0;transform:translate(-28px);margin:0!important}@media (hover:hover){.tile--projects:hover .clawd{transform:translate(-4px)}}@media (prefers-reduced-motion:reduce){.tile--projects .clawd{transition:none}}.tile--projects[data-size=mini] .clawd,.clawd-lids{display:none}.clawd[data-blink] .clawd-lids{display:inline}.tile--projects .clawd-think{pointer-events:none;transition:transform .32s var(--ease-out);position:absolute;bottom:34px;left:48px;transform:translate(0);margin:0!important}@media (hover:hover){.tile--projects:hover .clawd-think{transform:translate(24px)}}@media (prefers-reduced-motion:reduce){.tile--projects .clawd-think{transition:none}}.clawd-puff{background:#d97757;position:absolute}.clawd-puff--1{width:4px;height:4px;bottom:0;left:0}.clawd-puff--2{width:6px;height:6px;bottom:6px;left:8px}.tile--projects .clawd-bubble{--pf-line:#d97757;--pf-fill:var(--card);--pf-text:var(--ink-2);position:absolute;bottom:8px;left:16px}.tile--projects [data-clawd-clash]{visibility:hidden}.clawd-text{white-space:nowrap;padding:5px 9px 4px;display:block}.tile--projects .finch-hit{z-index:2;pointer-events:auto;cursor:pointer;-webkit-tap-highlight-color:transparent;background:0 0;position:absolute;top:0;left:0}.tile--github{container-type:inline-size}.tile--github .t-content{grid-template-columns:auto minmax(0,1fr);grid-template-areas:"label count""title title""space space";align-content:start;gap:0 16px;display:grid}.tile--github .t-label{grid-area:label}.tile--github .t-title{grid-area:title;margin-top:6px!important}.tile.tile--github:not([data-size=full]) .t-title{clip-path:none;width:auto;height:0;position:static;overflow:visible;margin-top:0!important}.tile--github:not([data-size=full]) .gh-title-text[data-astro-cid-xnn5hnf3]{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.gh-count[data-astro-cid-xnn5hnf3]{text-align:right;white-space:nowrap;grid-area:count;justify-self:end;margin-top:0!important}@container (width<=429px){.gh-count-tail[data-astro-cid-xnn5hnf3]{clip-path:inset(50%);width:1px;height:1px;position:absolute;overflow:hidden}}.gh-space[data-astro-cid-xnn5hnf3]{grid-area:space;height:calc(7*clamp(3px,round(down,1.88679cqw - .584906px,1px) - 1px,10px) + 6px);display:block;margin-top:10px!important}.tile--github[data-size=mini] .gh-space[data-astro-cid-xnn5hnf3]{display:none}.gh-cal[data-astro-cid-xnn5hnf3]{image-rendering:pixelated;pointer-events:none;display:block;position:absolute}.gh-mark[data-astro-cid-xnn5hnf3],.gh-tip[data-astro-cid-xnn5hnf3]{pointer-events:none;z-index:3;position:absolute;top:0;left:0}.gh-mark[data-astro-cid-xnn5hnf3]{box-shadow:0 0 0 1px var(--ink)}.gh-tip[data-astro-cid-xnn5hnf3]{white-space:nowrap;color:var(--paper);background:var(--ink);border-radius:4px;padding:3px 6px}.gh-mark[data-astro-cid-xnn5hnf3][hidden],.gh-tip[data-astro-cid-xnn5hnf3][hidden]{display:none}.foot[data-astro-cid-3qypczbn]{z-index:1;min-height:18px;color:var(--ink-2);justify-content:space-between;align-items:center;gap:16px;display:flex;position:relative}.foot[data-astro-cid-3qypczbn] p[data-astro-cid-3qypczbn]{gap:8px;margin:0;display:flex}.foot-links[data-astro-cid-3qypczbn]{gap:16px;display:flex}.foot-sound[data-astro-cid-3qypczbn],.foot-key[data-astro-cid-3qypczbn]{font:inherit;text-transform:inherit;color:var(--ink);cursor:pointer;background:0 0;border:0;margin:0;padding:0}.foot-meta[data-astro-cid-3qypczbn]>[data-astro-cid-3qypczbn]{white-space:nowrap;flex:none}.foot-key[data-astro-cid-3qypczbn]{margin-right:8px}.foot-key-touch[data-astro-cid-3qypczbn]{display:none}.foot-sr[data-astro-cid-3qypczbn]{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}@media (hover:none) and (pointer:coarse){.foot-key-k[data-astro-cid-3qypczbn]{display:none}.foot-key-touch[data-astro-cid-3qypczbn]{display:inline}}@media (hover:hover){.foot-key[data-astro-cid-3qypczbn]:hover{text-decoration:underline}}.foot[data-astro-cid-3qypczbn] a[data-astro-cid-3qypczbn]{color:var(--ink);text-decoration:none}@media (hover:hover){.foot[data-astro-cid-3qypczbn] a[data-astro-cid-3qypczbn]:hover{text-decoration:underline}}@media (width<=520px),(height<=499px){.foot-sep[data-astro-cid-3qypczbn],.foot-meta[data-astro-cid-3qypczbn]>span[data-astro-cid-3qypczbn]:last-child{display:none}.foot-links[data-astro-cid-3qypczbn]{gap:12px}}@media (width<=420px){.foot-meta[data-astro-cid-3qypczbn]>span[data-astro-cid-3qypczbn]:nth-last-child(2),.foot-copy[data-astro-cid-3qypczbn]{display:none}}.bento-wrap{--wrap-pad:var(--pad);min-height:100dvh;padding:var(--wrap-pad) var(--wrap-pad) calc(var(--wrap-pad) * .5);grid-template-rows:minmax(0,1fr) auto;gap:10px;display:grid}.bento{gap:var(--gap);min-height:0;display:grid}html:not([data-welcome]):has(.bento-wrap:not([data-covered])):not(:has(.saver)) #field{clip-path:inset(calc(var(--bento-foot,0px) + var(--gap,12px) / 2) 0 0 0)}@media (orientation:landscape) and (height>=500px){.bento{grid-template-rows:repeat(6,minmax(0,1fr));grid-template-columns:repeat(12,minmax(0,1fr));grid-template-areas:"intro intro intro intro intro work work work work contact contact contact""intro intro intro intro intro work work work work contact contact contact""cube cube time time time work work work work contact contact contact""cube cube cv cv cv tools tools tools tools research research research""projects projects projects projects projects tools tools tools tools research research research""projects projects projects projects projects github github github github research research research"}}@media (orientation:portrait) and (width>=768px){.bento{grid-template-rows:repeat(8,minmax(0,1fr));grid-template-columns:repeat(6,minmax(0,1fr));grid-template-areas:"intro intro intro intro contact contact""intro intro intro intro contact contact""work work work tools tools tools""work work work tools tools tools""research research research projects projects projects""research research research projects projects projects""cube cube time time cv cv""cube cube github github github github"}}@media (orientation:portrait) and (width<=767px){.bento-wrap{--wrap-pad:12px;--gap:8px}.bento{grid-template-rows:1.35fr repeat(4,minmax(0,1fr)) .6fr;grid-template-columns:repeat(2,minmax(0,1fr));grid-template-areas:"intro intro""work tools""research projects""cube contact""time cv""github github"}}@media (orientation:landscape) and (height<=499px){.bento-wrap{--wrap-pad:10px;--gap:8px;gap:6px}.bento{grid-template-rows:repeat(3,minmax(0,1fr));grid-template-columns:repeat(4,minmax(0,1fr));grid-template-areas:"intro intro work tools""contact research projects cube""time cv github github"}}.tile{border-radius:var(--radius);background:var(--card);border:1px solid var(--rule);min-width:0;min-height:0;color:var(--ink);isolation:isolate;transition:border-color var(--t-hover) var(--ease-out);position:relative;overflow:hidden}.tile.tone-night{background:var(--night);border-color:var(--night);color:var(--night-ink);--ink-2:var(--night-ink-2);--ink-3:var(--night-ink-2)}@media (hover:hover){.tile:has(.t-link:hover){border-color:var(--rule-strong)}}.t-content{z-index:1;pointer-events:none;flex-direction:column;gap:6px;height:100%;padding:14px 16px;display:flex;position:relative}.t-content>*{margin:0}.t-raise,.t-content a,.t-content button{pointer-events:auto}.t-label{color:var(--ink-2)}.t-title{margin:0}.t-link{color:inherit;text-decoration:none}.is-stretched .t-link:after{content:"";z-index:1;border-radius:var(--radius);position:absolute;inset:0}.t-raise{z-index:2;position:relative}.is-stretched .t-link:focus-visible{box-shadow:none}.is-stretched .t-link:focus-visible:after{box-shadow:inset 0 0 0 2px var(--ink)}.tone-night .t-link:focus-visible:after{box-shadow:inset 0 0 0 2px var(--night-ink)}.t-list{gap:4px;padding:0;list-style:none;display:grid}.t-list li{font-size:var(--text-body);flex-wrap:wrap;align-items:baseline;column-gap:8px;line-height:1.35;display:flex}.t-strong{font-weight:500}.t-dim{color:var(--ink-2);font-size:var(--text-small)}.t-more{color:var(--ink-2)}.t-art{z-index:0;pointer-events:none;position:absolute}.t-art.edge-fill{inset:0}.t-art.edge-bottom{height:62%;inset:auto 0 0}.t-art.edge-top{height:38%;inset:0 0 auto}.t-art.edge-right{width:48%;inset:0 0 0 auto}.t-art.edge-left{width:48%;inset:0 auto 0 0}.art-slot{position:absolute;inset:0}.tile[data-size=compact] [data-keep=full],.tile[data-size=mini] [data-keep=full],.tile[data-size=mini] [data-keep=compact]{display:none!important}.tile[data-size=mini]:not(.tile--intro) .t-title{height:0;overflow:visible}.tile[data-size=mini]:not(.tile--intro) .t-link{color:#0000;font-size:0;line-height:0}.tile[data-size=mini] .t-content{padding:10px 12px}.tile--intro .t-content{gap:10px}.tile--intro .t-title{letter-spacing:-.035em;order:3;margin-top:auto;font-size:clamp(1.75rem,min(25cqh,14cqi),6rem);font-weight:600;line-height:.92}.intro-name{font-size:inherit;flex-direction:column;display:flex}.tile--intro{container-type:size}.intro-sentence{order:1;max-width:30ch}.intro-now{color:var(--ink-2);order:2;align-items:center;gap:8px;display:flex}.now-dot{background:var(--ink);width:6px;height:6px}@container (width<=460px){.intro-name{gap:.25em;flex-direction:row!important}.intro-sentence{font-size:1rem}}.tile--intro:not([data-size=full]) .t-label{display:none}.tile--intro[data-size=compact] .t-title{font-size:clamp(1.5rem,min(22cqh,11cqi),4rem)}@container (width<=460px){.intro-name{gap:.25em;flex-direction:row!important}.intro-sentence{font-size:1rem}}.tile--intro[data-size=mini] .t-title{font-size:clamp(1.25rem,min(34cqh,11cqi),3rem)}.tile--intro[data-size=mini] .intro-name{flex-direction:row;gap:.25em}.tile--contact .t-content{gap:8px;padding-top:calc(38% + 12px)}.tile--contact .t-label{color:var(--night-ink);mix-blend-mode:difference;position:absolute;top:12px;left:14px}.tile--contact .pxb{--pf-fill:var(--night-2);--pf-text:var(--night-ink);--pf-line:var(--night-ink);--pf-drop:#000;--pf-focus:var(--night-ink)}.tile--contact[data-size=compact] .t-content{padding-top:calc(38% + 4px)}.tags{flex-wrap:wrap;gap:6px;max-width:34ch;padding:0;list-style:none;display:flex}.tags li{font-size:var(--text-small);border:1px solid var(--rule-strong);background:color-mix(in srgb, var(--card) 86%, transparent);border-radius:999px;padding:2px 8px}.time-read{color:var(--ink)}.cv-actions{flex-wrap:wrap;gap:10px;display:flex;margin-top:auto!important}.gh-count{margin-top:auto!important}.ground[data-astro-cid-4qquebp7]{z-index:-2;pointer-events:none;position:fixed;inset:0;overflow:hidden}.ground[data-astro-cid-4qquebp7] canvas{display:block}.pal[data-astro-cid-n5udgzh5]{--pal-top:clamp(12px, 14dvh, 140px);--pal-x:16px;width:min(36rem,100vw - 24px);max-width:none;max-height:calc(100dvh - var(--pal-top) - 12px);margin:var(--pal-top) auto auto;border:1px solid var(--rule-strong);border-radius:var(--radius);background:var(--card);color:var(--ink);font-family:var(--font-sans);flex-direction:column;padding:0;overflow:hidden}.pal[data-astro-cid-n5udgzh5][open]{animation:pal-in var(--t-hover) var(--ease-out);display:flex}@keyframes pal-in{0%{opacity:0;transform:translateY(4px)}}@media (prefers-reduced-motion:reduce){.pal[data-astro-cid-n5udgzh5][open]{animation:none}}.pal[data-astro-cid-n5udgzh5]::backdrop{background:#f6f7f4b8}.pal-head[data-astro-cid-n5udgzh5]{padding:0 12px 0 var(--pal-x);border-bottom:1px solid var(--rule);transition:box-shadow var(--t-hover) var(--ease-out);flex:none;align-items:center;gap:12px;display:flex}.pal-head[data-astro-cid-n5udgzh5]:has(.pal-input:focus-visible){box-shadow:inset 0 -1px 0 var(--ink)}.pal-input[data-astro-cid-n5udgzh5]{min-width:0;height:52px;color:var(--ink);font-family:var(--font-sans);letter-spacing:-.01em;caret-color:var(--ink);background:0 0;border:0;flex:1;padding:0;font-size:1.0625rem}.pal-input[data-astro-cid-n5udgzh5]:focus-visible{box-shadow:none;outline:2px solid #0000}.pal-input[data-astro-cid-n5udgzh5]::placeholder{color:var(--ink-2);opacity:1}.pal-list[data-astro-cid-n5udgzh5]{overscroll-behavior:contain;flex:auto;min-height:0;padding:4px 0 8px;position:relative;overflow:hidden}.pal-list[data-astro-cid-n5udgzh5] .pal-group{padding:12px var(--pal-x) 4px;color:var(--ink-2)}.pal-list[data-astro-cid-n5udgzh5] .pal-opt{min-height:36px;padding:0 var(--pal-x);cursor:pointer;user-select:none;grid-template-columns:24px minmax(0,1fr) auto;align-items:center;gap:8px;display:grid;position:relative}.pal-list[data-astro-cid-n5udgzh5] .pal-opt[aria-selected=true]{background:color-mix(in srgb, var(--ink-2) 8%, var(--card));--pal-dim:var(--ink)}.pal-list[data-astro-cid-n5udgzh5] .pal-opt[aria-selected=true]:before{content:"";background:var(--ink);width:2px;position:absolute;top:6px;bottom:6px;left:0}.pal-list[data-astro-cid-n5udgzh5] .pal-lead{color:var(--pal-dim,var(--ink-2));display:inline-flex}.pal-list[data-astro-cid-n5udgzh5] .pal-text{font-size:var(--text-body);white-space:nowrap;text-overflow:ellipsis;line-height:1.3;overflow:hidden}.pal-list[data-astro-cid-n5udgzh5] .pal-match{font-weight:600}.pal-list[data-astro-cid-n5udgzh5] .pal-detail{color:var(--ink-2)}.pal-list[data-astro-cid-n5udgzh5] .pal-hint{color:var(--pal-dim,var(--ink-2));text-transform:none;align-items:center;display:inline-flex}.pal-list[data-astro-cid-n5udgzh5] .pal-opt[data-state=done] .pal-hint{color:var(--ink)}.pal-list[data-astro-cid-n5udgzh5] .pal-empty,.pal-list[data-astro-cid-n5udgzh5] .pal-say{padding:16px var(--pal-x);font-size:var(--text-body);overflow-wrap:anywhere;margin:0;line-height:1.45}.pal-list[data-astro-cid-n5udgzh5] .pal-empty{color:var(--ink-2)}.pal-list[data-astro-cid-n5udgzh5] .pal-say{color:var(--ink);grid-template-columns:24px minmax(0,1fr);gap:8px;display:grid}.pal-list[data-astro-cid-n5udgzh5] .pal-say-mark{color:var(--ink-2);line-height:21px}.pal-foot[data-astro-cid-n5udgzh5]{padding:8px var(--pal-x);border-top:1px solid var(--rule);color:var(--ink-2);flex:none;justify-content:space-between;gap:16px;display:flex}.pal-legend[data-astro-cid-n5udgzh5]{gap:16px;display:flex}.pal[data-astro-cid-n5udgzh5][data-empty] .pal-foot[data-astro-cid-n5udgzh5]{display:none}@media (hover:none) and (pointer:coarse){.pal-legend[data-astro-cid-n5udgzh5]{visibility:hidden}.pal-foot[data-astro-cid-n5udgzh5]:has(.pal-more:empty){display:none}}@media (width<=360px){.pal-legend-esc[data-astro-cid-n5udgzh5]{display:none}}.pal-sr[data-astro-cid-n5udgzh5],.pal-list[data-astro-cid-n5udgzh5] .pal-sr{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.pal-cap[data-astro-cid-n5udgzh5]{--pf-text:var(--ink);--pf-fill:var(--card);color:inherit;font:inherit;cursor:pointer;touch-action:manipulation;background:0 0;border:0;flex:none;margin:0 0 2px;padding:0;display:inline-flex;position:relative}.pal-cap[data-astro-cid-n5udgzh5]:after{content:"";position:absolute;inset:-12px -8px}.pal-cap[data-astro-cid-n5udgzh5] .pf-fill{transition:fill var(--t-hover) var(--ease-out)}.pal-cap[data-astro-cid-n5udgzh5] .pf-face{transition:transform var(--t-press) var(--ease-out)}.pal-cap-body[data-astro-cid-n5udgzh5]{height:22px;font-family:var(--font-pixel);text-transform:uppercase;-webkit-font-smoothing:none;align-items:center;padding:1px 7px 0;font-size:11px;line-height:14px;display:inline-flex}@media (hover:hover){.pal-cap[data-astro-cid-n5udgzh5]:hover{--pf-fill:color-mix(in srgb, var(--ink-2) 8%, var(--card))}}.pal-cap[data-astro-cid-n5udgzh5]:active{--pf-press:2px}.pal-cap[data-astro-cid-n5udgzh5]:focus-visible{box-shadow:none;--pf-focus-on:1;outline:2px solid #0000}@media (forced-colors:active){.pal[data-astro-cid-n5udgzh5]{border-color:canvastext}.pal-list[data-astro-cid-n5udgzh5] .pal-opt[aria-selected=true]{color:highlighttext;forced-color-adjust:none;background:highlight}}html.js,html.js body{overscroll-behavior:none;height:100dvh;overflow:hidden}html.js #stage{position:fixed;inset:0}html.js .bento-host,html.js .bento-wrap{height:100%;min-height:0}.saver{z-index:10;letter-spacing:-.035em;pointer-events:none;flex-direction:column;font-size:clamp(3rem,2rem + 6vw,8.5rem);font-weight:600;line-height:.92;animation:60s ease-in-out infinite alternate saver-drift;display:flex;position:fixed;top:30vh;left:8vw}@keyframes saver-drift{0%{transform:translate(0)}33%{transform:translate(6vw,-4vh)}66%{transform:translate(-2vw,8vh)}to{transform:translate(10vw,2vh)}}::view-transition-old(root),::view-transition-new(root){animation:none}html:not(.js) .bento{grid-auto-rows:minmax(140px,auto);grid-template-rows:none!important}html:not(.js) .tile{overflow:visible}html:not(.js) #stage:has(.panel-layer) .bento-host{display:none}html:not(.js) [data-speaker-toggle],html:not(.js) [data-foot-sound],html:not(.js) [data-palette-trigger]{display:none!important}
