@keyframes deferred-media-shimmer{0%{background-position:100% 0}to{background-position:-100% 0}}.project-card[data-astro-cid-mspuyifq]{-moz-column-break-inside:avoid;break-inside:avoid;background-color:var(--color-gray-100);border-radius:var(--radius-card);overflow:hidden;margin-bottom:var(--spacing-sm)}.project-card__browser-chrome[data-astro-cid-mspuyifq]{height:1.75rem;display:flex;align-items:center;gap:.35rem;padding:0 .75rem;background:color-mix(in srgb,var(--color-gray-300) 70%,var(--color-gray-800));border-bottom:1px solid color-mix(in srgb,var(--text-primary) 8%,transparent)}.project-card__browser-dot[data-astro-cid-mspuyifq]{width:.6rem;height:.6rem;border-radius:var(--radius-full);background:color-mix(in srgb,var(--text-primary) 22%,white);opacity:.9}.project-card__media[data-astro-cid-mspuyifq]{position:relative;overflow:hidden;background-color:transparent}.project-card__media[data-astro-cid-mspuyifq] img[data-astro-cid-mspuyifq],.project-card__media[data-astro-cid-mspuyifq] iframe[data-astro-cid-mspuyifq],.project-card__media[data-astro-cid-mspuyifq] video[data-astro-cid-mspuyifq]{width:100%;display:block}.project-card__media[data-astro-cid-mspuyifq] img[data-astro-cid-mspuyifq],.project-card__media[data-astro-cid-mspuyifq] iframe[data-astro-cid-mspuyifq]{height:100%;-o-object-fit:cover;object-fit:cover}.project-card__media[data-astro-cid-mspuyifq] video[data-astro-cid-mspuyifq]{height:auto}.project-card__placeholder[data-astro-cid-mspuyifq]{width:100%;height:100%;background-color:var(--color-gray-200)}.project-card__deferred-media[data-astro-cid-mspuyifq]{width:100%;min-height:12rem;background:linear-gradient(110deg,#ffffff0f,#ffffff38,#ffffff0f),var(--color-gray-200);background-size:220% 100%;animation:deferred-media-shimmer 1.4s ease-in-out infinite}.project-card__carousel[data-astro-cid-mspuyifq]{position:relative;width:100%;height:100%;touch-action:pan-y;background-color:transparent}.project-card__carousel-viewport[data-astro-cid-mspuyifq]{width:100%;height:100%;overflow:hidden;cursor:grab;background-color:transparent}.project-card__carousel-viewport[data-astro-cid-mspuyifq]:active{cursor:grabbing}.project-card__carousel-track[data-astro-cid-mspuyifq]{display:flex;width:100%;height:100%;gap:0;backface-visibility:hidden;will-change:transform;transform:translateZ(0);background-color:transparent}.project-card__carousel-slide[data-astro-cid-mspuyifq]{position:relative;flex:0 0 100%;min-width:0;overflow:hidden;backface-visibility:hidden;transform:translateZ(0);background-color:var(--color-gray-200)}.project-card__carousel-slide[data-astro-cid-mspuyifq] img[data-astro-cid-mspuyifq],.project-card__carousel-slide[data-astro-cid-mspuyifq] iframe[data-astro-cid-mspuyifq],.project-card__carousel-slide[data-astro-cid-mspuyifq] video[data-astro-cid-mspuyifq],.project-card__carousel-slide[data-astro-cid-mspuyifq] picture[data-astro-cid-mspuyifq]{display:block;width:100%}.project-card__carousel-slide[data-astro-cid-mspuyifq] video[data-astro-cid-mspuyifq]{height:auto;background-color:transparent}.project-card__carousel-dots[data-astro-cid-mspuyifq]{display:flex;align-items:center;justify-content:center;gap:.35rem;position:absolute;left:50%;bottom:1rem;transform:translate(-50%);z-index:2;padding:.35rem .6rem;background:rgba(var(--color-gray-300),.7)}.project-card__carousel-dot[data-astro-cid-mspuyifq]{width:.5rem;height:.5rem;border-radius:var(--radius-full);background:var(--color-gray-400);opacity:.45;transition:opacity .14s ease,transform .14s ease,background-color .14s ease}.project-card__carousel-dot[data-astro-cid-mspuyifq][data-active=true]{opacity:1;transform:scale(1.18);background:var(--color-gray-100)}.project-card__info[data-astro-cid-mspuyifq]{padding:var(--spacing-sm) var(--spacing-sm) var(--spacing-md) var(--spacing-sm)}.project-card__urlbar[data-astro-cid-mspuyifq]{display:flex;align-items:center;padding:0}.project-card__urlbar-text[data-astro-cid-mspuyifq]{width:100%;display:block;font-size:calc(var(--font-size-xs) / 1.05);color:#20f;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;letter-spacing:.01em;background-color:var(--color-white);border-bottom-left-radius:var(--radius-card);border-bottom-right-radius:var(--radius-card);padding:.15rem .75rem}@media(max-width:767px){.project-card[data-astro-cid-mspuyifq]{cursor:pointer}.project-card[data-astro-cid-mspuyifq] .project-card__info[data-astro-cid-mspuyifq]{display:none}.project-card[data-astro-cid-mspuyifq].is-open{outline:1px solid color-mix(in srgb,var(--text-primary) 18%,transparent);outline-offset:-1px}}.project-card__title[data-astro-cid-mspuyifq]{font-size:var(--font-size-md);font-weight:500;margin-bottom:var(--spacing-xs)}.project-card__desc[data-astro-cid-mspuyifq]{font-size:var(--font-size-sm);color:var(--text-tertiary);margin-bottom:var(--spacing-sm)}.project-card__meta[data-astro-cid-mspuyifq]{display:flex;align-items:center;justify-content:space-between;gap:var(--spacing-sm);font-size:var(--font-size-md);color:var(--text-secondary);flex-flow:row wrap}.project-card__like[data-astro-cid-mspuyifq]{width:1.85rem;height:1.85rem;display:inline-flex;align-items:center;justify-content:center;border-radius:var(--radius-full);border:.5px solid color-mix(in srgb,var(--text-primary) 22%,transparent);color:var(--text-secondary);background:transparent;transition:transform .14s ease,border-color .14s ease,color .14s ease,background-color .14s ease}.project-card__like[data-astro-cid-mspuyifq]:hover{color:var(--text-primary);border-color:color-mix(in srgb,var(--text-primary) 45%,transparent)}.project-card__like[data-astro-cid-mspuyifq][aria-pressed=true]{color:var(--color-dark);background:var(--background-accent);border-color:color-mix(in srgb,var(--color-acid) 50%,transparent)}.project-card__like[data-astro-cid-mspuyifq][data-loading=true]{opacity:.6;pointer-events:none}.project-card__tags[data-astro-cid-mspuyifq]{display:flex;flex-flow:row wrap;gap:var(--spacing-xs);margin-top:var(--spacing-sm)}.project-card__tag[data-astro-cid-mspuyifq]{font-size:calc(var(--font-size-xs));padding:.35rem .57rem;border-radius:var(--radius-sm);letter-spacing:.02em;line-height:1;background-color:color-mix(in srgb,var(--text-primary) 10%,white);color:color-mix(in srgb,var(--text-primary) 70%,white);font-weight:500}.project-card__tag[data-astro-cid-mspuyifq]:hover{opacity:.5}.project-card__tag--year[data-astro-cid-mspuyifq]{background-color:transparent;color:var(--text-secondary);border:.5px solid currentColor}.project-card__link[data-astro-cid-mspuyifq]{display:inline-block;margin-top:var(--spacing-md);font-size:var(--font-size-sm);text-transform:uppercase;letter-spacing:.05em;padding-bottom:2px;width:2rem;height:2rem}.project-card__link[data-astro-cid-mspuyifq]:hover{border-color:var(--interactive-hover);opacity:1}.project-board[data-astro-cid-psrja4a3]{padding:var(--spacing-sm)}.project-board__columns[data-astro-cid-psrja4a3]{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--spacing-sm);align-items:start}@media(min-width:768px){.project-board__columns[data-astro-cid-psrja4a3]{grid-template-columns:repeat(3,minmax(0,1fr))}}@media(min-width:1024px){.project-board__columns[data-astro-cid-psrja4a3]{grid-template-columns:repeat(6,minmax(0,1fr))}}.project-board__column{display:flex;flex-direction:column;gap:var(--spacing-sm);min-width:0}.project-board__item[data-astro-cid-psrja4a3] .project-card{margin-bottom:0}.project-board__item--pre-enter[data-astro-cid-psrja4a3]{opacity:0}.project-board__item--enter[data-astro-cid-psrja4a3]{animation:project-board-fade-in .18s ease-out both}.project-board__sentinel[data-astro-cid-psrja4a3]{width:100%;height:1px}@keyframes project-board-fade-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.project-board__skeleton-hint{background-color:var(--color-gray-200);border-radius:var(--radius-card);overflow:hidden;animation:skeleton-hint-pulse 2s ease-in-out infinite}.project-board__skeleton-hint .skeleton-hint__media[data-astro-cid-psrja4a3]{width:100%;background-color:var(--surface-elevated)}@keyframes skeleton-hint-pulse{0%,to{opacity:1}50%{opacity:.4}}.project-board-detail[data-astro-cid-psrja4a3]{display:none}@media(max-width:767px){.project-board-detail[data-astro-cid-psrja4a3]{position:fixed;inset:0;z-index:120;display:flex;align-items:center;justify-content:center;overflow:hidden;overscroll-behavior:contain;padding:.45rem}}.project-board-detail[data-astro-cid-psrja4a3][hidden]{display:none}.project-board-detail__backdrop[data-astro-cid-psrja4a3]{position:absolute;inset:0;background:#141414cc;backdrop-filter:blur(80px)}.project-board-detail__panel[data-astro-cid-psrja4a3]{position:relative;width:min(70vw,calc((100dvh - .9rem)*.78));max-width:95%;margin:0 auto;padding:0;display:flex;flex-direction:column;transform:scale(var(--detail-scale, 1));transform-origin:center center;transition:transform .16s ease}.project-board-detail__content[data-astro-cid-psrja4a3]{display:flex;flex-direction:column;gap:var(--spacing-xs);padding:0;width:100%}.project-board-detail__close[data-astro-cid-psrja4a3]{position:absolute;top:max(.75rem,env(safe-area-inset-top));right:max(.75rem,env(safe-area-inset-right));width:2.2rem;height:2.2rem;border-radius:var(--radius-full);font-size:1.35rem;line-height:1;background:#ffffffb8;backdrop-filter:blur(8px);color:var(--text-primary);z-index:3}.project-board-detail__content[data-astro-cid-psrja4a3] .project-card{margin-bottom:0;cursor:default}.project-board-detail__content[data-astro-cid-psrja4a3] .project-card__info{display:block!important;padding-bottom:calc(var(--spacing-md) + env(safe-area-inset-bottom))}.project-board-detail__content[data-astro-cid-psrja4a3] .project-card__link{display:inline-block!important}.project-board-detail__content[data-astro-cid-psrja4a3] .project-card__tag:hover,.project-board-detail__content[data-astro-cid-psrja4a3] .project-card__link:hover{opacity:1}.project-board-detail[data-astro-cid-psrja4a3][data-state=loading] .project-board-detail__content[data-astro-cid-psrja4a3]{opacity:0;transition:opacity .14s ease}.project-board-detail[data-astro-cid-psrja4a3][data-state=ready] .project-board-detail__content[data-astro-cid-psrja4a3]{opacity:1}@keyframes project-detail-in{0%{opacity:0;transform:translateY(16px) scale(.985)}to{opacity:1;transform:translateY(0) scale(1)}}
