.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))}}@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial;--tw-ease:initial;--tw-content:"";--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1}:root,:host{--portfolio-safe-top:0px}*,:before,:after,::backdrop{--tw-outline-style:solid;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial}}}@layer theme{:root,:host{--font-sans:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--color-blue-500:oklch(62.3% .214 259.815);--color-gray-50:oklch(98.5% .002 247.839);--color-gray-100:oklch(96.7% .003 264.542);--color-gray-200:oklch(92.8% .006 264.531);--color-gray-300:oklch(87.2% .01 258.338);--color-gray-400:oklch(70.7% .022 261.325);--color-gray-500:oklch(55.1% .027 264.364);--color-gray-600:oklch(44.6% .03 256.802);--color-gray-700:oklch(37.3% .034 259.733);--color-gray-800:oklch(27.8% .033 256.848);--color-gray-900:oklch(21% .034 264.665);--color-gray-950:oklch(13% .028 261.692);--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-6xl:72rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-base:1rem;--text-base--line-height:calc(1.5 / 1);--text-lg:1.125rem;--text-lg--line-height:calc(1.75 / 1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75 / 1.25);--text-2xl:1.5rem;--text-2xl--line-height:calc(2 / 1.5);--text-3xl:1.875rem;--text-3xl--line-height:calc(2.25 / 1.875);--text-4xl:2.25rem;--text-4xl--line-height:calc(2.5 / 2.25);--text-5xl:3rem;--text-5xl--line-height:1;--text-6xl:3.75rem;--text-6xl--line-height:1;--text-7xl:4.5rem;--text-7xl--line-height:1;--text-8xl:6rem;--text-8xl--line-height:1;--text-9xl:8rem;--text-9xl--line-height:1;--font-weight-light:300;--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--leading-relaxed:1.625;--radius-xs:.125rem;--radius-sm:.25rem;--radius-md:.375rem;--radius-lg:.5rem;--radius-xl:.75rem;--radius-2xl:1rem;--radius-3xl:1.5rem;--radius-4xl:2rem;--ease-in:cubic-bezier(.4, 0, 1, 1);--ease-out:cubic-bezier(0, 0, .2, 1);--ease-in-out:cubic-bezier(.4, 0, .2, 1);--animate-bounce:bounce 1s infinite;--aspect-video:16 / 9;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--container-layout:56rem;--container-wide:72rem}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring:where(:not(iframe)){outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}*{text-box-trim:trim-both}}@layer components{.layout{grid-template-columns:[full-start] minmax(calc(var(--spacing) * 6), 1fr) [wide-start] minmax(0, calc((var(--container-wide) - var(--container-layout)) / 2)) [text-start] min(calc(100% - calc(var(--spacing) * 6) * 2), var(--container-layout)) [text-end] minmax(0, calc((var(--container-wide) - var(--container-layout)) / 2)) [wide-end] minmax(calc(var(--spacing) * 6), 1fr) [full-end];row-gap:calc(var(--spacing) * 24);display:grid}.layout>*{grid-column:text-start/text-end}:where([data-portfolio-index],.project-content) a{text-underline-offset:var(--portfolio-underline-offset,1px);text-decoration-thickness:var(--portfolio-underline-thickness,2px)}main[data-astro-cid-7tiwkdxp] a{text-decoration-line:underline;text-decoration-color:#6a728280}@supports (color:color-mix(in lab, red, red)){main[data-astro-cid-7tiwkdxp] a{-webkit-text-decoration-color:color-mix(in oklab, var(--color-gray-500,oklch(55.1% .027 264.364)) 50%, transparent);-webkit-text-decoration-color:color-mix(in oklab, var(--color-gray-500,oklch(55.1% .027 264.364)) 50%, transparent);text-decoration-color:color-mix(in oklab, var(--color-gray-500,oklch(55.1% .027 264.364)) 50%, transparent)}}@media (hover:hover){main[data-astro-cid-7tiwkdxp] a:hover{-webkit-text-decoration-color:var(--color-gray-950,oklch(13% .028 261.692));-webkit-text-decoration-color:var(--color-gray-950,oklch(13% .028 261.692));text-decoration-color:var(--color-gray-950,oklch(13% .028 261.692))}}main[data-astro-cid-7tiwkdxp] a:focus-visible{-webkit-text-decoration-color:var(--color-gray-950,oklch(13% .028 261.692));-webkit-text-decoration-color:var(--color-gray-950,oklch(13% .028 261.692));text-decoration-color:var(--color-gray-950,oklch(13% .028 261.692))}@media (prefers-color-scheme:dark){main[data-astro-cid-7tiwkdxp] a{text-decoration-color:#99a1afbf}@supports (color:color-mix(in lab, red, red)){main[data-astro-cid-7tiwkdxp] a{-webkit-text-decoration-color:color-mix(in oklab, var(--color-gray-400,oklch(70.7% .022 261.325)) 75%, transparent);-webkit-text-decoration-color:color-mix(in oklab, var(--color-gray-400,oklch(70.7% .022 261.325)) 75%, transparent);text-decoration-color:color-mix(in oklab, var(--color-gray-400,oklch(70.7% .022 261.325)) 75%, transparent)}}@media (hover:hover){main[data-astro-cid-7tiwkdxp] a:hover{-webkit-text-decoration-color:var(--color-gray-100,oklch(96.7% .003 264.542));-webkit-text-decoration-color:var(--color-gray-100,oklch(96.7% .003 264.542));text-decoration-color:var(--color-gray-100,oklch(96.7% .003 264.542))}}main[data-astro-cid-7tiwkdxp] a:focus-visible{-webkit-text-decoration-color:var(--color-gray-100,oklch(96.7% .003 264.542));-webkit-text-decoration-color:var(--color-gray-100,oklch(96.7% .003 264.542));text-decoration-color:var(--color-gray-100,oklch(96.7% .003 264.542))}}.article-text[data-astro-cid-a5yrmtfo]{gap:calc(var(--spacing,.25rem) * 12);color:var(--color-gray-500,oklch(55.1% .027 264.364));flex-direction:column;display:flex}@media (prefers-color-scheme:dark){.article-text[data-astro-cid-a5yrmtfo]{color:var(--color-gray-400,oklch(70.7% .022 261.325))}}.article-text[data-astro-cid-a5yrmtfo] p[data-astro-cid-a5yrmtfo]{text-wrap:pretty}.article-text[data-astro-cid-a5yrmtfo] [data-astro-cid-a5yrmtfo]:is(strong,a){font-weight:inherit;color:var(--color-gray-950,oklch(13% .028 261.692))}@media (prefers-color-scheme:dark){.article-text[data-astro-cid-a5yrmtfo] [data-astro-cid-a5yrmtfo]:is(strong,a){color:var(--color-gray-100,oklch(96.7% .003 264.542))}}.project-content[data-astro-cid-ddnsgiqw] a{text-decoration-line:underline;text-decoration-color:#6a728280}@supports (color:color-mix(in lab, red, red)){.project-content[data-astro-cid-ddnsgiqw] a{-webkit-text-decoration-color:color-mix(in oklab, var(--color-gray-500,oklch(55.1% .027 264.364)) 50%, transparent);-webkit-text-decoration-color:color-mix(in oklab, var(--color-gray-500,oklch(55.1% .027 264.364)) 50%, transparent);text-decoration-color:color-mix(in oklab, var(--color-gray-500,oklch(55.1% .027 264.364)) 50%, transparent)}}@media (hover:hover){.project-content[data-astro-cid-ddnsgiqw] a:hover{-webkit-text-decoration-color:var(--color-gray-950,oklch(13% .028 261.692));-webkit-text-decoration-color:var(--color-gray-950,oklch(13% .028 261.692));text-decoration-color:var(--color-gray-950,oklch(13% .028 261.692))}}.project-content[data-astro-cid-ddnsgiqw] a:focus-visible{-webkit-text-decoration-color:var(--color-gray-950,oklch(13% .028 261.692));-webkit-text-decoration-color:var(--color-gray-950,oklch(13% .028 261.692));text-decoration-color:var(--color-gray-950,oklch(13% .028 261.692))}@media (prefers-color-scheme:dark){.project-content[data-astro-cid-ddnsgiqw] a{text-decoration-color:#99a1afbf}@supports (color:color-mix(in lab, red, red)){.project-content[data-astro-cid-ddnsgiqw] a{-webkit-text-decoration-color:color-mix(in oklab, var(--color-gray-400,oklch(70.7% .022 261.325)) 75%, transparent);-webkit-text-decoration-color:color-mix(in oklab, var(--color-gray-400,oklch(70.7% .022 261.325)) 75%, transparent);text-decoration-color:color-mix(in oklab, var(--color-gray-400,oklch(70.7% .022 261.325)) 75%, transparent)}}@media (hover:hover){.project-content[data-astro-cid-ddnsgiqw] a:hover{-webkit-text-decoration-color:var(--color-gray-100,oklch(96.7% .003 264.542));-webkit-text-decoration-color:var(--color-gray-100,oklch(96.7% .003 264.542));text-decoration-color:var(--color-gray-100,oklch(96.7% .003 264.542))}}.project-content[data-astro-cid-ddnsgiqw] a:focus-visible{-webkit-text-decoration-color:var(--color-gray-100,oklch(96.7% .003 264.542));-webkit-text-decoration-color:var(--color-gray-100,oklch(96.7% .003 264.542));text-decoration-color:var(--color-gray-100,oklch(96.7% .003 264.542))}}.project-header[data-astro-cid-ddnsgiqw]{padding-block-start:1.5rem}.project-heading[data-astro-cid-ddnsgiqw]{margin-block-start:2rem}.project-hero[data-astro-cid-ddnsgiqw]{background:var(--image-color-light);border-radius:12px;overflow:hidden}@media (prefers-color-scheme:dark){.project-hero[data-astro-cid-ddnsgiqw]{background:var(--image-color-dark)}}@container (width>=480px){.demo-panes[data-astro-cid-ddnsgiqw]{grid-template-columns:repeat(2,minmax(0,1fr))}}.article-text[data-astro-cid-ddnsgiqw]{gap:calc(var(--spacing,.25rem) * 12);color:var(--color-gray-500,oklch(55.1% .027 264.364));flex-direction:column;display:flex}@media (prefers-color-scheme:dark){.article-text[data-astro-cid-ddnsgiqw]{color:var(--color-gray-400,oklch(70.7% .022 261.325))}}.article-text[data-astro-cid-ddnsgiqw] p[data-astro-cid-ddnsgiqw]{text-wrap:pretty}.article-text[data-astro-cid-ddnsgiqw] [data-astro-cid-ddnsgiqw]:is(strong,a){font-weight:inherit;color:var(--color-gray-950,oklch(13% .028 261.692))}@media (prefers-color-scheme:dark){.article-text[data-astro-cid-ddnsgiqw] [data-astro-cid-ddnsgiqw]:is(strong,a){color:var(--color-gray-100,oklch(96.7% .003 264.542))}}.carousel[data-astro-cid-ddnsgiqw]{--carousel-column:min(100% - 3rem, var(--container-wide))}.carousel-viewport[data-astro-cid-ddnsgiqw]{--peek-inner:max(0px, (100% - var(--container-wide)) / 2);--peek-outer:max(0px, (100% - var(--container-wide)) / 2 - calc(var(--spacing,.25rem) * 32));padding-block:calc(var(--spacing,.25rem) * 2);margin-block:calc(calc(var(--spacing,.25rem) * 2) * -1);-webkit-mask-image:linear-gradient(to right, transparent var(--peek-outer), black var(--peek-inner), black calc(100% - var(--peek-inner)), transparent calc(100% - var(--peek-outer)));-webkit-mask-image:linear-gradient(to right, transparent var(--peek-outer), black var(--peek-inner), black calc(100% - var(--peek-inner)), transparent calc(100% - var(--peek-outer)));mask-image:linear-gradient(to right, transparent var(--peek-outer), black var(--peek-inner), black calc(100% - var(--peek-inner)), transparent calc(100% - var(--peek-outer)));overflow:hidden}.carousel-container[data-astro-cid-ddnsgiqw]{touch-action:pan-y pinch-zoom;display:flex}.carousel-slide[data-astro-cid-ddnsgiqw]{flex:0 0 calc(var(--carousel-column) + 3rem);gap:calc(var(--spacing,.25rem) * 4);flex-direction:column;min-inline-size:0;padding-inline:1.5rem;display:flex}.carousel-controls[data-astro-cid-ddnsgiqw]{inline-size:var(--carousel-column);margin-inline:auto}.slide-header[data-astro-cid-ddnsgiqw]{min-height:calc(var(--spacing,.25rem) * 10);justify-content:space-between;align-items:center;gap:calc(var(--spacing,.25rem) * 4);flex-wrap:wrap;display:flex}.demo-pane[data-astro-cid-ddnsgiqw]{isolation:isolate;background-color:var(--color-gray-100,oklch(96.7% .003 264.542));place-items:center;min-block-size:17rem;inline-size:100%;min-inline-size:0;display:grid;position:relative;overflow:hidden}@media (prefers-color-scheme:dark){.demo-pane[data-astro-cid-ddnsgiqw]{background-color:var(--color-gray-900,oklch(21% .034 264.665))}}.demo-pane[data-astro-cid-ddnsgiqw]:after{content:"";pointer-events:none;z-index:10;border-radius:inherit;outline-style:var(--tw-outline-style);outline-offset:calc(1px * -1);outline-width:1px;outline-color:#0000001a;position:absolute;inset:0}@supports (color:color-mix(in lab, red, red)){.demo-pane[data-astro-cid-ddnsgiqw]:after{outline-color:color-mix(in oklab, var(--color-black,#000) 10%, transparent)}}@media (prefers-color-scheme:dark){.demo-pane[data-astro-cid-ddnsgiqw]:after{outline-color:#ffffff1a}@supports (color:color-mix(in lab, red, red)){.demo-pane[data-astro-cid-ddnsgiqw]:after{outline-color:color-mix(in oklab, var(--color-white,#fff) 10%, transparent)}}}.demo-label[data-astro-cid-ddnsgiqw]{top:calc(var(--spacing,.25rem) * 4);left:calc(var(--spacing,.25rem) * 4);color:var(--color-gray-500,oklch(55.1% .027 264.364));position:absolute}@media (prefers-color-scheme:dark){.demo-label[data-astro-cid-ddnsgiqw]{color:var(--color-gray-400,oklch(70.7% .022 261.325))}}.demo-button[data-astro-cid-ddnsgiqw],.demo-menu-list[data-astro-cid-ddnsgiqw],.demo-field[data-astro-cid-ddnsgiqw]{background-color:var(--color-white,#fff);outline-style:var(--tw-outline-style);outline-offset:calc(1px * -1);outline-width:1px;outline-color:#0000001a}@supports (color:color-mix(in lab, red, red)){.demo-button[data-astro-cid-ddnsgiqw],.demo-menu-list[data-astro-cid-ddnsgiqw],.demo-field[data-astro-cid-ddnsgiqw]{outline-color:color-mix(in oklab, var(--color-black,#000) 10%, transparent)}}@media (prefers-color-scheme:dark){.demo-button[data-astro-cid-ddnsgiqw],.demo-menu-list[data-astro-cid-ddnsgiqw],.demo-field[data-astro-cid-ddnsgiqw]{background-color:var(--color-gray-800,oklch(27.8% .033 256.848));outline-color:#ffffff1a}@supports (color:color-mix(in lab, red, red)){.demo-button[data-astro-cid-ddnsgiqw],.demo-menu-list[data-astro-cid-ddnsgiqw],.demo-field[data-astro-cid-ddnsgiqw]{outline-color:color-mix(in oklab, var(--color-white,#fff) 10%, transparent)}}}.demo-button[data-astro-cid-ddnsgiqw]{padding-inline:calc(var(--spacing,.25rem) * 4);padding-block:calc(var(--spacing,.25rem) * 3.5);transition:background-color .1s ease-out}@media (hover:hover){.demo-button[data-astro-cid-ddnsgiqw]:hover{background-color:var(--color-gray-50,oklch(98.5% .002 247.839))}}@media (prefers-color-scheme:dark){@media (hover:hover){.demo-button[data-astro-cid-ddnsgiqw]:hover{background-color:var(--color-gray-700,oklch(37.3% .034 259.733))}}}.demo-button[data-astro-cid-ddnsgiqw][aria-pressed=true]{background-color:var(--color-gray-950,oklch(13% .028 261.692));color:var(--color-white,#fff)}@media (prefers-color-scheme:dark){.demo-button[data-astro-cid-ddnsgiqw][aria-pressed=true]{background-color:var(--color-gray-100,oklch(96.7% .003 264.542));color:var(--color-gray-950,oklch(13% .028 261.692))}}.demo-button[data-astro-cid-ddnsgiqw]:focus-visible,.demo-menu-item[data-astro-cid-ddnsgiqw]:focus-visible,.nav-item[data-astro-cid-ddnsgiqw]:focus-visible .nav-item-surface[data-astro-cid-ddnsgiqw]{outline-style:var(--tw-outline-style);outline-offset:2px;outline-width:2px;outline-color:var(--color-gray-950,oklch(13% .028 261.692))}@media (prefers-color-scheme:dark){.demo-button[data-astro-cid-ddnsgiqw]:focus-visible,.demo-menu-item[data-astro-cid-ddnsgiqw]:focus-visible,.nav-item[data-astro-cid-ddnsgiqw]:focus-visible .nav-item-surface[data-astro-cid-ddnsgiqw]{outline-color:var(--color-gray-100,oklch(96.7% .003 264.542))}}.icon-button[data-astro-cid-ddnsgiqw]{padding:calc(var(--spacing,.25rem) * 2.5);display:flex}.icon-button[data-astro-cid-ddnsgiqw][aria-disabled=true]{color:#6a728280}@supports (color:color-mix(in lab, red, red)){.icon-button[data-astro-cid-ddnsgiqw][aria-disabled=true]{color:color-mix(in oklab, var(--color-gray-500,oklch(55.1% .027 264.364)) 50%, transparent)}}@media (hover:hover){.icon-button[data-astro-cid-ddnsgiqw][aria-disabled=true]:hover{background-color:var(--color-white,#fff)}}@media (prefers-color-scheme:dark){.icon-button[data-astro-cid-ddnsgiqw][aria-disabled=true]{color:#99a1af80}@supports (color:color-mix(in lab, red, red)){.icon-button[data-astro-cid-ddnsgiqw][aria-disabled=true]{color:color-mix(in oklab, var(--color-gray-400,oklch(70.7% .022 261.325)) 50%, transparent)}}@media (hover:hover){.icon-button[data-astro-cid-ddnsgiqw][aria-disabled=true]:hover{background-color:var(--color-gray-800,oklch(27.8% .033 256.848))}}}.demo-button[data-astro-cid-ddnsgiqw][data-state]{justify-items:center;display:inline-grid}.demo-button[data-astro-cid-ddnsgiqw][data-state]>span[data-astro-cid-ddnsgiqw]{visibility:hidden;grid-area:1/1}.demo-button[data-astro-cid-ddnsgiqw][data-state=idle]>[data-astro-cid-ddnsgiqw][data-label=idle],.demo-button[data-astro-cid-ddnsgiqw][data-state=pending]>[data-astro-cid-ddnsgiqw][data-label=pending],.demo-button[data-astro-cid-ddnsgiqw][data-state=done]>[data-astro-cid-ddnsgiqw][data-label=done]{visibility:visible}.demo-button[data-astro-cid-ddnsgiqw][data-state=pending]{color:var(--color-gray-500,oklch(55.1% .027 264.364))}@media (prefers-color-scheme:dark){.demo-button[data-astro-cid-ddnsgiqw][data-state=pending]{color:var(--color-gray-400,oklch(70.7% .022 261.325))}}.demo-list[data-astro-cid-ddnsgiqw]{width:calc(var(--spacing,.25rem) * 48);flex-direction:column;display:flex}.demo-row[data-astro-cid-ddnsgiqw]{align-items:center;gap:calc(var(--spacing,.25rem) * 3);padding:calc(var(--spacing,.25rem) * 3);display:flex}label[data-astro-cid-ddnsgiqw].demo-row{transition:background-color .1s ease-out}@media (hover:hover){label[data-astro-cid-ddnsgiqw].demo-row:hover{background-color:#0000000d}@supports (color:color-mix(in lab, red, red)){label[data-astro-cid-ddnsgiqw].demo-row:hover{background-color:color-mix(in oklab, var(--color-black,#000) 5%, transparent)}}}@media (prefers-color-scheme:dark){@media (hover:hover){label[data-astro-cid-ddnsgiqw].demo-row:hover{background-color:#ffffff1a}@supports (color:color-mix(in lab, red, red)){label[data-astro-cid-ddnsgiqw].demo-row:hover{background-color:color-mix(in oklab, var(--color-white,#fff) 10%, transparent)}}}}.demo-row[data-astro-cid-ddnsgiqw] input[data-astro-cid-ddnsgiqw]{width:calc(var(--spacing,.25rem) * 4);height:calc(var(--spacing,.25rem) * 4);accent-color:var(--color-gray-950,oklch(13% .028 261.692));display:block}@media (prefers-color-scheme:dark){.demo-row[data-astro-cid-ddnsgiqw] input[data-astro-cid-ddnsgiqw]{accent-color:var(--color-gray-100,oklch(96.7% .003 264.542))}}.hit-area[data-astro-cid-ddnsgiqw]{position:relative}span[data-astro-cid-ddnsgiqw].hit-area{display:flex}.hit-area[data-astro-cid-ddnsgiqw]:after{content:"";inset:var(--hit-area-inset,0);pointer-events:none;position:absolute}[data-astro-cid-ddnsgiqw][data-show-hit-areas] .hit-area[data-astro-cid-ddnsgiqw]:after{background-color:#3080ff40}@supports (color:color-mix(in lab, red, red)){[data-astro-cid-ddnsgiqw][data-show-hit-areas] .hit-area[data-astro-cid-ddnsgiqw]:after{background-color:color-mix(in oklab, var(--color-blue-500,oklch(62.3% .214 259.815)) 25%, transparent)}}[data-astro-cid-ddnsgiqw][data-show-hit-areas] .hit-area[data-astro-cid-ddnsgiqw]:after{--tw-inset-ring-shadow:inset 0 0 0 1px var(--tw-inset-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);--tw-inset-ring-color:#3080ff80}@supports (color:color-mix(in lab, red, red)){[data-astro-cid-ddnsgiqw][data-show-hit-areas] .hit-area[data-astro-cid-ddnsgiqw]:after{--tw-inset-ring-color:color-mix(in oklab, var(--color-blue-500,oklch(62.3% .214 259.815)) 50%, transparent)}}.demo-nav[data-astro-cid-ddnsgiqw]{width:calc(var(--spacing,.25rem) * 40);gap:var(--spacing,.25rem);flex-direction:column;display:flex}.nav-item[data-astro-cid-ddnsgiqw]{text-align:start;outline:none;inline-size:100%;display:block}.nav-item[data-astro-cid-ddnsgiqw]:after{pointer-events:auto}[data-astro-cid-ddnsgiqw][data-bridged] .nav-item[data-astro-cid-ddnsgiqw]{--hit-area-inset:calc(var(--spacing,.25rem) / -2) 0}.nav-item-surface[data-astro-cid-ddnsgiqw]{padding:calc(var(--spacing,.25rem) * 3);transition:background-color .1s ease-out;display:block}.nav-item[data-astro-cid-ddnsgiqw]:hover .nav-item-surface[data-astro-cid-ddnsgiqw]{background-color:#0000000d}@supports (color:color-mix(in lab, red, red)){.nav-item[data-astro-cid-ddnsgiqw]:hover .nav-item-surface[data-astro-cid-ddnsgiqw]{background-color:color-mix(in oklab, var(--color-black,#000) 5%, transparent)}}@media (prefers-color-scheme:dark){.nav-item[data-astro-cid-ddnsgiqw]:hover .nav-item-surface[data-astro-cid-ddnsgiqw]{background-color:#ffffff1a}@supports (color:color-mix(in lab, red, red)){.nav-item[data-astro-cid-ddnsgiqw]:hover .nav-item-surface[data-astro-cid-ddnsgiqw]{background-color:color-mix(in oklab, var(--color-white,#fff) 10%, transparent)}}}.demo-menu[data-astro-cid-ddnsgiqw]{margin-top:calc(var(--spacing,.25rem) * 12);align-self:start;display:grid;position:relative}.demo-menu-list[data-astro-cid-ddnsgiqw]{transform-origin:top;visibility:hidden;opacity:0;z-index:20;width:calc(var(--spacing,.25rem) * 40);padding:var(--spacing,.25rem);flex-direction:column;transition:opacity .15s ease-out,transform .15s ease-out,visibility 0s .15s;display:flex;position:absolute;inset-block-start:calc(100% + calc(var(--spacing,.25rem) * 2));inset-inline-start:50%;translate:-50%}[data-astro-cid-ddnsgiqw][data-motion=full] .demo-menu-list[data-astro-cid-ddnsgiqw]{transform:translateY(calc(calc(var(--spacing,.25rem) * 2) * -1)) scale(.95)}[data-astro-cid-ddnsgiqw][data-open] .demo-menu-list[data-astro-cid-ddnsgiqw]{visibility:visible;opacity:1;transition-delay:0s;transform:none}.demo-menu-item[data-astro-cid-ddnsgiqw]{text-align:start;inline-size:100%;padding:calc(var(--spacing,.25rem) * 3);transition:background-color .1s ease-out;display:block}@media (hover:hover){.demo-menu-item[data-astro-cid-ddnsgiqw]:hover{background-color:#0000000d}@supports (color:color-mix(in lab, red, red)){.demo-menu-item[data-astro-cid-ddnsgiqw]:hover{background-color:color-mix(in oklab, var(--color-black,#000) 5%, transparent)}}}@media (prefers-color-scheme:dark){@media (hover:hover){.demo-menu-item[data-astro-cid-ddnsgiqw]:hover{background-color:#ffffff1a}@supports (color:color-mix(in lab, red, red)){.demo-menu-item[data-astro-cid-ddnsgiqw]:hover{background-color:color-mix(in oklab, var(--color-white,#fff) 10%, transparent)}}}}.demo-fields[data-astro-cid-ddnsgiqw]{width:calc(var(--spacing,.25rem) * 56);gap:calc(var(--spacing,.25rem) * 2);flex-direction:column;display:flex}.demo-field[data-astro-cid-ddnsgiqw]{justify-content:space-between;gap:calc(var(--spacing,.25rem) * 4);padding-inline:calc(var(--spacing,.25rem) * 4);padding-block:calc(var(--spacing,.25rem) * 3.5);display:flex}.demo-field[data-astro-cid-ddnsgiqw] dt[data-astro-cid-ddnsgiqw]{color:var(--color-gray-500,oklch(55.1% .027 264.364))}@media (prefers-color-scheme:dark){.demo-field[data-astro-cid-ddnsgiqw] dt[data-astro-cid-ddnsgiqw]{color:var(--color-gray-400,oklch(70.7% .022 261.325))}}.demo-field[data-astro-cid-ddnsgiqw] dd[data-astro-cid-ddnsgiqw]{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}}@layer utilities{.\@container{container-type:inline-size}.pointer-events-none{pointer-events:none}.collapse{visibility:collapse}.invisible{visibility:hidden}.visible{visibility:visible}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.inset-0{inset:0}.-top-5{top:calc(var(--spacing) * -5)}.-top-32{top:calc(var(--spacing) * -32)}.top-0{top:0}.top-4{top:calc(var(--spacing) * 4)}.top-5{top:calc(var(--spacing) * 5)}.-right-4{right:calc(var(--spacing) * -4)}.right-0{right:0}.right-3{right:calc(var(--spacing) * 3)}.right-4{right:calc(var(--spacing) * 4)}.-bottom-2{bottom:calc(var(--spacing) * -2)}.bottom-0{bottom:0}.bottom-3{bottom:calc(var(--spacing) * 3)}.bottom-4{bottom:calc(var(--spacing) * 4)}.left-0{left:0}.left-4{left:calc(var(--spacing) * 4)}.isolate{isolation:isolate}.z-10{z-index:10}.z-20{z-index:20}.layout-bleed{grid-column:full-start/full-end}.layout-wide{grid-column:wide-start/wide-end}.container{width:100%}@media (width>=40rem){.container{max-width:40rem}}@media (width>=48rem){.container{max-width:48rem}}@media (width>=64rem){.container{max-width:64rem}}@media (width>=80rem){.container{max-width:80rem}}@media (width>=96rem){.container{max-width:96rem}}.-m-4{margin:calc(var(--spacing) * -4)}.m-auto{margin:auto}.-mx-1\.5{margin-inline:calc(var(--spacing) * -1.5)}.-mx-5{margin-inline:calc(var(--spacing) * -5)}.mx-auto{margin-inline:auto}.-my-0\.5{margin-block:calc(var(--spacing) * -.5)}.-my-2\.5{margin-block:calc(var(--spacing) * -2.5)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-4{margin-top:calc(var(--spacing) * 4)}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.table{display:table}.aspect-2\/1{aspect-ratio:2}.aspect-3\/2{aspect-ratio:3/2}.aspect-4\/3{aspect-ratio:4/3}.aspect-square{aspect-ratio:1}.aspect-video{aspect-ratio:var(--aspect-video)}.size-4{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.size-10{width:calc(var(--spacing) * 10);height:calc(var(--spacing) * 10)}.size-24{width:calc(var(--spacing) * 24);height:calc(var(--spacing) * 24)}.h-dvh{height:100dvh}.h-full{height:100%}.max-h-none{max-height:none}.min-h-0{min-height:0}.min-h-10{min-height:calc(var(--spacing) * 10)}.min-h-11{min-height:calc(var(--spacing) * 11)}.min-h-screen{min-height:100vh}.w-40{width:calc(var(--spacing) * 40)}.w-48{width:calc(var(--spacing) * 48)}.w-56{width:calc(var(--spacing) * 56)}.w-full{width:100%}.max-w-6xl{max-width:var(--container-6xl)}.max-w-none{max-width:none}.min-w-0{min-width:0}.min-w-14{min-width:calc(var(--spacing) * 14)}.flex-1{flex:1}.shrink{flex-shrink:1}.shrink-0{flex-shrink:0}.flex-grow,.grow{flex-grow:1}.origin-top-left{transform-origin:0 0}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.resize{resize:both}.scroll-mt-12{scroll-margin-top:calc(var(--spacing) * 12)}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-nowrap{flex-wrap:nowrap}.flex-wrap{flex-wrap:wrap}.place-items-center{place-items:center}.content-start{align-content:flex-start}.items-baseline{align-items:baseline}.items-center{align-items:center}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.gap-0{gap:0}.gap-1{gap:var(--spacing)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-3\.5{gap:calc(var(--spacing) * 3.5)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-6{gap:calc(var(--spacing) * 6)}.gap-8{gap:calc(var(--spacing) * 8)}.gap-12{gap:calc(var(--spacing) * 12)}.gap-16{gap:calc(var(--spacing) * 16)}.gap-20{gap:calc(var(--spacing) * 20)}.gap-x-12{column-gap:calc(var(--spacing) * 12)}.gap-y-4{row-gap:calc(var(--spacing) * 4)}.gap-y-12{row-gap:calc(var(--spacing) * 12)}.gap-y-16{row-gap:calc(var(--spacing) * 16)}.gap-y-20{row-gap:calc(var(--spacing) * 20)}.gap-y-24{row-gap:calc(var(--spacing) * 24)}.self-start{align-self:flex-start}.overflow-hidden{overflow:hidden}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:var(--radius-2xl)}.rounded-3xl{border-radius:var(--radius-3xl)}.rounded-4xl{border-radius:var(--radius-4xl)}.rounded-\[inherit\]{border-radius:inherit}.rounded-full{border-radius:2147483647px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.rounded-none{border-radius:0}.rounded-sm{border-radius:var(--radius-sm)}.rounded-xl{border-radius:var(--radius-xl)}.rounded-xs{border-radius:var(--radius-xs)}.rounded-b-2xl{border-bottom-right-radius:var(--radius-2xl);border-bottom-left-radius:var(--radius-2xl)}.rounded-b-xl{border-bottom-right-radius:var(--radius-xl);border-bottom-left-radius:var(--radius-xl)}.border{border-style:var(--tw-border-style);border-width:1px}.border-0{border-style:var(--tw-border-style);border-width:0}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-gray-100{border-color:var(--color-gray-100)}.bg-\(--image-color-light\){background-color:var(--image-color-light)}.bg-black\/5{background-color:#0000000d}@supports (color:color-mix(in lab, red, red)){.bg-black\/5{background-color:color-mix(in oklab, var(--color-black) 5%, transparent)}}.bg-blue-500\/25{background-color:#3080ff40}@supports (color:color-mix(in lab, red, red)){.bg-blue-500\/25{background-color:color-mix(in oklab, var(--color-blue-500) 25%, transparent)}}.bg-gray-100{background-color:var(--color-gray-100)}.bg-gray-950{background-color:var(--color-gray-950)}.bg-transparent{background-color:#0000}.bg-white{background-color:var(--color-white)}.object-cover{object-fit:cover}.p-2{padding:calc(var(--spacing) * 2)}.p-3{padding:calc(var(--spacing) * 3)}.p-4{padding:calc(var(--spacing) * 4)}.p-6{padding:calc(var(--spacing) * 6)}.p-8{padding:calc(var(--spacing) * 8)}.px-1\.5{padding-inline:calc(var(--spacing) * 1.5)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-6{padding-inline:calc(var(--spacing) * 6)}.px-12{padding-inline:calc(var(--spacing) * 12)}.px-16{padding-inline:calc(var(--spacing) * 16)}.py-0\.5{padding-block:calc(var(--spacing) * .5)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-2\.5{padding-block:calc(var(--spacing) * 2.5)}.py-3\.5{padding-block:calc(var(--spacing) * 3.5)}.py-4{padding-block:calc(var(--spacing) * 4)}.py-5{padding-block:calc(var(--spacing) * 5)}.py-8{padding-block:calc(var(--spacing) * 8)}.py-20{padding-block:calc(var(--spacing) * 20)}.py-24{padding-block:calc(var(--spacing) * 24)}.pt-2{padding-top:calc(var(--spacing) * 2)}.pt-40{padding-top:calc(var(--spacing) * 40)}.pb-4{padding-bottom:calc(var(--spacing) * 4)}.pb-16{padding-bottom:calc(var(--spacing) * 16)}.pb-24{padding-bottom:calc(var(--spacing) * 24)}.pl-3{padding-left:calc(var(--spacing) * 3)}.text-center{text-align:center}.text-start{text-align:start}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.text-4xl{font-size:var(--text-4xl);line-height:var(--tw-leading,var(--text-4xl--line-height))}.text-5xl{font-size:var(--text-5xl);line-height:var(--tw-leading,var(--text-5xl--line-height))}.text-6xl{font-size:var(--text-6xl);line-height:var(--tw-leading,var(--text-6xl--line-height))}.text-7xl{font-size:var(--text-7xl);line-height:var(--tw-leading,var(--text-7xl--line-height))}.text-8xl{font-size:var(--text-8xl);line-height:var(--tw-leading,var(--text-8xl--line-height))}.text-9xl{font-size:var(--text-9xl);line-height:var(--tw-leading,var(--text-9xl--line-height))}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.text-wrap{text-wrap:wrap}.whitespace-nowrap{white-space:nowrap}.text-gray-400{color:var(--color-gray-400)}.text-gray-500{color:var(--color-gray-500)}.text-gray-500\/50{color:#6a728280}@supports (color:color-mix(in lab, red, red)){.text-gray-500\/50{color:color-mix(in oklab, var(--color-gray-500) 50%, transparent)}}.text-gray-500\/75{color:#6a7282bf}@supports (color:color-mix(in lab, red, red)){.text-gray-500\/75{color:color-mix(in oklab, var(--color-gray-500) 75%, transparent)}}.text-gray-500\/80{color:#6a7282cc}@supports (color:color-mix(in lab, red, red)){.text-gray-500\/80{color:color-mix(in oklab, var(--color-gray-500) 80%, transparent)}}.text-gray-950{color:var(--color-gray-950)}.text-white{color:var(--color-white)}.capitalize{text-transform:capitalize}.lowercase{text-transform:lowercase}.italic{font-style:italic}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.no-underline{text-decoration-line:none}.underline{text-decoration-line:underline}.decoration-gray-200{-webkit-text-decoration-color:var(--color-gray-200);-webkit-text-decoration-color:var(--color-gray-200);text-decoration-color:var(--color-gray-200)}.decoration-gray-400{-webkit-text-decoration-color:var(--color-gray-400);-webkit-text-decoration-color:var(--color-gray-400);text-decoration-color:var(--color-gray-400)}.decoration-gray-400\/80{text-decoration-color:#99a1afcc}@supports (color:color-mix(in lab, red, red)){.decoration-gray-400\/80{-webkit-text-decoration-color:color-mix(in oklab, var(--color-gray-400) 80%, transparent);-webkit-text-decoration-color:color-mix(in oklab, var(--color-gray-400) 80%, transparent);text-decoration-color:color-mix(in oklab, var(--color-gray-400) 80%, transparent)}}.decoration-gray-500\/50{text-decoration-color:#6a728280}@supports (color:color-mix(in lab, red, red)){.decoration-gray-500\/50{-webkit-text-decoration-color:color-mix(in oklab, var(--color-gray-500) 50%, transparent);-webkit-text-decoration-color:color-mix(in oklab, var(--color-gray-500) 50%, transparent);text-decoration-color:color-mix(in oklab, var(--color-gray-500) 50%, transparent)}}.decoration-3{text-decoration-thickness:3px}.underline-offset-2{text-underline-offset:2px}.underline-offset-4{text-underline-offset:4px}.accent-gray-950{accent-color:var(--color-gray-950)}.scheme-light{color-scheme:light}.opacity-0{opacity:0}.shadow,.shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring,.ring-1{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.inset-ring{--tw-inset-ring-shadow:inset 0 0 0 1px var(--tw-inset-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring-gray-500\/10{--tw-ring-color:#6a72821a}@supports (color:color-mix(in lab, red, red)){.ring-gray-500\/10{--tw-ring-color:color-mix(in oklab, var(--color-gray-500) 10%, transparent)}}.outline,.outline-1{outline-style:var(--tw-outline-style);outline-width:1px}.outline-2{outline-style:var(--tw-outline-style);outline-width:2px}.-outline-offset-1{outline-offset:calc(1px * -1)}.outline-offset-2{outline-offset:2px}.outline-black\/10{outline-color:#0000001a}@supports (color:color-mix(in lab, red, red)){.outline-black\/10{outline-color:color-mix(in oklab, var(--color-black) 10%, transparent)}}.outline-gray-100{outline-color:var(--color-gray-100)}.outline-gray-950{outline-color:var(--color-gray-950)}.blur{--tw-blur:blur(8px);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.drop-shadow{--tw-drop-shadow-size:drop-shadow(0 1px 2px var(--tw-drop-shadow-color,#0000001a)) drop-shadow(0 1px 1px var(--tw-drop-shadow-color,#0000000f));--tw-drop-shadow:drop-shadow(0 1px 2px #0000001a) drop-shadow(0 1px 1px #0000000f);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.grayscale{--tw-grayscale:grayscale(100%);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.invert{--tw-invert:invert(100%);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.backdrop-filter{backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-300{--tw-duration:.3s;transition-duration:.3s}.ease-in{--tw-ease:var(--ease-in);transition-timing-function:var(--ease-in)}.ease-in-out{--tw-ease:var(--ease-in-out);transition-timing-function:var(--ease-in-out)}.ease-out{--tw-ease:var(--ease-out);transition-timing-function:var(--ease-out)}.ring-inset{--tw-ring-inset:inset}@media (hover:hover){.group-hover\:bg-gray-200\/70:is(:where(.group):hover *){background-color:#e5e7ebb3}@supports (color:color-mix(in lab, red, red)){.group-hover\:bg-gray-200\/70:is(:where(.group):hover *){background-color:color-mix(in oklab, var(--color-gray-200) 70%, transparent)}}.group-hover\:underline:is(:where(.group):hover *){text-decoration-line:underline}}.group-focus-visible\:opacity-100:is(:where(.group):focus-visible *){opacity:1}.group-data-\[contrast-preview\]\:text-gray-600:is(:where(.group)[data-contrast-preview] *){color:var(--color-gray-600)}.before\:rounded-3xl:before{content:var(--tw-content);border-radius:var(--radius-3xl)}.after\:pointer-events-none:after{content:var(--tw-content);pointer-events:none}.after\:absolute:after{content:var(--tw-content);position:absolute}.after\:inset-0:after{content:var(--tw-content);inset:0}.after\:z-10:after{content:var(--tw-content);z-index:10}.after\:rounded-\[inherit\]:after{content:var(--tw-content);border-radius:inherit}.after\:outline-1:after{content:var(--tw-content);outline-style:var(--tw-outline-style);outline-width:1px}.after\:-outline-offset-1:after{content:var(--tw-content);outline-offset:calc(1px * -1)}.after\:outline-black\/10:after{content:var(--tw-content);outline-color:#0000001a}@supports (color:color-mix(in lab, red, red)){.after\:outline-black\/10:after{outline-color:color-mix(in oklab, var(--color-black) 10%, transparent)}}.after\:content-\[\'\'\]:after{--tw-content:"";content:var(--tw-content)}.first\:border-t:first-child{border-top-style:var(--tw-border-style);border-top-width:1px}@media (hover:hover){.hover\:scale-105:hover{--tw-scale-x:105%;--tw-scale-y:105%;--tw-scale-z:105%;scale:var(--tw-scale-x) var(--tw-scale-y)}.hover\:scale-\[1\.02\]:hover{scale:1.02}.hover\:bg-black\/5:hover{background-color:#0000000d}@supports (color:color-mix(in lab, red, red)){.hover\:bg-black\/5:hover{background-color:color-mix(in oklab, var(--color-black) 5%, transparent)}}.hover\:bg-gray-50:hover{background-color:var(--color-gray-50)}.hover\:bg-gray-200:hover{background-color:var(--color-gray-200)}.hover\:bg-gray-200\/70:hover{background-color:#e5e7ebb3}@supports (color:color-mix(in lab, red, red)){.hover\:bg-gray-200\/70:hover{background-color:color-mix(in oklab, var(--color-gray-200) 70%, transparent)}}.hover\:bg-gray-200\/75:hover{background-color:#e5e7ebbf}@supports (color:color-mix(in lab, red, red)){.hover\:bg-gray-200\/75:hover{background-color:color-mix(in oklab, var(--color-gray-200) 75%, transparent)}}.hover\:bg-white:hover{background-color:var(--color-white)}.hover\:decoration-gray-950:hover{-webkit-text-decoration-color:var(--color-gray-950);-webkit-text-decoration-color:var(--color-gray-950);text-decoration-color:var(--color-gray-950)}.hover\:decoration-transparent:hover{text-decoration-color:#0000}}.focus-visible\:decoration-gray-950:focus-visible{-webkit-text-decoration-color:var(--color-gray-950);-webkit-text-decoration-color:var(--color-gray-950);text-decoration-color:var(--color-gray-950)}@media (prefers-reduced-motion:no-preference){.motion-safe\:animate-bounce{animation:var(--animate-bounce)}}@media (width>=40rem){.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:p-8{padding:calc(var(--spacing) * 8)}}@media (width>=48rem){.md\:col-span-2{grid-column:span 2/span 2}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}}@media (width>=64rem){.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}}@media (prefers-color-scheme:dark){.dark\:bg-\(--image-color-dark\){background-color:var(--image-color-dark)}.dark\:bg-gray-100{background-color:var(--color-gray-100)}.dark\:bg-gray-800{background-color:var(--color-gray-800)}.dark\:bg-gray-900{background-color:var(--color-gray-900)}.dark\:bg-gray-950{background-color:var(--color-gray-950)}.dark\:text-gray-100{color:var(--color-gray-100)}.dark\:text-gray-400{color:var(--color-gray-400)}.dark\:text-gray-400\/50{color:#99a1af80}@supports (color:color-mix(in lab, red, red)){.dark\:text-gray-400\/50{color:color-mix(in oklab, var(--color-gray-400) 50%, transparent)}}.dark\:text-gray-400\/95{color:#99a1aff2}@supports (color:color-mix(in lab, red, red)){.dark\:text-gray-400\/95{color:color-mix(in oklab, var(--color-gray-400) 95%, transparent)}}.dark\:decoration-gray-400\/75{text-decoration-color:#99a1afbf}@supports (color:color-mix(in lab, red, red)){.dark\:decoration-gray-400\/75{-webkit-text-decoration-color:color-mix(in oklab, var(--color-gray-400) 75%, transparent);-webkit-text-decoration-color:color-mix(in oklab, var(--color-gray-400) 75%, transparent);text-decoration-color:color-mix(in oklab, var(--color-gray-400) 75%, transparent)}}.dark\:decoration-gray-600{-webkit-text-decoration-color:var(--color-gray-600);-webkit-text-decoration-color:var(--color-gray-600);text-decoration-color:var(--color-gray-600)}.dark\:scheme-dark{color-scheme:dark}@media (hover:hover){.dark\:group-hover\:bg-gray-800\/70:is(:where(.group):hover *){background-color:#1e2939b3}@supports (color:color-mix(in lab, red, red)){.dark\:group-hover\:bg-gray-800\/70:is(:where(.group):hover *){background-color:color-mix(in oklab, var(--color-gray-800) 70%, transparent)}}}.dark\:group-data-\[contrast-preview\]\:text-gray-300:is(:where(.group)[data-contrast-preview] *){color:var(--color-gray-300)}.dark\:after\:outline-white\/10:after{content:var(--tw-content);outline-color:#ffffff1a}@supports (color:color-mix(in lab, red, red)){.dark\:after\:outline-white\/10:after{outline-color:color-mix(in oklab, var(--color-white) 10%, transparent)}}@media (hover:hover){.dark\:hover\:bg-gray-800\/70:hover{background-color:#1e2939b3}@supports (color:color-mix(in lab, red, red)){.dark\:hover\:bg-gray-800\/70:hover{background-color:color-mix(in oklab, var(--color-gray-800) 70%, transparent)}}.dark\:hover\:decoration-gray-100:hover{-webkit-text-decoration-color:var(--color-gray-100);-webkit-text-decoration-color:var(--color-gray-100);text-decoration-color:var(--color-gray-100)}}}@media (pointer:fine){@media (hover:hover){.pointer-fine\:group-hover\:opacity-100:is(:where(.group):hover *){opacity:1}}}.\[data-zoom-close\]\:visible:is(data-zoom-close){visibility:visible}}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@property --tw-content{syntax:"*";inherits:false;initial-value:""}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}@keyframes bounce{0%,to{animation-timing-function:cubic-bezier(.8,0,1,1);transform:translateY(-25%)}50%{animation-timing-function:cubic-bezier(0,0,.2,1);transform:none}}.zoom-root{z-index:50;visibility:hidden;pointer-events:none;touch-action:pan-y;-webkit-user-select:none;user-select:none;position:absolute;inset:0;overflow:hidden}.zoom-root.zoom-page{z-index:1000;--zoom-overscan:0px}.zoom-root.zoom-page[data-open]{overflow:clip visible}.zoom-page>:is(.zoom-dim,.zoom-backdrop){top:-30vh;bottom:calc(-1 * var(--zoom-overscan))}.zoom-page .zoom-stream{bottom:calc(-1 * var(--zoom-overscan))}.zoom-page :is(.zoom-zoomer,.zoom-shared-close){right:var(--zoom-gutter,0px)}.zoom-root[data-open]{visibility:visible;pointer-events:auto}.zoom-root[data-open] .zoom-card [data-zoom-fold-mode=static]>[data-zoom-fold]{visibility:visible}.zoom-root[data-open][data-phase=closing]{pointer-events:none}.zoom-root[data-phase=closing] .zoom-card,.zoom-root[data-phase=closing] .zoom-clone{pointer-events:auto;cursor:pointer}.zoom-root[data-switch-while-closing][data-phase=closing] :is(.zoom-card,.zoom-card *,.zoom-clone){pointer-events:none}.zoom-root[data-switch-while-closing][data-phase=closing] .zoom-clone-window{pointer-events:auto;cursor:pointer}.zoom-dim,.zoom-backdrop{opacity:0;pointer-events:none;position:absolute;inset:0}.zoom-zoomer{transform-origin:0 0;position:absolute;inset:0}.zoom-track{height:100%;position:absolute;top:0;left:0}.zoom-card{transform-origin:0 0;position:absolute;overflow:hidden}.zoom-card:focus{outline:none}.zoom-card-scroll{overscroll-behavior:contain;scrollbar-width:none;height:100%;overflow-y:auto;container-type:inline-size}.zoom-card-scroll::-webkit-scrollbar{display:none}.zoom-dragging .zoom-card-scroll{overflow:hidden}.zoom-vertical .zoom-card-scroll{overscroll-behavior-y:none}.zoom-card-content{min-height:100%;display:flow-root;position:relative;overflow:clip}.zoom-root:is([data-phase=opening],[data-phase=closing]) .zoom-close-bar>*{opacity:0}.zoom-close-bar{z-index:6;height:0;position:sticky;top:0}.zoom-shared-close{position:absolute;inset:0 0 auto}.zoom-root:is([data-phase=opening],[data-phase=closing]) .zoom-shared-close{pointer-events:none}.zoom-stream{overscroll-behavior-x:none;overscroll-behavior-y:contain;scrollbar-width:none;flex-direction:column;align-items:center;display:flex;position:absolute;inset:0;overflow:hidden auto}.zoom-stream::-webkit-scrollbar{display:none}.zoom-root[data-browser-swipe-navigation] :is(.zoom-stream,.zoom-card-scroll){overscroll-behavior-x:auto}.zoom-root[data-resize-anchor] .zoom-stream{overflow-anchor:none}.zoom-stream .zoom-card{flex:none;position:relative;overflow:clip}.zoom-stream .zoom-card-scroll{height:auto;overflow:visible}.zoom-stream-title-row{flex:none}.zoom-dragging .zoom-stream,.zoom-root[data-phase=closing] .zoom-stream{overflow-y:hidden}.zoom-root[data-soften-scrolled-close]:is([data-phase=opening],[data-phase=closing]) .zoom-stream{overflow-anchor:none}.zoom-flight{pointer-events:none;position:absolute;inset:0}.zoom-clone{transform-origin:0 0;will-change:transform;position:absolute;top:0;left:0}.zoom-sr{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}[data-zoom-hidden]{visibility:hidden!important}[data-zoom-dimmed]{opacity:var(--zoom-group-opacity,1)}.zoom-dim{background:var(--zoom-dim-color,#000)}.zoom-backdrop{backdrop-filter:var(--zoom-backdrop-filter,none)}.zoom-card{border-radius:var(--zoom-card-radius,calc(var(--zoom-radius,28px) * var(--zoom-smooth,1)));corner-shape:var(--zoom-corner-shape,var(--zoom-smooth-shape,round));color:var(--zoom-card-color,inherit)}.zoom-card-content{border-radius:var(--zoom-card-radius,calc(var(--zoom-radius,28px) * var(--zoom-smooth,1)));corner-shape:var(--zoom-corner-shape,var(--zoom-smooth-shape,round));background:var(--zoom-card-bg,#fff)}.zoom-close{top:var(--zoom-close-inset,calc(var(--zoom-radius,28px) - var(--zoom-close-size,30px) / 2));right:var(--zoom-close-inset,calc(var(--zoom-radius,28px) - var(--zoom-close-size,30px) / 2));width:var(--zoom-close-size,30px);height:var(--zoom-close-size,30px);background:var(--zoom-close-bg,#ffffffb8);color:var(--zoom-close-color,#1c1c1e);cursor:pointer;border:0;border-radius:50%;place-items:center;padding:0;display:grid;position:absolute}.zoom-close:before{content:"";position:absolute;inset:-7px}.zoom-close:focus-visible{outline:2px solid var(--zoom-focus,currentColor);outline-offset:2px}.zoom-stream-title{margin:0}.zoom-concentric{border-radius:calc((var(--zoom-radius,28px) - var(--zoom-inset,10px)) * var(--zoom-smooth,1));corner-shape:var(--zoom-smooth-shape,round)}.zoom-debug-edge{z-index:5;box-sizing:border-box;pointer-events:none;letter-spacing:.02em;color:#ff2d78;background:repeating-linear-gradient(135deg,#ff2d781a 0 6px,#ff2d7808 6px 12px);justify-content:flex-start;padding:3px 10px;font:600 10px/1 ui-monospace,SFMono-Regular,Menlo,monospace;transition:background-color .12s;display:flex;position:absolute;left:0;right:0;box-shadow:inset 0 0 0 1px #ff2d7873}.zoom-debug-top{align-items:flex-end;top:0}.zoom-debug-bottom{align-items:flex-start;bottom:0}.zoom-root[data-zone-top] .zoom-card:not([inert]) .zoom-debug-top,.zoom-root[data-zone-bottom] .zoom-card:not([inert]) .zoom-debug-bottom{background-color:#ff2d7824}.zoom-root[data-zone-top] .zoom-card:not([inert]) .zoom-debug-top span:after,.zoom-root[data-zone-bottom] .zoom-card:not([inert]) .zoom-debug-bottom span:after{content:" · in zone"}.zoom-root[data-armed-top] .zoom-card:not([inert]) .zoom-debug-top,.zoom-root[data-armed-bottom] .zoom-card:not([inert]) .zoom-debug-bottom{background-color:#ff2d7861}.zoom-root[data-armed-top] .zoom-card:not([inert]) .zoom-debug-top span:after,.zoom-root[data-armed-bottom] .zoom-card:not([inert]) .zoom-debug-bottom span:after{content:" · armed"}@media (prefers-color-scheme:dark){html[data-portfolio][data-refined-dark]{--portfolio-bg:oklch(calc(.205 - var(--portfolio-darkness-shift,0)) .003 80);--portfolio-ink:oklch(90% .003 80);--portfolio-close-ink:oklch(67% .003 80);--portfolio-reading-dark:oklch(76% .003 80);--portfolio-secondary-dark:oklch(78% .003 80);--portfolio-caption-dark:oklch(67% .003 80)}html[data-refined-dark] :is([data-portfolio-index],.project-content){color:var(--portfolio-ink)}html[data-refined-dark] [data-portfolio-index] :is([data-index-intro-controls],.project-link[data-secondary-title]){--index-text-secondary:var(--portfolio-secondary-dark);--index-text-tertiary-base:var(--portfolio-caption-dark)}html[data-refined-dark] .project-content .article-text{color:var(--portfolio-reading-dark)}html[data-refined-dark] .project-content .article-text :is(strong,a){color:var(--portfolio-ink)}html[data-refined-dark] .project-content figcaption{color:var(--portfolio-reading-dark)}html[data-refined-dark] .project-content figcaption>span{color:var(--portfolio-caption-dark)}html[data-refined-dark] .project-content a{text-decoration-color:currentColor}@supports (color:color-mix(in lab, red, red)){html[data-refined-dark] .project-content a{-webkit-text-decoration-color:color-mix(in oklab, currentColor 35%, transparent);-webkit-text-decoration-color:color-mix(in oklab, currentColor 35%, transparent);text-decoration-color:color-mix(in oklab, currentColor 35%, transparent)}}html[data-refined-dark] .project-content a:focus-visible{text-decoration-color:currentColor}html[data-refined-dark] .project-links{--project-navigation-resting-color:var(--portfolio-caption-dark);color:var(--project-navigation-resting-color)}html[data-distinct-dark-surfaces] .project-links{--project-navigation-resting-color:oklch(from var(--portfolio-caption-dark) .72 c h);color:var(--project-navigation-resting-color)}html[data-refined-dark] .project-links[data-compact]{background:var(--zoom-card-bg);box-shadow:0 0 0 1px #ffffff17}@media not all and (width>=80rem){html[data-refined-dark] .project-links[data-static-sidebar]{background:var(--zoom-card-bg);box-shadow:0 0 0 1px #ffffff17}}@media (hover:hover) and (pointer:fine){html[data-refined-dark] .project-content a:hover{text-decoration-color:currentColor}}}html[data-portfolio]{--project-icon-shadow:0 1px 3px #00000014, 0 4px 10px -4px #0000001f;--portfolio-column:45rem;--portfolio-bg:#fff;--portfolio-depth:9%;--portfolio-index-backdrop:#000}@supports (color:color-mix(in lab, red, red)){html[data-portfolio]{--portfolio-index-backdrop:color-mix(in srgb, #000 var(--portfolio-depth), var(--portfolio-bg))}}html[data-portfolio]{--portfolio-ink:var(--color-gray-950);--zoom-card-bg:var(--portfolio-bg);--zoom-card-color:var(--portfolio-ink);--zoom-card-radius:var(--portfolio-card-radius,24px);--zoom-radius:24px;--zoom-inset:24px;--zoom-close-size:32px;--zoom-close-inset:36px;--zoom-close-bg:var(--portfolio-bg);--zoom-close-color:var(--portfolio-ink);--zoom-dim-color:#000;background:var(--portfolio-bg);color:var(--portfolio-ink);color-scheme:light}@media (prefers-color-scheme:dark){html[data-portfolio]{--project-icon-shadow:0 0 0 1px #ffffff17;--portfolio-bg:var(--color-gray-950);--portfolio-ink:var(--color-gray-100);--zoom-card-bg:#fff}@supports (color:color-mix(in lab, red, red)){html[data-portfolio]{--zoom-card-bg:color-mix(in srgb, #fff var(--portfolio-depth), var(--portfolio-bg))}}html[data-portfolio]{--portfolio-index-backdrop:var(--portfolio-bg);--zoom-dim-color:transparent;color-scheme:dark}html[data-portfolio][data-invert-dark-surfaces]{--zoom-card-bg:var(--portfolio-bg);--portfolio-index-backdrop:#fff}@supports (color:color-mix(in lab, red, red)){html[data-portfolio][data-invert-dark-surfaces]{--portfolio-index-backdrop:color-mix(in srgb, #fff var(--portfolio-depth), var(--portfolio-bg))}}html[data-portfolio][data-invert-dark-surfaces] .zoom-backdrop{background:rgb(255 255 255/var(--portfolio-depth))}}[data-portfolio-index]{--container-layout:var(--portfolio-column);--container-wide:var(--portfolio-column);text-box-edge:cap alphabetic}project-demos{display:block}[data-project-icon-shadow]{box-shadow:var(--project-icon-shadow)}.image-container[data-project-hover-shadow]{box-shadow:none;overflow:visible}.image-container[data-project-hover-shadow]>img,.image-container[data-project-hover-shadow]:before{border-radius:inherit}.image-container[data-project-hover-shadow]:after{content:"";pointer-events:none;border-radius:inherit;box-shadow:var(--project-icon-shadow);opacity:1;transition:opacity var(--project-shadow-hover-duration,.15s) ease;outline:none;position:absolute;inset:0}@media (hover:hover) and (pointer:fine){html[data-project-shadow-on-hover] .image-container[data-project-hover-shadow]:after{opacity:0}html[data-project-shadow-on-hover] .project-link:hover .image-container[data-project-hover-shadow]:after,html[data-project-shadow-on-hover]:not([data-portfolio-focus=pointer]) .project-link:focus-visible .image-container[data-project-hover-shadow]:after{opacity:1}}@media (prefers-reduced-motion:reduce){.image-container[data-project-hover-shadow]:after{transition-duration:0s}}.project-content{-webkit-user-select:text;user-select:text}[data-project-title-flying]{visibility:hidden!important}.portfolio-project-content[data-hide-project-title] .project-caption,.static-project-sheet[data-hide-project-title] .project-caption{display:none}.portfolio-project-content[data-hide-content-title] .project-heading{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}[data-portfolio] [class*=rounded]:not([data-native-corners]){corner-shape:superellipse(1.36)}html[data-portfolio-focus=pointer] :focus-visible{outline:none}.static-project{background:var(--portfolio-index-backdrop);min-height:100svh;padding-block-start:24px}.static-project-sheet{width:min(calc(var(--portfolio-column) + 48px), 100%);border-radius:var(--zoom-card-radius) var(--zoom-card-radius) 0 0;background:var(--zoom-card-bg);min-height:calc(100svh - 24px);margin-inline:auto;position:relative;container-type:inline-size}.static-project-backdrop{z-index:0;position:fixed;inset:0}.static-project-backdrop+.static-project-sheet{z-index:1}.static-project-close-bar{z-index:5;height:0;position:sticky;top:24px}[data-portfolio] .zoom-card,[data-portfolio] .zoom-card-content{border-radius:var(--zoom-card-radius)}[data-portfolio] .zoom-card[data-zoom-card-reveal],[data-portfolio] .zoom-card[data-zoom-card-reveal] .zoom-card-content{border-radius:0}[data-portfolio] .zoom-card[data-card-flight] .zoom-card-content{isolation:isolate;background:0 0}[data-portfolio] .zoom-card-surface{z-index:-1;pointer-events:none;border-radius:inherit;background:var(--zoom-card-bg);position:absolute;inset:0}[data-portfolio] .zoom-close,.static-project-close{top:var(--zoom-close-inset);right:var(--zoom-close-inset);background:var(--zoom-card-bg);width:32px;height:32px;color:var(--portfolio-ink);box-shadow:0 1px 6px #0002}.static-project-close{z-index:5;border-radius:50%;place-items:center;display:grid;position:absolute}.static-project-close:before{content:"";position:absolute;inset:-6px}.static-project-close:focus-visible{outline-offset:2px;outline:2px solid}html[data-sheet-controls]{--portfolio-sheet-top:24px;--portfolio-sheet-width:min(calc(var(--portfolio-column) + 48px), calc(100% - 112px))}html[data-sheet-fill-top]{--portfolio-sheet-top:0px;--zoom-card-radius:0px}[data-sheet-controls] .static-project{padding-block-start:var(--portfolio-sheet-top)}[data-sheet-controls] .static-project-sheet{width:var(--portfolio-sheet-width);z-index:1}[data-sheet-controls] :is(.zoom-outside-close .zoom-close,.portfolio-outside-close){top:24px;left:calc((100% - var(--portfolio-sheet-width)) / 2 - 48px);box-shadow:none;background:0 0;right:auto}[data-sheet-controls] .portfolio-outside-close{position:fixed}.zoom-root:is([data-phase=opening],[data-phase=closing]) .zoom-outside-close>*{opacity:1}.zoom-root:is([data-phase=opening],[data-phase=closing]) .zoom-outside-close{pointer-events:auto}[data-sheet-flight-controls] :is(.zoom-outside-close .zoom-close,.portfolio-outside-close) svg{opacity:.7}[data-sheet-flight-controls] .zoom-outside-close .zoom-close svg{width:18px;height:18px}[data-sheet-flight-controls] .portfolio-outside-close svg{width:24px;height:24px}html[data-sheet-flight-controls][data-sheet-fill-top]{--portfolio-content-padding:48px;--portfolio-sheet-width:min(calc(var(--portfolio-column) + var(--portfolio-content-padding) * 2), calc(100% - 112px))}[data-sheet-flight-controls][data-sheet-fill-top] .project-content{grid-template-columns:[full-start] minmax(var(--portfolio-content-padding), 1fr) [wide-start text-start] minmax(0, var(--portfolio-column)) [text-end wide-end] minmax(var(--portfolio-content-padding), 1fr) [full-end];padding-block-end:max(calc(var(--portfolio-content-padding) * 4), env(safe-area-inset-bottom))}[data-sheet-flight-controls][data-sheet-fill-top] .project-header{grid-column:text-start/text-end;padding-block-start:max(var(--portfolio-content-padding), env(safe-area-inset-top))}[data-sheet-flight-controls][data-sheet-fill-top] .project-content .project-header>:not(.project-hero){margin-inline:0}@media (hover:hover) and (pointer:fine){[data-sheet-controls] :is(.zoom-outside-close .zoom-close,.portfolio-outside-close):hover{color:var(--color-gray-500)}}@media not all and (width>=48rem){html[data-portfolio]{--zoom-card-radius:0px;--zoom-radius:0px;--zoom-inset:0px;--zoom-close-inset:12px}.static-project{background:var(--zoom-card-bg);padding-block-start:0}.static-project-sheet{width:100%;min-height:100dvh}.static-project-close-bar{top:0}[data-portfolio] .zoom-card-content{min-height:100dvh}[data-portfolio] .zoom-stream .zoom-card:not(:last-child):after{content:"";background:var(--portfolio-ink);inset-inline:16px;height:1px;position:absolute;bottom:24px}@supports (color:color-mix(in lab, red, red)){[data-portfolio] .zoom-stream .zoom-card:not(:last-child):after{background:color-mix(in srgb, var(--portfolio-ink) 18%, transparent)}}[data-portfolio] .zoom-stream .zoom-card:not(:last-child):after{pointer-events:none}[data-portfolio] .zoom-root[data-phase=open] .zoom-stream{background:var(--zoom-card-bg)}[data-portfolio] .zoom-close,.static-project-close{top:max(12px, env(safe-area-inset-top));right:max(12px, env(safe-area-inset-right))}html[data-sheet-controls]{--portfolio-sheet-top:0px;--portfolio-sheet-width:100%}html[data-sheet-flight-controls][data-sheet-fill-top]{--portfolio-sheet-width:100%}[data-sheet-controls] :is(.zoom-outside-close .zoom-close,.portfolio-outside-close){top:max(12px, env(safe-area-inset-top));left:max(12px, env(safe-area-inset-left));right:auto}}html[data-refined-close]{--portfolio-close-content-inset:24px;--portfolio-close-ink:var(--color-gray-600)}html[data-refined-close][data-sheet-fill-top]{--portfolio-close-content-inset:max(var(--portfolio-content-padding), env(safe-area-inset-top))}[data-refined-close] :is(.zoom-outside-close .zoom-close,.portfolio-outside-close){top:max(12px, calc(var(--portfolio-sheet-top) + var(--portfolio-close-content-inset) - var(--close-glyph-inset,8.5px)));color:var(--portfolio-close-ink)}[data-refined-close] .portfolio-outside-close{--close-glyph-inset:8.875px}@media (prefers-color-scheme:dark){html[data-refined-close]{--portfolio-close-ink:var(--color-gray-400)}}@media not all and (width>=48rem){html[data-refined-close]:not([data-sheet-fill-top]){--portfolio-close-content-inset:0px}[data-refined-close] :is(.zoom-outside-close .zoom-close,.portfolio-outside-close){top:max(12px, env(safe-area-inset-top), calc(var(--portfolio-close-content-inset) - var(--close-glyph-inset,8.5px)))}}[data-refined-close] :is(.zoom-outside-close .zoom-close,.portfolio-outside-close):focus-visible{color:var(--portfolio-ink)}@media (hover:hover) and (pointer:fine){[data-close-pointer-on-background] .zoom-root[data-open]:not(:has(.zoom-card:hover,.zoom-stream-title-row:hover,[data-zoom-controls]:hover)),[data-close-pointer-on-background] .static-project-backdrop{cursor:pointer}[data-refined-close][data-close-hover-on-background] .zoom-root[data-open]:hover:not(:has(.zoom-card:hover,.zoom-stream-title-row:hover,[data-zoom-controls]:hover)) .zoom-outside-close .zoom-close,[data-refined-close][data-close-hover-on-background] .static-project:has(.static-project-backdrop:hover) .portfolio-outside-close,[data-refined-close] :is(.zoom-outside-close .zoom-close,.portfolio-outside-close):hover{color:var(--portfolio-ink)}}.portfolio-motion-controls{right:max(16px, env(safe-area-inset-right));bottom:max(16px, env(safe-area-inset-bottom));z-index:10000;overscroll-behavior:contain;pointer-events:auto;width:min(280px,100vw - 32px);max-height:calc(100dvh - 32px);color:var(--portfolio-ink);text-box-trim:none;font:12px/1.4 system-ui,sans-serif;position:fixed;overflow-y:auto}.portfolio-motion-controls[hidden],.portfolio-motion-controls [hidden]{display:none}.portfolio-motion-controls[data-grouped-controls]{--controls-bottom:max(72px, env(safe-area-inset-bottom));bottom:var(--controls-bottom);max-height:calc(100dvh - var(--controls-bottom) - 16px)}.portfolio-motion-controls[data-controls-preview]{max-height:calc(100dvh - var(--controls-bottom) - 24px);top:24px;bottom:auto}.portfolio-motion-controls .dialkit-root,.portfolio-motion-controls .dialkit-root *{text-box-trim:none}.portfolio-motion-controls .dialkit-select-value{min-width:0}.portfolio-motion-controls .dialkit-select-trigger{gap:8px}.portfolio-motion-controls .dialkit-select-right{min-width:0}.portfolio-motion-controls [data-filter-controls] .dialkit-labeled-control{height:auto;min-height:var(--dial-row-height)}.portfolio-motion-controls [data-filter-controls] .dialkit-labeled-control-label{overflow-wrap:anywhere;flex:1 1 0;min-width:0}.portfolio-motion-controls [data-filter-controls] .dialkit-folder:not(.dialkit-folder-root)>.dialkit-folder-content>.dialkit-folder-inner{padding-inline-start:12px}.portfolio-controls-results{gap:var(--dial-row-gap);flex-direction:column;display:flex}.portfolio-controls-filter{top:var(--dial-panel-header-height,0px);z-index:2;background:var(--dial-glass-bg);padding-block:8px 12px;position:sticky}.portfolio-controls-filter label{color:var(--dial-text-label);margin-block-end:6px;font-size:12px;font-weight:500;display:block}.portfolio-controls-filter-field{border:1px solid var(--dial-border);border-radius:var(--dial-radius);background:var(--dial-surface);min-height:38px;color:var(--dial-text-label);align-items:center;gap:8px;padding-inline:10px 4px;display:flex}.portfolio-controls-filter-field>svg{flex-shrink:0}.portfolio-controls-filter input{width:100%;min-width:0;color:var(--dial-text-primary);font:inherit;outline-offset:2px;background:0 0;padding-block:8px;font-size:16px}.portfolio-controls-filter input::placeholder{color:var(--dial-text-secondary);font-size:12px}.portfolio-controls-filter input::-webkit-search-cancel-button{-webkit-appearance:none}.portfolio-controls-filter-field:focus-within{outline:2px solid var(--dial-focus-ring);outline-offset:2px}.portfolio-controls-filter input:focus-visible{outline:none}.portfolio-controls-filter button{cursor:pointer;border-radius:4px;flex-shrink:0;place-items:center;width:28px;height:28px;display:grid}.portfolio-controls-filter button:hover{background:var(--dial-surface-hover)}.portfolio-controls-filter button:focus-visible{outline:2px solid var(--dial-focus-ring)}.portfolio-controls-filter-status{color:var(--dial-text-secondary);margin-block-start:10px}.portfolio-controls-filter-status:empty{display:none}.portfolio-controls-results :is(button,input,textarea,[tabindex]){scroll-margin-top:calc(var(--dial-panel-header-height,0px) + 88px)}.portfolio-motion-toggle{background:var(--portfolio-bg);cursor:pointer;border-radius:12px;justify-content:space-between;align-items:center;width:100%;min-height:44px;padding:10px 14px;display:flex;box-shadow:0 1px 8px #0002}.portfolio-motion-toggle:focus-visible{outline-offset:-3px;outline:2px solid}.portfolio-motion-hint{background:var(--portfolio-bg);border-radius:12px;margin:8px 0 0;padding:10px 14px}.portfolio-motion-controls[data-polished-controls]{border:1px solid var(--dial-border);background:var(--dial-glass-bg);color:var(--dial-text-primary);box-shadow:var(--dial-shadow-dropdown);scrollbar-width:none;border-radius:14px;position:fixed}.portfolio-motion-controls[data-polished-controls]::-webkit-scrollbar{display:none}.portfolio-motion-controls[data-polished-controls]:empty{visibility:hidden}.portfolio-motion-controls[data-polished-controls] .portfolio-motion-toggle{border-bottom:1px solid var(--dial-surface-subtle);background:var(--dial-glass-bg);color:var(--dial-text-label);box-shadow:none;letter-spacing:-.01em;text-box-trim:none;border-radius:0;padding-inline:12px;font-size:13px;font-weight:600}.portfolio-motion-controls[data-polished-controls] .portfolio-motion-toggle span{color:var(--dial-text-secondary);letter-spacing:0;font-size:11px;font-weight:400}@media (hover:hover) and (pointer:fine){.portfolio-motion-controls[data-polished-controls]{opacity:.2;transition:opacity .22s}.portfolio-motion-controls[data-polished-controls]:is(:hover,[data-interacting]),.portfolio-motion-controls[data-polished-controls]:has(:focus-visible,input:focus,textarea:focus,[aria-haspopup][aria-expanded=true]){opacity:1;transition-duration:.15s}.portfolio-motion-controls[data-polished-controls] .portfolio-motion-toggle:hover{background:var(--dial-surface-hover);color:var(--dial-text-root)}}@media (prefers-reduced-motion:reduce){.portfolio-motion-controls[data-polished-controls]{transition:none}}.portfolio-motion-controls[data-draggable-controls]{max-height:min(640px,70dvh,100dvh - 88px)}.portfolio-motion-header{z-index:4;background:var(--dial-glass-bg);border-bottom:1px solid var(--dial-surface-subtle);height:44px;color:var(--dial-text-label);display:flex;position:sticky;top:0}.portfolio-motion-drag,.portfolio-motion-hide{text-box-trim:none;justify-content:center;align-items:center;gap:8px;min-height:44px;display:flex}.portfolio-motion-drag{letter-spacing:-.01em;cursor:grab;touch-action:none;-webkit-user-select:none;user-select:none;flex:1;justify-content:flex-start;padding-inline:10px 4px;font-size:13px;font-weight:600}.portfolio-motion-drag svg{color:var(--dial-text-tertiary)}.portfolio-motion-hide{cursor:pointer;min-width:64px;padding-inline:8px 12px}.portfolio-motion-hide span{color:var(--dial-text-secondary);font-size:11px}.portfolio-motion-header button:focus-visible{outline:2px solid var(--dial-focus-ring);outline-offset:-4px;border-radius:8px}.portfolio-motion-controls[data-panel-dragging] .portfolio-motion-drag{cursor:grabbing}.portfolio-motion-controls[data-panel-dragging],.portfolio-motion-controls[data-panel-moving]{opacity:1}.portfolio-motion-controls[data-draggable-controls] .dialkit-panel-inner>.dialkit-folder-root>.dialkit-panel-header{top:44px}.portfolio-motion-controls[data-draggable-controls] .portfolio-controls-filter{top:calc(44px + var(--dial-panel-header-height,0px))}.portfolio-motion-controls[data-draggable-controls] .portfolio-controls-results :is(button,input,textarea,[tabindex]){scroll-margin-top:calc(44px + var(--dial-panel-header-height,0px) + 88px)}@media (hover:hover) and (pointer:fine){.portfolio-motion-header button:hover{background:var(--dial-surface-hover);color:var(--dial-text-root)}}.portfolio-motion-controls[data-library-controls]{min-height:0;max-height:none}.portfolio-motion-controls[data-library-controls] #portfolio-motion-panel{min-height:calc(100% - 44px)}.portfolio-motion-resize{z-index:5;background:var(--dial-glass-bg);border-top:1px solid var(--dial-surface-subtle);width:100%;height:44px;color:var(--dial-text-tertiary);cursor:ns-resize;touch-action:none;-webkit-user-select:none;user-select:none;place-items:center;display:grid;position:sticky;bottom:0}.portfolio-motion-resize span{background:currentColor;border-radius:2px;width:32px;height:3px}.portfolio-motion-resize:focus-visible{outline:2px solid var(--dial-focus-ring);outline-offset:-4px}.portfolio-motion-controls[data-panel-resizing]{opacity:1}@media (hover:hover) and (pointer:fine){.portfolio-motion-resize:hover{color:var(--dial-text-label)}}.portfolio-motion-controls[data-compact-controls]{--controls-edge-padding:10px}.portfolio-motion-controls[data-compact-controls] .dialkit-folder-root>.dialkit-panel-header>.dialkit-folder-header-top{display:none}.portfolio-motion-controls[data-compact-controls] .dialkit-folder-root>.dialkit-panel-header{border-bottom:0;margin-bottom:0;padding-bottom:0}.portfolio-motion-controls[data-compact-controls] .portfolio-controls-filter{padding-block:8px}.portfolio-motion-controls[data-compact-controls] .dialkit-panel-inline{padding-bottom:0}.portfolio-motion-controls[data-compact-controls] #portfolio-motion-panel{min-height:calc(100% - var(--controls-edge-padding))}.portfolio-motion-controls[data-compact-controls] .portfolio-motion-resize{height:var(--controls-edge-padding);border-top:0}.portfolio-motion-controls[data-compact-controls] .portfolio-motion-resize span{height:2px}.portfolio-motion-controls[data-compact-controls][data-edge-controls]{--controls-edge-padding:28px}.portfolio-motion-controls[data-compact-controls][data-edge-controls] .dialkit-folder-root>.dialkit-panel-header>.dialkit-panel-toolbar{margin-bottom:0}.portfolio-motion-controls[data-compact-controls] .portfolio-controls-results :is(button,input,textarea,[tabindex]){scroll-margin-top:calc(44px + var(--dial-panel-header-height,0px) + 60px)}@media (hover:hover) and (pointer:fine){.portfolio-motion-controls[data-compact-controls] .portfolio-motion-drag:hover{color:inherit;background:0 0}}[data-project-theme]{--project-surface:var(--project-surface-light);--project-backdrop:var(--project-backdrop-light);--portfolio-ink:var(--project-ink-light);--portfolio-close-ink:var(--project-muted-light);--zoom-card-bg:var(--project-surface);--zoom-card-color:var(--portfolio-ink);--zoom-close-bg:var(--project-surface);--zoom-close-color:var(--portfolio-ink);--zoom-dim-color:transparent;--portfolio-index-backdrop:oklch(from var(--project-backdrop) calc(l + .03 - var(--portfolio-depth) / 100%) c h);color:var(--portfolio-ink)}@media (prefers-color-scheme:dark){[data-project-theme]{--project-surface:var(--project-surface-dark);--project-backdrop:var(--project-backdrop-dark);--portfolio-ink:var(--project-ink-dark);--portfolio-close-ink:var(--project-muted-dark)}[data-invert-dark-surfaces] [data-project-theme]{--project-surface:var(--project-backdrop-dark);--project-backdrop:var(--project-surface-dark)}}.zoom-root[data-project-theme] .zoom-backdrop{background:var(--portfolio-index-backdrop)}@media (width>=48rem){html[data-project-desktop-edge][data-sheet-fill-top]{--project-desktop-gutter:var(--portfolio-content-padding,24px)}html[data-project-desktop-edge] .project-content .project-header{grid-column:full-start/full-end;padding-block-start:0}html[data-project-desktop-edge] .project-content .project-header>:not(.project-hero-spread){margin-inline:var(--project-desktop-gutter,24px)}html[data-project-desktop-edge] .project-content .project-header>.project-hero-spread{margin-inline:0}html[data-project-desktop-edge] .project-hero.project-hero-fold{border-radius:0;width:60%}html[data-project-desktop-edge] .project-hero-square{border-radius:0}html[data-project-desktop-edge] .project-metadata{border-radius:0;width:66.6667%;padding:clamp(24px,4vw,48px)}html[data-project-desktop-edge] .project-metadata-title,html[data-project-desktop-edge] .project-metadata-facts{text-wrap:balance;max-inline-size:28ch}html[data-scaled-project-spacing]{--portfolio-sheet-width:min(calc(var(--portfolio-column) + var(--portfolio-content-padding) * 2), calc(100% - 112px));--project-desktop-gutter:var(--portfolio-content-padding)}html[data-scaled-project-spacing] .project-content{grid-template-columns:[full-start] minmax(var(--portfolio-content-padding), 1fr) [wide-start text-start] minmax(0, var(--portfolio-column)) [text-end wide-end] minmax(var(--portfolio-content-padding), 1fr) [full-end]}html[data-scaled-project-spacing][data-project-desktop-edge][data-sheet-flight-controls] .project-content .project-header>:not(.project-hero-spread){margin-inline:var(--portfolio-content-padding)}html[data-scaled-project-spacing]:not([data-project-desktop-edge]) .project-header{padding-block-start:var(--portfolio-content-padding)}}@media not all and (width>=48rem){html[data-scaled-project-spacing] .project-content{--project-gutter-start:max(var(--portfolio-content-padding), env(safe-area-inset-left));--project-gutter-end:max(var(--portfolio-content-padding), env(safe-area-inset-right));grid-template-columns:[full-start] var(--project-gutter-start) [wide-start text-start] minmax(0, 1fr) [text-end wide-end] var(--project-gutter-end) [full-end]}html[data-scaled-project-spacing] .project-content .project-header{grid-column:full-start/full-end;padding-block-start:0}html[data-scaled-project-spacing][data-sheet-flight-controls] .project-content .project-header>:not(.project-hero-spread){margin-inline:var(--project-gutter-start) var(--project-gutter-end)}}html[data-concentric-project-corners]{--project-inner-radius:max(0px, calc(var(--zoom-card-radius) - var(--portfolio-content-padding)))}html[data-concentric-project-corners] .project-content .project-hero.project-hero-fold{border-radius:var(--project-inner-radius)}html[data-concentric-project-corners] .project-content .project-hero-square{border-radius:var(--project-inner-radius) 0 0 var(--project-inner-radius)}html[data-concentric-project-corners] .project-content .project-metadata{border-radius:0 var(--project-inner-radius) var(--project-inner-radius) 0}html[data-concentric-project-corners][data-sheet-fill-top]{--project-inner-radius:0px}@media not all and (width>=48rem){html[data-concentric-project-corners]{--project-inner-radius:0px}}@media (width>=48rem){html[data-concentric-project-corners][data-project-desktop-edge]{--project-inner-radius:var(--zoom-card-radius)}html[data-concentric-project-corners][data-project-desktop-edge] .project-content .project-hero.project-hero-fold{border-radius:0}html[data-concentric-project-corners][data-project-desktop-edge] .project-content .project-hero-square{border-radius:0 0 0 var(--project-inner-radius)}html[data-concentric-project-corners][data-project-desktop-edge] .project-content .project-metadata{border-radius:0 0 var(--project-inner-radius) 0}html[data-project-header-inset][data-project-desktop-edge] .project-content .project-header{padding-block-start:var(--portfolio-header-inset)}html[data-project-header-inset][data-project-desktop-edge] .project-content .project-header>.project-hero-spread{margin-inline:var(--portfolio-header-inset)}html[data-project-header-inset][data-project-desktop-edge]{--project-inner-radius:max(0px, calc(var(--zoom-card-radius) - var(--portfolio-header-inset)))}html[data-project-header-inset][data-project-desktop-edge]:not([data-project-header-flush]) .project-content .project-hero.project-hero-fold{border-radius:var(--project-inner-radius)}html[data-project-header-inset][data-project-desktop-edge]:not([data-project-header-flush]) .project-content .project-hero-square{border-radius:var(--project-inner-radius) 0 0 var(--project-inner-radius)}html[data-project-header-inset][data-project-desktop-edge]:not([data-project-header-flush]) .project-content .project-metadata{border-radius:0 var(--project-inner-radius) var(--project-inner-radius) 0}}html[data-grouped-project-layout]{--portfolio-sheet-width:min(calc(var(--portfolio-column) + var(--project-card-padding) * 2 + var(--project-content-padding) * 2), calc(100% - 112px));--zoom-card-radius:var(--project-card-rounded)}html[data-grouped-project-layout] .project-content{padding:var(--project-card-padding);gap:var(--project-content-gap);flex-direction:column;display:flex}html[data-grouped-project-layout] .project-content .project-header{gap:0;margin-block-start:calc(var(--project-photoMetadata-padding) - var(--project-card-padding));padding:0}html[data-grouped-project-layout] .project-content .project-header>.project-hero-spread{margin-inline:calc(var(--project-photoMetadata-padding) - var(--project-card-padding))}html[data-grouped-project-layout] .project-hero.project-hero-fold{width:calc((100% - var(--project-photoMetadata-gap)) * .6);border-radius:var(--project-photoMetadata-rounded)}html[data-grouped-project-layout] .project-hero-square{border-radius:var(--project-photoMetadata-rounded) 0 0 var(--project-photoMetadata-rounded);padding:0}html[data-grouped-project-layout] .project-hero-square img{border-radius:0}html[data-grouped-project-layout] .project-metadata{left:calc(100% + var(--project-photoMetadata-gap));border-radius:0 var(--project-photoMetadata-rounded) var(--project-photoMetadata-rounded) 0;gap:24px;width:66.6667%;padding:clamp(16px,3vw,32px)}html[data-grouped-project-layout][data-photo-metadata-separated] .project-hero-square,html[data-grouped-project-layout][data-photo-metadata-separated] .project-metadata{border-radius:var(--project-photoMetadata-rounded)}html[data-grouped-project-layout] .project-writing{min-width:0;padding:var(--project-content-padding);gap:var(--project-content-gap);border-radius:var(--project-content-rounded);flex-direction:column;display:flex;overflow:hidden}html[data-grouped-project-layout] .project-writing .project-heading{margin:0}html[data-grouped-project-layout] .project-writing :is(section,.article-text,section>.flex){gap:var(--project-content-gap)}html[data-grouped-project-layout] .project-metadata :is(.project-metadata-title,.project-metadata-facts){text-wrap:balance;max-inline-size:28ch}@media not all and (width>=48rem){html[data-grouped-project-layout]{--portfolio-sheet-width:100%}html[data-grouped-project-layout] .project-metadata{font-size:clamp(10px,3.2vw,14px)}}html[data-axis-project-layout]{--portfolio-sheet-width:min(calc(var(--portfolio-column) + var(--project-card-paddingX) * 2), calc(100% - 112px))}html[data-axis-project-layout] .project-content{padding:var(--project-card-paddingY) var(--project-card-paddingX)}html[data-axis-project-layout] .project-content .project-header{margin-block-start:calc(var(--project-photoMetadata-paddingY) - var(--project-card-paddingY))}html[data-axis-project-layout] .project-content .project-header>.project-hero-spread,html[data-axis-project-layout] .project-writing{margin-inline:calc(var(--project-photoMetadata-paddingX) - var(--project-card-paddingX))}html[data-axis-project-layout] .project-writing{padding:var(--project-content-paddingY) var(--project-content-paddingX);max-inline-size:calc(100% + var(--project-card-paddingX) * 2 - var(--project-photoMetadata-paddingX) * 2)}@media not all and (width>=48rem){html[data-axis-project-layout]{--portfolio-sheet-width:100%}}html[data-content-text-controls] .project-writing{font-size:var(--text-base,1rem)}html[data-content-text-controls] .project-writing :is(p,li,blockquote),html[data-content-scale-all-text] .project-writing{font-size:var(--project-content-text-size);line-height:var(--project-content-text-leading)}html[data-content-scale-all-text] .project-writing .text-xs{font-size:calc(var(--text-xs,.75rem) * var(--project-content-text-scale));line-height:var(--text-xs--line-height,1.33333)}html[data-content-scale-all-text] .project-writing .text-sm{font-size:calc(var(--text-sm,.875rem) * var(--project-content-text-scale));line-height:var(--text-sm--line-height,1.42857)}html[data-content-scale-all-text] .project-writing .text-base{font-size:calc(var(--text-base,1rem) * var(--project-content-text-scale));line-height:var(--text-base--line-height,1.5)}html[data-content-scale-all-text] .project-writing .text-lg{font-size:calc(var(--text-lg,1.125rem) * var(--project-content-text-scale));line-height:var(--text-lg--line-height,1.55556)}html[data-content-scale-all-text] .project-writing .text-xl{font-size:calc(var(--text-xl,1.25rem) * var(--project-content-text-scale));line-height:var(--text-xl--line-height,1.4)}html[data-content-scale-all-text] .project-writing .text-2xl{font-size:calc(var(--text-2xl,1.5rem) * var(--project-content-text-scale));line-height:var(--text-2xl--line-height,1.33333)}html[data-content-scale-all-text] .project-writing .text-3xl{font-size:calc(var(--text-3xl,1.875rem) * var(--project-content-text-scale));line-height:var(--text-3xl--line-height,1.2)}html[data-content-scale-all-text] .project-writing .text-4xl{font-size:calc(var(--text-4xl,2.25rem) * var(--project-content-text-scale));line-height:var(--text-4xl--line-height,1.11111)}html[data-content-scale-all-text] .project-writing .text-5xl{font-size:calc(var(--text-5xl,3rem) * var(--project-content-text-scale));line-height:var(--text-5xl--line-height,1)}html[data-content-scale-all-text] .project-writing .text-6xl{font-size:calc(var(--text-6xl,3.75rem) * var(--project-content-text-scale));line-height:var(--text-6xl--line-height,1)}html[data-content-scale-all-text] .project-writing .text-7xl{font-size:calc(var(--text-7xl,4.5rem) * var(--project-content-text-scale));line-height:var(--text-7xl--line-height,1)}html[data-content-scale-all-text] .project-writing .text-8xl{font-size:calc(var(--text-8xl,6rem) * var(--project-content-text-scale));line-height:var(--text-8xl--line-height,1)}html[data-content-scale-all-text] .project-writing .text-9xl{font-size:calc(var(--text-9xl,8rem) * var(--project-content-text-scale));line-height:var(--text-9xl--line-height,1)}html[data-portfolio] .project-content[data-section-titles] .project-writing .project-section-title{font-size:var(--text-2xl,1.5rem);letter-spacing:-.02em;line-height:1.2}html[data-portfolio] .project-content[data-section-titles] .project-writing section>.flex:has(>.project-section-title){gap:1rem}html[data-portfolio] .project-content[data-section-titles] .project-writing>section:has(>.flex>.project-section-title):not(:first-child){margin-block-start:var(--project-content-gap,3rem)}html[data-content-hide-date] .project-writing [data-content-date]{display:none}html[data-index-radius-controls] [data-portfolio-index] [data-zoom-source]{border-radius:var(--portfolio-index-project-radius)}html[data-portfolio][data-axis-project-layout] .project-content[data-masthead]>.project-header{--masthead-background:var(--masthead-background-light);--masthead-ink:var(--masthead-ink-light);margin:calc(-1 * var(--project-card-paddingY)) calc(-1 * var(--project-card-paddingX)) 0;padding:var(--project-card-edge-inset,var(--project-card-paddingY)) var(--project-photoMetadata-paddingX);background:var(--masthead-background);border-bottom:1px solid var(--masthead-ink)}@supports (color:color-mix(in lab, red, red)){html[data-portfolio][data-axis-project-layout] .project-content[data-masthead]>.project-header{border-bottom:1px solid color-mix(in oklab, var(--masthead-ink) 24%, transparent)}}html[data-portfolio][data-axis-project-layout] .project-content[data-masthead]>.project-header>.project-hero-spread{margin-inline:0}@media (prefers-color-scheme:dark){html[data-portfolio][data-axis-project-layout] .project-content[data-masthead]>.project-header{--masthead-background:var(--masthead-background-dark);--masthead-ink:var(--masthead-ink-dark)}}html[data-portfolio][data-axis-project-layout][data-masthead-edge-to-edge] .project-content[data-masthead]>.project-header{padding:0}html[data-portfolio][data-axis-project-layout][data-masthead-edge-to-edge] .project-content[data-masthead] :is(.project-hero-fold,.project-hero-square){border-radius:var(--zoom-card-radius) 0 0 0}html[data-portfolio][data-axis-project-layout][data-masthead-edge-to-edge] .project-content[data-masthead] .project-metadata{border-radius:0 var(--zoom-card-radius) 0 0}@property --portfolio-safe-top{syntax:"<length>";inherits:true;initial-value:0}html[data-opening-inset-controls]{--portfolio-safe-top:env(safe-area-inset-top,0px);--portfolio-opening-resolved:max(var(--portfolio-opening-top-inset,48px), var(--portfolio-safe-top));--portfolio-sheet-top:max(24px, var(--portfolio-opening-resolved))}html[data-opening-inset-controls][data-sheet-fill-top]{--portfolio-sheet-top:var(--portfolio-opening-resolved)}html[data-opening-inset-controls] :is(.zoom-outside-close .zoom-close,.portfolio-outside-close){top:max(8px, env(safe-area-inset-top,0px), calc(var(--portfolio-sheet-top) + var(--portfolio-close-top-offset,0px) - var(--close-glyph-inset,8.5px)))}@media not all and (width>=48rem){html[data-opening-inset-controls]{--portfolio-sheet-top:var(--portfolio-opening-resolved)}html[data-portfolio][data-mobile-project-flush-top]{--portfolio-opening-resolved:0px;--portfolio-sheet-top:0px}html[data-opening-inset-controls][data-axis-project-layout] .project-writing{margin-inline:calc(min(12px, var(--project-photoMetadata-paddingX)) - var(--project-card-paddingX));padding-inline:min(12px, var(--project-content-paddingX));max-inline-size:none}}html[data-portfolio][data-axis-project-layout][data-masthead-edge-to-edge][data-masthead-edge-rounding] .project-content[data-masthead] :is(.project-hero-fold,.project-hero-square){border-bottom-left-radius:var(--project-photoMetadata-rounded)}html[data-portfolio][data-axis-project-layout][data-masthead-edge-to-edge][data-masthead-edge-rounding] .project-content[data-masthead] .project-metadata{border-bottom-right-radius:var(--project-photoMetadata-rounded)}html[data-portfolio][data-axis-project-layout][data-masthead-background-controls] .project-content[data-masthead]>.project-header{border-bottom:0}html[data-portfolio][data-axis-project-layout][data-masthead-background-hidden] .project-content[data-masthead]>.project-header{background:0 0}html[data-close-offset-controls]{--portfolio-close-left:calc((100% - var(--portfolio-sheet-width)) / 2 - 48px)}html[data-close-offset-controls] :is(.zoom-outside-close .zoom-close,.portfolio-outside-close){left:clamp(max(8px, env(safe-area-inset-left,0px)), calc(var(--portfolio-close-left) - var(--portfolio-close-right-offset,0px)), calc(100% - 40px - env(safe-area-inset-right,0px)))}@media not all and (width>=48rem){html[data-close-offset-controls]{--portfolio-close-left:max(12px, env(safe-area-inset-left,0px))}}html[data-concentric-focus]{--portfolio-focus-width:2px;--portfolio-focus-gap:2px;--portfolio-focus-color:var(--portfolio-ink)}html[data-concentric-focus] :where(a[href],button,input,textarea,select,summary,[tabindex]:not([tabindex="-1"])):focus-visible{outline:var(--portfolio-focus-width) solid var(--portfolio-focus-color)!important;outline-offset:var(--portfolio-focus-gap)!important}html[data-concentric-focus] .project-link:focus-visible{outline:none!important}html[data-concentric-focus] .project-link:focus-visible .image-container{outline:var(--portfolio-focus-width) solid var(--portfolio-focus-color)!important;outline-offset:var(--portfolio-focus-gap)!important}html[data-concentric-focus] .project-console-icon:focus-visible{outline:none!important}html[data-concentric-focus] .project-console-icon:focus-visible img{outline:var(--portfolio-focus-width) solid var(--portfolio-focus-color)!important;outline-offset:var(--portfolio-focus-gap)!important}html[data-concentric-focus] .nav-item:focus-visible,html[data-concentric-focus] .portfolio-controls-filter input:focus-visible{outline:none!important}html[data-concentric-focus] .nav-item:focus-visible .nav-item-surface,html[data-concentric-focus] .portfolio-controls-filter-field:has(input:focus-visible){outline:var(--portfolio-focus-width) solid var(--portfolio-focus-color)!important;outline-offset:var(--portfolio-focus-gap)!important}html[data-concentric-focus] .portfolio-controls-filter-field:not(:has(input:focus-visible)){outline:none!important}html[data-concentric-focus] .project-links[data-project-anchored]:not([data-compact]){--focus-clearance:calc(var(--portfolio-focus-gap) + var(--portfolio-focus-width));padding:var(--focus-clearance);margin:calc(-1 * var(--focus-clearance));width:calc(var(--project-links-width) + 2 * var(--focus-clearance))}html[data-concentric-focus] .project-links a{scroll-margin:calc(var(--portfolio-focus-gap) + var(--portfolio-focus-width))}html[data-concentric-focus] :is(.portfolio-motion-controls,.dialkit-root){--portfolio-focus-color:var(--dial-focus-ring,var(--portfolio-ink));--portfolio-focus-gap:-4px}html[data-concentric-focus] .portfolio-controls-filter-field{--portfolio-focus-gap:2px}html[data-concentric-focus] .portfolio-controls-filter button{--portfolio-focus-gap:-2px}html[data-concentric-focus][data-portfolio-focus=pointer] :focus-visible:not(textarea,[contenteditable=true],input:not([type]),input:is([type=text],[type=search],[type=email],[type=url],[type=tel],[type=password],[type=number])),html[data-concentric-focus][data-portfolio-focus=pointer] .project-console-icon:focus-visible img,html[data-concentric-focus][data-portfolio-focus=pointer] .project-link:focus-visible .image-container,html[data-concentric-focus][data-portfolio-focus=pointer] .nav-item:focus-visible .nav-item-surface{outline:none!important}@media (forced-colors:active){html[data-concentric-focus],html[data-concentric-focus] :is(.portfolio-motion-controls,.dialkit-root){--portfolio-focus-color:Highlight}}[data-project-shared-stroke]{--project-shared-stroke:#0000001a}@media (prefers-color-scheme:dark){[data-project-shared-stroke]{--project-shared-stroke:#ffffff1a}}[data-project-shared-stroke]:after{content:none}[data-project-photo-stroke]{z-index:10;pointer-events:none;border-radius:inherit;color:var(--project-shared-stroke);position:absolute;inset:0;box-shadow:inset 0 0 0 1px}.project-hero-square>[data-project-photo-stroke]{clip-path:inset(0 1px 0 0)}html[data-photo-metadata-separated] .project-hero-square>[data-project-photo-stroke]{clip-path:none}[data-project-shared-stroke] .project-metadata[data-zoom-fold]{box-shadow:inset 0 0 0 1px var(--project-shared-stroke)}html[data-masthead-separator-hidden]:not([data-photo-metadata-separated]) [data-project-shared-stroke] .project-metadata[data-zoom-fold]{box-shadow:inset 1px 0 0 0 var(--project-panel-bg), inset 0 0 0 1px var(--project-shared-stroke)}html[data-continuous-masthead-outline] .project-hero-square>[data-project-photo-stroke]{clip-path:none;right:-1px}html[data-continuous-masthead-outline][data-photo-metadata-separated] .project-hero-square>[data-project-photo-stroke]{right:0}html[data-continuous-masthead-outline][data-portfolio] [data-project-shared-stroke] .project-metadata[data-zoom-fold]{box-shadow:none}html[data-continuous-masthead-outline] :is(.project-metadata[data-zoom-fold],[data-zoom-fold-surface]):after{content:"";z-index:10;border-radius:inherit;pointer-events:none;box-shadow:inset 0 0 0 var(--project-stroke-width,1px) var(--project-shared-stroke);position:absolute;inset:0}html[data-continuous-masthead-outline][data-masthead-separator-hidden]:not([data-photo-metadata-separated]) :is(.project-metadata[data-zoom-fold],[data-zoom-fold-surface]):after{left:calc(-1 * var(--project-stroke-width,1px))}html[data-continuous-masthead-outline] .project-metadata:has(>[data-zoom-fold-surface]):after{content:none}html[data-flight-masthead-separator][data-continuous-masthead-outline]:not([data-masthead-separator-hidden]):not([data-photo-metadata-separated]) .project-metadata:has(>[data-zoom-fold-surface]):after{content:"";inset:var(--project-fold-crop,0px) auto var(--project-fold-crop,0px) 0;width:var(--project-stroke-width,1px);box-shadow:none;background:var(--project-shared-stroke);border-radius:0}main[data-astro-cid-7tiwkdxp]{--image-hover-strength:1;text-box-edge:cap alphabetic}@media not all and (width>=48rem){[data-astro-cid-7tiwkdxp][data-mobile-index-spacing] [data-astro-cid-7tiwkdxp][data-project-list]{gap:12px;margin-inline:-4px}}[data-astro-cid-7tiwkdxp][data-reserved-image]{aspect-ratio:1}[data-astro-cid-7tiwkdxp]:is([data-index-intro-controls],.project-link[data-secondary-title]){--index-text-secondary:var(--color-gray-500);--index-text-tertiary-base:var(--color-gray-400);--index-text-tertiary:var(--index-text-secondary)}@supports (color:color-mix(in lab, red, red)){[data-astro-cid-7tiwkdxp]:is([data-index-intro-controls],.project-link[data-secondary-title]){--index-text-tertiary:color-mix(in oklab, var(--index-text-secondary) var(--portfolio-tertiary-secondary-share,0%), var(--index-text-tertiary-base))}}[data-astro-cid-7tiwkdxp][data-stronger-secondary] [data-astro-cid-7tiwkdxp]:is([data-index-intro-controls],.project-link[data-secondary-title]){--index-text-secondary:var(--color-gray-700)}@media (prefers-color-scheme:dark){[data-astro-cid-7tiwkdxp]:is([data-index-intro-controls],.project-link[data-secondary-title]){--index-text-secondary:var(--color-gray-400);--index-text-tertiary-base:var(--color-gray-500)}[data-astro-cid-7tiwkdxp][data-stronger-secondary] [data-astro-cid-7tiwkdxp]:is([data-index-intro-controls],.project-link[data-secondary-title]){--index-text-secondary:var(--color-gray-300)}}[data-astro-cid-7tiwkdxp][data-index-intro-controls]{--index-intro-secondary:var(--index-text-secondary);--index-intro-tertiary:var(--index-text-tertiary)}.project-title[data-astro-cid-7tiwkdxp]{inline-size:100%;min-inline-size:0}.project-link[data-astro-cid-7tiwkdxp][data-secondary-title] .project-title[data-astro-cid-7tiwkdxp]{font-size:var(--index-project-text-size,inherit);color:var(--index-project-text-color,var(--index-text-secondary));font-weight:var(--index-project-text-weight,inherit);text-wrap:var(--index-project-text-wrap,wrap)}html[data-index-project-text-color=primary] .project-link[data-astro-cid-7tiwkdxp][data-secondary-title]{--index-project-text-color:var(--portfolio-ink)}html[data-index-project-text-color=secondary] .project-link[data-astro-cid-7tiwkdxp][data-secondary-title]{--index-project-text-color:var(--index-text-secondary)}html[data-index-project-text-color=tertiary] .project-link[data-astro-cid-7tiwkdxp][data-secondary-title]{--index-project-text-color:var(--index-text-tertiary)}html[data-index-project-hover-color=primary] .project-link[data-astro-cid-7tiwkdxp][data-secondary-title]{--index-project-hover-color:var(--portfolio-ink)}html[data-index-project-hover-color=secondary] .project-link[data-astro-cid-7tiwkdxp][data-secondary-title]{--index-project-hover-color:var(--index-text-secondary)}html[data-index-project-hover-color=tertiary] .project-link[data-astro-cid-7tiwkdxp][data-secondary-title]{--index-project-hover-color:var(--index-text-tertiary)}.project-link[data-astro-cid-7tiwkdxp][data-secondary-title]:focus-visible .project-title[data-astro-cid-7tiwkdxp]{color:var(--index-project-hover-color,var(--portfolio-ink))}@media (hover:hover) and (pointer:fine){.project-link[data-astro-cid-7tiwkdxp][data-secondary-title]:hover .project-title[data-astro-cid-7tiwkdxp]{color:var(--index-project-hover-color,var(--portfolio-ink))}}main[data-astro-cid-7tiwkdxp]:not([data-title-matching=false]) .project-link[data-astro-cid-7tiwkdxp]:has([data-zoom-hidden]) .project-title[data-astro-cid-7tiwkdxp]{visibility:hidden}.project-link[data-astro-cid-7tiwkdxp]{transition:text-decoration-color .1s ease-out}[data-astro-cid-7tiwkdxp][data-zoom-press]{transform-origin:50%;transition:transform .15s cubic-bezier(.25,.46,.45,.94),opacity .1s ease-out}@media (prefers-reduced-motion:reduce){[data-astro-cid-7tiwkdxp][data-zoom-press]{transition:opacity .1s ease-out}[data-astro-cid-7tiwkdxp][data-zoom-press][data-zoom-pressed]{opacity:.86}}.image-container[data-astro-cid-7tiwkdxp]{--image-backing-color-weight:80%;--image-color-light:var(--image-backing-source-light)}@supports (color:color-mix(in lab, red, red)){.image-container[data-astro-cid-7tiwkdxp]{--image-color-light:color-mix(in oklab, var(--image-backing-source-light) var(--image-backing-color-weight), white)}}.image-container[data-astro-cid-7tiwkdxp]{--image-color-dark:var(--image-backing-source-dark)}@supports (color:color-mix(in lab, red, red)){.image-container[data-astro-cid-7tiwkdxp]{--image-color-dark:color-mix(in oklab, var(--image-backing-source-dark) var(--image-backing-color-weight), white)}}.image-container[data-astro-cid-7tiwkdxp]:before{content:"";z-index:0;pointer-events:none;background-color:var(--image-hover-color);visibility:hidden;transition:visibility 0s linear .1s;position:absolute;inset:0}.image-container[data-astro-cid-7tiwkdxp][data-zoom-hidden]:before,.image-container[data-astro-cid-7tiwkdxp][data-loaded-image-hover]:not(:has(img[data-image-loaded])):before{transition:none;visibility:hidden!important}.image-container[data-astro-cid-7tiwkdxp][data-loaded-image-hover] img:not([data-image-loaded]){opacity:1!important}.image-container[data-astro-cid-7tiwkdxp] img{z-index:1;opacity:1;transition:opacity .1s ease-out;position:relative}html:not([data-portfolio-focus=pointer]) .project-card[data-astro-cid-7tiwkdxp]:has(a:focus-visible) .image-container[data-astro-cid-7tiwkdxp]:before{visibility:visible;transition-delay:0s}html:not([data-portfolio-focus=pointer]) .project-card[data-astro-cid-7tiwkdxp]:has(a:focus-visible) .image-container[data-astro-cid-7tiwkdxp] img{opacity:var(--image-hover-calibrated-opacity,var(--image-hover-opacity))}@media (hover:hover){.project-card[data-astro-cid-7tiwkdxp]:has(a:hover) .image-container[data-astro-cid-7tiwkdxp]:before{visibility:visible;transition-delay:0s}.project-card[data-astro-cid-7tiwkdxp]:has(a:hover) .image-container[data-astro-cid-7tiwkdxp] img{opacity:var(--image-hover-calibrated-opacity,var(--image-hover-opacity))}}html[data-portfolio] .project-content .project-writing[data-portfolio-article]{--article-paragraph-gap:var(--rhythm-paragraph,var(--project-content-gap,3rem));--article-title-gap:var(--rhythm-title,1rem);--article-block-gap:var(--rhythm-block,var(--project-content-gap,3rem));--article-section-gap:var(--project-section-gap,var(--rhythm-section-gap,calc(var(--project-content-gap,3rem) * 2)));--article-item-gap:var(--rhythm-item,1rem);--article-image-radius:var(--radius-xl,.75rem);--article-image-aspect:3 / 2;--article-image-outline-width:1px;--article-image-outline-color:#0000001a;--article-text-color:var(--color-gray-500);--article-heading-color:var(--color-gray-950);--article-emphasis-color:var(--color-gray-950);gap:var(--article-block-gap);& .article-text{gap:var(--article-paragraph-gap);color:var(--article-text-color);flex-direction:column;display:flex}& .article-text p{text-wrap:pretty}& .article-text :is(strong,a){font-weight:inherit;color:var(--article-emphasis-color)}& .article-text ul{padding-inline-start:1.5em;list-style:outside}& .article-text ol{padding-inline-start:1.5em;list-style:decimal}& .article-text li+li{margin-block-start:.5em}& .article-text blockquote{border-inline-start:2px solid;padding-inline-start:1em}& .article-text pre{max-width:100%;overflow-x:auto}& .article-text :is(h3,h4){color:var(--article-heading-color);font-weight:600}& :is(.project-section-title,.article-text h2){font-size:var(--rhythm-section,var(--text-2xl,1.5rem));font-weight:var(--portfolio-section-title-weight,var(--font-weight-semibold,600));letter-spacing:var(--rhythm-section-tracking,-.02em);font-variation-settings:normal;color:var(--article-heading-color);scroll-margin-top:3rem;line-height:1.2}& section{gap:var(--article-block-gap)}& section>.flex:has(>.project-section-title){gap:var(--article-title-gap)}&>section:has(>.flex>.project-section-title):not(:first-child){margin-block-start:calc(var(--article-section-gap) - var(--article-block-gap))}& .cms-article-edit .tiptap{gap:var(--article-paragraph-gap);flex-direction:column;min-width:0;display:flex}& .cms-article-edit .tiptap>*{flex-shrink:0;margin:0}& .cms-article-edit .tiptap>h2+*{margin-block-start:calc(var(--article-title-gap) - var(--article-paragraph-gap))}& .cms-article-edit .tiptap>img,& .cms-article-edit .tiptap>img+:not(h2){margin-block-start:calc(var(--article-block-gap) - var(--article-paragraph-gap))}& .cms-article-edit .tiptap>h2:not(:first-child){margin-block-start:calc(var(--article-section-gap) - var(--article-paragraph-gap))}& :is(.article-image,.cms-article-image figure){gap:var(--article-item-gap);flex-direction:column;margin:0;display:flex}& :is(.article-image,.cms-article-image) figcaption{color:var(--article-text-color);text-align:start;margin:0}& .article-image-frame{isolation:isolate;aspect-ratio:var(--article-image-aspect);background-color:var(--image-color-light,var(--image-source-color-light));position:relative;overflow:hidden}& .article-image-frame>img{position:absolute;inset:0}& :is(.article-image-frame,.cms-article-image img,.cms-article-edit .tiptap>img){border-radius:var(--article-image-radius)}& :is(.article-image-frame>img,.cms-article-image[data-default-layout] img,.cms-article-edit .tiptap>img){width:100%;max-width:100%;height:auto;aspect-ratio:var(--article-image-aspect);object-fit:cover;display:block}& .article-image-frame:after,& .cms-article-image img,& .cms-article-edit .tiptap>img{outline:var(--article-image-outline-width) solid var(--article-image-outline-color);outline-offset:calc(-1 * var(--article-image-outline-width))}& .article-image-frame:after{content:"";z-index:1;pointer-events:none;border-radius:inherit;position:absolute;inset:0}& .cms-article-edit .tiptap>img.ProseMirror-selectednode{box-shadow:0 0 0 2px highlight}}@media (prefers-color-scheme:dark){html[data-portfolio] .project-content .project-writing[data-portfolio-article]{--article-image-outline-color:#ffffff1a;--article-text-color:var(--portfolio-reading-dark,var(--color-gray-400));--article-heading-color:var(--portfolio-ink,var(--color-gray-100));--article-emphasis-color:var(--portfolio-ink,var(--color-gray-100));& .article-image-frame{background-color:var(--image-color-dark,var(--image-source-color-dark))}}}@media (width<80rem){html[data-portfolio]:has(.cms-article-edit) 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) + max(4.5rem, var(--console-mobile-bottom,0px)))}}.case-section[data-astro-cid-xkkcabxo]{flex-direction:column;gap:1.5rem;min-width:0;display:flex}.case-section[data-astro-cid-xkkcabxo] p[data-astro-cid-xkkcabxo],.case-section[data-astro-cid-xkkcabxo] dd[data-astro-cid-xkkcabxo]{line-height:1.6}.case-facts[data-astro-cid-xkkcabxo],.case-comparison[data-astro-cid-xkkcabxo]{grid-template-columns:repeat(2,minmax(0,1fr));gap:1.5rem;display:grid}dt[data-astro-cid-xkkcabxo]{margin-bottom:.375rem;font-weight:600}.case-facts[data-astro-cid-xkkcabxo] dt[data-astro-cid-xkkcabxo],.case-note[data-astro-cid-xkkcabxo]{color:var(--color-gray-500)}.case-note[data-astro-cid-xkkcabxo]{font-size:.875rem}.case-directions[data-astro-cid-xkkcabxo],.case-states[data-astro-cid-xkkcabxo]{gap:1rem;display:grid}.case-directions[data-astro-cid-xkkcabxo]>div[data-astro-cid-xkkcabxo],.case-states[data-astro-cid-xkkcabxo]>div[data-astro-cid-xkkcabxo]{border-top:1px solid color-mix(in srgb, currentColor 16%, transparent);padding-top:1rem}.case-principles[data-astro-cid-xkkcabxo]{padding-inline-start:1.25rem;list-style:outside}.case-detail[data-astro-cid-xkkcabxo]{border-block:1px solid color-mix(in srgb, currentColor 16%, transparent);padding-block:1rem}summary[data-astro-cid-xkkcabxo]{cursor:pointer;font-weight:500}.case-detail[data-astro-cid-xkkcabxo] p[data-astro-cid-xkkcabxo]{margin-top:1rem}.case-next[data-astro-cid-xkkcabxo]{border-top:1px solid color-mix(in srgb, currentColor 16%, transparent);padding-top:1.5rem}@media (prefers-color-scheme:dark){.case-facts[data-astro-cid-xkkcabxo] dt[data-astro-cid-xkkcabxo],.case-note[data-astro-cid-xkkcabxo]{color:var(--color-gray-400)}}@media (width<=30rem){.case-facts[data-astro-cid-xkkcabxo],.case-comparison[data-astro-cid-xkkcabxo]{grid-template-columns:1fr}}.emdash-image-media[data-astro-cid-cckkpqct]{max-width:100%;height:auto}:where(:root.dark) .emdash-image--light,:where(:root.light) .emdash-image--dark{display:none}@media (prefers-color-scheme:dark){:where(:root:not(.light)) .emdash-image--light{display:none}}@media (prefers-color-scheme:light){:where(:root:not(.dark)) .emdash-image--dark{display:none}}.has-text-align-center[data-astro-cid-o2fngt4a]{text-align:center}.has-text-align-right[data-astro-cid-o2fngt4a]{text-align:right}.has-text-align-justify[data-astro-cid-o2fngt4a]{text-align:justify}.emdash-image[data-astro-cid-sydrnlhj]{margin:1.5rem 0}.emdash-image[data-astro-cid-sydrnlhj] img[data-astro-cid-sydrnlhj]{max-width:100%;height:auto}.emdash-image[data-astro-cid-sydrnlhj] figcaption[data-astro-cid-sydrnlhj]{color:var(--emdash-caption-color,var(--color-muted,#666));text-align:center;margin-top:.5rem;font-size:.875rem}.emdash-image--align-left[data-astro-cid-sydrnlhj],.emdash-image--align-right[data-astro-cid-sydrnlhj]{width:fit-content;max-width:50%}.emdash-image--align-left[data-astro-cid-sydrnlhj]{float:left;margin:0 1.5rem 1rem 0}.emdash-image--align-right[data-astro-cid-sydrnlhj]{float:right;margin:0 0 1rem 1.5rem}.emdash-image--align-center[data-astro-cid-sydrnlhj]{width:fit-content;margin-inline:auto}.emdash-image--align-wide[data-astro-cid-sydrnlhj],.emdash-image--align-full[data-astro-cid-sydrnlhj]{width:100%}@media (width<=640px){.emdash-image--align-left[data-astro-cid-sydrnlhj],.emdash-image--align-right[data-astro-cid-sydrnlhj]{float:none;width:100%;max-width:100%;margin-inline:0}}.emdash-code[data-astro-cid-oy3q35z4]{margin:1.5rem 0}.emdash-code-filename[data-astro-cid-oy3q35z4]{color:#ccc;background:#2d2d2d;border-radius:.5rem .5rem 0 0;padding:.5rem 1rem;font-family:monospace;font-size:.75rem}.emdash-code[data-astro-cid-oy3q35z4] pre[data-astro-cid-oy3q35z4]{background:#1e1e1e;border-radius:.5rem;margin:0;padding:1rem;overflow-x:auto}.emdash-code-filename[data-astro-cid-oy3q35z4]+pre[data-astro-cid-oy3q35z4]{border-radius:0 0 .5rem .5rem}.emdash-code[data-astro-cid-oy3q35z4] code[data-astro-cid-oy3q35z4]{color:#e0e0e0;font-family:Fira Code,Consolas,monospace;font-size:.875rem}.emdash-embed[data-astro-cid-pquwthf7]{margin:1.5rem 0}.emdash-embed-video[data-astro-cid-pquwthf7]{height:0;padding-bottom:56.25%;position:relative;overflow:hidden}.emdash-embed-video[data-astro-cid-pquwthf7] iframe[data-astro-cid-pquwthf7],.emdash-embed-video[data-astro-cid-pquwthf7] video[data-astro-cid-pquwthf7]{border:0;width:100%;height:100%;position:absolute;top:0;left:0}.emdash-embed-audio[data-astro-cid-pquwthf7],.emdash-embed-audio[data-astro-cid-pquwthf7] audio[data-astro-cid-pquwthf7]{width:100%}.emdash-embed[data-astro-cid-pquwthf7] figcaption[data-astro-cid-pquwthf7]{color:var(--emdash-caption-color,var(--color-muted,#666));text-align:center;margin-top:.5rem;font-size:.875rem}.emdash-gallery[data-astro-cid-afw5in5k]{grid-template-columns:repeat(var(--columns,3), 1fr);gap:1rem;margin:1.5rem 0;display:grid}.emdash-gallery-item[data-astro-cid-afw5in5k]{margin:0}.emdash-gallery-item[data-astro-cid-afw5in5k] img[data-astro-cid-afw5in5k]{object-fit:cover;aspect-ratio:1;width:100%;height:auto}.emdash-gallery-item[data-astro-cid-afw5in5k] figcaption[data-astro-cid-afw5in5k]{color:var(--emdash-caption-color,var(--color-muted,#666));text-align:center;margin-top:.25rem;font-size:.75rem}@media (width<=640px){.emdash-gallery[data-astro-cid-afw5in5k]{grid-template-columns:repeat(2,1fr)}}.emdash-columns[data-astro-cid-iczg3hnv]{gap:2rem;margin:1.5rem 0;display:flex}.emdash-column[data-astro-cid-iczg3hnv]{flex:1;min-width:0}@media (width<=768px){.emdash-columns[data-astro-cid-iczg3hnv]{flex-direction:column;gap:1rem}}.emdash-break[data-astro-cid-zphzrse5]{margin:2rem 0}.emdash-break-line[data-astro-cid-zphzrse5]{border:none;border-top:1px solid var(--emdash-break-color,var(--color-border,#e0e0e0))}.emdash-break-dots[data-astro-cid-zphzrse5]{text-align:center;color:var(--emdash-break-dots-color,var(--color-muted,#999));letter-spacing:.5em}.emdash-break-space[data-astro-cid-zphzrse5]{height:2rem}iframe[data-emdash-html-block]{border:0;width:100%;margin:1.5rem 0;display:block}.emdash-html-block[data-astro-cid-wgxzuu64]{margin:1.5rem 0}.emdash-iframe[data-astro-cid-5olovi3i]{aspect-ratio:16/9;width:100%;margin:1.5rem 0}.emdash-iframe[data-astro-cid-5olovi3i] iframe{border:0;width:100%;height:100%;display:block}.emdash-video[data-astro-cid-74hr2r6h]{margin:1.5rem 0}.emdash-video[data-astro-cid-74hr2r6h] video[data-astro-cid-74hr2r6h]{width:100%;height:auto;max-height:70vh;display:block}.emdash-video[data-astro-cid-74hr2r6h] figcaption[data-astro-cid-74hr2r6h]{color:var(--emdash-caption-color,var(--color-muted,#666));text-align:center;margin-top:.5rem;font-size:.875rem}.emdash-table-wrapper[data-astro-cid-7cxefesr]{overscroll-behavior-inline:contain;max-inline-size:100%;margin-block:1.5rem;overflow-x:auto}.emdash-table[data-astro-cid-7cxefesr]{border-collapse:collapse;inline-size:100%;font-size:.9rem}.emdash-table[data-astro-cid-7cxefesr] th[data-astro-cid-7cxefesr],.emdash-table[data-astro-cid-7cxefesr] td[data-astro-cid-7cxefesr]{border:1px solid var(--color-border,#ddd);text-align:start;vertical-align:top;padding:.75rem;position:relative}.emdash-table[data-astro-cid-7cxefesr] th[data-astro-cid-7cxefesr] p,.emdash-table[data-astro-cid-7cxefesr] td[data-astro-cid-7cxefesr] p{margin:0}.emdash-table[data-astro-cid-7cxefesr] th[data-astro-cid-7cxefesr]{background:var(--color-surface,#f5f5f5);font-weight:600}.emdash-table[data-astro-cid-7cxefesr] tbody[data-astro-cid-7cxefesr] tr[data-astro-cid-7cxefesr]:nth-child(2n){background:var(--color-bg-subtle,#fafafa)}.emdash-table[data-astro-cid-7cxefesr] tbody[data-astro-cid-7cxefesr] tr[data-astro-cid-7cxefesr]:hover{background:var(--color-surface,#f0f0f0)}.emdash-button[data-astro-cid-2u3us6gx]{cursor:pointer;border-radius:4px;padding:.75em 1.5em;font-weight:500;text-decoration:none;transition:background-color .2s,border-color .2s,color .2s;display:inline-block}.emdash-button--default[data-astro-cid-2u3us6gx],.emdash-button--fill[data-astro-cid-2u3us6gx]{background-color:var(--emdash-button-bg,#0073aa);color:var(--emdash-button-color,#fff);border:2px solid var(--emdash-button-bg,#0073aa)}.emdash-button--default[data-astro-cid-2u3us6gx]:hover,.emdash-button--fill[data-astro-cid-2u3us6gx]:hover{background-color:var(--emdash-button-bg-hover,#005177);border-color:var(--emdash-button-bg-hover,#005177)}.emdash-button--outline[data-astro-cid-2u3us6gx]{color:var(--emdash-button-bg,#0073aa);border:2px solid var(--emdash-button-bg,#0073aa);background-color:#0000}.emdash-button--outline[data-astro-cid-2u3us6gx]:hover{background-color:var(--emdash-button-bg,#0073aa);color:var(--emdash-button-color,#fff)}.emdash-buttons[data-astro-cid-o44kngc7]{flex-wrap:wrap;gap:.75rem;margin:1.5rem 0;display:flex}.emdash-buttons--vertical[data-astro-cid-o44kngc7]{flex-direction:column;align-items:flex-start}.emdash-buttons--horizontal[data-astro-cid-o44kngc7]{flex-direction:row;align-items:center}.emdash-cover[data-astro-cid-ufhwkkxg]{background-color:var(--emdash-cover-fallback-bg,#333);border-radius:4px;align-items:center;margin:1.5rem 0;padding:2rem;display:flex;position:relative;overflow:hidden}.emdash-cover__background[data-astro-cid-ufhwkkxg]{object-fit:cover;z-index:0;width:100%;height:100%;position:absolute;inset:0}.emdash-cover__video[data-astro-cid-ufhwkkxg]{object-fit:cover}.emdash-cover__overlay[data-astro-cid-ufhwkkxg]{z-index:1;position:absolute;inset:0}.emdash-cover__content[data-astro-cid-ufhwkkxg]{z-index:2;width:100%;color:var(--emdash-cover-text-color,#fff);position:relative}.emdash-cover--align-left[data-astro-cid-ufhwkkxg]{text-align:left;justify-content:flex-start}.emdash-cover--align-center[data-astro-cid-ufhwkkxg]{text-align:center;justify-content:center}.emdash-cover--align-right[data-astro-cid-ufhwkkxg]{text-align:right;justify-content:flex-end}.emdash-cover__content[data-astro-cid-ufhwkkxg] h1,.emdash-cover__content[data-astro-cid-ufhwkkxg] h2,.emdash-cover__content[data-astro-cid-ufhwkkxg] h3,.emdash-cover__content[data-astro-cid-ufhwkkxg] h4,.emdash-cover__content[data-astro-cid-ufhwkkxg] p{color:inherit}.emdash-file[data-astro-cid-ucsndjg5]{background-color:var(--emdash-file-bg,#f5f5f5);border:1px solid var(--emdash-file-border,#e0e0e0);border-radius:4px;align-items:center;gap:.75rem;margin:1rem 0;padding:1rem;display:flex}.emdash-file__link[data-astro-cid-ucsndjg5]{color:var(--emdash-file-color,#333);flex:1;align-items:center;gap:.5rem;text-decoration:none;display:flex}.emdash-file__link[data-astro-cid-ucsndjg5]:hover{text-decoration:underline}.emdash-file__icon[data-astro-cid-ucsndjg5]{width:1.5rem;height:1.5rem;color:var(--emdash-file-icon-color,#666);flex-shrink:0}.emdash-file__name[data-astro-cid-ucsndjg5]{word-break:break-all;font-weight:500}.emdash-file__download[data-astro-cid-ucsndjg5]{background-color:var(--emdash-button-bg,#0073aa);width:2.5rem;height:2.5rem;color:var(--emdash-button-color,#fff);border-radius:4px;justify-content:center;align-items:center;transition:background-color .2s;display:flex}.emdash-file__download[data-astro-cid-ucsndjg5]:hover{background-color:var(--emdash-button-bg-hover,#005177)}.emdash-file__download[data-astro-cid-ucsndjg5] svg[data-astro-cid-ucsndjg5]{width:1.25rem;height:1.25rem}.emdash-pullquote[data-astro-cid-n46jur2r]{border-top:4px solid var(--emdash-pullquote-border,#0073aa);border-bottom:4px solid var(--emdash-pullquote-border,#0073aa);text-align:center;margin:2rem 0;padding:1.5rem 2rem}.emdash-pullquote__text[data-astro-cid-n46jur2r]{color:var(--emdash-pullquote-color,#333);margin:0;font-size:1.5rem;font-style:italic;line-height:1.4}.emdash-pullquote__citation[data-astro-cid-n46jur2r]{color:var(--emdash-pullquote-citation-color,#666);margin-top:1rem;font-size:.9rem;font-style:normal}.emdash-image[data-astro-cid-qalyhdi7]{margin:1.5rem 0}.emdash-image[data-astro-cid-qalyhdi7] img{max-width:100%;height:auto}figcaption[data-astro-cid-qalyhdi7]{color:var(--emdash-caption-color,var(--color-muted,#666));text-align:center;margin-top:.5rem;font-size:.875rem}.emdash-image--align-left[data-astro-cid-qalyhdi7],.emdash-image--align-right[data-astro-cid-qalyhdi7]{width:fit-content;max-width:50%}.emdash-image--align-left[data-astro-cid-qalyhdi7]{float:left;margin:0 1.5rem 1rem 0}.emdash-image--align-right[data-astro-cid-qalyhdi7]{float:right;margin:0 0 1rem 1.5rem}.emdash-image--align-center[data-astro-cid-qalyhdi7]{width:fit-content;margin-inline:auto}.emdash-image--align-wide[data-astro-cid-qalyhdi7],.emdash-image--align-full[data-astro-cid-qalyhdi7]{width:100%}@media (width<=640px){.emdash-image--align-left[data-astro-cid-qalyhdi7],.emdash-image--align-right[data-astro-cid-qalyhdi7]{float:none;width:100%;max-width:100%;margin-inline:0}}.project-content[data-astro-cid-ddnsgiqw]{--container-layout:var(--portfolio-column,36rem);--container-wide:var(--portfolio-column,36rem);text-box-edge:cap alphabetic}.project-hero-spread[data-astro-cid-ddnsgiqw]{position:relative}.project-hero[data-astro-cid-ddnsgiqw].project-hero-fold{aspect-ratio:1;background:0 0;border-radius:12px;width:66.6667%;position:relative;overflow:visible}.project-hero-square[data-astro-cid-ddnsgiqw]{background:var(--image-color-light);border-radius:12px 0 0 12px;width:100%;height:100%;position:relative;overflow:hidden}.project-metadata[data-astro-cid-ddnsgiqw]{--project-panel-bg:var(--project-panel-bg-light);--project-panel-text:var(--project-panel-text-light);--project-panel-muted:var(--project-panel-muted-light);background:var(--project-panel-bg);width:50%;color:var(--project-panel-text);inset-block:0;border-radius:0 12px 12px 0;flex-direction:column;justify-content:space-between;gap:24px;padding:24px;display:flex;position:absolute;left:100%;overflow:hidden;box-shadow:inset 0 0 0 1px}@supports (color:color-mix(in lab, red, red)){.project-metadata[data-astro-cid-ddnsgiqw]{box-shadow:inset 0 0 0 1px color-mix(in srgb, currentColor 10%, transparent)}}.project-metadata[data-astro-cid-ddnsgiqw]{transform-origin:0;backface-visibility:hidden;text-box-trim:none;font-size:16px;line-height:1.4}.project-metadata-title[data-astro-cid-ddnsgiqw]{gap:8px;display:grid}.project-metadata-facts[data-astro-cid-ddnsgiqw]{gap:24px;display:grid}.project-metadata-facts[data-astro-cid-ddnsgiqw]>div[data-astro-cid-ddnsgiqw]{gap:4px;display:grid}.project-metadata[data-astro-cid-ddnsgiqw] [data-astro-cid-ddnsgiqw][data-metadata-tone=text]{color:var(--project-panel-text)}.project-metadata[data-astro-cid-ddnsgiqw] [data-astro-cid-ddnsgiqw][data-metadata-tone=muted]{color:var(--project-panel-muted)}.project-metadata-shade[data-astro-cid-ddnsgiqw]{opacity:0;pointer-events:none;background:linear-gradient(90deg,#0005,#0001);position:absolute;inset:0}@media (prefers-color-scheme:dark){.project-hero-square[data-astro-cid-ddnsgiqw]{background:var(--image-color-dark)}.project-metadata[data-astro-cid-ddnsgiqw]{--project-panel-bg:var(--project-panel-bg-dark);--project-panel-text:var(--project-panel-text-dark);--project-panel-muted:var(--project-panel-muted-dark)}}@media not all and (width>=48rem){.project-content[data-astro-cid-ddnsgiqw]{--project-gutter-start:max(16px, env(safe-area-inset-left));--project-gutter-end:max(16px, env(safe-area-inset-right));grid-template-columns:[full-start] var(--project-gutter-start) [wide-start text-start] minmax(0, 1fr) [text-end wide-end] var(--project-gutter-end) [full-end];padding-block-end:max(48px, env(safe-area-inset-bottom))}.project-header[data-astro-cid-ddnsgiqw]{grid-column:full-start/full-end;padding-block-start:0}.project-header[data-astro-cid-ddnsgiqw]>[data-astro-cid-ddnsgiqw]:not(.project-hero){margin-inline-start:var(--project-gutter-start);margin-inline-end:var(--project-gutter-end)}.project-hero[data-astro-cid-ddnsgiqw]{border-radius:0}.project-header[data-astro-cid-ddnsgiqw]>.project-hero-spread[data-astro-cid-ddnsgiqw]{margin-inline:0}.project-hero[data-astro-cid-ddnsgiqw].project-hero-fold{border-radius:0;width:60%}.project-hero-square[data-astro-cid-ddnsgiqw]{border-radius:0}.project-metadata[data-astro-cid-ddnsgiqw]{padding:16px;border-radius:0;gap:16px;width:66.6667%;padding-top:56px;font-size:14px}.project-metadata-facts[data-astro-cid-ddnsgiqw]{gap:12px}.project-metadata-facts[data-astro-cid-ddnsgiqw]>div[data-astro-cid-ddnsgiqw]{gap:2px}}@media (prefers-reduced-motion:reduce){[data-astro-cid-ddnsgiqw][data-motion=full] .demo-menu-list[data-astro-cid-ddnsgiqw]{transform:none}}.project-title[data-astro-cid-ddnsgiqw]{inline-size:100%;min-inline-size:0}.project-title[data-astro-cid-ddnsgiqw] a[data-astro-cid-ddnsgiqw]:after{content:"";position:absolute;inset:0}.project-title[data-astro-cid-ddnsgiqw] a[data-astro-cid-ddnsgiqw]{transition:text-decoration-color .1s ease-out}[data-astro-cid-ddnsgiqw][data-reserved-project-image]{aspect-ratio:3/2}[data-astro-cid-ddnsgiqw][data-reserved-project-image]>img{width:100%;height:100%;position:absolute;inset:0}.image-container[data-astro-cid-ddnsgiqw]{--image-background-lightness-ceiling:.35;--image-background-lightness-floor:.9;--image-color-light:oklch(from var(--image-source-color-light) min(l, var(--image-background-lightness-ceiling)) calc(c * min(1, var(--image-background-lightness-ceiling) / max(l, .001))) h);--image-color-dark:oklch(from var(--image-source-color-dark) max(l, var(--image-background-lightness-floor)) calc(c * min(1, (1 - var(--image-background-lightness-floor)) / max(1 - l, .001))) h)}.image-container[data-astro-cid-ddnsgiqw] img{opacity:1;transition:opacity .1s ease-out}html:not([data-portfolio-focus=pointer]) .project-card[data-astro-cid-ddnsgiqw]:has(a:focus-visible) .image-container[data-astro-cid-ddnsgiqw] img{opacity:.8}@media (hover:hover){.project-card[data-astro-cid-ddnsgiqw]:has(a:hover) .image-container[data-astro-cid-ddnsgiqw] img{opacity:.8}}[data-astro-cid-5pb5lsx3][data-home-pending]{visibility:hidden}[data-astro-cid-5pb5lsx3][data-project-fallback]{z-index:1001;position:fixed;inset:0;overflow-y:auto}
