.project-card[data-v-95291bb4]{transition:transform .3s ease,box-shadow .3s ease}.project-card[data-v-95291bb4]:hover{box-shadow:0 20px 40px #0000001f;transform:translateY(-4px)}.project-number[data-v-95291bb4]{color:var(--color-accent-text);display:inline-block;font-size:1.125rem;font-weight:800;margin-bottom:.75rem}.project-title[data-v-95291bb4]{color:var(--color-grey-1);font-size:1.125rem;letter-spacing:.02em;line-height:1.6;margin-bottom:1rem;text-transform:uppercase;transition:color .3s ease}.title-link:hover .project-title[data-v-95291bb4]{color:var(--color-accent-text)}.link-badge[data-v-95291bb4]:focus-visible,.title-link[data-v-95291bb4]:focus-visible{border-radius:4px;outline:2px solid var(--color-primary-5);outline-offset:3px}.badge-external[data-v-95291bb4] svg{transition:transform .25s ease}.badge-external[data-v-95291bb4]:hover svg{transform:translate(2px,-2px)}.badge-doc[data-v-95291bb4]{background:color-mix(in srgb,var(--color-accent-text) 10%,transparent);border:1px solid color-mix(in srgb,var(--color-accent-text) 38%,transparent);color:var(--color-accent-text);position:relative}.badge-doc[data-v-95291bb4]:hover{background:var(--color-accent-text);border-color:var(--color-accent-text);color:#fff}.badge-doc[data-v-95291bb4]:after{background:var(--color-theme);box-shadow:-1px 1px 2px #00000040;clip-path:polygon(100% 0,0 0,100% 100%);content:"";height:.7rem;position:absolute;right:0;top:0;transition:width .25s ease,height .25s ease;width:.7rem}.badge-doc[data-v-95291bb4]:hover:after{height:.95rem;width:.95rem}@media(prefers-reduced-motion:reduce){.badge-doc[data-v-95291bb4]:after,.badge-external[data-v-95291bb4] svg,.project-card[data-v-95291bb4],.tech-badge[data-v-95291bb4]{transition:none}.badge-external[data-v-95291bb4]:hover svg,.project-card[data-v-95291bb4]:hover,.tech-badge[data-v-95291bb4]:hover{transform:none}}.tech-badge[data-v-95291bb4]{background:color-mix(in srgb,var(--tech-color) 10%,transparent);border:1px solid color-mix(in srgb,var(--tech-color) 32%,transparent);border-radius:.375rem;color:color-mix(in srgb,var(--tech-color) 55%,#000);display:inline-block;font-size:.875rem;font-weight:500;letter-spacing:.2em;margin:.25rem;padding:.25rem .5rem;transition:transform .2s ease,box-shadow .2s ease,background .2s ease}.tech-badge[data-v-95291bb4]:hover{background:color-mix(in srgb,var(--tech-color) 18%,transparent);box-shadow:0 6px 14px color-mix(in srgb,var(--tech-color) 25%,transparent);transform:translateY(-2px)}.dark .tech-badge[data-v-95291bb4]{background:color-mix(in srgb,var(--tech-color) 22%,transparent);border-color:color-mix(in srgb,var(--tech-color) 45%,transparent);color:#fff}.blob[data-v-748f555a]{filter:blur(90px);opacity:.14}.blob-1[data-v-748f555a]{animation:drift 10s ease-in-out infinite alternate;background:radial-gradient(circle,#e64d33 0,transparent 70%);height:36rem;left:-12rem;top:-10rem;width:36rem}.blob-2[data-v-748f555a]{animation:drift 14s ease-in-out infinite alternate-reverse;background:radial-gradient(circle,#f07a61 0,transparent 70%);height:22rem;right:-8rem;top:40%;width:22rem}.blob-3[data-v-748f555a]{animation:drift 18s ease-in-out infinite alternate;background:radial-gradient(circle,rgba(230,77,51,.6) 0,transparent 70%);bottom:10%;height:16rem;left:20%;width:16rem}.page-heading[data-v-748f555a]{font-size:clamp(2.25rem,6vw,4rem);line-height:1.05;margin-bottom:0}.project-item[data-v-748f555a]:not(:last-child){border-bottom:1px solid rgba(230,77,51,.1);margin-bottom:5rem;padding-bottom:5rem;position:relative}.project-item[data-v-748f555a]:not(:last-child):after{background:linear-gradient(to right,transparent,var(--color-primary-5),transparent);bottom:0;content:"";height:1px;left:50%;position:absolute;transform:translate(-50%);width:4rem}.fade-enter-active[data-v-748f555a],.fade-leave-active[data-v-748f555a]{transition:opacity .4s ease}.fade-enter-from[data-v-748f555a],.fade-leave-to[data-v-748f555a]{opacity:0}.projects-page[data-v-748f555a]{overflow-x:clip;position:relative}.subtitle[data-v-748f555a]{color:var(--color-grey-5);font-size:1rem;line-height:1.7;margin-left:auto;margin-right:auto;max-width:38rem}.js-reveal .reveal-item[data-v-748f555a]{opacity:0;transform:translateY(40px);transition:opacity .65s ease var(--delay,0s),transform .65s cubic-bezier(.22,1,.36,1) var(--delay,0s)}.js-reveal .reveal-item.visible[data-v-748f555a]{opacity:1;transform:translateY(0)}@media(prefers-reduced-motion:reduce){.js-reveal .reveal-item[data-v-748f555a]{opacity:1;transform:none;transition:none}}.see-all[data-v-748f555a]{display:flex;justify-content:center;margin-top:3.5rem}.github-cta[data-v-748f555a]{border-top:1px solid rgba(230,77,51,.1);margin-top:4.5rem;padding-top:3rem}.github-cta-inner[data-v-748f555a]{align-items:center;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:var(--surface-raised);border:1px solid var(--surface-border);border-radius:1.5rem;display:flex;flex-direction:column;gap:1.5rem;padding:2.5rem 2rem;text-align:center;transition:box-shadow .3s ease}.github-cta-inner[data-v-748f555a]:hover{box-shadow:0 12px 40px #e64d331a}@media(min-width:640px){.github-cta-inner[data-v-748f555a]{flex-direction:row;text-align:left}}.github-cta-text[data-v-748f555a]{flex:1}.github-cta-title[data-v-748f555a]{color:var(--color-grey-1);font-size:1.1rem;font-weight:700;margin:0 0 .25rem}.github-cta-sub[data-v-748f555a]{color:var(--color-grey-5);font-size:.875rem;line-height:1.6;margin:0}.image-container[data-v-748f555a]{position:relative;z-index:10}.dot[data-v-748f555a]{background:#ffffff73;border:none;border-radius:999px;cursor:pointer;height:.5rem;padding:0;transition:all .2s ease;width:.5rem}.dot.active[data-v-748f555a]{background:#fff;transform:scale(1.15)}.dot[data-v-748f555a]:focus-visible,.thumb-item[data-v-748f555a]:focus-visible{outline:2px solid #fff;outline-offset:2px}.thumb-list[data-v-748f555a]{display:flex;flex-direction:column;gap:.5rem;position:absolute;top:50%;transform:translateY(-50%);z-index:40}.thumb-left[data-v-748f555a]{left:-3.5rem}.thumb-right[data-v-748f555a]{right:-3.5rem}@media(max-width:1180px){.thumb-left[data-v-748f555a]{left:.75rem}.thumb-right[data-v-748f555a]{right:.75rem}}.thumb-item[data-v-748f555a]{align-items:center;background:#00000026;border:1px solid hsla(0,0%,100%,.5);border-radius:.5rem;cursor:pointer;display:inline-flex;height:3rem;justify-content:center;overflow:hidden;padding:0;transition:transform .18s ease,box-shadow .18s ease,border-color .18s ease;width:3rem}.thumb-item[data-v-748f555a]:hover{box-shadow:0 10px 30px #0206171f;transform:translateY(-4px) scale(1.03)}.thumb-item.active[data-v-748f555a]{border-color:#ef6b4ae6;box-shadow:0 14px 40px #ef6b4a1f}.thumb-img[data-v-748f555a]{display:block;height:100%;-o-object-fit:cover;object-fit:cover;width:100%}@media(max-width:640px){.thumb-list[data-v-748f555a]{display:none}}.image-flip[data-v-748f555a]{border:2px solid #000;position:relative;transform-origin:center;transition:all .6s cubic-bezier(.34,1.56,.64,1)}.dark .image-flip[data-v-748f555a]{border-color:var(--surface-border-strong)}.image-container[data-v-748f555a]:hover{z-index:50}.image-container:hover .image-flip[data-v-748f555a]{filter:drop-shadow(0 25px 40px rgba(0,0,0,.4));transform:translateY(-20px) translate(8px) rotate(-2deg) scale(1.08)}.image-container[data-v-748f555a]:after,.image-container[data-v-748f555a]:before{background:linear-gradient(135deg,#ffffff1a,#0000000d);border:1px solid hsla(0,0%,100%,.1);border-radius:inherit;content:"";inset:0;position:absolute;transition:all .6s cubic-bezier(.34,1.56,.64,1);z-index:-1}.image-container[data-v-748f555a]:before{transform:translateY(10px) translate(5px) rotate(1deg)}.image-container[data-v-748f555a]:after{transform:translateY(20px) translate(10px) rotate(-1deg)}.image-container[data-v-748f555a]:hover:before{opacity:.8;transform:translateY(-10px) translate(8px) rotate(-1deg) scale(.98)}.image-container[data-v-748f555a]:hover:after{opacity:.5;transform:translateY(-5px) translate(14px) rotate(2deg) scale(.96)}@media(prefers-reduced-motion:reduce){.image-container[data-v-748f555a]:after,.image-container[data-v-748f555a]:before,.image-flip[data-v-748f555a]{transition:none}.image-container:hover .image-flip[data-v-748f555a]{transform:none}}
