.cf-form[data-astro-cid-vekgkm42],.cf-row[data-astro-cid-vekgkm42]{gap:1.1rem;display:grid}@media (width>=768px){.cf-row[data-astro-cid-vekgkm42]{grid-template-columns:1fr 1fr}}.cf-field[data-astro-cid-vekgkm42]{position:relative}.cf-input[data-astro-cid-vekgkm42]{border:1px solid rgb(var(--border-primary));background:rgb(var(--bg-secondary));width:100%;color:rgb(var(--text-primary));border-radius:.85rem;outline:none;padding:1.35rem 1rem .55rem;font-size:.95rem;transition:border-color .16s,box-shadow .16s,background-color .16s;display:block}.cf-textarea[data-astro-cid-vekgkm42]{resize:vertical;min-height:10rem}.cf-input[data-astro-cid-vekgkm42]:focus{background:rgb(var(--bg-primary));border-color:#6366f1;box-shadow:0 0 0 4px #6366f126}.cf-float[data-astro-cid-vekgkm42]{color:rgb(var(--text-tertiary));pointer-events:none;transform-origin:0 0;font-size:.95rem;transition:transform .16s,color .16s;position:absolute;top:.95rem;left:1rem}.cf-input[data-astro-cid-vekgkm42]:focus+.cf-float[data-astro-cid-vekgkm42],.cf-input[data-astro-cid-vekgkm42]:not(:placeholder-shown)+.cf-float[data-astro-cid-vekgkm42]{color:#6366f1;transform:translateY(-.55rem)scale(.74)}.cf-button[data-astro-cid-vekgkm42]{color:#fff;cursor:pointer;background:linear-gradient(135deg,#3b82f6,#8b5cf6);border:0;border-radius:9999px;justify-content:center;align-items:center;gap:.55rem;padding:.8rem 1.7rem;font-size:.92rem;font-weight:600;transition:transform .16s,box-shadow .16s,filter .16s,opacity .16s;display:inline-flex;box-shadow:0 10px 24px -10px #6366f1a6}.cf-button[data-astro-cid-vekgkm42] svg[data-astro-cid-vekgkm42]{width:1rem;height:1rem}.cf-button[data-astro-cid-vekgkm42]:hover:not(:disabled){filter:brightness(1.07);transform:translateY(-1px);box-shadow:0 14px 30px -10px #6366f1bf}.cf-button[data-astro-cid-vekgkm42]:focus-visible{outline-offset:3px;outline:2px solid #6366f1}.cf-button[data-astro-cid-vekgkm42]:disabled{cursor:not-allowed;opacity:.6;box-shadow:none}.cf-status[data-astro-cid-vekgkm42]{border:1px solid #0000;border-radius:.85rem;align-items:flex-start;gap:.6rem;padding:.75rem 1rem;font-size:.9rem;line-height:1.5;display:none}.cf-status[data-astro-cid-vekgkm42][data-state=pending],.cf-status[data-astro-cid-vekgkm42][data-state=success],.cf-status[data-astro-cid-vekgkm42][data-state=error]{animation:.22s cf-status-in;display:flex}@keyframes cf-status-in{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}.cf-status-icon[data-astro-cid-vekgkm42]{flex-shrink:0;width:1.15rem;height:1.15rem;margin-top:.1rem;display:none}.cf-status[data-astro-cid-vekgkm42][data-state=pending]{color:#4f46e5;background:#6366f114;border-color:#6366f159}.cf-status[data-astro-cid-vekgkm42][data-state=pending] .cf-status-icon-pending[data-astro-cid-vekgkm42]{animation:.9s linear infinite cf-spin;display:block}@keyframes cf-spin{to{transform:rotate(360deg)}}.cf-status[data-astro-cid-vekgkm42][data-state=success]{color:#16823c;background:#22c55e1a;border-color:#22c55e59}.cf-status[data-astro-cid-vekgkm42][data-state=success] .cf-status-icon-success[data-astro-cid-vekgkm42]{display:block}.cf-status[data-astro-cid-vekgkm42][data-state=error]{color:#c82828;background:#ef444417;border-color:#ef444459}.cf-status[data-astro-cid-vekgkm42][data-state=error] .cf-status-icon-error[data-astro-cid-vekgkm42]{display:block}.dark .cf-status[data-astro-cid-vekgkm42][data-state=pending]{color:#a5b4fc}.dark .cf-status[data-astro-cid-vekgkm42][data-state=success]{color:#86efac}.dark .cf-status[data-astro-cid-vekgkm42][data-state=error]{color:#fca5a5}@media (prefers-reduced-motion:reduce){.cf-status[data-astro-cid-vekgkm42][data-state=pending],.cf-status[data-astro-cid-vekgkm42][data-state=success],.cf-status[data-astro-cid-vekgkm42][data-state=error],.cf-status[data-astro-cid-vekgkm42][data-state=pending] .cf-status-icon-pending[data-astro-cid-vekgkm42]{animation:none}.cf-button[data-astro-cid-vekgkm42]:hover:not(:disabled){transform:none}}.projects__header[data-astro-cid-t2okjdjm]{margin-bottom:2.5rem}.projects__title[data-astro-cid-t2okjdjm]{background:linear-gradient(100deg, rgb(var(--text-primary)) 30%, #3b82f6 70%, #8b5cf6);color:#0000;letter-spacing:-.03em;background-clip:text;font-size:clamp(2rem,1.4rem + 2.4vw,3rem);font-weight:800;line-height:1.05}.projects__lede[data-astro-cid-t2okjdjm]{max-width:46rem;color:rgb(var(--text-tertiary));margin-top:.85rem;font-size:1.05rem;line-height:1.7}.projects__list[data-astro-cid-t2okjdjm]{gap:2rem;display:grid}.project[data-astro-cid-t2okjdjm]{isolation:isolate;border:1px solid rgb(var(--border-primary));background:rgb(var(--bg-primary));border-radius:1.5rem;gap:1.75rem;padding:1.5rem;transition:border-color .4s,transform .5s cubic-bezier(.22,1,.36,1),box-shadow .5s cubic-bezier(.22,1,.36,1);display:grid;position:relative;overflow:hidden}@media (width>=1024px){.project[data-astro-cid-t2okjdjm]{grid-template-columns:minmax(0,1.08fr) minmax(0,1fr);align-items:center;gap:2.75rem;padding:2.25rem}.project[data-astro-cid-t2okjdjm][data-flip=true]{grid-template-columns:minmax(0,1fr) minmax(0,1.08fr)}.project[data-astro-cid-t2okjdjm][data-flip=true] .project__media[data-astro-cid-t2okjdjm]{order:2}}.project[data-astro-cid-t2okjdjm]:hover,.project[data-astro-cid-t2okjdjm]:focus-within{border-color:rgb(var(--accent) / .5);box-shadow:0 30px 60px -35px rgb(var(--accent) / .55), 0 10px 30px -20px #00000059;transform:translateY(-6px)}.project__glow[data-astro-cid-t2okjdjm]{z-index:-1;background:radial-gradient(55% 70% at 30% 40%, rgb(var(--accent) / .28), transparent 70%);opacity:.55;pointer-events:none;height:70%;transition:opacity .5s;position:absolute;inset:-30% -10% auto}.project[data-astro-cid-t2okjdjm][data-flip=true] .project__glow[data-astro-cid-t2okjdjm]{background:radial-gradient(55% 70% at 70% 40%, rgb(var(--accent) / .28), transparent 70%)}.project[data-astro-cid-t2okjdjm]:hover .project__glow[data-astro-cid-t2okjdjm],.project[data-astro-cid-t2okjdjm]:focus-within .project__glow[data-astro-cid-t2okjdjm]{opacity:1}.project__media[data-astro-cid-t2okjdjm]{perspective:1600px;align-self:stretch;place-items:center stretch;display:grid;position:relative}.browser[data-astro-cid-t2okjdjm]{background:linear-gradient(rgb(var(--bg-secondary)), rgb(var(--bg-secondary))) padding-box, linear-gradient(140deg, rgb(var(--accent) / .65), rgb(var(--border-primary)) 70%) border-box;transform-origin:0;border:1px solid #0000;border-radius:.9rem;transition:transform .65s cubic-bezier(.22,1,.36,1),box-shadow .65s;overflow:hidden;transform:rotateY(7deg)rotateX(3deg)scale(.97);box-shadow:0 24px 50px -30px #0009}.project[data-astro-cid-t2okjdjm][data-flip=true] .browser[data-astro-cid-t2okjdjm]{transform-origin:100%;transform:rotateY(-7deg)rotateX(3deg)scale(.97)}.project[data-astro-cid-t2okjdjm]:hover .browser[data-astro-cid-t2okjdjm],.project[data-astro-cid-t2okjdjm]:focus-within .browser[data-astro-cid-t2okjdjm]{transform:rotateY(0)rotateX(0)scale(1.02);box-shadow:0 34px 70px -32px #000000b3}@media (width<=1023px){.browser[data-astro-cid-t2okjdjm],.project[data-astro-cid-t2okjdjm][data-flip=true] .browser[data-astro-cid-t2okjdjm]{transform:none}.phone[data-astro-cid-t2okjdjm]{height:calc(100% - 1.25rem)}}.browser__chrome[data-astro-cid-t2okjdjm]{border-bottom:1px solid rgb(var(--border-primary));background:rgb(var(--bg-tertiary));align-items:center;gap:.4rem;padding:.55rem .75rem;display:flex}.browser__dot[data-astro-cid-t2okjdjm]{background:rgb(var(--border-hover));border-radius:9999px;width:.5rem;height:.5rem}.browser__dot[data-astro-cid-t2okjdjm]:first-child{background:rgb(var(--accent) / .85)}.browser__url[data-astro-cid-t2okjdjm]{background:rgb(var(--bg-primary));max-width:100%;color:rgb(var(--text-tertiary));text-overflow:ellipsis;white-space:nowrap;border-radius:9999px;margin-left:.5rem;padding:.15rem .6rem;font-size:.68rem;overflow:hidden}.browser__viewport[data-astro-cid-t2okjdjm]{aspect-ratio:1478/924;position:relative}.browser__shot[data-astro-cid-t2okjdjm]{object-fit:cover;object-position:top center;width:100%;height:100%;display:block}.browser__shot--hover[data-astro-cid-t2okjdjm]{opacity:0;transition:opacity .45s;position:absolute;inset:0}.project[data-astro-cid-t2okjdjm]:hover .browser__shot--hover[data-astro-cid-t2okjdjm],.project[data-astro-cid-t2okjdjm]:focus-within .browser__shot--hover[data-astro-cid-t2okjdjm]{opacity:1}.browser__scrim[data-astro-cid-t2okjdjm]{background:radial-gradient(70% 80% at 50% 25%, rgb(var(--accent) / .18), transparent 70%), #020617;opacity:0;transition:opacity .45s;position:absolute;inset:0}.project[data-astro-cid-t2okjdjm]:hover .browser__scrim[data-astro-cid-t2okjdjm],.project[data-astro-cid-t2okjdjm]:focus-within .browser__scrim[data-astro-cid-t2okjdjm]{opacity:1}.phone[data-astro-cid-t2okjdjm]{z-index:2;opacity:0;pointer-events:none;height:calc(100% - 1.5rem);transition:opacity .45s,scale .65s cubic-bezier(.22,1,.36,1);position:absolute;top:50%;left:50%;translate:-50% -50%;scale:.94}.project[data-astro-cid-t2okjdjm]:hover .phone[data-astro-cid-t2okjdjm],.project[data-astro-cid-t2okjdjm]:focus-within .phone[data-astro-cid-t2okjdjm]{opacity:1;scale:1}.phone__device[data-astro-cid-t2okjdjm]{aspect-ratio:1125/2436;height:100%;box-shadow:0 26px 50px -20px #000000d9, 0 0 0 1px rgb(var(--accent) / .4);background:#020617;border:1px solid #ffffff2e;border-radius:1rem;position:relative;overflow:hidden}.phone__shot[data-astro-cid-t2okjdjm]{object-fit:cover;opacity:0;width:100%;height:100%;display:block;position:absolute;inset:0}.phone__shot--first[data-astro-cid-t2okjdjm]{opacity:1}.phone__dots[data-astro-cid-t2okjdjm]{backdrop-filter:blur(4px);background:#02061799;border-radius:9999px;gap:.28rem;padding:.3rem .45rem;display:flex;position:absolute;bottom:.5rem;left:50%;translate:-50%}.phone__dot[data-astro-cid-t2okjdjm]{background:#ffffff4d;border-radius:9999px;width:.28rem;height:.28rem;position:relative}.phone__dot[data-astro-cid-t2okjdjm]:after{content:"";border-radius:inherit;background:rgb(var(--accent));opacity:0;position:absolute;inset:-1px}.phone__dot[data-astro-cid-t2okjdjm]:first-child:after{opacity:1}@keyframes shotCycle{0%,11.714%{opacity:1}14.286%,97.429%{opacity:0}to{opacity:1}}.phone__shot[data-astro-cid-t2okjdjm],.phone__dot[data-astro-cid-t2okjdjm]:after{animation:shotCycle var(--phone-cycle) linear infinite;animation-delay:var(--phone-delay);animation-play-state:paused}.project[data-astro-cid-t2okjdjm]:hover .phone__shot[data-astro-cid-t2okjdjm],.project[data-astro-cid-t2okjdjm]:hover .phone__dot[data-astro-cid-t2okjdjm]:after,.project[data-astro-cid-t2okjdjm]:focus-within .phone__shot[data-astro-cid-t2okjdjm],.project[data-astro-cid-t2okjdjm]:focus-within .phone__dot[data-astro-cid-t2okjdjm]:after{animation-play-state:running}.project__body[data-astro-cid-t2okjdjm]{flex-direction:column;align-items:flex-start;min-width:0;display:flex}.project__title[data-astro-cid-t2okjdjm]{color:rgb(var(--text-primary));letter-spacing:-.02em;font-size:clamp(1.6rem,1.2rem + 1.1vw,2.1rem);font-weight:700;line-height:1.15}.project__tagline[data-astro-cid-t2okjdjm]{color:rgb(var(--accent));letter-spacing:.12em;text-transform:uppercase;margin-top:.5rem;font-size:.8rem;font-weight:600}.project__title[data-astro-cid-t2okjdjm] a[data-astro-cid-t2okjdjm]{color:inherit;text-decoration:none}.project__title[data-astro-cid-t2okjdjm] a[data-astro-cid-t2okjdjm]:after{content:"";z-index:1;position:absolute;inset:0}.project__title[data-astro-cid-t2okjdjm] a[data-astro-cid-t2okjdjm]:focus-visible{outline:2px solid rgb(var(--accent));outline-offset:4px;border-radius:.3rem}.project__description[data-astro-cid-t2okjdjm]{color:rgb(var(--text-tertiary));margin-top:.9rem;font-size:1rem;line-height:1.7}.project__url[data-astro-cid-t2okjdjm]{overflow-wrap:anywhere;max-width:100%;color:rgb(var(--accent));text-decoration:underline;text-decoration-color:rgb(var(--accent) / .35);text-underline-offset:.3em;margin-top:2.25rem;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.9rem;transition:text-decoration-color .3s}.project[data-astro-cid-t2okjdjm]:hover .project__url[data-astro-cid-t2okjdjm],.project[data-astro-cid-t2okjdjm]:focus-within .project__url[data-astro-cid-t2okjdjm]{text-decoration-color:rgb(var(--accent) / .8)}@media (prefers-reduced-motion:reduce){.project[data-astro-cid-t2okjdjm],.browser[data-astro-cid-t2okjdjm],.project[data-astro-cid-t2okjdjm][data-flip=true] .browser[data-astro-cid-t2okjdjm],.project[data-astro-cid-t2okjdjm]:hover,.project[data-astro-cid-t2okjdjm]:hover .browser[data-astro-cid-t2okjdjm],.project[data-astro-cid-t2okjdjm]:focus-within .browser[data-astro-cid-t2okjdjm]{transition:none;transform:none}.phone__shot[data-astro-cid-t2okjdjm],.phone__dot[data-astro-cid-t2okjdjm]:after,.project[data-astro-cid-t2okjdjm]:hover .phone__shot[data-astro-cid-t2okjdjm],.project[data-astro-cid-t2okjdjm]:hover .phone__dot[data-astro-cid-t2okjdjm]:after,.project[data-astro-cid-t2okjdjm]:focus-within .phone__shot[data-astro-cid-t2okjdjm],.project[data-astro-cid-t2okjdjm]:focus-within .phone__dot[data-astro-cid-t2okjdjm]:after{animation:none}}.bsky[data-astro-cid-akfsx25b]{--bsky-blue:16 131 254;--bsky-blue-hover:12 110 220;--bsky-green:32 188 7;--bsky-pink:236 72 153;--bsky-surface:255 255 255;--bsky-border:212 219 228;--bsky-text:11 15 20;--bsky-muted:66 87 108;--bsky-icon:111 134 158;--bsky-icon-wash:16 131 254 / .08}.dark .bsky[data-astro-cid-akfsx25b]{--bsky-blue:32 139 254;--bsky-blue-hover:76 162 254;--bsky-surface:22 30 39;--bsky-border:46 64 82;--bsky-text:241 243 245;--bsky-muted:174 187 201;--bsky-icon:120 142 165;--bsky-icon-wash:32 139 254 / .14}.bsky-butterfly[data-astro-cid-akfsx25b]{flex:none;width:1.125rem;height:1.125rem}.bsky-follow[data-astro-cid-akfsx25b]{background:rgb(var(--bsky-blue));color:#fff;border-radius:9999px;align-items:center;gap:.5rem;padding:.5rem 1.125rem;font-size:.9375rem;font-weight:600;line-height:1.25rem;transition:background-color .15s,transform .15s;display:inline-flex}.bsky-follow[data-astro-cid-akfsx25b]:hover{background:rgb(var(--bsky-blue-hover))}.bsky-follow[data-astro-cid-akfsx25b]:active{transform:scale(.97)}.bsky-post[data-astro-cid-akfsx25b]{border:1px solid rgb(var(--bsky-border));background:rgb(var(--bsky-surface));color:rgb(var(--bsky-text));border-radius:1rem;flex-direction:column;padding:1rem 1.125rem .75rem;transition:border-color .18s,box-shadow .18s,transform .18s;display:flex}.bsky-post[data-astro-cid-akfsx25b]:hover{border-color:rgb(var(--bsky-blue) / .55);box-shadow:0 16px 32px -24px rgb(var(--bsky-blue) / .55);transform:translateY(-1px)}.bsky-post__head[data-astro-cid-akfsx25b]{align-items:center;gap:.75rem;margin-bottom:.625rem;display:flex}.bsky-post__avatar[data-astro-cid-akfsx25b]{background:rgb(var(--bsky-blue));color:#fff;border-radius:9999px;flex:none;place-items:center;width:2.625rem;height:2.625rem;font-size:1.125rem;font-weight:700;display:grid;overflow:hidden}.bsky-post__avatar[data-astro-cid-akfsx25b] img[data-astro-cid-akfsx25b]{object-fit:cover;width:100%;height:100%}.bsky-post__who[data-astro-cid-akfsx25b]{flex-direction:column;flex:auto;min-width:0;font-size:.9375rem;line-height:1.25rem;display:flex}.bsky-post__name[data-astro-cid-akfsx25b]{color:rgb(var(--bsky-text));align-self:flex-start;font-weight:700}.bsky-post__meta[data-astro-cid-akfsx25b]{white-space:nowrap;align-items:baseline;column-gap:.3rem;min-width:0;font-size:.875rem;display:flex}.bsky-post__dot[data-astro-cid-akfsx25b],.bsky-post__time[data-astro-cid-akfsx25b]{flex:none}.bsky-post__name[data-astro-cid-akfsx25b]:hover{text-decoration:underline}.bsky-post__handle[data-astro-cid-akfsx25b]{text-overflow:ellipsis;white-space:nowrap;min-width:0;color:rgb(var(--bsky-muted));overflow:hidden}.bsky-post__dot[data-astro-cid-akfsx25b],.bsky-post__time[data-astro-cid-akfsx25b]{color:rgb(var(--bsky-muted))}.bsky-post__time[data-astro-cid-akfsx25b]:hover{text-decoration:underline}.bsky-post__logo[data-astro-cid-akfsx25b]{color:rgb(var(--bsky-blue));flex:none;align-self:flex-start;transition:transform .15s}.bsky-post__logo[data-astro-cid-akfsx25b]:hover{transform:scale(1.1)}.bsky-post__text[data-astro-cid-akfsx25b]{white-space:pre-line;overflow-wrap:anywhere;flex:auto;font-size:.9375rem;line-height:1.45}.bsky-post__text[data-astro-cid-akfsx25b] a[data-astro-cid-akfsx25b]{color:rgb(var(--bsky-blue))}.bsky-post__text[data-astro-cid-akfsx25b] a[data-astro-cid-akfsx25b]:hover{text-decoration:underline}.bsky-post__attachment[data-astro-cid-akfsx25b]{text-overflow:ellipsis;white-space:nowrap;border:1px solid rgb(var(--bsky-border));max-width:100%;color:rgb(var(--bsky-muted));border-radius:.625rem;margin-top:.625rem;padding:.375rem .75rem;font-size:.875rem;display:inline-block;overflow:hidden}.bsky-post__attachment[data-astro-cid-akfsx25b]:hover{border-color:rgb(var(--bsky-blue) / .55);color:rgb(var(--bsky-blue))}.bsky-post__actions[data-astro-cid-akfsx25b]{justify-content:space-between;max-width:24rem;margin:.75rem -.5rem 0;padding-right:1.5rem;display:flex}.bsky-action[data-astro-cid-akfsx25b]{color:rgb(var(--bsky-icon));border-radius:9999px;align-items:center;gap:.3rem;padding:.375rem .5rem;font-size:.875rem;line-height:1;transition:color .15s,background-color .15s;display:inline-flex}.bsky-action[data-astro-cid-akfsx25b] svg[data-astro-cid-akfsx25b]{fill:none;stroke:currentColor;stroke-width:2px;stroke-linecap:round;stroke-linejoin:round;width:1.125rem;height:1.125rem}.bsky-action--reply[data-astro-cid-akfsx25b]:hover,.bsky-action--share[data-astro-cid-akfsx25b]:hover{color:rgb(var(--bsky-blue));background:rgb(var(--bsky-icon-wash))}.bsky-action--repost[data-astro-cid-akfsx25b]:hover{color:rgb(var(--bsky-green));background:rgb(var(--bsky-green) / .12)}.bsky-action--like[data-astro-cid-akfsx25b]:hover{color:rgb(var(--bsky-pink));background:rgb(var(--bsky-pink) / .12)}.bsky-action--like[data-astro-cid-akfsx25b]:hover svg[data-astro-cid-akfsx25b]{fill:currentColor}.contact-card[data-astro-cid-lcdefpme]{background:linear-gradient(rgb(var(--bg-primary)), rgb(var(--bg-primary))) padding-box, linear-gradient(135deg, #3b82f68c, #8b5cf659, rgb(var(--border-primary))) border-box;border:1px solid #0000;border-radius:1.25rem;padding:2rem;box-shadow:0 18px 40px -24px #3b82f659}
