.overlay[data-v-aafb9af8]{position:fixed;inset:0;z-index:10;background-color:var(--overlay-bg);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}.dialog-scroll[data-v-aafb9af8]{position:fixed;inset:0;z-index:11;overflow-y:auto;-webkit-overflow-scrolling:touch}.dialog[data-v-aafb9af8]{position:relative;max-width:960px;margin:12px;border-radius:20px;background:var(--dialog-bg);color:var(--dialog-text);box-shadow:0 30px 90px var(--card-shadow),0 0 0 1px var(--line)}.dialog-hero[data-v-aafb9af8]{position:sticky;top:0;z-index:3;display:flex;align-items:center;gap:20px;padding:28px 24px;overflow:hidden;border-radius:20px 20px 0 0;background:#2a2a30;color:#fff;isolation:isolate;box-shadow:0 1px 0 hsla(0,0%,100%,.06);transition:padding .3s ease,gap .3s ease}.dialog-hero.compact[data-v-aafb9af8]{padding:10px 16px;gap:12px;box-shadow:0 6px 20px rgba(0,0,0,.35),0 1px 0 hsla(0,0%,100%,.08)}.hero-bg[data-v-aafb9af8]{position:absolute;inset:-40px;width:calc(100% + 80px);height:calc(100% + 80px);-o-object-fit:cover;object-fit:cover;filter:blur(28px) saturate(1.25);transform:scale(1.15);z-index:-2}.hero-shade[data-v-aafb9af8]{position:absolute;inset:0;background:linear-gradient(180deg,rgba(10,10,14,.35),rgba(10,10,14,.62));z-index:-1}.hero-icon[data-v-aafb9af8]{flex:none;width:84px;height:84px;border-radius:22%;-o-object-fit:cover;object-fit:cover;box-shadow:0 12px 30px rgba(0,0,0,.45),0 0 0 1px hsla(0,0%,100%,.15);background:rgba(0,0,0,.2);transition:width .3s ease,height .3s ease}.compact .hero-icon[data-v-aafb9af8]{width:34px;height:34px}.hero-text[data-v-aafb9af8]{min-width:0;flex:1;padding-right:48px;display:flex;flex-direction:column;gap:14px;transition:gap .3s ease}.compact .hero-text[data-v-aafb9af8]{flex-direction:row;align-items:center;gap:14px}h1.dialog-title[data-v-aafb9af8]{margin:0;font-family:var(--font-display);font-size:1.7em!important;line-height:1.15;font-weight:700;letter-spacing:-.015em;text-align:left;text-shadow:0 2px 10px rgba(0,0,0,.3);transition:font-size .3s ease;min-width:0}.compact h1.dialog-title[data-v-aafb9af8]{font-size:1.05em!important;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.hero-stores[data-v-aafb9af8]{display:flex;flex-wrap:wrap;gap:10px}.compact .hero-stores[data-v-aafb9af8]{margin-left:auto;flex-wrap:nowrap;gap:8px}.hero-stores[data-v-aafb9af8] a{display:inline-block;opacity:1;line-height:0;border-radius:8px;transition:transform .15s,box-shadow .15s;box-shadow:0 6px 18px rgba(0,0,0,.35)}.hero-stores[data-v-aafb9af8] a:hover{transform:translateY(-2px);box-shadow:0 10px 24px rgba(0,0,0,.45)}.hero-stores[data-v-aafb9af8] a[data-hidden]{display:none}.hero-stores[data-v-aafb9af8] img{height:44px;width:auto;border-radius:8px;display:block;transition:height .3s ease}.compact .hero-stores[data-v-aafb9af8] img{height:30px}.dialog-close[data-v-aafb9af8]{position:absolute;top:14px;right:14px;width:40px;height:40px;border-radius:50%;border:none;background:rgba(0,0,0,.3);color:#fff;font-size:1.6em;line-height:1;cursor:pointer;font-family:inherit;transition:background .15s,transform .15s;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);transition:top .3s ease,background .15s,transform .15s}.compact .dialog-close[data-v-aafb9af8]{top:7px}.dialog-close[data-v-aafb9af8]:hover{background:rgba(0,0,0,.55);transform:scale(1.06)}.dialog-content[data-v-aafb9af8]{padding:24px 24px 32px;border-radius:0 0 20px 20px}@media only screen and (max-width:619px){.dialog-hero.compact[data-v-aafb9af8]{padding:8px 14px;gap:10px;align-items:center}.compact .hero-icon[data-v-aafb9af8]{width:38px;height:38px}.compact .hero-text[data-v-aafb9af8]{flex-direction:column;align-items:flex-start;gap:6px;padding-right:44px}.compact h1.dialog-title[data-v-aafb9af8]{font-size:1.05em!important;white-space:normal;overflow:visible;text-overflow:clip;line-height:1.2}.compact .hero-stores[data-v-aafb9af8]{margin-left:0}.compact .hero-stores[data-v-aafb9af8] img{height:26px}.compact .dialog-close[data-v-aafb9af8]{top:50%;transform:translateY(-50%);width:36px;height:36px}.compact .dialog-close[data-v-aafb9af8]:hover{transform:translateY(-50%) scale(1.06)}}@media only screen and (min-width:620px){.dialog[data-v-aafb9af8]{margin:48px auto;width:calc(100% - 48px)}.dialog-hero[data-v-aafb9af8]{padding:36px 40px;gap:28px}.dialog-hero.compact[data-v-aafb9af8]{padding:10px 20px;gap:14px}.hero-icon[data-v-aafb9af8]{width:112px;height:112px}.compact .hero-icon[data-v-aafb9af8]{width:36px;height:36px}h1.dialog-title[data-v-aafb9af8]{font-size:2.3em!important}.compact h1.dialog-title[data-v-aafb9af8]{font-size:1.15em!important}.hero-stores[data-v-aafb9af8] img{height:50px}.compact .hero-stores[data-v-aafb9af8] img{height:32px}.dialog-content[data-v-aafb9af8]{padding:36px 40px 40px}}.dialog-enter-active[data-v-aafb9af8],.dialog-leave-active[data-v-aafb9af8]{transition:opacity .22s ease}.dialog-enter-active .dialog[data-v-aafb9af8],.dialog-leave-active .dialog[data-v-aafb9af8]{transition:transform .22s ease,opacity .22s ease}.dialog-enter[data-v-aafb9af8],.dialog-leave-to[data-v-aafb9af8]{opacity:0}.dialog-enter .dialog[data-v-aafb9af8],.dialog-leave-to .dialog[data-v-aafb9af8]{transform:translateY(16px) scale(.98);opacity:0}.thumb[data-v-4f14034e]{position:relative;height:100%;width:100%;overflow:hidden;background-color:var(--tile-bg)}.thumb-media[data-v-4f14034e]{display:block;width:100%;height:100%;-o-object-fit:cover;object-fit:cover;transition:transform .2s}.sound-btn[data-v-4f14034e]{position:absolute;top:10px;right:10px;width:36px;height:36px;border-radius:50%;border:1px solid hsla(0,0%,100%,.25);background:rgba(0,0,0,.55);color:#fff;display:flex;align-items:center;justify-content:center;padding:0;cursor:pointer;opacity:0;transition:opacity .15s,background .15s,transform .15s;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:2}.sound-btn[data-v-4f14034e]:hover{background:rgba(0,0,0,.8);transform:scale(1.08)}.sound-btn.on[data-v-4f14034e]{background:hsla(0,0%,100%,.92);color:#111;border-color:transparent}.sound-btn.on[data-v-4f14034e],.sound-btn[data-v-4f14034e]:focus-visible,.thumb:hover .sound-btn[data-v-4f14034e]{opacity:1}@media (hover:none){.sound-btn[data-v-4f14034e]{opacity:1}}.projects-grid-container[data-v-db0063b2]{container-type:inline-size}.projects-list[data-v-db0063b2]{display:grid;grid-template-columns:1fr;grid-auto-rows:auto;grid-auto-flow:dense;gap:16px}.project-item[data-v-db0063b2]{position:relative;overflow:hidden;cursor:pointer;background-color:var(--tile-bg);aspect-ratio:1/.87;border-radius:16px;--tint:0,0,0;box-shadow:0 6px 18px var(--card-shadow),0 0 0 1px var(--line);transition:transform .25s ease,box-shadow .25s ease;transform:translateZ(0)}.project-item[data-v-db0063b2]:hover{transform:translateY(-4px);box-shadow:0 18px 40px var(--card-shadow),0 0 40px rgba(var(--tint),.35),0 0 0 1px var(--line)}.project-item.high[data-v-db0063b2]{aspect-ratio:4/5}.project-item[data-v-db0063b2]:focus-visible{outline:2px solid var(--text);outline-offset:2px}.project-item[data-v-db0063b2]:hover .thumb-media{transform:scale(1.06)}.title-bar[data-v-db0063b2]{position:absolute;left:0;right:0;bottom:0;background:rgba(12,12,16,.62);-webkit-backdrop-filter:blur(14px) saturate(1.2);backdrop-filter:blur(14px) saturate(1.2);border-top:1px solid hsla(0,0%,100%,.08);color:#fff;pointer-events:none}.title-text[data-v-db0063b2]{display:flex;align-items:center;gap:10px;padding:12px 16px;font-family:var(--font-display);font-weight:700;font-size:1.04em;letter-spacing:0;line-height:1.3}.title-name[data-v-db0063b2]{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.platforms[data-v-db0063b2]{flex:none;display:inline-flex;align-items:center;gap:9px;opacity:.85}.platforms svg[data-v-db0063b2]{display:block}.platforms svg[aria-label="App Store"][data-v-db0063b2]{width:16px;height:16px;margin-top:-1px}.platforms svg[aria-label="Google Play"][data-v-db0063b2]{width:13px;height:13px}.skeleton[data-v-db0063b2]{cursor:default;box-shadow:none;background:linear-gradient(100deg,var(--skeleton-a) 40%,var(--skeleton-b) 50%,var(--skeleton-a) 60%);background-size:200% 100%;animation:shimmer-db0063b2 1.4s linear infinite}@keyframes shimmer-db0063b2{0%{background-position:100% 0}to{background-position:-100% 0}}@media only screen and (min-width:480px){.projects-list[data-v-db0063b2]{grid-template-columns:repeat(2,1fr);grid-auto-rows:250px;gap:18px}@supports (width:1cqw){.projects-list[data-v-db0063b2]{grid-auto-rows:calc(100cqw/2*0.87 - 7.83px)}}.project-item.high[data-v-db0063b2],.project-item[data-v-db0063b2]{aspect-ratio:auto;height:100%}.wide[data-v-db0063b2]{grid-column-end:span 2}.high[data-v-db0063b2]{grid-row-end:span 2}}@media only screen and (min-width:900px){.projects-list[data-v-db0063b2]{grid-template-columns:repeat(3,1fr);gap:20px}@supports (width:1cqw){.projects-list[data-v-db0063b2]{grid-auto-rows:calc(100cqw/3*0.87 - 11.6px)}}}.clear[data-v-2dc315a6]{clear:both}.skill-name[data-v-2dc315a6]{float:left;width:200px}.skill-rate[data-v-2dc315a6]{float:left;width:80px;padding-top:11px}.circle[data-v-2dc315a6]{float:left;border-radius:5px;height:10px;width:10px;border:0 solid var(--text);background-color:transparent;opacity:.6;margin:0 2px}.circle-full[data-v-2dc315a6]{background-color:var(--text)}.circle-empty[data-v-2dc315a6]{border-width:1px;width:8px;height:8px}h2[data-v-8de9988e]{font-weight:100;font-size:2em;margin:0;padding:0;padding-top:50px}h3[data-v-8de9988e]{font-weight:100;font-size:1.6em;margin:0;padding:0;padding-top:30px}h4[data-v-8de9988e]{font-weight:100;font-size:1.3em;margin:0;padding:0;padding-top:15px;font-style:italic}.paragraph[data-v-8de9988e]{max-width:700px}.download-link[data-v-8de9988e]{float:left;margin-right:50px}.full-content div[data-v-8de9988e]{max-width:800px}.skill-set h3[data-v-8de9988e]{padding-bottom:10px}.photo img[data-v-8de9988e]{height:300px;width:300px}.tech-stack[data-v-8de9988e]{font-style:italic}.photo[data-v-8de9988e]{margin-top:50px;text-align:center}@media only screen and (min-width:620px){.paragraph[data-v-8de9988e]{float:left}.photo[data-v-8de9988e]{float:left;padding:30px;padding-left:80px}.skill-set[data-v-8de9988e]{float:left;padding-right:60px}}.email[data-v-4aaaf4f8]{display:inline-flex;align-items:center;gap:12px;flex-wrap:wrap}.copy-btn[data-v-4aaaf4f8],.reveal-btn[data-v-4aaaf4f8]{font:inherit;cursor:pointer;border-radius:6px;border:1px solid var(--line);background:transparent;color:inherit;padding:2px 12px;line-height:1.6;opacity:.7}.copy-btn[data-v-4aaaf4f8]:hover,.reveal-btn[data-v-4aaaf4f8]:hover{opacity:1;border-color:currentColor}.copy-btn[data-v-4aaaf4f8]{font-size:.7em;padding:0 10px}h1[data-v-c7ee4faa],ul[data-v-c7ee4faa]{font-family:var(--font-display)}h1[data-v-c7ee4faa]{font-weight:700}li[data-v-c7ee4faa]{font-weight:600}ul[data-v-c7ee4faa]{list-style:none;padding-inline-start:0}li[data-v-c7ee4faa]{line-height:1.8em;font-size:1.2em}@media only screen and (min-width:620px){ul[data-v-c7ee4faa]{padding-inline-start:40px}li[data-v-c7ee4faa]{line-height:2em;font-size:1.4em}}i[data-v-c7ee4faa]{margin-right:20px}.http-404[data-v-18e57ce2]{font-size:11em;line-height:3em;text-align:center}