.project-links{--project-links-inset:32px;--project-links-width:144px;z-index:8;top:max(24px, env(safe-area-inset-top,0px));left:max(var(--project-links-inset), env(safe-area-inset-left,0px));width:var(--project-links-width);--project-navigation-resting-color:var(--color-gray-500);color:var(--project-navigation-resting-color);visibility:hidden;pointer-events:none;flex-direction:column;font-size:14px;line-height:20px;display:flex;position:fixed}.project-links[data-project-anchored]:not([data-compact]){top:max(var(--project-links-card-top,72px), env(safe-area-inset-top,0px));left:calc(var(--project-links-card-left) - var(--project-links-width) - var(--project-links-card-gap,24px));max-height:calc(100dvh - max(var(--project-links-card-top,72px), env(safe-area-inset-top,0px)) - 12px);scrollbar-width:none;overflow-y:auto}.zoom-root[data-phase=open] .project-links{visibility:visible;pointer-events:auto}.project-links-flight{z-index:8;transform-origin:0 0;clip-path:none;opacity:0;visibility:hidden;pointer-events:none;border-radius:0;position:fixed;inset:0;overflow:visible}.zoom-root .project-links-flight .project-links{visibility:inherit;pointer-events:none}.zoom-root[data-open] .project-links-flight[data-present]{visibility:visible}.zoom-root[data-phase=open] .project-links-flight[data-interactive] .project-links{pointer-events:auto}.project-links a{min-height:36px;color:inherit;border-radius:4px;align-items:center;gap:8px;text-decoration:none;display:flex}.project-links-home{margin-bottom:12px}.project-mobile-home{z-index:9;top:max(calc(var(--project-home-top,var(--portfolio-sheet-top,0px)) + 12px), calc(env(safe-area-inset-top,0px) + 12px));left:max(calc(var(--project-home-left,(100% - var(--portfolio-sheet-width,100%)) / 2) + 12px), calc(env(safe-area-inset-left,0px) + 12px));background:var(--portfolio-bg);width:44px;height:44px;color:var(--portfolio-ink);box-shadow:0 0 0 1px color-mix(in srgb, var(--portfolio-ink) 8%, transparent), 0 2px 8px #0000001f;-webkit-tap-highlight-color:transparent;border-radius:50%;justify-content:center;align-items:center;text-decoration:none;display:none;position:fixed}.project-mobile-home:active{background:color-mix(in srgb, var(--portfolio-bg), var(--portfolio-ink) 12%)}.project-mobile-home:focus-visible{outline-offset:2px;outline:2px solid}.project-mobile-home[data-attached]{--project-home-x:max(calc(var(--project-home-left,0px) + 12px), calc(env(safe-area-inset-left,0px) + 12px));--project-home-y:max(calc(var(--project-home-top,0px) + 12px), calc(env(safe-area-inset-top,0px) + 12px));left:var(--project-home-x);top:var(--project-home-y);transform-origin:calc(-1 * var(--project-home-x)) calc(-1 * var(--project-home-y))}.project-mobile-home[data-glass]{--project-home-shadow:0 0 0 1px #0000000d, 0 1px 4px #0000000d;box-shadow:var(--project-home-shadow)}.project-mobile-home[data-quiet]{width:36px;height:36px;box-shadow:none}.project-mobile-home[data-quiet]:before{content:"";border-radius:50%;position:absolute;inset:-4px}.project-mobile-home[data-quiet] svg{width:20px;height:20px}.project-mobile-home[data-steady]{width:40px;height:40px}.project-mobile-home[data-steady]:before{inset:-2px}.project-mobile-home[data-steady] svg{width:22px;height:22px}@supports (backdrop-filter:blur(12px)){.project-mobile-home[data-glass]{background:color-mix(in srgb, var(--portfolio-bg) 60%, transparent);backdrop-filter:blur(12px)}.project-mobile-home[data-glass]:active{background:color-mix(in srgb, var(--portfolio-bg) 80%, transparent)}.project-mobile-home[data-vibrant]{background:color-mix(in srgb, var(--portfolio-bg) 45%, transparent);backdrop-filter:blur(16px)saturate(1.8)}.project-mobile-home[data-quiet]{background:color-mix(in srgb, var(--portfolio-bg) 24%, transparent);backdrop-filter:blur(12px)saturate(1.4)}.project-mobile-home[data-steady]{background:color-mix(in srgb, var(--portfolio-bg) 40%, transparent);backdrop-filter:blur(4px)}.project-mobile-home[data-quiet]:is(:active,:focus-visible){background:color-mix(in srgb, var(--portfolio-bg) 55%, transparent)}}.project-mobile-home[data-vibrant] svg{color:color-mix(in srgb, var(--portfolio-ink) 82%, var(--portfolio-bg));mix-blend-mode:multiply}.project-mobile-home[data-quiet] svg{color:color-mix(in srgb, var(--portfolio-ink) 65%, var(--portfolio-bg))}.project-mobile-home[data-quiet]:is(:active,:focus-visible) svg{color:var(--portfolio-ink);mix-blend-mode:normal}@media (prefers-color-scheme:dark){.project-mobile-home[data-glass]{--project-home-shadow:0 0 0 1px #ffffff14}.project-mobile-home[data-vibrant] svg{mix-blend-mode:screen}}@media (prefers-reduced-transparency:reduce){.project-mobile-home[data-glass]{background:var(--portfolio-bg);backdrop-filter:none}.project-mobile-home[data-glass]:active{background:color-mix(in srgb, var(--portfolio-bg), var(--portfolio-ink) 12%)}.project-mobile-home[data-vibrant] svg{color:var(--portfolio-ink);mix-blend-mode:normal}.project-mobile-home[data-quiet]:focus-visible{background:var(--portfolio-bg)}}@media (forced-colors:active){.project-mobile-home[data-vibrant] svg{color:buttontext;mix-blend-mode:normal}}.project-links[data-mobile-project-home][data-compact] .project-links-home{display:none}.zoom-root[data-phase=open]:has(.project-links[data-mobile-project-home][data-compact])>.project-mobile-home{pointer-events:auto;display:flex}.zoom-root[data-open]:has(.project-links[data-mobile-project-home][data-compact])>.project-mobile-home[data-flight]{opacity:0;visibility:hidden;pointer-events:none;display:flex}.zoom-root[data-open]:has(.project-links[data-mobile-project-home][data-compact])>.project-mobile-home[data-flight][data-present]{visibility:visible}.zoom-root[data-phase=open]:has(.project-links[data-mobile-project-home][data-compact])>.project-mobile-home[data-flight][data-interactive]{pointer-events:auto}.zoom-root:has(.project-links[data-mobile-project-home][data-compact]) [data-zoom-close]{visibility:hidden;pointer-events:none}@media (width<80rem){.project-links[data-static-sidebar][data-mobile-project-home] .project-links-home{display:none}.project-mobile-home[data-static-project-home]{display:flex}[data-project-fallback]:has([data-static-project-home]) .static-project-close{visibility:hidden}}.project-links-marker{background:var(--portfolio-ink);pointer-events:none;opacity:0;border-radius:50%;width:4px;height:4px;transition:transform .2s cubic-bezier(.22,1,.36,1);position:absolute;top:0;left:0}@media (prefers-reduced-motion:reduce){.project-links-marker{transition:none}}.project-links :is(img,svg){flex:none;width:1lh;height:1lh}.project-links img{object-fit:cover;border-radius:4px}.project-links a[aria-current=page]{color:var(--portfolio-ink);font-weight:500}.project-links-sections{min-width:0;margin:0 0 12px 28px;padding:4px;list-style:none}.project-links .project-links-sections a{overflow-wrap:anywhere;min-height:32px;padding-block:6px;font-size:13px;line-height:18px}.project-links .project-links-sections a[aria-current=location]{color:var(--portfolio-ink);font-weight:500}.project-section-reveal{clip-path:inset(0);visibility:hidden;border-radius:0;flex:none;min-width:0;height:0;overflow:clip}.project-section-reveal[data-selected]{visibility:visible;height:auto}.project-section-reveal>.project-links-sections{margin:0;padding:4px 4px 16px 32px}.project-links[data-compact] .project-section-reveal{grid-area:2/1/auto/-1;align-self:start}.project-links[data-compact] .project-section-reveal>.project-links-sections{background:linear-gradient(color-mix(in srgb, var(--portfolio-ink) 10%, transparent), color-mix(in srgb, var(--portfolio-ink) 10%, transparent)) left 8px / 100% 1px no-repeat;border:0;margin:0;padding:13px 4px 4px}.project-links[data-compact]:has(.project-links-sections){grid-template-columns:repeat(var(--project-links-columns), minmax(0, 1fr))}.project-links[data-compact]:has(.project-links-sections)>a{grid-row:1}.project-links[data-compact] .project-links-sections{border-top:1px solid color-mix(in srgb, var(--portfolio-ink) 10%, transparent);scrollbar-width:thin;grid-area:2/1/auto/-1;gap:4px;margin:8px 0 0;padding:4px;display:flex;overflow-x:auto}.project-links[data-compact] .project-links-sections li{flex:none}.project-links[data-compact] .project-links-sections a{white-space:nowrap;min-height:44px;padding:8px}@media (width<80rem){.project-links[data-static-sidebar]:has(.project-links-sections){grid-template-columns:repeat(var(--project-links-columns), minmax(0, 1fr))}.project-links[data-static-sidebar]:has(.project-links-sections)>a{grid-row:1}.project-links[data-static-sidebar] .project-links-sections{border-top:1px solid color-mix(in srgb, var(--portfolio-ink) 10%, transparent);scrollbar-width:thin;grid-area:2/1/auto/-1;gap:4px;margin:8px 0 0;padding:4px;display:flex;overflow-x:auto}.project-links[data-static-sidebar] .project-links-sections li{flex:none}.project-links[data-static-sidebar] .project-links-sections a{white-space:nowrap;min-height:44px;padding:8px}}.project-links a:focus-visible{color:var(--portfolio-ink);outline-offset:2px;outline:2px solid}@media (hover:hover) and (pointer:fine){.project-links a:hover,.zoom-root[data-phase=open]:hover:not(:has(.zoom-card:hover,.zoom-stream-title-row:hover,[data-zoom-controls]:hover)) .project-links[data-dismiss-area-home-hover] .project-links-home,[data-project-fallback]:has(.static-project-backdrop:hover) .project-links[data-dismiss-area-home-hover] .project-links-home{color:var(--portfolio-ink)}.project-links:not([data-color-hover]) a:hover span,.zoom-root[data-phase=open]:hover:not(:has(.zoom-card:hover,.zoom-stream-title-row:hover,[data-zoom-controls]:hover)) .project-links[data-dismiss-area-home-hover]:not([data-color-hover]) .project-links-home span{text-underline-offset:3px;text-decoration:underline}}@media (prefers-color-scheme:dark){.project-links{--project-navigation-resting-color:var(--color-gray-400);color:var(--project-navigation-resting-color)}}.zoom-root:has(.project-links:not([data-compact])) [data-zoom-close]{visibility:hidden;pointer-events:none}.project-links[data-compact]{inset:auto 12px max(12px, env(safe-area-inset-bottom,0px));background:var(--portfolio-bg);width:auto;max-width:440px;box-shadow:0 0 0 1px color-mix(in srgb, var(--portfolio-ink) 8%, transparent), 0 4px 16px #00000014;border-radius:12px;grid-auto-columns:minmax(0,1fr);grid-auto-flow:column;margin-inline:auto;padding:8px;font-size:13px;display:grid}.project-links[data-compact] a{flex-direction:column;justify-content:center;gap:4px;min-height:52px}.project-links[data-compact] .project-links-home{margin-bottom:0}.project-links[data-compact] img{width:var(--project-links-mobile-image-size,1lh);height:var(--project-links-mobile-image-size,1lh)}@media (pointer:coarse){.project-links a{min-height:44px}}.project-links[data-static-sidebar]{visibility:visible;pointer-events:auto;top:max(var(--project-links-card-top), env(safe-area-inset-top,0px));left:calc((100% - var(--portfolio-sheet-width)) / 2 - var(--project-links-width) - var(--project-links-card-gap));max-height:calc(100dvh - var(--project-links-card-top) - 12px);scrollbar-width:none;width:calc(var(--project-links-width) + 8px);margin:-4px;padding:4px;overflow-y:auto}@media (width>=80rem){[data-project-fallback]:has([data-static-sidebar]) .static-project-close{visibility:hidden}}@media (width<80rem){.project-links[data-static-sidebar]{inset:auto 12px max(12px, env(safe-area-inset-bottom,0px));background:var(--portfolio-bg);width:auto;max-width:440px;box-shadow:0 0 0 1px color-mix(in srgb, var(--portfolio-ink) 8%, transparent), 0 4px 16px #00000014;border-radius:12px;grid-auto-columns:minmax(0,1fr);grid-auto-flow:column;margin-block:0;margin-inline:auto;padding:8px;font-size:13px;display:grid}.project-links[data-static-sidebar] a{flex-direction:column;justify-content:center;gap:4px;min-height:52px}.project-links[data-static-sidebar] .project-links-home{margin-bottom:0}.project-links[data-static-sidebar] img{width:var(--project-links-mobile-image-size,1lh);height:var(--project-links-mobile-image-size,1lh)}}html[data-portfolio] .project-links[data-navigation-image-outline] img{--navigation-image-stroke:#0000001a;outline:1px solid var(--navigation-image-stroke);outline-offset:-1px}@media (prefers-color-scheme:dark){html[data-portfolio] .project-links[data-navigation-image-outline] img{--navigation-image-stroke:#ffffff1a}}html[data-portfolio][data-concentric-focus][data-portfolio-focus=pointer] .project-links[data-navigation-image-outline] .project-console-icon:focus-visible img{outline:1px solid var(--navigation-image-stroke)!important;outline-offset:-1px!important}.project-links[data-navigation-layout]{--project-links-inset:16px;--project-links-card-gap:16px;--project-toc-width:clamp(160px, calc((100vw - var(--portfolio-sheet-width)) / 2 - 32px), var(--project-toc-requested-width,224px))}.project-links[data-navigation-layout=grouped]{--project-links-width:var(--project-toc-width)}.project-navigation-projects{flex-direction:column;min-width:0;display:flex}.project-navigation-projects>a{flex:none}.project-navigation-toc{min-width:0;margin-top:28px}.project-navigation-toc summary{min-height:36px;color:var(--portfolio-ink);cursor:pointer;border-radius:4px;justify-content:space-between;align-items:center;gap:12px;margin-bottom:8px;padding:4px;font-size:12px;font-weight:500;list-style:none;display:flex}.project-navigation-toc summary::-webkit-details-marker{display:none}.project-navigation-toc[open] summary>span{rotate:180deg}.project-links[data-navigation-layout] .project-links-sections{background:0 0;border:0;margin:0;padding:4px;display:block;overflow:visible}.project-links[data-navigation-layout] .project-links-sections a{white-space:normal;overflow-wrap:break-word;flex-direction:row;justify-content:flex-start;align-items:flex-start;min-height:36px;padding:8px 0;line-height:20px}.project-navigation-toc-body{min-width:0}.project-links[data-navigation-layout=split]:not([data-compact]){overflow:visible}.project-links[data-navigation-layout=split]:not([data-compact]) .project-navigation-projects{max-height:calc(100dvh - var(--project-links-card-top,72px) - 16px);margin:-4px;padding:4px;overflow-y:auto}.project-links[data-navigation-layout=split]:not([data-compact]) .project-navigation-toc{top:max(var(--project-links-card-top,72px), env(safe-area-inset-top,0px));left:calc(var(--project-links-card-right,(100% + var(--portfolio-sheet-width)) / 2) + var(--project-links-card-gap));width:var(--project-toc-width);max-height:calc(100dvh - var(--project-links-card-top,72px) - 16px);scrollbar-width:thin;margin:-4px;padding:4px;position:fixed;overflow-y:auto}.project-links[data-navigation-layout][data-compact]{max-height:calc(100dvh - 32px - env(safe-area-inset-bottom,0px));flex-direction:column;gap:4px;display:flex;overflow-y:auto}.project-links[data-navigation-layout][data-compact] .project-navigation-projects{grid-template-columns:repeat(var(--project-links-columns), minmax(0, 1fr));display:grid}.project-links[data-navigation-layout][data-compact] .project-navigation-toc{width:auto;max-height:none;margin:0;padding:0;position:static}.project-links[data-navigation-layout][data-compact] .project-navigation-toc summary{min-height:44px;margin:0;padding:8px;font-size:13px}.project-links[data-navigation-layout][data-compact] .project-navigation-toc-body{max-height:48dvh;padding:4px;overflow-y:auto}.project-links[data-navigation-layout][data-compact] .project-links-sections a{min-height:44px;padding:10px 8px}@media (width<80rem){.project-links[data-navigation-layout][data-static-sidebar]{max-height:calc(100dvh - 32px - env(safe-area-inset-bottom,0px));flex-direction:column;gap:4px;display:flex;overflow-y:auto}.project-links[data-navigation-layout][data-static-sidebar] .project-navigation-projects{grid-template-columns:repeat(var(--project-links-columns), minmax(0, 1fr));max-height:none;margin:0;padding:0;display:grid;overflow:visible}.project-links[data-navigation-layout][data-static-sidebar] .project-navigation-toc{width:auto;max-height:none;margin:0;padding:0;position:static}.project-links[data-navigation-layout][data-static-sidebar] .project-navigation-toc summary{min-height:44px;margin:0;padding:8px;font-size:13px}.project-links[data-navigation-layout][data-static-sidebar] .project-navigation-toc-body{max-height:48dvh;padding:4px;overflow-y:auto}.project-links[data-navigation-layout][data-static-sidebar] .project-links-sections a{min-height:44px;padding:10px 8px}}@media (pointer:coarse){.project-links[data-navigation-layout] .project-links-sections a,.project-links[data-navigation-layout] .project-navigation-toc summary{min-height:44px}}.project-links[data-toc-placement]{--project-toc-width:clamp(160px, calc((100vw - var(--portfolio-sheet-width)) / 2 - 16px - var(--project-toc-left-padding)), var(--project-toc-requested-width,224px));--project-toc-safe-bottom:max(4px, var(--project-toc-bottom-padding,24px), env(safe-area-inset-bottom,0px))}.project-links[data-toc-placement]:not([data-compact]) .project-navigation-toc{left:calc(var(--project-links-card-right,(100% + var(--portfolio-sheet-width)) / 2) + var(--project-toc-left-padding));max-height:calc(100dvh - max(var(--project-links-card-top,72px), env(safe-area-inset-top,0px)) - var(--project-toc-safe-bottom))}.project-links[data-toc-placement]:not([data-compact]) .project-navigation-toc>summary{display:none}.project-links[data-toc-placement]:not([data-compact]) .project-links-sections{padding:0}.project-links[data-toc-placement=center]:not([data-compact]) .project-navigation-toc{max-height:calc(100dvh - 2 * max(16px, env(safe-area-inset-top,0px), env(safe-area-inset-bottom,0px)));margin-block:0;top:50dvh;bottom:auto;translate:0 -50%}.project-links[data-toc-placement=bottom]:not([data-compact]) .project-navigation-toc{top:auto;bottom:var(--project-toc-safe-bottom);max-height:calc(100dvh - max(16px, env(safe-area-inset-top,0px)) - var(--project-toc-safe-bottom))}@media (width<80rem){.project-links[data-toc-placement][data-static-sidebar] .project-navigation-toc{max-height:none;margin:0;top:auto;bottom:auto;left:auto;translate:none}.project-links[data-toc-placement][data-static-sidebar] .project-navigation-toc>summary{display:flex}.project-links[data-toc-placement][data-static-sidebar] .project-links-sections{padding:4px}}html[data-portfolio] nav.project-links[data-card-gap-protection]:not([data-compact]){--navigation-gap-hit-width:max(4px, var(--project-nav-gap-hit-width,var(--project-links-card-gap,24px)));width:calc(var(--project-links-width) + 4px + var(--navigation-gap-hit-width));padding:4px var(--navigation-gap-hit-width) 4px 4px;cursor:default;margin:-4px}html[data-portfolio] nav.project-links[data-card-gap-protection] a{cursor:pointer}html[data-portfolio] nav.project-links[data-card-gap-protection][data-navigation-layout=split]:not([data-compact]) .project-navigation-toc{--toc-gap-hit-width:var(--project-toc-left-padding,var(--project-links-card-gap,16px));left:calc(var(--project-links-card-right,(100% + var(--portfolio-sheet-width)) / 2) + min(4px, var(--toc-gap-hit-width)));width:calc(var(--project-toc-width) + max(0px, var(--toc-gap-hit-width) - 4px));padding-left:max(4px, var(--toc-gap-hit-width))}.project-links[data-sections-heading]{--sections-secondary:var(--color-gray-500);--sections-tertiary:color-mix(in oklab, var(--sections-secondary) var(--portfolio-tertiary-secondary-share,0%), var(--color-gray-400))}.project-links[data-sections-heading] .project-sections-heading{min-height:36px;color:var(--sections-secondary);font-size:14px;font-weight:inherit;align-items:center;gap:8px;margin:0 0 12px;line-height:20px;display:flex;rotate:none}.project-links[data-sections-heading] summary .project-sections-heading{margin:0}.project-links[data-sections-heading] .project-sections-chevron{color:var(--sections-secondary)}html[data-portfolio] .project-links[data-sections-heading]:not([data-sections-refined]) .project-links-sections a{color:var(--sections-tertiary);transition:color .15s cubic-bezier(.25,.46,.45,.94)}html[data-portfolio] .project-links[data-sections-heading]:not([data-sections-refined]) .project-navigation-toc:has(:focus-visible) .project-links-sections a{color:var(--sections-secondary)}html[data-portfolio] .project-links[data-sections-heading]:not([data-sections-refined]) .project-links-sections a:focus-visible{color:var(--portfolio-ink)}@media (hover:hover) and (pointer:fine){html[data-portfolio] .project-links[data-sections-heading]:not([data-sections-refined]) .project-navigation-toc:hover .project-links-sections a{color:var(--sections-secondary)}html[data-portfolio] .project-links[data-sections-heading]:not([data-sections-refined]) .project-navigation-toc:hover .project-links-sections a:is(:hover,:focus-visible,[aria-current=location]){color:var(--portfolio-ink)}}.project-links[data-sections-heading][data-compact] .project-sections-heading{font-size:13px}@media (width<80rem){.project-links[data-sections-heading][data-static-sidebar] .project-sections-desktop-heading{display:none}.project-links[data-sections-heading][data-static-sidebar] .project-sections-heading{font-size:13px}}@media (prefers-color-scheme:dark){.project-links[data-sections-heading]{--sections-secondary:var(--portfolio-secondary-dark,var(--color-gray-400));--sections-tertiary:color-mix(in oklab, var(--sections-secondary) var(--portfolio-tertiary-secondary-share,0%), var(--portfolio-caption-dark,var(--color-gray-500)))}}@media (prefers-reduced-motion:reduce){html[data-portfolio] .project-links[data-sections-heading]:not([data-sections-refined]) .project-links-sections a{transition:none}}@media (forced-colors:active){.project-links[data-sections-heading]{--sections-secondary:CanvasText;--sections-tertiary:LinkText}}@media (width<80rem){html[data-portfolio] nav.project-links[data-card-gap-protection][data-static-sidebar]{width:auto;margin-block:0;margin-inline:auto;padding:8px}html[data-portfolio] nav.project-links[data-card-gap-protection][data-navigation-layout=split][data-static-sidebar]:not([data-compact]) .project-navigation-toc{width:auto;padding-left:0;left:auto}}.project-links[data-sections-refined]{--sections-secondary:var(--project-navigation-resting-color);--sections-quaternary:color-mix(in oklab, var(--project-navigation-resting-color) 65%, transparent)}.project-links[data-sections-refined] .project-navigation-toc-body{color:var(--sections-quaternary);transition:color .15s cubic-bezier(.25,.46,.45,.94)}html[data-portfolio] .project-links[data-sections-refined] .project-links-sections a{color:inherit;transition:none}.project-links[data-sections-refined] .project-navigation-toc:has(:focus-visible) .project-navigation-toc-body{color:var(--project-navigation-resting-color)}html[data-portfolio] .project-links[data-sections-refined] .project-links-sections a:focus-visible{color:var(--portfolio-ink)}@media (hover:hover) and (pointer:fine){.project-links[data-sections-refined] .project-navigation-toc:hover .project-navigation-toc-body{color:var(--project-navigation-resting-color)}html[data-portfolio] .project-links[data-sections-refined] .project-links-sections a:hover{color:var(--portfolio-ink)}}.project-links[data-sections-refined] .project-links-sections{gap:var(--project-toc-section-gap,8px);flex-direction:column;display:flex}@media (width>=80rem) and (pointer:fine){.project-links[data-sections-refined]:not([data-compact]) .project-links-sections{padding-top:6px}.project-links[data-sections-refined]:not([data-compact]) .project-links-sections a{min-height:24px;padding-block:2px}}@media (prefers-reduced-motion:reduce){.project-links[data-sections-refined] .project-navigation-toc-body{transition:none}}@media (forced-colors:active){.project-links[data-sections-refined]{--project-navigation-resting-color:CanvasText;--sections-secondary:CanvasText;--sections-quaternary:LinkText}}.project-links[data-sections-controls]{--sections-heading-bright:var(--color-gray-600)}.project-links[data-sections-controls][data-sections-icon=false] .project-sections-heading>svg{display:none}.project-links[data-sections-controls][data-sections-match-home] .project-navigation-toc>summary,.project-links[data-sections-controls][data-sections-match-home] .project-sections-heading{font:inherit;letter-spacing:inherit}.project-links[data-sections-controls] .project-sections-heading{color:var(--project-navigation-resting-color);transition:color .15s cubic-bezier(.25,.46,.45,.94)}.project-links[data-sections-controls][data-sections-heading-tone=home-group] .project-navigation-toc:has(:focus-visible) .project-sections-heading{color:var(--sections-heading-bright)}@media (hover:hover) and (pointer:fine){.project-links[data-sections-controls][data-sections-heading-tone=home-group] .project-navigation-toc:hover .project-sections-heading{color:var(--sections-heading-bright)}}html[data-portfolio] .project-links[data-sections-controls] .project-links-sections{gap:var(--project-toc-section-gap,8px)}html[data-portfolio] .project-links[data-sections-controls] .project-links-sections a{position:relative}html[data-portfolio] .project-links[data-sections-controls] .project-links-sections a:before{content:"";position:absolute;inset:0}html[data-portfolio] .project-links[data-sections-controls] .project-links-sections li:not(:first-child) a:before{top:calc(var(--project-toc-section-gap,8px) / -2)}html[data-portfolio] .project-links[data-sections-controls] .project-links-sections li:not(:last-child) a:before{bottom:calc(var(--project-toc-section-gap,8px) / -2)}@media (prefers-color-scheme:dark){.project-links[data-sections-controls]{--sections-heading-bright:var(--portfolio-secondary-dark,var(--color-gray-300))}}@media (prefers-reduced-motion:reduce){.project-links[data-sections-controls] .project-sections-heading{transition:none}}@media (forced-colors:active){.project-links[data-sections-controls]{--sections-heading-bright:CanvasText}}html[data-portfolio] .project-links[data-single-line-sections] .project-links-sections a{white-space:nowrap;overflow-wrap:normal}.project-links[data-navigation-layout=console]{--console-tile:max(44px, var(--console-icon-size,44px));--console-step:calc(var(--console-tile) + var(--console-icon-gap,16px));--project-links-width:max(224px, calc(4 * var(--console-step)))}.project-console{width:100%;min-width:0}.project-links[data-navigation-layout=console] .project-links-home{width:44px;min-height:44px;margin:0 0 24px calc(var(--console-step) + 6px);justify-content:flex-start}.project-console .project-links-home>span{display:none}.project-console-rail{scrollbar-width:none;overscroll-behavior-x:contain;overflow:auto hidden;container-type:inline-size}.project-console-rail::-webkit-scrollbar{display:none}.project-console-track{align-items:center;gap:var(--console-icon-gap,16px);width:max-content;padding:6px max(6px, calc(100cqw - var(--console-step) - var(--console-tile) - 6px)) 6px calc(var(--console-step) + 6px);transform:translateX(calc(-1 * var(--console-selected-index,0) * var(--console-step)));display:flex;position:relative}html[data-portfolio] .project-links .project-console-icon{flex:0 0 var(--console-tile);width:var(--console-tile);height:var(--console-tile);min-height:var(--console-tile);border-radius:var(--console-icon-radius,8px);flex-direction:row;justify-content:flex-start;align-items:center;padding:0;scroll-margin-inline:6px;display:flex}html[data-portfolio] .project-links .project-console-icon img{width:var(--console-icon-size,44px);height:var(--console-icon-size,44px);border-radius:var(--console-icon-radius,8px);object-fit:cover;opacity:.45;flex:none;transition:opacity .15s;transform:none}html[data-portfolio] .project-links .project-console-icon[aria-current=page] img{opacity:1}html[data-portfolio] .project-links:not([data-uniform-icons]) .project-console-icon img{transform-origin:0;transform:scale(var(--console-inactive-scale,.75));transition:transform .24s cubic-bezier(.25,1,.5,1),opacity .15s}html[data-portfolio] .project-links:not([data-uniform-icons]) .project-console-icon[aria-current=page] img{transform:scale(1)}html[data-portfolio] .project-links .project-console-icon:focus-visible img{opacity:1}@media (hover:hover) and (pointer:fine){html[data-portfolio] .project-links .project-console-icon:hover img{opacity:1}}.project-console-detail{margin:var(--console-icon-title-gap,10px) 6px 0 calc(var(--console-step) + 6px)}.project-console-title{margin:0 0 var(--console-title-section-gap,16px);color:var(--portfolio-ink);letter-spacing:-.025em;text-wrap:balance;font-size:20px;font-weight:500;line-height:1.25}.project-console-sections>summary{cursor:pointer;border-radius:4px;align-items:center;min-height:44px;display:none}html[data-portfolio] .project-links[data-navigation-layout=console] .project-links-sections{gap:var(--project-toc-section-gap,8px);background:0 0;border:0;flex-direction:column;margin:-4px;padding:4px;display:flex;overflow:visible}html[data-portfolio] .project-links[data-navigation-layout=console] .project-links-sections a{white-space:normal;flex-direction:row;justify-content:flex-start;align-items:flex-start;min-height:28px;padding:4px 0}.project-links[data-navigation-layout=console][data-compact]{max-width:400px}.project-links[data-navigation-layout=console][data-compact] .project-console-title{margin-bottom:var(--console-title-section-gap,0px);font-size:18px}.project-links[data-navigation-layout=console][data-compact] .project-console-sections>summary{display:flex}.project-links[data-navigation-layout=console][data-compact] .project-console-sections[open]{max-height:40dvh;margin:-4px;padding:4px;overflow-y:auto}html[data-portfolio] .project-links[data-navigation-layout=console][data-compact] .project-links-sections a{min-height:44px}@media (pointer:coarse){html[data-portfolio] .project-links[data-navigation-layout=console] .project-links-sections a{min-height:44px}}@media (width>=80rem){.project-links[data-navigation-layout=console][data-static-sidebar]{width:var(--project-links-width);left:max(16px, calc((100vw - var(--portfolio-sheet-width)) / 2 - var(--project-links-width) - 16px))}}@media (width<80rem){.project-links[data-navigation-layout=console][data-static-sidebar]{max-width:400px}.project-links[data-navigation-layout=console][data-static-sidebar] .project-console .project-links-home{display:none}.project-links[data-navigation-layout=console][data-static-sidebar] .project-console-sections>summary{display:flex}.project-links[data-navigation-layout=console][data-static-sidebar] .project-console-sections[open]{max-height:32dvh;margin:-4px;padding:4px;overflow-y:auto}}@media (prefers-reduced-motion:reduce){html[data-portfolio] .project-links:not([data-uniform-icons]) .project-console-icon img{transition:opacity .15s}}@media (forced-colors:active){.project-console-icon[aria-current=page]{outline-offset:-1px;outline:1px solid highlight}html[data-portfolio] .project-links .project-console-icon img{opacity:1}}html[data-portfolio] nav.project-links[data-console-refined]{max-height:none;overflow:visible}.project-links[data-console-refined] .project-console-rail{overflow:visible}.project-links[data-console-refined] .project-console-track{padding-right:6px}html[data-portfolio] .project-links[data-console-refined] .project-console-title{font-size:var(--console-title-size,var(--text-base,1rem));letter-spacing:normal;line-height:1.5}.project-links[data-console-refined] .project-console-sections{max-height:max(120px, calc(100dvh - var(--project-links-card-top,72px) - 200px));scrollbar-width:thin;margin:-4px;padding:4px;overflow-y:auto}html[data-portfolio] .project-links[data-console-refined] .project-links-sections{color:color-mix(in oklab, var(--project-navigation-resting-color) 65%, transparent);padding:6px 4px 4px;transition:color .15s cubic-bezier(.25,.46,.45,.94)}html[data-portfolio] .project-links[data-console-refined] .project-links-sections a{color:inherit;transition:none;position:relative}html[data-portfolio] .project-links[data-console-refined] .project-links-sections a:before{content:"";position:absolute;inset:0}html[data-portfolio] .project-links[data-console-refined] .project-links-sections li:not(:first-child) a:before{top:calc(var(--project-toc-section-gap,8px) / -2)}html[data-portfolio] .project-links[data-console-refined] .project-links-sections li:not(:last-child) a:before{bottom:calc(var(--project-toc-section-gap,8px) / -2)}html[data-portfolio] .project-links[data-console-refined]:has(.project-links-home[href=\/]) .project-links-sections{padding-bottom:24px}html[data-portfolio] .project-links[data-console-refined]:has(.project-links-home[href=\/]) .project-links-sections li:last-child a:before{bottom:-20px}.project-links[data-console-refined] .project-links-home[href=\/]{position:relative}.project-links[data-console-refined] .project-links-home[href=\/]:before{content:"";position:absolute;inset:0 -48px}html[data-portfolio] .project-links[data-console-refined] .project-links-sections:has(:focus-visible){color:var(--project-navigation-resting-color)}html[data-portfolio] .project-links[data-console-refined] .project-links-sections a:is(:focus-visible,[aria-current=location]){color:var(--portfolio-ink)}@media (hover:hover) and (pointer:fine){html[data-portfolio] .project-links[data-console-refined] .project-links-sections:hover{color:var(--project-navigation-resting-color)}html[data-portfolio] .project-links[data-console-refined] .project-links-sections a:hover{color:var(--portfolio-ink)}}@media (width>=80rem) and (pointer:fine){html[data-portfolio] .project-links[data-console-refined]:not([data-compact]) .project-links-sections a{min-height:24px;padding-block:2px}}@media (prefers-reduced-motion:reduce){html[data-portfolio] .project-links[data-console-refined] .project-links-sections{transition:none}}@media (forced-colors:active){html[data-portfolio] .project-links[data-console-refined] .project-links-sections{color:canvastext}}html[data-portfolio]:has(.project-links[data-console-refined][data-static-sidebar]){overflow-x:clip}.project-links[data-navigation-layout=console][data-exact-icon-gap]{--console-tile:var(--console-icon-size,44px)}.project-links[data-exact-icon-gap] .project-console-icon{position:relative}.project-links[data-exact-icon-gap] .project-console-icon:before{content:"";inset-block:min(0px, calc((var(--console-icon-size,44px) - 44px) / 2));inset-inline:calc(var(--console-icon-gap,16px) / -2);position:absolute}@media (hover:hover) and (pointer:fine){.project-links[data-exact-icon-gap] .project-console-icon:hover{z-index:1}.project-links[data-exact-icon-gap] .project-console-icon:hover:before{inset-inline:calc(-1 * var(--console-icon-gap,16px))}}html[data-portfolio] nav.project-links[data-console-refined][data-console-section-states] .project-links-sections{--console-section-idle:color-mix(in oklab, var(--project-navigation-resting-color) 65%, transparent);--console-section-active:var(--portfolio-ink);transition:none}html[data-portfolio] nav.project-links[data-console-refined][data-console-section-states][data-section-secondary-at-rest] .project-links-sections{--console-section-active:var(--project-navigation-resting-color)}html[data-portfolio] nav.project-links[data-console-refined][data-console-section-states] .project-links-sections a{color:var(--console-section-idle);transition:color var(--console-section-fade-duration,.16s) var(--console-section-fade-easing,ease)}html[data-portfolio] nav.project-links[data-console-refined][data-console-section-states] .project-links-sections a[aria-current=location]{color:var(--console-section-active)}html[data-portfolio]:not([data-portfolio-focus=pointer]) nav.project-links[data-console-refined][data-console-section-states] .project-links-sections:has(:focus-visible){--console-section-idle:var(--project-navigation-resting-color);--console-section-active:var(--portfolio-ink)}html[data-portfolio]:not([data-portfolio-focus=pointer]) nav.project-links[data-console-refined][data-console-section-states] .project-links-sections a:focus-visible{color:var(--portfolio-ink);transition:none}@media (hover:hover) and (pointer:fine){html[data-portfolio] nav.project-links[data-console-refined][data-console-section-states] .project-links-sections:hover{--console-section-idle:var(--project-navigation-resting-color);--console-section-active:var(--portfolio-ink)}html[data-portfolio] nav.project-links[data-console-refined][data-console-section-states] .project-links-sections a:hover{color:var(--portfolio-ink)}}@media (prefers-reduced-motion:reduce){html[data-portfolio] nav.project-links[data-console-refined][data-console-section-states] .project-links-sections a{transition:none}}@media (forced-colors:active){html[data-portfolio] nav.project-links[data-console-refined][data-console-section-states] .project-links-sections a{color:linktext}html[data-portfolio] nav.project-links[data-console-refined][data-console-section-states] .project-links-sections a[aria-current=location]{color:canvastext}}.project-console-rail[data-rail-drag]{-webkit-user-select:none;user-select:none}.project-links[data-console-refined] .project-console-rail[data-rail-drag]{clip-path:inset(-100vh calc(-1 * var(--project-links-card-gap,16px)) -100vh -100vw)}.project-console-rail[data-scrubbing],.project-console-rail[data-scrubbing] *{cursor:grabbing}@media (forced-colors:none){html[data-portfolio] .project-links .project-console-rail[data-scrubbing] .project-console-icon img{opacity:.45;transition:none}html[data-portfolio] .project-links .project-console-rail[data-scrubbing] .project-console-icon[data-rail-active] img{opacity:1}}html[data-portfolio] nav.project-links[data-navigation-layout=console][data-mobile-console][data-compact]{--console-mobile-size:calc(var(--console-icon-size,44px) * var(--console-mobile-scale,1));--console-tile:max(44px, var(--console-mobile-size));background:color-mix(in srgb, var(--portfolio-bg) var(--console-mobile-fill,40%), transparent);backdrop-filter:blur(4px);width:max-content;max-width:calc(100% - 24px);padding:0;display:block;box-shadow:0 0 0 1px #0000000d}html[data-portfolio] nav.project-links[data-navigation-layout=console][data-mobile-console][data-compact] .project-console-detail,html[data-portfolio] nav.project-links[data-navigation-layout=console][data-mobile-console][data-compact] .project-console .project-links-home{display:none}html[data-portfolio] nav.project-links[data-navigation-layout=console][data-mobile-console][data-compact] .project-console-rail{clip-path:none;border-radius:12px;overflow:auto hidden;container-type:normal}html[data-portfolio] nav.project-links[data-navigation-layout=console][data-mobile-console][data-compact] .project-console-track{padding:6px;transform:none}html[data-portfolio] nav.project-links[data-navigation-layout=console][data-mobile-console][data-compact] .project-console-icon{justify-content:center}html[data-portfolio] nav.project-links[data-navigation-layout=console][data-mobile-console][data-compact] .project-console-icon img{width:var(--console-mobile-size);height:var(--console-mobile-size);opacity:calc(var(--console-mobile-opacity,1) * var(--console-mobile-inactive-opacity,.45))}html[data-portfolio] nav.project-links[data-navigation-layout=console][data-mobile-console][data-compact] .project-console-icon:is([aria-current=page],:focus-visible,:hover) img{opacity:var(--console-mobile-opacity,1)}@media (prefers-color-scheme:dark){html[data-portfolio] nav.project-links[data-navigation-layout=console][data-mobile-console][data-compact]{box-shadow:0 0 0 1px #ffffff14}}@media (prefers-reduced-transparency:reduce){html[data-portfolio] nav.project-links[data-navigation-layout=console][data-mobile-console][data-compact]{background:var(--portfolio-bg);-webkit-backdrop-filter:none}}@media (forced-colors:active){html[data-portfolio] nav.project-links[data-navigation-layout=console][data-mobile-console][data-compact]{background:canvas;border:1px solid canvastext}html[data-portfolio] nav.project-links[data-navigation-layout=console][data-mobile-console][data-compact] .project-console-icon img{opacity:1}}@media (width<80rem){html[data-portfolio] nav.project-links[data-navigation-layout=console][data-mobile-console][data-static-sidebar]{--console-mobile-size:calc(var(--console-icon-size,44px) * var(--console-mobile-scale,1));--console-tile:max(44px, var(--console-mobile-size));background:color-mix(in srgb, var(--portfolio-bg) var(--console-mobile-fill,40%), transparent);backdrop-filter:blur(4px);width:max-content;max-width:calc(100% - 24px);padding:0;display:block;box-shadow:0 0 0 1px #0000000d}html[data-portfolio] nav.project-links[data-navigation-layout=console][data-mobile-console][data-static-sidebar] .project-console-detail,html[data-portfolio] nav.project-links[data-navigation-layout=console][data-mobile-console][data-static-sidebar] .project-console .project-links-home{display:none}html[data-portfolio] nav.project-links[data-navigation-layout=console][data-mobile-console][data-static-sidebar] .project-console-rail{clip-path:none;border-radius:12px;overflow:auto hidden;container-type:normal}html[data-portfolio] nav.project-links[data-navigation-layout=console][data-mobile-console][data-static-sidebar] .project-console-track{padding:6px;transform:none}html[data-portfolio] nav.project-links[data-navigation-layout=console][data-mobile-console][data-static-sidebar] .project-console-icon{justify-content:center}html[data-portfolio] nav.project-links[data-navigation-layout=console][data-mobile-console][data-static-sidebar] .project-console-icon img{width:var(--console-mobile-size);height:var(--console-mobile-size);opacity:calc(var(--console-mobile-opacity,1) * var(--console-mobile-inactive-opacity,.45))}html[data-portfolio] nav.project-links[data-navigation-layout=console][data-mobile-console][data-static-sidebar] .project-console-icon:is([aria-current=page],:focus-visible,:hover) img{opacity:var(--console-mobile-opacity,1)}@media (prefers-color-scheme:dark){html[data-portfolio] nav.project-links[data-navigation-layout=console][data-mobile-console][data-static-sidebar]{box-shadow:0 0 0 1px #ffffff14}}@media (prefers-reduced-transparency:reduce){html[data-portfolio] nav.project-links[data-navigation-layout=console][data-mobile-console][data-static-sidebar]{background:var(--portfolio-bg);-webkit-backdrop-filter:none}}@media (forced-colors:active){html[data-portfolio] nav.project-links[data-navigation-layout=console][data-mobile-console][data-static-sidebar]{background:canvas;border:1px solid canvastext}html[data-portfolio] nav.project-links[data-navigation-layout=console][data-mobile-console][data-static-sidebar] .project-console-icon img{opacity:1}}}html[data-portfolio] nav.project-links[data-navigation-layout=console][data-mobile-console][data-mobile-icon-radius][data-compact]{--console-mobile-outer-radius:calc(var(--console-mobile-icon-radius) + 6px + (var(--console-tile) - var(--console-mobile-size)) / 2);border-radius:var(--console-mobile-outer-radius)}html[data-portfolio] nav.project-links[data-navigation-layout=console][data-mobile-console][data-mobile-icon-radius][data-compact] .project-console-rail{border-radius:var(--console-mobile-outer-radius)}html[data-portfolio] nav.project-links[data-navigation-layout=console][data-mobile-console][data-mobile-icon-radius][data-compact] :is(.project-console-icon,.project-console-icon img){border-radius:var(--console-mobile-icon-radius)}@media (width<80rem){html[data-portfolio] nav.project-links[data-navigation-layout=console][data-mobile-console][data-mobile-icon-radius][data-static-sidebar]{--console-mobile-outer-radius:calc(var(--console-mobile-icon-radius) + 6px + (var(--console-tile) - var(--console-mobile-size)) / 2);border-radius:var(--console-mobile-outer-radius)}html[data-portfolio] nav.project-links[data-navigation-layout=console][data-mobile-console][data-mobile-icon-radius][data-static-sidebar] .project-console-rail{border-radius:var(--console-mobile-outer-radius)}html[data-portfolio] nav.project-links[data-navigation-layout=console][data-mobile-console][data-mobile-icon-radius][data-static-sidebar] :is(.project-console-icon,.project-console-icon img){border-radius:var(--console-mobile-icon-radius)}}html[data-portfolio] .project-links[data-image-stroke-overlay] .project-console-icon{--navigation-image-stroke:#0000001a;--console-stroke-size:var(--console-icon-size,44px);--console-stroke-left:0px;position:relative}html[data-portfolio] .project-links[data-image-stroke-overlay] .project-console-icon:after{content:"";top:calc((var(--console-tile) - var(--console-stroke-size)) / 2);left:var(--console-stroke-left);width:var(--console-stroke-size);height:var(--console-stroke-size);border-radius:var(--console-icon-radius,8px);box-shadow:inset 0 0 0 1px var(--navigation-image-stroke);pointer-events:none;position:absolute}html[data-portfolio] .project-links[data-image-stroke-overlay] .project-console-icon img,html[data-portfolio][data-concentric-focus][data-portfolio-focus=pointer] .project-links[data-image-stroke-overlay] .project-console-icon:focus-visible img{outline:none!important}html[data-portfolio] nav.project-links[data-image-stroke-overlay][data-mobile-console][data-compact] .project-console-icon{--console-stroke-size:var(--console-mobile-size);--console-stroke-left:calc((var(--console-tile) - var(--console-mobile-size)) / 2)}html[data-portfolio] nav.project-links[data-image-stroke-overlay][data-mobile-console][data-mobile-icon-radius][data-compact] .project-console-icon:after{border-radius:var(--console-mobile-icon-radius)}@media (width<80rem){html[data-portfolio] nav.project-links[data-image-stroke-overlay][data-mobile-console][data-static-sidebar] .project-console-icon{--console-stroke-size:var(--console-mobile-size);--console-stroke-left:calc((var(--console-tile) - var(--console-mobile-size)) / 2)}html[data-portfolio] nav.project-links[data-image-stroke-overlay][data-mobile-console][data-mobile-icon-radius][data-static-sidebar] .project-console-icon:after{border-radius:var(--console-mobile-icon-radius)}}@media (prefers-color-scheme:dark){html[data-portfolio] .project-links[data-image-stroke-overlay] .project-console-icon{--navigation-image-stroke:#ffffff1a}}@media (forced-colors:active){html[data-portfolio] .project-links[data-image-stroke-overlay] .project-console-icon:after{content:none}}@media (hover:none),(pointer:coarse){html[data-portfolio] nav.project-links[data-touch-retarget][data-navigation-layout=console][data-mobile-console]:is([data-compact],[data-static-sidebar]) .project-console-icon:hover:not([aria-current=page],:focus-visible) img{opacity:calc(var(--console-mobile-opacity,1) * var(--console-mobile-inactive-opacity,.45))}}html[data-portfolio] nav.project-links[data-touch-retarget]{touch-action:manipulation}html[data-portfolio] nav.project-links[data-navigation-layout=console][data-mobile-console][data-mobile-bottom-offset][data-compact]{bottom:calc(env(safe-area-inset-bottom,0px) + var(--console-mobile-bottom))}@media (width<80rem){html[data-portfolio] nav.project-links[data-navigation-layout=console][data-mobile-console][data-mobile-bottom-offset][data-static-sidebar]{bottom:calc(env(safe-area-inset-bottom,0px) + var(--console-mobile-bottom))}}
