[data-astro-cid-qylu6xuj][data-project-gallery] .gallery-maximize[data-astro-cid-qylu6xuj],[data-astro-cid-qylu6xuj][data-project-gallery] [data-astro-cid-qylu6xuj][data-gallery-prev],[data-astro-cid-qylu6xuj][data-project-gallery] [data-astro-cid-qylu6xuj][data-gallery-next],[data-astro-cid-qylu6xuj][data-project-gallery] [data-astro-cid-qylu6xuj][data-gallery-thumbs]{display:none}html.js [data-astro-cid-qylu6xuj][data-project-gallery] .gallery-maximize[data-astro-cid-qylu6xuj]{display:grid}html.js [data-astro-cid-qylu6xuj][data-project-gallery] [data-astro-cid-qylu6xuj][data-gallery-prev],html.js [data-astro-cid-qylu6xuj][data-project-gallery] [data-astro-cid-qylu6xuj][data-gallery-next]{display:block}html.js [data-astro-cid-qylu6xuj][data-project-gallery] [data-astro-cid-qylu6xuj][data-gallery-thumbs]{display:flex}html.js [data-astro-cid-qylu6xuj][data-project-gallery] [data-astro-cid-qylu6xuj][data-gallery-dialog][open],.gallery-noscript-fallback[data-astro-cid-qylu6xuj]{display:block}html.js .gallery-noscript-fallback[data-astro-cid-qylu6xuj]{display:none}html:not(.js) .project-gallery--multi[data-astro-cid-qylu6xuj]{display:none}.gallery-dialog[data-astro-cid-qylu6xuj]{width:min(100svw,1360px);max-width:100svw;border:0;background:transparent;padding:0;margin:auto}.gallery-dialog[data-astro-cid-qylu6xuj]::backdrop{background:#000000bf;backdrop-filter:blur(8px)}.gallery-dialog-content[data-astro-cid-qylu6xuj]{position:relative;display:flex;flex-direction:column;height:min(88dvh,1024px);max-height:88dvh;overflow:hidden;border-radius:.75rem;border:none;background:var(--surface-hero);box-shadow:0 25px 50px -12px #00000080}.gallery-maximize[data-astro-cid-qylu6xuj]{position:absolute;right:.75rem;top:.75rem;z-index:10;display:grid;height:2rem;width:2rem;place-items:center;border-radius:9999px;border:1px solid color-mix(in srgb,white 45%,transparent);background:color-mix(in srgb,black 45%,transparent);color:#fff;transition:background .2s,border-color .2s}.gallery-maximize[data-astro-cid-qylu6xuj]:hover{background:color-mix(in srgb,black 62%,transparent);border-color:color-mix(in srgb,white 65%,transparent)}.gallery-modal-toolbar[data-astro-cid-qylu6xuj]{display:flex;align-items:center;justify-content:space-between;gap:.75rem;min-height:3.5rem;padding:1.5rem 1.5rem .7rem;background:var(--surface);border-bottom:1px solid var(--border-subtle);backdrop-filter:blur(4px)}.gallery-modal-stage[data-astro-cid-qylu6xuj]{position:relative;flex:1;min-height:0;width:100%;touch-action:none;overscroll-behavior:contain;overflow:hidden;cursor:grab;user-select:none;-webkit-user-select:none}.gallery-modal-stage[data-astro-cid-qylu6xuj].is-grabbing{cursor:grabbing}@media(hover:none)and (pointer:coarse){.gallery-modal-stage[data-astro-cid-qylu6xuj],.gallery-modal-stage[data-astro-cid-qylu6xuj].is-grabbing{cursor:default}}.gallery-modal-title[data-astro-cid-qylu6xuj]{margin:0;font-size:.75rem;font-weight:700;line-height:1;letter-spacing:.12em;text-transform:uppercase;color:var(--text-muted)}.gallery-close[data-astro-cid-qylu6xuj]{display:flex;align-items:center;justify-content:center;width:20px;height:20px;background:transparent;border:none;padding:0;color:var(--text-muted);opacity:.7;cursor:pointer;transition:opacity .2s,color .2s}.gallery-close[data-astro-cid-qylu6xuj]:hover{opacity:1;color:var(--text-primary)}.gallery-modal-dots[data-astro-cid-qylu6xuj]{position:absolute;left:0;right:0;bottom:calc(env(safe-area-inset-bottom,0px) + 1.5rem);z-index:20;display:flex;justify-content:center;align-items:center;gap:.2rem;padding:.28rem .4rem;border-radius:9999px;border:1px solid color-mix(in srgb,var(--border-hero) 70%,transparent);background:color-mix(in srgb,var(--surface-hero) 84%,transparent);backdrop-filter:blur(4px);margin-inline:auto;width:max-content}.gallery-modal-dot[data-astro-cid-qylu6xuj]{width:1.5rem;height:1.5rem;display:grid;place-items:center;border-radius:9999px;border:none;padding:0;background:transparent;cursor:pointer;transition:transform .2s,background .2s}.gallery-modal-dot[data-astro-cid-qylu6xuj]:before{content:"";width:.56rem;height:.56rem;border-radius:9999px;background:color-mix(in srgb,var(--text-hero-subtle) 75%,transparent);transition:transform .2s,background .2s}.gallery-modal-dot[data-astro-cid-qylu6xuj]:hover{transform:scale(1.12);background:color-mix(in srgb,var(--surface-hero) 35%,transparent)}.gallery-modal-dot[data-astro-cid-qylu6xuj].is-active{background:color-mix(in srgb,var(--surface-hero) 35%,transparent);transform:scale(1.18)}.gallery-modal-dot[data-astro-cid-qylu6xuj]:hover:before{background:var(--text-hero)}.gallery-modal-dot[data-astro-cid-qylu6xuj].is-active:before{background:var(--text-hero);transform:scale(1.18)}.gallery-modal-stage[data-astro-cid-qylu6xuj] img[data-astro-cid-qylu6xuj]{user-select:none;-webkit-user-select:none;-webkit-touch-callout:none}.gallery-modal-nav[data-astro-cid-qylu6xuj]{position:absolute;top:47%;z-index:20;width:2.25rem;height:2.25rem;border-radius:9999px;border:1px solid color-mix(in srgb,var(--border-hero) 70%,transparent);background:color-mix(in srgb,var(--surface-hero) 84%,transparent);color:var(--text-hero);backdrop-filter:blur(4px);transform:translateY(-50%);cursor:pointer;transition:background .2s,border-color .2s,color .2s}.gallery-modal-nav[data-astro-cid-qylu6xuj]:hover{background:color-mix(in srgb,var(--surface-hero) 92%,transparent);border-color:color-mix(in srgb,var(--border-hero) 90%,transparent);color:var(--text-hero)}.gallery-modal-nav-prev[data-astro-cid-qylu6xuj]{left:.75rem}.gallery-modal-nav-next[data-astro-cid-qylu6xuj]{right:.75rem}.project-prose[data-astro-cid-7lwtb4oo] h2{margin-top:1.5rem;font-size:1.125rem;font-weight:700;color:var(--text-primary)}.project-prose[data-astro-cid-7lwtb4oo] h3{margin-top:1.25rem;font-size:1rem;font-weight:700;color:var(--text-primary)}.project-prose[data-astro-cid-7lwtb4oo] p,.project-prose[data-astro-cid-7lwtb4oo] li{margin-top:.75rem;font-size:.95rem;line-height:1.7rem;color:var(--text-body)}.project-prose[data-astro-cid-7lwtb4oo] ul{margin-top:.75rem;padding-left:1.25rem;list-style:disc}.project-prose[data-astro-cid-7lwtb4oo] a{color:var(--color-accent);text-decoration:underline;text-underline-offset:2px}
