@keyframes astroFadeInOut{0%{opacity:1}to{opacity:0}}@keyframes astroFadeIn{0%{opacity:0;mix-blend-mode:plus-lighter}to{opacity:1;mix-blend-mode:plus-lighter}}@keyframes astroFadeOut{0%{opacity:1;mix-blend-mode:plus-lighter}to{opacity:0;mix-blend-mode:plus-lighter}}@keyframes astroSlideFromRight{0%{transform:translate(100%)}}@keyframes astroSlideFromLeft{0%{transform:translate(-100%)}}@keyframes astroSlideToRight{to{transform:translate(100%)}}@keyframes astroSlideToLeft{to{transform:translate(-100%)}}@media (prefers-reduced-motion){::view-transition-group(*),::view-transition-old(*),::view-transition-new(*),[data-astro-transition-scope]{animation:none!important}}.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}.section-icon[data-astro-cid-cs6zh4ns]{--size:var(--favicon-size,22px);width:var(--size);height:var(--size);background:var(--favicon-bg);flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.section-icon--circle[data-astro-cid-cs6zh4ns]{border-radius:50%}.section-icon--squircle[data-astro-cid-cs6zh4ns]{border-radius:calc(var(--size) * .3)}.section-icon--square[data-astro-cid-cs6zh4ns]{border-radius:calc(var(--size) * .1)}.section-icon[data-astro-cid-cs6zh4ns] svg{width:calc(var(--size) * .58);height:calc(var(--size) * .58);color:var(--favicon-fg)}.section-icon--bare[data-astro-cid-cs6zh4ns] svg{width:calc(var(--size) * .86);height:calc(var(--size) * .86)}.arc-frame[data-astro-cid-fmbfa3vp]{--g:calc(var(--safe-top) + var(--frame-gap));--l:var(--sidebar-w);--r:var(--frame-gap);--b:var(--frame-bottom);--c:var(--radius-page);--solid:linear-gradient(#000 0 0);--corner:transparent calc(var(--c) - .5px), #000 var(--c);z-index:60;background:var(--shell);background-blend-mode:overlay, normal, normal, normal;pointer-events:none;mask-image:var(--solid), var(--solid), var(--solid), var(--solid), radial-gradient(circle at 100% 100%, var(--corner)), radial-gradient(circle at 0 100%, var(--corner)), radial-gradient(circle at 100% 0, var(--corner)), radial-gradient(circle at 0 0, var(--corner));mask-repeat:no-repeat;mask-size:100% var(--g), 100% var(--b), var(--l) 100%, var(--r) 100%, var(--c) var(--c), var(--c) var(--c), var(--c) var(--c), var(--c) var(--c);mask-position:0 0, 0 100%, 0 0, 100% 0, left var(--l) top var(--g), right var(--r) top var(--g), left var(--l) bottom var(--b), right var(--r) bottom var(--b);position:fixed;inset:0}.arc-bars[data-astro-cid-fmbfa3vp]{z-index:61;height:var(--frame-gap);display:none;position:fixed;left:0;right:0}.arc-bars--top[data-astro-cid-fmbfa3vp]{background-color:var(--shell-ios-top);top:0}.arc-bars--bottom[data-astro-cid-fmbfa3vp]{background-color:var(--shell-ios-bottom);bottom:0}.arc-foot[data-astro-cid-fmbfa3vp]{display:none}@supports (-webkit-touch-callout:none){.arc-bars[data-astro-cid-fmbfa3vp]{display:block}.arc-frame[data-astro-cid-fmbfa3vp]{background:linear-gradient(var(--shell-ios-top) var(--g), var(--shell-ios-bottom) calc(100svh - var(--b)));background-blend-mode:normal}@media (width<=1023px){.arc-frame[data-astro-cid-fmbfa3vp]{height:100lvh;mask-image:var(--solid), var(--solid), var(--solid), radial-gradient(circle at 100% 100%, var(--corner)), radial-gradient(circle at 0 100%, var(--corner));mask-size:100% var(--g), var(--l) 100%, var(--r) 100%, var(--c) var(--c), var(--c) var(--c);mask-position:0 0, 0 0, 100% 0, left var(--l) top var(--g), right var(--r) top var(--g);bottom:auto}.arc-foot[data-astro-cid-fmbfa3vp]{--c:var(--radius-page);--corner:transparent calc(var(--c) - .5px), #000 var(--c);z-index:60;height:calc(var(--frame-bottom) + var(--c));background-color:var(--shell-ios-bottom);pointer-events:none;mask-image:linear-gradient(#000 0 0), radial-gradient(circle at 100% 0, var(--corner)), radial-gradient(circle at 0 0, var(--corner));mask-repeat:no-repeat;mask-size:100% var(--frame-bottom), var(--c) var(--c), var(--c) var(--c);mask-position:0 100%, left var(--sidebar-w) top 0, right var(--frame-gap) top 0;display:block;position:fixed;bottom:0;left:0;right:0}.arc-sidebar[data-astro-cid-fmbfa3vp]{background:linear-gradient(var(--shell-ios-top), var(--shell-ios-bottom))!important;background-blend-mode:normal!important}}}.arc-sidebar[data-astro-cid-fmbfa3vp]{z-index:70;top:var(--safe-top);gap:var(--space-2);width:var(--sidebar-open-w);padding:var(--space-2) var(--space-2) var(--space-3);scrollbar-width:none;color:var(--shell-ink);transition:transform .32s var(--ease-out);flex-direction:column;display:flex;position:fixed;bottom:0;left:0;overflow-y:auto}.arc-top[data-astro-cid-fmbfa3vp]{align-items:center;min-height:32px;display:flex}.arc-toggle[data-astro-cid-fmbfa3vp]{width:32px;height:32px;color:var(--shell-ink-2);border-radius:var(--radius-md);cursor:pointer;background:0 0;border:0;justify-content:center;align-items:center;padding:0;transition:background .16s,color .16s;display:flex}.arc-toggle[data-astro-cid-fmbfa3vp] svg[data-astro-cid-fmbfa3vp]{width:var(--text-lg);height:var(--text-lg);fill:none;stroke:currentColor;stroke-width:1.4px}.arc-toggle[data-astro-cid-fmbfa3vp]:hover{color:var(--shell-ink);background:var(--arc-hover)}.arc-pill[data-astro-cid-fmbfa3vp]{justify-content:space-between;align-items:center;gap:var(--space-2);width:100%;min-height:36px;padding-inline:var(--space-3);color:var(--shell-ink);background:var(--arc-hover);border-radius:var(--radius-md);font-size:var(--text-base);text-align:left;cursor:pointer;transition:background .16s ease, transform .14s var(--ease-out);border:0;font-weight:500;display:flex}.arc-pill[data-astro-cid-fmbfa3vp]:hover{background:var(--arc-active)}.arc-pill[data-astro-cid-fmbfa3vp]:active{transform:scale(.985)}.arc-pill[data-astro-cid-fmbfa3vp] svg{width:var(--text-sm);height:var(--text-sm);color:inherit;flex-shrink:0}.arc-pill-text[data-astro-cid-fmbfa3vp]{white-space:nowrap;text-overflow:ellipsis;min-width:0;overflow:hidden}.arc-tiles[data-astro-cid-fmbfa3vp]{gap:var(--space-2);grid-auto-columns:minmax(0,1fr);grid-auto-flow:column;display:grid}.arc-tile[data-astro-cid-fmbfa3vp]{background:var(--arc-tile);border-radius:var(--radius-md);height:46px;transition:background .16s ease, transform .2s var(--ease-out);justify-content:center;align-items:center;display:flex}.arc-tile[data-astro-cid-fmbfa3vp] svg{width:var(--text-xl);height:var(--text-xl);color:inherit}.arc-tile[data-astro-cid-fmbfa3vp]:hover{background:var(--arc-tile-hover)}.arc-tile[data-astro-cid-fmbfa3vp]:active{transform:scale(.95)}.arc-tabs[data-astro-cid-fmbfa3vp]{padding-top:var(--space-2);flex-direction:column;display:flex}.arc-space[data-astro-cid-fmbfa3vp]{align-items:center;gap:var(--space-3);margin:var(--space-3) 0 var(--space-3);padding-inline:var(--space-3);display:flex}.arc-space[data-astro-cid-fmbfa3vp] img[data-astro-cid-fmbfa3vp]{width:var(--space-8);height:var(--space-8);object-fit:cover;box-shadow:0 0 0 2px var(--arc-active);border-radius:50%;flex-shrink:0}.arc-space-name[data-astro-cid-fmbfa3vp]{font-size:var(--text-lg);letter-spacing:-.01em;color:var(--shell-ink);margin:0;font-weight:700}.arc-tab[data-astro-cid-fmbfa3vp]{isolation:isolate;align-items:center;gap:var(--space-3);width:100%;min-height:38px;padding:var(--space-1) var(--space-3);color:var(--shell-ink);border-radius:var(--radius-md);font-size:var(--text-md);text-align:left;cursor:pointer;transition:background .16s ease, transform .14s var(--ease-out);background:0 0;border:0;font-weight:600;text-decoration:none;display:flex;position:relative}.arc-tab[data-astro-cid-fmbfa3vp]:hover{background:var(--arc-hover)}.arc-tab[data-astro-cid-fmbfa3vp]:active{transform:scale(.985)}.arc-new[data-astro-cid-fmbfa3vp] svg{width:var(--text-lg);height:var(--text-lg);color:inherit;flex-shrink:0;margin-inline:3px}.arc-tab-label[data-astro-cid-fmbfa3vp]{white-space:nowrap;text-overflow:ellipsis;min-width:0;overflow:hidden}.pm-nav-marker[data-astro-cid-fmbfa3vp]{z-index:-1;background:var(--arc-active);border-radius:inherit;position:absolute;inset:0;box-shadow:0 1px 3px #00000029}.arc-folder-tab[data-astro-cid-fmbfa3vp] svg{width:22px;height:var(--text-lg);color:var(--shell-ink);flex-shrink:0}.arc-child[data-astro-cid-fmbfa3vp]{margin-left:var(--space-4);--favicon-size:18px;position:relative}.arc-child[data-astro-cid-fmbfa3vp] .arc-tab[data-astro-cid-fmbfa3vp]{padding-right:var(--space-8);font-weight:500}.arc-close[data-astro-cid-fmbfa3vp]{width:26px;height:26px;color:var(--shell-ink);border-radius:var(--radius-sm);justify-content:center;align-items:center;margin-top:-13px;transition:background .16s,color .16s;display:flex;position:absolute;top:50%;right:5px}.arc-close[data-astro-cid-fmbfa3vp]:hover{color:var(--shell-ink);background:var(--arc-hover)}.arc-close[data-astro-cid-fmbfa3vp] svg{width:var(--text-md);height:var(--text-md);color:inherit}.arc-new[data-astro-cid-fmbfa3vp]{color:var(--shell-ink-2);font-weight:500}.arc-new[data-astro-cid-fmbfa3vp]:hover{color:var(--shell-ink)}.arc-new[data-astro-cid-fmbfa3vp] svg{transition:transform .28s var(--ease-out)}.arc-new[data-astro-cid-fmbfa3vp]:hover svg{transform:rotate(90deg)}.arc-watermark[data-astro-cid-fmbfa3vp]{padding-top:var(--space-4);font-size:var(--text-xs);letter-spacing:.01em;text-align:center;color:#ffffff6b;user-select:none;margin:auto 0 0}.arc-edge[data-astro-cid-fmbfa3vp],.arc-backdrop[data-astro-cid-fmbfa3vp],.arc-bar[data-astro-cid-fmbfa3vp]{display:none}@media (width>=1024px){html.lenis .arc-sidebar[data-astro-cid-fmbfa3vp]{overscroll-behavior:auto}html.arc-collapsed .arc-sidebar[data-astro-cid-fmbfa3vp]{top:calc(var(--safe-top) + var(--frame-gap));bottom:var(--frame-gap);left:var(--frame-gap);background:var(--shell);background-blend-mode:overlay, normal, normal, normal;border-radius:var(--radius-page);box-shadow:var(--shadow);transform:translateX(calc(-100% - var(--frame-gap) * 2))}html.arc-collapsed .arc-edge[data-astro-cid-fmbfa3vp]{z-index:71;width:var(--space-6);display:block;position:fixed;top:0;bottom:0;left:0}html.arc-collapsed .arc-edge[data-astro-cid-fmbfa3vp]:after{content:"";width:3px;height:var(--space-12);margin-top:calc(var(--space-12) / -2);background:var(--shell-ink);opacity:.55;border-radius:2px;position:absolute;top:50%;left:2px}html.arc-collapsed .arc-edge[data-astro-cid-fmbfa3vp]:hover+.arc-backdrop[data-astro-cid-fmbfa3vp]+.arc-sidebar[data-astro-cid-fmbfa3vp],html.arc-collapsed.arc-peek .arc-sidebar[data-astro-cid-fmbfa3vp],html.arc-collapsed .arc-sidebar[data-astro-cid-fmbfa3vp]:hover,html.arc-collapsed .arc-sidebar[data-astro-cid-fmbfa3vp]:focus-within{transform:none}}@media (width<=1023px){.arc-sidebar[data-astro-cid-fmbfa3vp]{z-index:100;width:auto;max-height:85svh;padding:var(--space-4) var(--space-4) calc(var(--space-4) + env(safe-area-inset-bottom,0px));background:var(--shell);background-blend-mode:overlay, normal, normal, normal;border-radius:var(--radius-page) var(--radius-page) 0 0;visibility:hidden;transition:transform .24s var(--ease-out), visibility 0s linear .24s;top:auto;left:0;right:0;transform:translateY(100%)}html.arc-sheet-open .arc-sidebar[data-astro-cid-fmbfa3vp]{visibility:visible;transition:transform .38s var(--ease-out), visibility 0s;transform:none}.arc-backdrop[data-astro-cid-fmbfa3vp]{z-index:99;opacity:0;pointer-events:none;background:#0000008c;transition:opacity .24s;display:block;position:fixed;inset:0}html.arc-sheet-open .arc-backdrop[data-astro-cid-fmbfa3vp]{opacity:1;pointer-events:auto}.arc-tab[data-astro-cid-fmbfa3vp]{min-height:44px;font-size:var(--text-lg)}.arc-tile[data-astro-cid-fmbfa3vp]{height:56px}.arc-toggle[data-astro-cid-fmbfa3vp]{width:44px;height:44px}.arc-pill[data-astro-cid-fmbfa3vp]{background:#00000029;min-height:44px}.arc-child[data-astro-cid-fmbfa3vp] .arc-tab[data-astro-cid-fmbfa3vp]{padding-right:calc(44px + var(--space-1))}.arc-close[data-astro-cid-fmbfa3vp]{width:44px;height:44px;margin-top:-22px;right:0}html.scripts-failed .arc-sidebar[data-astro-cid-fmbfa3vp]{visibility:visible;max-height:none;position:static;transform:none}html.scripts-failed .arc-bar[data-astro-cid-fmbfa3vp]{display:none}.arc-bar[data-astro-cid-fmbfa3vp]{z-index:70;left:var(--frame-gap);right:var(--frame-gap);bottom:calc(var(--frame-gap) + env(safe-area-inset-bottom,0px));gap:var(--space-2);height:48px;display:flex;position:fixed}.arc-bar-open[data-astro-cid-fmbfa3vp]{align-items:center;gap:var(--space-3);min-width:0;padding-inline:var(--space-4);color:var(--shell-ink);background:var(--arc-hover);border-radius:var(--radius-md);font-size:var(--text-md);text-align:left;cursor:pointer;border:0;flex:1;font-weight:500;display:flex}.arc-bar-open[data-astro-cid-fmbfa3vp] svg{color:var(--shell-ink);flex-shrink:0}}@media (prefers-reduced-motion:reduce){.arc-sidebar[data-astro-cid-fmbfa3vp],.arc-backdrop[data-astro-cid-fmbfa3vp],.arc-tile[data-astro-cid-fmbfa3vp],.arc-tab[data-astro-cid-fmbfa3vp],.arc-pill[data-astro-cid-fmbfa3vp],.arc-close[data-astro-cid-fmbfa3vp],.arc-new[data-astro-cid-fmbfa3vp] svg{transition:none!important}.arc-new[data-astro-cid-fmbfa3vp]:hover svg,.arc-tile[data-astro-cid-fmbfa3vp]:active,.arc-tab[data-astro-cid-fmbfa3vp]:active,.arc-pill[data-astro-cid-fmbfa3vp]:active{transform:none}}html.arc-sheet-open,html.arc-sheet-open body{overflow:hidden}@font-face{font-family:Geist;src:url(/_astro/geist-latin-wght-normal.BgDaEnEv.woff2)format("woff2");font-weight:100 900;font-style:normal;font-display:swap;unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Geist;src:url(/_astro/geist-latin-ext-wght-normal.DC-KSUi6.woff2)format("woff2");font-weight:100 900;font-style:normal;font-display:swap;unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Geist Mono;src:url(/_astro/geist-mono-latin-wght-normal.XN7g48iV.woff2)format("woff2");font-weight:100 900;font-style:normal;font-display:swap;unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Geist Mono;src:url(/_astro/geist-mono-latin-ext-wght-normal.Bwz-egvJ.woff2)format("woff2");font-weight:100 900;font-style:normal;font-display:swap;unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}:root{--font-sans:"Geist", system-ui, sans-serif;--font-mono:"Geist Mono", ui-monospace, monospace;--text-xs:.75rem;--text-sm:.8125rem;--text-base:.875rem;--text-md:.9375rem;--text-lg:1rem;--text-xl:1.25rem;--text-page-title:clamp(2.5rem, 1.6rem + 3.2vw, 4rem);--text-section-title:clamp(1.75rem, 1.2rem + 1.5vw, 2.5rem);--text-statement:clamp(2.125rem, 1.2rem + 3.2vw, 4rem);--text-lead:clamp(1.125rem, 1rem + .4vw, 1.3125rem);--reading-width:43rem;--contents-rail-width:15rem;--text-reading-body:1.125rem;--text-article-title:clamp(2.25rem, 1.4rem + 3vw, 3.75rem);--bg:#0f0d0c;--surface:#171412;--surface-2:#221e1a;--primary:#7c6af7;--accent:#e07b63;--action:#6a58e6;--action-hover:color-mix(in srgb, var(--action) 88%, white);--paper:#f0ede8;--text:#f0ede8;--text-2:#9c9188;--text-white:#fff;--text-reading:#c8c0b9;--border:#fff8f017;--border-active:#fff8f024;--shadow:0 4px 24px #00000080;--radius:6px;--radius-sm:4px;--radius-xs:3px;--panel:#1b1714;--panel-3:#2b2622;--panel-3-edge:color-mix(in srgb, var(--primary) 40%, transparent);--icon:var(--primary);--panel-edge:#fff8f01a;--radius-lg:12px;--radius-md:10px;--radius-page:10px;--shell-a:#5d8bb5;--shell-b:#38628f;--shell-c:#1f6270;--frame:var(--shell-b);--shell:url(/grain.svg), radial-gradient(90% 75% at 100% 0, var(--shell-a), transparent), radial-gradient(85% 60% at 0 100%, var(--shell-c), transparent), linear-gradient(var(--shell-b), var(--shell-b));--shell-ios-top:var(--shell-b);--shell-ios-bottom:var(--shell-c);--shell-ink:#fff;--shell-ink-2:#ffffffd9;--frame-gap:8px;--frame-bottom:var(--frame-gap);--sidebar-open-w:248px;--sidebar-w:var(--sidebar-open-w);--arc-hover:#ffffff12;--arc-active:#ffffff1a;--arc-tile:#ffffff29;--arc-tile-hover:#ffffff3d;--brand-linkedin:#0a66c2;--brand-github:var(--text-white);--brand-x:var(--text-white);--container:1200px;--page-gutter:32px;--safe-top:env(safe-area-inset-top,0px);--gold:#d4a84f;--status-shipped:#6cb6ff;--toolkit-tool:#4fd1c5;--space-1:.25rem;--space-2:.5rem;--space-3:.75rem;--space-4:1rem;--space-6:1.5rem;--space-8:2rem;--space-12:3rem;--section-gap:calc(var(--space-12) * 2);--ease-out:cubic-bezier(.16, 1, .3, 1);--duration-reveal:.7s;--stagger-step:60ms}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{scroll-padding-top:calc(var(--safe-top) + var(--frame-gap) + 12px);scroll-padding-bottom:calc(var(--frame-bottom) + var(--space-3));-webkit-text-size-adjust:100%;tab-size:4;scrollbar-gutter:stable}html,body,#content{overflow-anchor:none}body{font-family:var(--font-sans);font-size:var(--text-lg);background-color:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;min-height:100svh;margin:0;line-height:1.5;overflow-x:hidden}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}img,picture,video,canvas{max-width:100%;display:block}svg{vertical-align:middle;max-width:100%;display:inline-block}:where([data-icon]){color:var(--icon)}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer;background:0 0;border:0}ul,ol{list-style:none}a{color:inherit;text-decoration:none}table{border-collapse:collapse}hr{border:0;border-top:1px solid}:focus:not(:focus-visible){outline:none}:focus-visible{outline:2px solid var(--primary);outline-offset:3px;border-radius:var(--radius-xs)}.arc-sidebar :focus-visible,.arc-bar :focus-visible{outline-color:var(--shell-ink)}#content:focus{outline:none}.pm-credential-close:focus-visible,.pm-button:focus-visible{outline:2px solid var(--primary);outline-offset:2px}.pm-list-row:focus-visible{outline:2px solid var(--primary);outline-offset:var(--space-1)}.pm-skip-link{top:0;left:var(--space-4);z-index:400;padding:var(--space-2) var(--space-4);background:var(--surface-2);border:1px solid var(--primary);border-radius:var(--radius);color:var(--text);font-size:var(--text-base);font-weight:500;text-decoration:none;transition:transform .15s;position:fixed;transform:translateY(-150%)}.pm-skip-link:focus-visible{transform:translateY(calc(var(--safe-top) + var(--frame-gap) + var(--space-2)))}.container{max-width:var(--container);margin:0 auto;padding:0 2rem}[data-reveal]:not(.revealed),[data-reveal-stagger]:not(.revealed)>*{opacity:0}html:not(.reveals-live) [data-reveal]:not(.revealed),html:not(.reveals-live) [data-reveal-stagger]:not(.revealed)>*{animation:0s linear 4s forwards pm-reveal-failsafe}@keyframes pm-reveal-failsafe{to{opacity:1}}[data-reveal].revealed{animation:pm-reveal-rise var(--duration-reveal) var(--ease-out) backwards;animation-delay:var(--reveal-delay,0s)}[data-reveal-stagger].revealed>*{animation:pm-reveal-rise-sm var(--duration-reveal) var(--ease-out) backwards;animation-delay:calc(var(--reveal-index,0) * var(--stagger-step))}[data-reveal].is-instant,[data-reveal-stagger].is-instant>*{animation:none}[data-reveal-delay="1"]{--reveal-delay:.1s}[data-reveal-delay="2"]{--reveal-delay:.2s}[data-reveal-delay="3"]{--reveal-delay:.3s}[data-reveal-delay="4"]{--reveal-delay:.4s}[data-reveal-delay="5"]{--reveal-delay:.5s}@keyframes pm-reveal-rise{0%{opacity:.01;transform:translateY(16px)}}@keyframes pm-reveal-rise-sm{0%{opacity:.01;transform:translateY(12px)}}.pm-skeleton{background:var(--surface-2);border-radius:var(--radius-sm);position:relative;overflow:hidden}.pm-skeleton:after{content:"";background:linear-gradient(90deg, transparent, color-mix(in srgb, var(--text) 6%, transparent), transparent);animation:1.6s ease-in-out infinite pm-shimmer;position:absolute;inset:0;transform:translate(-100%)}.pm-skeleton:has(>[data-img-fade].is-loaded):after{opacity:0;animation:none}@keyframes pm-shimmer{to{transform:translate(100%)}}[data-img-fade]{opacity:.01;transition:opacity .5s var(--ease-out)}[data-img-fade].is-loaded{opacity:1}html:not(.reveals-live) [data-img-fade]:not(.is-loaded){animation:0s linear 4s forwards pm-reveal-failsafe}[data-img-fade=eager]{z-index:1;opacity:1;position:relative}.pm-skeleton:has(>[data-img-fade=eager].is-loaded){background:0 0}html:not([data-astro-transition]) #content{view-transition-name:none}::view-transition-group(pm-main){animation:none}::view-transition-old(pm-main){translate:0 var(--vt-old-y,0)}@keyframes pm-view-out{to{opacity:0}}@keyframes pm-view-in{0%{opacity:0;transform:translateY(6px)}}.pm-nav-progress{view-transition-name:pm-nav-progress}::view-transition-group(pm-nav-progress),::view-transition-new(pm-nav-progress){animation:none}::view-transition-old(pm-nav-progress){display:none}.lanyard-portrait,.pm-work-id-photo-img{view-transition-name:profile-photo}::view-transition-group(profile-photo){animation-duration:.45s;animation-timing-function:var(--ease-out)}::view-transition-old(profile-photo),::view-transition-new(profile-photo){object-fit:cover;height:100%;overflow:clip}.arc-sidebar{view-transition-name:pm-sidebar}.arc-frame{view-transition-name:pm-frame}.arc-bar{view-transition-name:pm-bar}.arc-edge{view-transition-name:pm-edge}.arc-foot{view-transition-name:pm-foot}.arc-bars--top{view-transition-name:pm-bars-top}.arc-bars--bottom{view-transition-name:pm-bars-bottom}::view-transition-group(pm-sidebar){z-index:10}::view-transition-group(pm-sidebar),::view-transition-new(pm-sidebar),::view-transition-group(pm-frame),::view-transition-new(pm-frame),::view-transition-group(pm-bar),::view-transition-new(pm-bar),::view-transition-group(pm-edge),::view-transition-new(pm-edge),::view-transition-group(pm-foot),::view-transition-new(pm-foot),::view-transition-group(pm-bars-top),::view-transition-new(pm-bars-top),::view-transition-group(pm-bars-bottom),::view-transition-new(pm-bars-bottom){animation:none}::view-transition-old(pm-sidebar),::view-transition-old(pm-frame),::view-transition-old(pm-bar),::view-transition-old(pm-edge),::view-transition-old(pm-foot),::view-transition-old(pm-bars-top),::view-transition-old(pm-bars-bottom){display:none}@media (width<=1023px){::view-transition-old(pm-sidebar){animation:pm-sheet-away .24s var(--ease-out) both;display:block}}@keyframes pm-sheet-away{to{transform:translateY(100%)}}@media (width>=1024px){html:not(.arc-collapsed) .pm-nav-marker{view-transition-name:nav-marker}}::view-transition-group(nav-marker){animation-duration:.24s;animation-timing-function:var(--ease-out)}.pm-doc-title{view-transition-class:doc-title;width:fit-content;max-width:100%;display:inline-block}::view-transition-group(*.doc-title){animation-duration:.32s;animation-timing-function:var(--ease-out)}::view-transition-old(*.doc-title),::view-transition-new(*.doc-title){object-fit:none;object-position:left top;width:auto;height:100%}.pm-doc-cover{view-transition-class:doc-cover}::view-transition-group(*.doc-cover){animation-duration:.32s;animation-timing-function:var(--ease-out)}::view-transition-old(*.doc-cover),::view-transition-new(*.doc-cover){object-fit:cover;height:100%}::view-transition-old(*.doc-cover):only-child{animation-duration:90ms}::view-transition-new(*.doc-cover):only-child{animation-duration:.2s}::view-transition-old(*.doc-title):only-child{animation-duration:90ms}::view-transition-new(*.doc-title):only-child{animation-duration:.2s}.pm-nav-progress{top:calc(var(--safe-top) + var(--frame-gap));left:var(--sidebar-w);right:var(--frame-gap);z-index:500;height:var(--radius-page);border-radius:var(--radius-page) var(--radius-page) 0 0;opacity:0;pointer-events:none;transition:opacity .2s;position:fixed;overflow:hidden}.pm-nav-progress-fill{background:var(--primary);transform-origin:0;height:3px;transition:transform .3s var(--ease-out);transform:scaleX(0)}.pm-nav-progress.is-active{opacity:1}.pm-nav-progress.is-done{opacity:0;transition:opacity .2s .2s}.pm-nav-progress.is-done .pm-nav-progress-fill{transition:transform .2s var(--ease-out)}.pm-nav-progress.is-resetting .pm-nav-progress-fill{transition:none}@media (prefers-reduced-motion:reduce){.pm-nav-progress-fill{transition:none}}.pm-app{background:var(--bg);color:var(--text);min-height:100svh}.pm-content{background:var(--bg);margin-left:var(--sidebar-w);margin-right:var(--frame-gap);padding-top:calc(var(--safe-top) + var(--frame-gap));padding-bottom:var(--frame-bottom);min-height:100svh;overflow-x:clip}@media (width>=1024px) and (width<=1279px){:root{--text-statement:3rem;--text-page-title:3rem;--text-article-title:2.75rem}}@media (width<=1023px){:root{--sidebar-w:var(--frame-gap);--frame-gap:6px;--frame-bottom:calc(68px + env(safe-area-inset-bottom,0px))}}html.arc-collapsed{--sidebar-w:var(--frame-gap)}@property --sidebar-w{syntax:"<length>";inherits:true;initial-value:248px}@media (prefers-reduced-motion:no-preference){html{transition:--sidebar-w .32s var(--ease-out)}}.pm-logo-linkedin{background:linear-gradient(var(--text-white), var(--text-white)) center / 76% 76% no-repeat;color:var(--brand-linkedin)!important}html{background:var(--frame);scrollbar-color:var(--arc-active) var(--frame);scrollbar-width:thin}[data-book][aria-busy=true]{cursor:progress;opacity:.75}html.pm-scroll-locked,html.pm-scroll-locked body,html.cal-modal-open,html.cal-modal-open body{overflow:hidden}.pm-view-content{width:100%;max-width:calc(var(--container) + 2 * var(--page-gutter));padding:var(--page-gutter) var(--page-gutter) var(--space-12);box-sizing:border-box;gap:var(--space-6);isolation:isolate;flex-direction:column;margin-inline:auto;display:flex}@media (width<=1023px){:root{--page-gutter:24px}}@media (width<=767px){:root{--page-gutter:16px;--text-reading-body:1.0625rem;--section-gap:calc(var(--space-12) + var(--space-6))}}.pm-wiki-header{gap:var(--space-3);margin-bottom:var(--space-4);padding-block:var(--space-4);flex-direction:column;display:flex;position:relative}.pm-wiki-page-title{font-size:var(--text-statement);color:var(--text);letter-spacing:-.025em;text-wrap:balance;margin:0;font-weight:600;line-height:1.15}.pm-wiki-lead{max-width:65ch;font-size:var(--text-lg);color:var(--text-reading);text-wrap:pretty;margin:0;font-weight:400;line-height:1.6}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.pm-prose-link{color:inherit;border-bottom:1px dotted color-mix(in srgb, var(--primary) 50%, transparent);text-decoration:none;transition:color .15s,border-color .15s}.pm-prose-link:hover,.pm-prose-link:focus-visible{color:var(--primary);border-bottom-color:var(--primary)}.pm-section-title{font-size:var(--text-section-title);letter-spacing:-.02em;color:var(--text);margin:0 0 var(--space-3);text-wrap:balance;font-weight:600;line-height:1.2}.pm-project-status{font-size:var(--text-md);color:var(--text-2);font-weight:500}.pm-project-status--shipped{color:var(--status-shipped)}.pm-project-status--in-progress{color:var(--gold)}.pm-panel{background:var(--panel);border:1px solid var(--panel-edge);border-radius:var(--radius-lg)}.pm-panel--link{color:inherit;transition:transform .14s var(--ease-out), border-color .18s ease, background .18s ease;text-decoration:none}.pm-panel--link:hover{border-color:var(--border-active);background:var(--surface-2)}.pm-panel--link:active{transform:scale(.995)}@media (prefers-reduced-motion:reduce){.pm-panel--link,.pm-panel--link:hover,.pm-panel--link:active{transition:none;transform:none}}.pm-list{gap:var(--space-4);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.pm-list>li{min-width:0;display:flex}.pm-list-row{gap:var(--space-3);width:100%;padding:var(--space-6);flex-direction:column;display:flex}.pm-list-row-top{align-items:baseline;gap:var(--space-1) var(--space-3);flex-wrap:wrap;display:flex}.pm-list-row-title{font-size:var(--text-xl);letter-spacing:-.01em;color:var(--text);flex:1;min-width:0;font-weight:600;line-height:1.3;transition:color .15s}.pm-list-row:hover .pm-list-row-title{color:var(--text-white)}.pm-list-row-meta{font-size:var(--text-md);font-variant-numeric:tabular-nums;color:var(--text-reading)}.pm-list-row-sub{max-width:70ch;font-size:var(--text-lg);color:var(--text-reading);text-wrap:pretty;margin:0;line-height:1.6}.pm-list-row-ext{width:var(--text-sm);height:var(--text-sm);flex-shrink:0;align-self:center}@media (width<=767px){.pm-list-row{padding:var(--space-4)}.pm-list-row-title{flex-basis:100%}}.pm-postcard-grid{grid-template-columns:repeat(var(--grid-cols,3), minmax(0, 1fr));gap:var(--space-4);margin:0;padding:0;list-style:none;display:grid}.pm-postcard-grid>li{min-width:0;display:flex}.pm-postcard-grid--feature>li:first-child{grid-column:1/-1}@media (width<=1279px){.pm-postcard-grid{--grid-cols:1!important}}.pm-text-link{align-items:center;gap:var(--space-2);font-size:var(--text-md);color:var(--text);text-decoration:underline;text-decoration-color:var(--border-active);text-underline-offset:var(--space-1);font-weight:500;transition:color .15s,text-decoration-color .15s;display:inline-flex}.pm-text-link:hover{color:var(--primary);text-decoration-color:currentColor}.pm-text-link svg{color:inherit;width:var(--text-sm);height:var(--text-sm);transition:transform .24s var(--ease-out)}.pm-text-link:hover svg{transform:translate(3px)}@media (width<=1023px){.pm-text-link{min-height:44px}}@media (prefers-reduced-motion:reduce){.pm-text-link svg,.pm-text-link:hover svg{transition:none;transform:none}}.pm-cta-panel{justify-content:space-between;align-items:center;gap:var(--space-6) var(--space-12);padding:var(--space-12);border:1px solid var(--panel-3-edge);border-radius:var(--radius-lg);background:var(--panel-3);color:var(--text);flex-wrap:wrap;display:flex}@media (width<=767px){.pm-cta-panel{padding:var(--space-8) var(--space-6)}}.pm-badge{--badge-color:var(--text-reading);align-items:center;gap:var(--space-1);padding:2px var(--space-2);border-radius:var(--radius-sm);background:color-mix(in srgb, var(--badge-color) 10%, transparent);color:var(--badge-color);font-size:var(--text-sm);white-space:nowrap;font-weight:500;text-decoration:none;display:inline-flex}a.pm-badge:hover,a.pm-badge:focus-visible{background:color-mix(in srgb, var(--badge-color) 18%, transparent)}@media (width<=1023px){a.pm-badge{min-height:44px;padding-inline:var(--space-3)}}.pm-prose{max-width:68ch;font-size:var(--text-md);color:var(--text-2);line-height:1.7}.pm-prose>*+*{margin-top:var(--space-4)}.pm-prose h2,.pm-prose h3,.pm-prose h4{color:var(--text);letter-spacing:-.01em;scroll-margin-top:calc(var(--safe-top) + var(--frame-gap) + 12px);font-weight:600;line-height:1.3}.pm-prose h2{font-size:var(--text-xl);margin-top:var(--space-8)}.pm-prose h3{font-size:var(--text-lg);margin-top:var(--space-6)}.pm-prose h4{font-size:var(--text-md);margin-top:var(--space-6)}.pm-prose>:first-child{margin-top:0}.pm-prose strong{color:var(--text);font-weight:600}.pm-prose a{color:inherit;border-bottom:1px dotted color-mix(in srgb, var(--primary) 50%, transparent);text-decoration:none;transition:color .15s,border-color .15s}.pm-prose a:hover,.pm-prose a:focus-visible{color:var(--primary);border-bottom-color:var(--primary)}.pm-prose ul,.pm-prose ol{padding-left:var(--space-6)}.pm-prose li+li{margin-top:var(--space-2)}.pm-prose li::marker{color:var(--text-2)}.pm-prose blockquote{padding-left:var(--space-4);border-left:2px solid var(--border-active);color:var(--text-2);font-style:italic}.pm-prose code{border:1px solid var(--border);border-radius:var(--radius-xs);background:var(--surface-2);font-family:var(--font-mono);color:var(--text);padding:1px 5px;font-size:.9em}.pm-prose pre{padding:var(--space-4);border:1px solid var(--border);border-radius:var(--radius);font-size:var(--text-base);line-height:1.6;overflow-x:auto}.pm-prose pre code{color:inherit;font-size:inherit;background:0 0;border:none;padding:0}.pm-prose img{border:1px solid var(--border);border-radius:var(--radius)}.pm-prose-img{border-radius:var(--radius);width:fit-content;max-width:100%;display:block}.pm-prose-img>img{max-width:100%;height:auto;display:block}.pm-prose hr{border:none;border-top:1px solid var(--border);margin:var(--space-8) 0}.pm-prose table{border-collapse:collapse;width:100%;font-size:var(--text-base)}.pm-prose th,.pm-prose td{padding:var(--space-2) var(--space-3);border-bottom:1px solid var(--border);text-align:left}.pm-prose th{color:var(--text);font-size:var(--text-md);font-weight:600}.pm-button{justify-content:center;align-items:center;gap:var(--space-2);min-height:48px;padding:var(--space-3) var(--space-6);background:var(--action);border-radius:var(--radius);color:var(--text-white);font-size:var(--text-lg);cursor:pointer;transition:background .15s ease, transform .2s var(--ease-out);border:0;font-weight:600;display:inline-flex}.pm-button svg{color:inherit}.pm-button:hover{background:var(--action-hover)}.pm-button:active{transform:scale(.98)}@media (prefers-reduced-motion:reduce){.pm-button,.pm-button:hover,.pm-button:active{transition:background .15s;transform:none}}.pm-bio-text{font-size:var(--text-lg);color:var(--text-reading);line-height:1.65}@media (prefers-reduced-motion:reduce){[data-reveal]:not(.revealed),[data-reveal-stagger]:not(.revealed)>*,[data-img-fade]{opacity:1;transition:none;animation:none;transform:none}[data-reveal].revealed,[data-reveal-stagger].revealed>*,.pm-skeleton:after{animation:none}}@media (width<=767px){body{font-size:var(--text-lg)}}
