.follow-avatar[data-astro-cid-alzbbqn5]{position:relative;width:7rem;aspect-ratio:1 / 1;border-radius:50%;overflow:hidden;border:2px solid #DCDCD9;background:#cacec3}.follow-avatar__image[data-astro-cid-alzbbqn5]{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center top}.follow-avatar.is-tracking .follow-avatar__image[data-astro-cid-alzbbqn5]{opacity:0}.follow-avatar[data-astro-cid-alzbbqn5] .follow-avatar__stack{position:absolute;inset:0;visibility:hidden}.follow-avatar[data-astro-cid-alzbbqn5] .follow-avatar__stack.is-ready{visibility:visible}.follow-avatar[data-astro-cid-alzbbqn5] .follow-avatar__layer{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center top;opacity:0;will-change:opacity}.follow-avatar[data-astro-cid-alzbbqn5] .follow-avatar__layer.is-active{opacity:1}.bookshelf[data-astro-cid-ukmhmmbo]{min-width:0;overflow-wrap:anywhere}.bookshelf__intro[data-astro-cid-ukmhmmbo]{margin-bottom:1rem;color:var(--fg-2)}.bookshelf__layout[data-astro-cid-ukmhmmbo]{position:relative;width:100%;min-width:0}.bookshelf__stage[data-astro-cid-ukmhmmbo]{position:relative;aspect-ratio:4 / 3;width:100%;min-width:0;border-block:1px solid var(--line)}.bookshelf__stage[data-astro-cid-ukmhmmbo][hidden],.bookshelf__list[data-astro-cid-ukmhmmbo][hidden]{display:none}.bookshelf__canvas[data-astro-cid-ukmhmmbo]{position:absolute;inset:0;display:block;width:100%;height:100%;touch-action:pan-y}.bookshelf__caption[data-astro-cid-ukmhmmbo]{position:absolute;right:52px;bottom:1rem;left:52px;z-index:1;pointer-events:none}.bookshelf__caption[data-astro-cid-ukmhmmbo] p[data-astro-cid-ukmhmmbo]{font-family:var(--mono);font-size:.75rem;color:var(--muted)}.bookshelf__caption[data-astro-cid-ukmhmmbo] [data-astro-cid-ukmhmmbo][data-shelf=title]{font-family:var(--serif);font-size:1.125rem;color:var(--fg)}.bookshelf__arrow[data-astro-cid-ukmhmmbo]{position:absolute;top:0;bottom:0;z-index:1;width:44px;height:44px;margin-block:auto;padding:0;border:1px solid var(--line-2);background:var(--hover);color:var(--fg);font-family:var(--mono);font-size:1.125rem;line-height:1;cursor:pointer;transition:border-color .15s ease,color .15s ease}.bookshelf__arrow--prev[data-astro-cid-ukmhmmbo]{left:0}.bookshelf__arrow--next[data-astro-cid-ukmhmmbo]{right:0}.bookshelf__arrow[data-astro-cid-ukmhmmbo]:hover:not(:disabled){border-color:var(--fg)}.bookshelf__arrow[data-astro-cid-ukmhmmbo]:disabled{color:var(--muted);border-color:var(--line);opacity:.45;cursor:default}.bookshelf__details[data-astro-cid-ukmhmmbo]{opacity:0;visibility:hidden;pointer-events:none;transition:opacity .15s ease,visibility 0s linear .15s;min-width:0;max-width:100%;padding-block:1rem;border-bottom:1px solid var(--line);background:var(--bg);font-family:var(--sans);color:var(--fg-2)}.bookshelf[data-astro-cid-ukmhmmbo].is-holding .bookshelf__details[data-astro-cid-ukmhmmbo]{opacity:1;visibility:visible;pointer-events:auto;transition-delay:0s}.bookshelf[data-astro-cid-ukmhmmbo].is-holding .bookshelf__caption[data-astro-cid-ukmhmmbo],.bookshelf[data-astro-cid-ukmhmmbo].is-holding .bookshelf__arrow[data-astro-cid-ukmhmmbo]{visibility:hidden}.bookshelf__details[data-astro-cid-ukmhmmbo]>[data-astro-cid-ukmhmmbo]+[data-astro-cid-ukmhmmbo]{margin-top:.75rem}.bookshelf__details[data-astro-cid-ukmhmmbo] h3[data-astro-cid-ukmhmmbo]{font-family:var(--serif);font-size:1.5rem;font-weight:400;line-height:1.2;color:var(--fg)}.bookshelf__details[data-astro-cid-ukmhmmbo] [data-astro-cid-ukmhmmbo][data-shelf=d-author]{font-family:var(--mono);font-size:.8125rem;color:var(--muted)}.bookshelf__details[data-astro-cid-ukmhmmbo] button[data-astro-cid-ukmhmmbo]{min-width:44px;min-height:44px;padding-inline:.5rem;border:1px solid var(--line-2);background:transparent;font-family:var(--mono);color:var(--fg);cursor:pointer}.bookshelf__details[data-astro-cid-ukmhmmbo] button[data-astro-cid-ukmhmmbo]:hover{background:var(--hover)}.bookshelf__summary[data-astro-cid-ukmhmmbo] p+p{margin-top:.75rem}.bookshelf__details[data-astro-cid-ukmhmmbo] .bookshelf__more[data-astro-cid-ukmhmmbo]{padding-inline:0;border:0;font-size:.8125rem;text-decoration:underline}.bookshelf__details[data-astro-cid-ukmhmmbo] .bookshelf__more[data-astro-cid-ukmhmmbo]:hover{background:transparent;color:var(--muted)}.bookshelf__disclosure[data-astro-cid-ukmhmmbo]{font-size:.75rem;color:var(--muted)}.bookshelf__details[data-astro-cid-ukmhmmbo] a[data-astro-cid-ukmhmmbo]{display:inline-block;max-width:100%;color:var(--fg);text-decoration:underline}.bookshelf__canvas[data-astro-cid-ukmhmmbo]:focus-visible,.bookshelf[data-astro-cid-ukmhmmbo] button[data-astro-cid-ukmhmmbo]:focus-visible,.bookshelf[data-astro-cid-ukmhmmbo] a[data-astro-cid-ukmhmmbo]:focus-visible{outline:2px solid var(--fg);outline-offset:2px}.bookshelf__list[data-astro-cid-ukmhmmbo]{width:100%;min-width:0;aspect-ratio:4 / 3;padding-block:1rem;list-style:none;border-block:1px solid var(--line)}.bookshelf__list[data-astro-cid-ukmhmmbo] li[data-astro-cid-ukmhmmbo]+li[data-astro-cid-ukmhmmbo]{margin-top:.875rem;padding-top:.875rem;border-top:1px solid var(--line)}.bookshelf__list[data-astro-cid-ukmhmmbo] a[data-astro-cid-ukmhmmbo]{color:var(--fg);text-decoration:underline}.bookshelf__list[data-astro-cid-ukmhmmbo] span[data-astro-cid-ukmhmmbo]{color:var(--muted)}.bookshelf__live[data-astro-cid-ukmhmmbo]{position:absolute;width:1px;height:1px;padding:0;margin:0;overflow:hidden;clip:rect(0,0,0,0);clip-path:inset(50%);white-space:nowrap;border:0}@media(min-width:640px){.bookshelf__stage[data-astro-cid-ukmhmmbo],.bookshelf__list[data-astro-cid-ukmhmmbo]{aspect-ratio:16 / 9}.bookshelf__details[data-astro-cid-ukmhmmbo]{position:absolute;inset:0 0 0 50%;z-index:2;width:auto;max-height:100%;margin:0;padding:1rem;border-bottom:0;border-left:1px solid var(--line);overflow-x:hidden;overflow-y:auto}}@media(prefers-reduced-motion:reduce){.bookshelf__arrow[data-astro-cid-ukmhmmbo],.bookshelf__details[data-astro-cid-ukmhmmbo]{transition:none}}@font-face{font-family:Nanum Pen Script;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/nanum-pen-script-latin.woff2) format("woff2")}.sk-banner{--hand: "Nanum Pen Script", "Bradley Hand", cursive;--paper-top: var(--paperTop);--paper-bottom: var(--paperBottom);--frame-aspect: var(--paperAspect);position:relative;margin-inline:calc(-1 * var(--pad))}.sk-banner__note{position:absolute;left:calc(100% + 34px);top:26%;width:150px;font:400 24px/1.05 var(--hand);color:var(--muted);transform:rotate(-4deg);pointer-events:none}.sk-banner__note svg{display:block;width:52px;height:34px;margin:6px 0 0 -14px;overflow:visible}.sk-banner__note path{fill:none;stroke:currentColor;stroke-width:1.4;stroke-linecap:round;stroke-linejoin:round}.sk-banner__stops{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.sk-banner__book{position:relative;border-radius:6px;overflow-x:clip}.sk-banner__book:focus-visible,.sk-banner .sb__zone:focus-visible{outline:2px solid var(--fg);outline-offset:4px}.sk-banner .sb{position:relative;user-select:none;-webkit-user-select:none}.sk-banner .sb img{-webkit-user-drag:none}.sk-banner .sb__filters{position:absolute;width:0;height:0}.sk-banner .sb__stage{position:relative;touch-action:pan-y pinch-zoom}.sk-banner .sb__frame{position:relative;display:flow-root;width:100%;min-height:0;aspect-ratio:var(--frame-aspect);perspective:1750px;perspective-origin:50% 46%}.sk-banner .sb__tilt{position:relative;width:calc(100% / var(--pbW));margin-left:calc(-100% * var(--pbLeft) / var(--pbW));margin-top:calc((1 / var(--frame-aspect) - 1 / var(--paperAspect)) * 50% - 100% * var(--canvasRatio) * var(--pbTop) / var(--pbW));transform-style:preserve-3d;transform:rotateX(var(--rx, 0deg)) rotateY(var(--ry, 0deg)) scale(var(--zoom, 1));pointer-events:none}.sk-banner .sb--ssr .sb__frame{--shift: calc(-1 * var(--coverShift));--open: 0}.sk-banner .sb__shift{position:relative;transform-style:preserve-3d;transform:translate(calc(var(--shift, 0) * 100%))}.sk-banner .sb[data-state=closed] .sb__shift{transition:transform .35s cubic-bezier(.2,.7,.2,1)}@media(hover:hover){.sk-banner:not(.is-static) .sb[data-state=closed] .sb__stage:hover .sb__shift{transform:translate(calc(var(--shift, 0) * 100%)) translateZ(14px)}}.sk-banner .sb__cast{position:absolute;left:calc(6% + 44% * (1 - var(--open, 1)));right:6%;pointer-events:none}.sk-banner .sb__cast--ambient{top:34%;bottom:18%;background:radial-gradient(50% 50% at 50% 58%,#402e1642,#402e1600 74%);filter:blur(24px);opacity:calc(1 - var(--shade, 0) * .42)}.sk-banner .sb__cast--contact{top:62%;bottom:24%;background:radial-gradient(50% 46% at 50% 40%,#2e210e52,#2e210e00 78%);filter:blur(10px);opacity:calc(1 - var(--shade, 0) * .5)}.sk-banner .sb__book{position:relative;width:100%;aspect-ratio:1760 / 1240;transform-style:preserve-3d}.sk-banner .sb__full,.sk-banner .sb__full img{position:absolute;inset:0;display:block;width:100%;height:auto}.sk-banner .sb__full img,.sk-banner .sb__half{clip-path:inset(var(--paper-top) 0 var(--paper-bottom) 0)}.sk-banner .sb__half{position:absolute;top:0;bottom:0;width:50%;overflow:hidden}.sk-banner .sb__half--left{left:0}.sk-banner .sb__half--right{left:50%}.sk-banner .sb__half img{display:block;width:200%;max-width:none;height:auto}.sk-banner .sb__half--right img{margin-left:-100%}.sk-banner .sb__gutter-shade{position:absolute;top:var(--paper-top);bottom:var(--paper-bottom);width:30%;pointer-events:none;opacity:calc(var(--shade, 0) * .62)}.sk-banner .sb__half--left .sb__gutter-shade{right:0;background:linear-gradient(270deg,#3828124d,#38281200 82%)}.sk-banner .sb__half--right .sb__gutter-shade{left:0;background:linear-gradient(90deg,#3828123d,#38281200 82%)}.sk-banner .sb__leaf{position:absolute;top:0;height:100%;width:calc(var(--bw, 0px) * var(--span));transform-style:preserve-3d;z-index:6}.sk-banner .sb__leaf--next{left:50%;transform-origin:left center;transform:rotateY(calc(-1 * var(--tt, 0deg)))}.sk-banner .sb__leaf--prev{right:50%;transform-origin:right center;transform:rotateY(var(--tt, 0deg))}.sk-banner .sb__strip{position:absolute;top:0;height:100%;width:calc(var(--bw, 0px) * var(--span) / var(--strips));transform-style:preserve-3d}.sk-banner .sb__leaf--next .sb__strip{transform-origin:left center}.sk-banner .sb__leaf--prev .sb__strip{transform-origin:right center}.sk-banner .sb__leaf--next>.sb__strip{left:0}.sk-banner .sb__leaf--prev>.sb__strip{right:0}.sk-banner .sb__leaf--next .sb__strip .sb__strip{left:100%;transform:rotateY(var(--td, 0deg))}.sk-banner .sb__leaf--prev .sb__strip .sb__strip{right:100%;transform:rotateY(calc(-1 * var(--td, 0deg)))}.sk-banner .sb__face{position:absolute;inset:0 -1px 0 0;backface-visibility:hidden;-webkit-backface-visibility:hidden;background-repeat:no-repeat;background-size:var(--bw, 0px) auto;background-position-x:calc(var(--bw, 0px) * var(--offset, 0))}.sk-banner .sb__face--back{transform:rotateY(180deg)}.sk-banner .sb__shade,.sk-banner .sb__gloss{position:absolute;left:0;right:0;top:var(--paper-top);bottom:var(--paper-bottom);pointer-events:none}.sk-banner .sb__leaf--next .sb__face--front .sb__shade,.sk-banner .sb__leaf--prev .sb__face--back .sb__shade{background:linear-gradient(90deg,rgba(60,44,20,var(--a1, 0)),rgba(60,44,20,var(--a2, 0)))}.sk-banner .sb__leaf--next .sb__face--back .sb__shade,.sk-banner .sb__leaf--prev .sb__face--front .sb__shade{background:linear-gradient(90deg,rgba(60,44,20,var(--a2, 0)),rgba(60,44,20,var(--a1, 0)))}.sk-banner .sb__gloss{background:#fffaf0;opacity:var(--gloss, 0)}.sk-banner .sb__strip--edge .sb__shade,.sk-banner .sb__strip--edge .sb__gloss{-webkit-mask-image:var(--edge-fade);mask-image:var(--edge-fade)}.sk-banner .sb__leaf--next .sb__strip--edge .sb__face--front,.sk-banner .sb__leaf--prev .sb__strip--edge .sb__face--back{--edge-fade: linear-gradient(90deg, #000 0 22%, transparent 96%)}.sk-banner .sb__leaf--next .sb__strip--edge .sb__face--back,.sk-banner .sb__leaf--prev .sb__strip--edge .sb__face--front{--edge-fade: linear-gradient(270deg, #000 0 22%, transparent 96%)}.sk-banner .sb__zone{position:absolute;top:var(--paper-top);bottom:var(--paper-bottom);z-index:60;width:50%;border:0;border-radius:6px;background:transparent;cursor:grab;pointer-events:auto;-webkit-tap-highlight-color:transparent}.sk-banner .sb__zone:active{cursor:grabbing}.sk-banner .sb__zone--prev{left:0}.sk-banner .sb__zone--next{right:0}.sk-banner .sb[data-state=closed] .sb__zone--prev{display:none}.sk-banner .sb[data-state=closed] .sb__zone--next{cursor:pointer}.sk-banner .sb__counter{position:absolute;top:10px;right:10px;z-index:65;display:grid;justify-items:end;pointer-events:none}.sk-banner .sb__counter>span{grid-area:1 / 1;padding:3px 8px;border-radius:6px;background:color-mix(in srgb,var(--bg) 78%,transparent);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);font:11px/1.5 var(--mono);color:var(--muted);white-space:nowrap}.sk-banner .sb__counter>span:empty{visibility:hidden}.sk-banner__badge--touch{display:none}@media(pointer:coarse){.sk-banner__badge--fine{display:none}.sk-banner__badge--touch{display:inline-block}}@media(max-width:1239px){.sk-banner__note{position:static;display:flex;align-items:flex-end;justify-content:flex-end;gap:2px;width:auto;margin:0 var(--pad) 2px;font-size:22px;transform:rotate(-2deg)}.sk-banner__note svg{width:26px;height:30px;margin:0 0 -10px;transform:rotate(-35deg)}}@media(max-width:640px){.sk-banner{--frame-aspect: 2}}@media(prefers-reduced-motion:reduce){.sk-banner .sb[data-state=closed] .sb__shift{transition:none}}.testimonials[data-astro-cid-aadlzisc]{min-width:0}.testimonials__stage[data-astro-cid-aadlzisc]{display:grid;grid-template-columns:minmax(0,1fr);touch-action:pan-y pinch-zoom}.testimonial[data-astro-cid-aadlzisc]{grid-area:1 / 1;min-width:0;align-self:start}.testimonial[data-astro-cid-aadlzisc][inert]{visibility:hidden;opacity:0}.testimonial__quote[data-astro-cid-aadlzisc]{position:relative;font-family:var(--serif);font-size:21px;line-height:1.35;color:var(--fg);text-wrap:pretty}.testimonial__quote[data-astro-cid-aadlzisc]>p[data-astro-cid-aadlzisc]:before{content:"“";content:"“" / "";color:var(--soft);margin-right:.05em}.testimonial__caption[data-astro-cid-aadlzisc]{display:grid;grid-template-columns:20px minmax(0,1fr);column-gap:10px;row-gap:2px;align-items:center;margin-top:18px}.testimonial__initials[data-astro-cid-aadlzisc]{grid-row:1;grid-column:1;display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;border:1px solid var(--line);border-radius:4px;background-color:var(--hover);font-family:var(--mono);font-size:9px;line-height:1;color:var(--fg-2)}.testimonial__name[data-astro-cid-aadlzisc]{grid-row:1;grid-column:2;font-size:14px;color:var(--fg)}.testimonial__meta[data-astro-cid-aadlzisc]{grid-row:2;grid-column:2;font-family:var(--mono);font-size:.8125rem;line-height:1.4;color:var(--muted)}.testimonials__nav[data-astro-cid-aadlzisc]{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;column-gap:4px;margin-top:20px;visibility:hidden}.testimonials[data-astro-cid-aadlzisc][data-ready] .testimonials__nav[data-astro-cid-aadlzisc]{visibility:visible}.testimonials__step[data-astro-cid-aadlzisc]{display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;border:1px solid var(--line-2);border-radius:8px;background-color:var(--bg);color:var(--fg-2);cursor:pointer}.testimonials__step[data-astro-cid-aadlzisc] svg[data-astro-cid-aadlzisc]{width:18px;height:18px}.testimonials__step[data-astro-cid-aadlzisc]:hover,.testimonials__step[data-astro-cid-aadlzisc]:focus-visible{background-color:var(--hover);color:var(--fg)}.testimonials__step[data-astro-cid-aadlzisc]:focus-visible,.testimonials__dot[data-astro-cid-aadlzisc]:focus-visible{outline:none}.testimonials__step[data-astro-cid-aadlzisc]:focus-visible{outline:2px solid var(--fg);outline-offset:2px}.testimonials__count[data-astro-cid-aadlzisc]{min-width:5ch;margin:0 8px;font-family:var(--mono);font-size:.8125rem;text-align:center;color:var(--muted)}.testimonials__dots[data-astro-cid-aadlzisc]{display:flex;flex-basis:100%;justify-content:center}.testimonials__dot[data-astro-cid-aadlzisc]{position:relative;display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;border:0;background:none;cursor:pointer}.testimonials__dot[data-astro-cid-aadlzisc]:before{content:"";width:6px;height:6px;border-radius:3px;background-color:var(--soft)}.testimonials__dot[data-astro-cid-aadlzisc]:hover:before{background-color:var(--fg-2)}.testimonials__dot[data-astro-cid-aadlzisc][aria-current=true]:before{width:16px;background-color:var(--fg)}.testimonials__dot[data-astro-cid-aadlzisc]:focus-visible:before{outline:2px solid var(--fg);outline-offset:3px}.testimonials__live[data-astro-cid-aadlzisc]{position:absolute;width:1px;height:1px;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.testimonials__more[data-astro-cid-aadlzisc]{display:inline-block;margin-top:14px;font-size:14px;color:var(--fg-2);text-decoration:underline;text-underline-offset:3px}.testimonials__more[data-astro-cid-aadlzisc]:hover{color:var(--fg)}@media(min-width:560px){.testimonials__nav[data-astro-cid-aadlzisc]{flex-wrap:nowrap;justify-content:flex-start}.testimonials__dots[data-astro-cid-aadlzisc]{flex-basis:auto;margin-left:auto}}@media(min-width:768px){.testimonial__quote[data-astro-cid-aadlzisc]{font-size:24px}.testimonial__quote[data-astro-cid-aadlzisc]>p[data-astro-cid-aadlzisc]:before{position:absolute;left:-.5em;margin-right:0}}@media(prefers-reduced-motion:no-preference){.testimonial[data-astro-cid-aadlzisc]{transition:opacity .2s ease,visibility 0s linear 0s}.testimonial[data-astro-cid-aadlzisc][inert]{transition:opacity .2s ease,visibility 0s linear .2s}.testimonials[data-astro-cid-aadlzisc][data-reduced-motion] .testimonial[data-astro-cid-aadlzisc],.testimonials[data-astro-cid-aadlzisc][data-reduced-motion] .testimonial[data-astro-cid-aadlzisc][inert]{transition:none}.testimonials__dot[data-astro-cid-aadlzisc]:before{transition:width .2s ease,background-color .2s ease}}.hero[data-astro-cid-j7pv25f6]{margin-bottom:2.5rem}.hero[data-astro-cid-j7pv25f6]>[data-astro-cid-j7pv25f6]+[data-astro-cid-j7pv25f6]{margin-top:1.5rem}.hero__row[data-astro-cid-j7pv25f6]{display:flex;align-items:flex-start;gap:1.5rem}.hero__avatar[data-astro-cid-j7pv25f6]{flex:0 0 7rem;position:relative;z-index:2;margin-top:-34px}.hero__avatar[data-astro-cid-j7pv25f6] .follow-avatar,.hero__avatar[data-astro-cid-j7pv25f6] .follow-avatar:before,.hero__avatar[data-astro-cid-j7pv25f6] .follow-avatar:after,.hero__avatar[data-astro-cid-j7pv25f6] .follow-avatar *,.hero__avatar[data-astro-cid-j7pv25f6] .follow-avatar *:before,.hero__avatar[data-astro-cid-j7pv25f6] .follow-avatar *:after{box-sizing:content-box}.hero__identity[data-astro-cid-j7pv25f6]{min-width:0;padding-top:14px}.hero__name[data-astro-cid-j7pv25f6]{font-family:var(--serif);font-size:44px;font-weight:400;line-height:1.15;color:var(--fg)}.hero__tagline[data-astro-cid-j7pv25f6]{margin-top:.5rem;font-family:var(--mono);font-size:.8125rem;color:var(--muted)}.hero__grid[data-astro-cid-j7pv25f6]{display:grid;gap:.75rem 1.5rem}.hero__item[data-astro-cid-j7pv25f6]{display:flex;align-items:baseline;gap:.5rem;min-width:0;font-size:.875rem}.hero__item[data-astro-cid-j7pv25f6]>.hero__icon[data-astro-cid-j7pv25f6]{align-self:flex-start;margin-top:.15rem;color:var(--muted)}.hero__icon[data-astro-cid-j7pv25f6]{width:1.125rem;height:1.125rem;flex-shrink:0}.hero__clock[data-astro-cid-j7pv25f6]{font-family:var(--mono);font-size:.75rem}.hero__offset[data-astro-cid-j7pv25f6]{color:var(--muted)}.hero__separator[data-astro-cid-j7pv25f6]{display:none}.hero__clock[data-astro-cid-j7pv25f6]:has([data-auckland-offset]:not(:empty)) .hero__separator[data-astro-cid-j7pv25f6]{display:inline}.hero__separator[data-astro-cid-j7pv25f6]{color:var(--muted)}.hero__links[data-astro-cid-j7pv25f6]{display:flex;flex-wrap:wrap;gap:.5rem;list-style:none}.hero__pill[data-astro-cid-j7pv25f6]{display:inline-flex;align-items:center;gap:.5rem;min-height:36px;padding:6px 12px;border:1px solid var(--line-2);border-radius:8px;background-color:var(--bg);font-family:var(--sans);font-size:14px;color:var(--fg-2)}.hero__pill[data-astro-cid-j7pv25f6]:hover,.hero__pill[data-astro-cid-j7pv25f6]:focus-visible{background-color:var(--hover);color:var(--fg);text-decoration:none}@media(min-width:640px){.hero__grid[data-astro-cid-j7pv25f6]{grid-template-columns:minmax(0,1.2fr) minmax(0,1fr)}.hero__clock[data-astro-cid-j7pv25f6]{min-width:37ch;white-space:nowrap}}@media(max-width:640px){.hero__avatar[data-astro-cid-j7pv25f6]{margin-top:-24px}}@media(max-width:479px){.hero__row[data-astro-cid-j7pv25f6]{flex-direction:column;align-items:flex-start}}.disclosures[data-astro-cid-j7pv25f6]{margin-inline:calc(-1 * var(--pad))}.disclosure[data-astro-cid-j7pv25f6]{position:relative}.disclosure[data-astro-cid-j7pv25f6]+.disclosure[data-astro-cid-j7pv25f6]{margin-top:32px}.disclosure[data-astro-cid-j7pv25f6]+.disclosure[data-astro-cid-j7pv25f6]:before,.page__closing-band[data-astro-cid-j7pv25f6]:before{content:"";position:absolute;top:-32px;left:calc(50% - 50vw);width:100vw;height:32px;background:repeating-linear-gradient(to right,var(--soft) 0 1px,transparent 1px 4px) top / 100% 1px no-repeat,repeating-linear-gradient(to right,var(--soft) 0 1px,transparent 1px 4px) bottom / 100% 1px no-repeat,radial-gradient(circle,var(--line-2) .6px,transparent 1px) 0 0 / 8px 8px;pointer-events:none}.disclosure__summary[data-astro-cid-j7pv25f6]{position:relative;display:flex;align-items:center;justify-content:space-between;min-height:44px;padding:16px var(--pad) 12px;font-family:var(--serif);font-size:30px;font-weight:400;line-height:1.1;letter-spacing:-.01em;color:var(--fg);cursor:pointer;list-style:none}.disclosure__summary[data-astro-cid-j7pv25f6]::-webkit-details-marker{display:none}.disclosure[data-astro-cid-j7pv25f6][open]>.disclosure__summary[data-astro-cid-j7pv25f6]:before{content:"";position:absolute;bottom:0;left:calc(50% - 50vw);width:100vw;height:1px;background:repeating-linear-gradient(to right,var(--soft) 0 1px,transparent 1px 4px);pointer-events:none}.disclosure__summary[data-astro-cid-j7pv25f6]:after{content:"+";flex-shrink:0;margin-left:1rem;font-family:var(--mono);font-size:1.25rem;font-weight:400;color:var(--fg-2)}.disclosure[data-astro-cid-j7pv25f6][open]>.disclosure__summary[data-astro-cid-j7pv25f6]:after{content:"−"}.disclosure__summary[data-astro-cid-j7pv25f6]:hover{background-color:var(--hover)}.disclosure__body[data-astro-cid-j7pv25f6]{padding:22px var(--pad) 30px}.disclosure__body[data-astro-cid-j7pv25f6]>[data-astro-cid-j7pv25f6]+[data-astro-cid-j7pv25f6]{margin-top:.875rem}.disclosure__body[data-astro-cid-j7pv25f6] a[data-astro-cid-j7pv25f6]{text-decoration:underline}.skills__row[data-astro-cid-j7pv25f6]{display:flex;flex-direction:column}.skills__value[data-astro-cid-j7pv25f6]{margin-top:.125rem}.skills__label[data-astro-cid-j7pv25f6]{font-family:var(--mono);font-size:.75rem;font-weight:500;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}@media(min-width:768px){.skills__row[data-astro-cid-j7pv25f6]{flex-direction:row}.skills__label[data-astro-cid-j7pv25f6]{flex:0 0 6.5rem;padding-top:.2rem}.skills__value[data-astro-cid-j7pv25f6]{margin-top:0;margin-left:1rem}}.project[data-astro-cid-j7pv25f6]>[data-astro-cid-j7pv25f6]+[data-astro-cid-j7pv25f6]{margin-top:.375rem}.project[data-astro-cid-j7pv25f6]+.project[data-astro-cid-j7pv25f6]{padding-top:.875rem;border-top:1px solid var(--line)}.project__name[data-astro-cid-j7pv25f6]{font-size:1rem;font-weight:600;color:var(--fg)}.project__summary[data-astro-cid-j7pv25f6]{color:var(--fg-2)}.project__tech[data-astro-cid-j7pv25f6]{font-family:var(--mono);list-style:none}.project__tech-item[data-astro-cid-j7pv25f6]{display:inline;font-size:.75rem;color:var(--muted)}.project__tech-item[data-astro-cid-j7pv25f6]+.project__tech-item[data-astro-cid-j7pv25f6]{margin-left:.75rem}.project__link[data-astro-cid-j7pv25f6],.writing__more[data-astro-cid-j7pv25f6]{display:inline-block;font-weight:600;color:var(--fg)}.writing__list[data-astro-cid-j7pv25f6]{list-style:none}.writing__list[data-astro-cid-j7pv25f6]>[data-astro-cid-j7pv25f6]+[data-astro-cid-j7pv25f6]{margin-top:.875rem;padding-top:.875rem;border-top:1px solid var(--line)}.writing__link[data-astro-cid-j7pv25f6]{display:flex;flex-direction:column}.writing__title[data-astro-cid-j7pv25f6]{font-weight:600;color:var(--fg)}.writing__date[data-astro-cid-j7pv25f6]{margin-top:.125rem;font-family:var(--mono);font-size:.8125rem;color:var(--muted)}.timeline[data-astro-cid-j7pv25f6]{--timeline-dot-size: 12px;--timeline-dot-center: .65rem;position:relative;display:flex;flex-direction:column;list-style:none}.timeline__item[data-astro-cid-j7pv25f6]+.timeline__item[data-astro-cid-j7pv25f6]{margin-top:1.25rem}.timeline[data-astro-cid-j7pv25f6]:before{content:"";position:absolute;z-index:0;top:var(--timeline-dot-center);bottom:0;left:calc((var(--timeline-dot-size) - 1px) / 2);width:1px;background-color:var(--line);transition:background-color .3s ease}.timeline__item[data-astro-cid-j7pv25f6]:last-child:after{content:"";position:absolute;z-index:0;top:var(--timeline-dot-center);bottom:0;left:0;width:var(--timeline-dot-size);background-color:var(--bg)}.timeline__item[data-astro-cid-j7pv25f6]{position:relative;z-index:1;padding-left:calc(var(--timeline-dot-size) + .75rem)}.timeline__item[data-astro-cid-j7pv25f6]:focus{outline:none}.timeline__item[data-astro-cid-j7pv25f6]:focus-visible{outline:2px solid var(--fg);outline-offset:2px}.timeline__dot[data-astro-cid-j7pv25f6]{position:absolute;z-index:1;top:calc(var(--timeline-dot-center) - (var(--timeline-dot-size) / 2));left:0;width:var(--timeline-dot-size);height:var(--timeline-dot-size);border-radius:50%;background-color:var(--muted);transition:transform .3s ease,background-color .3s ease,box-shadow .3s ease}.timeline__body[data-astro-cid-j7pv25f6]{display:flex;flex-direction:column;min-width:0;transition:transform .3s ease}.timeline__body[data-astro-cid-j7pv25f6]>[data-astro-cid-j7pv25f6]+[data-astro-cid-j7pv25f6]{margin-top:.125rem}.timeline__title[data-astro-cid-j7pv25f6]{display:flex;align-items:baseline;justify-content:space-between}.timeline__role[data-astro-cid-j7pv25f6]{min-width:0;font-weight:600;color:var(--fg)}.timeline__dates[data-astro-cid-j7pv25f6],.timeline__location[data-astro-cid-j7pv25f6]{font-family:var(--mono);font-size:.8125rem;color:var(--muted)}.timeline__dates[data-astro-cid-j7pv25f6]{flex-shrink:0;margin-left:.75rem;text-align:right}.timeline__organisation[data-astro-cid-j7pv25f6]{color:var(--fg-2)}.timeline__summary[data-astro-cid-j7pv25f6]{margin-top:.25rem;color:var(--fg-2)}.timeline__heading[data-astro-cid-j7pv25f6]{font-family:var(--mono);font-size:.8125rem;font-weight:500;color:var(--muted)}.timeline__item[data-astro-cid-j7pv25f6]:focus-visible .timeline__dot[data-astro-cid-j7pv25f6]{background-color:var(--fg);box-shadow:0 0 8px var(--timeline-glow);transform:scale(1.25)}.timeline__item[data-astro-cid-j7pv25f6]:focus-visible .timeline__body[data-astro-cid-j7pv25f6]{transform:translate(4px)}.timeline[data-astro-cid-j7pv25f6]:has(.timeline__item:focus-visible):before{background-color:var(--timeline-active-rail)}@media(hover:hover){.timeline__item[data-astro-cid-j7pv25f6]:hover .timeline__dot[data-astro-cid-j7pv25f6]{background-color:var(--fg);box-shadow:0 0 8px var(--timeline-glow);transform:scale(1.25)}.timeline__item[data-astro-cid-j7pv25f6]:hover .timeline__body[data-astro-cid-j7pv25f6]{transform:translate(4px)}.timeline[data-astro-cid-j7pv25f6]:has(.timeline__item:hover):before{background-color:var(--timeline-active-rail)}}@media(max-width:479px){.timeline__title[data-astro-cid-j7pv25f6]{flex-direction:column;align-items:flex-start}.timeline__dates[data-astro-cid-j7pv25f6]{margin-left:0;margin-top:.125rem;text-align:left}}@media(prefers-reduced-motion:reduce){.timeline__dot[data-astro-cid-j7pv25f6],.timeline__body[data-astro-cid-j7pv25f6],.timeline[data-astro-cid-j7pv25f6]:before{transition:none}.timeline__item[data-astro-cid-j7pv25f6]:hover .timeline__dot[data-astro-cid-j7pv25f6],.timeline__item[data-astro-cid-j7pv25f6]:focus-within .timeline__dot[data-astro-cid-j7pv25f6]{transform:none}.timeline__item[data-astro-cid-j7pv25f6]:hover .timeline__body[data-astro-cid-j7pv25f6],.timeline__item[data-astro-cid-j7pv25f6]:focus-within .timeline__body[data-astro-cid-j7pv25f6]{transform:none}}.page__closing-band[data-astro-cid-j7pv25f6]{position:relative;margin:32px calc(-1 * var(--pad)) 0}@media(max-width:767px){.hero__name[data-astro-cid-j7pv25f6]{font-size:36px}}
