@import "https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&family=IBM+Plex+Mono:wght@400;500;600&display=swap";:root{--bg:#fff;--bg-alt:#f5f6fa;--bg-card:#fff;--border:#e6e8f0;--border-light:#d3d7e3;--text:#14161f;--text-dim:#565b6b;--text-faint:#8b8fa3;--accent:#4f46e5;--accent-hover:#4338ca;--accent-tint:#eeecfd;--ok:#16a34a;--ok-tint:#dcfce7;--warn:#d97706;--warn-tint:#fef3c7;--mono:"IBM Plex Mono", ui-monospace, monospace;--sans:"Inter", system-ui, -apple-system, sans-serif;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}:root[data-theme=dark]{--bg:#0b0c10;--bg-alt:#121319;--bg-card:#14161d;--border:#22242e;--border-light:#2e313d;--text:#f1f2f6;--text-dim:#a8acbb;--text-faint:#6d7183;--accent:#818cf8;--accent-hover:#9aa3f9;--accent-tint:#818cf824;--ok:#34d399;--ok-tint:#34d39924;--warn:#f2b84b;--warn-tint:#f2b84b24;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}html{scroll-behavior:smooth}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}body{background:var(--bg);color:var(--text);font-family:var(--sans);-webkit-font-smoothing:antialiased;margin:0;font-size:18.5px;transition:background-color .15s,color .15s}#app{min-height:100vh}a{color:inherit}:focus-visible{outline:2px solid var(--accent);outline-offset:3px}.container{max-width:1040px;margin:0 auto;padding:0 24px}.eyebrow{font-family:var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--accent);margin-bottom:12px;font-size:13.5px;font-weight:600}section{border-bottom:1px solid var(--border);padding:84px 0}section:last-of-type{border-bottom:none}h1,h2,h3{font-family:var(--sans);color:var(--text);letter-spacing:-.02em;margin:0;font-weight:800;line-height:1.15}h2{margin-bottom:12px;font-size:clamp(28px,3.8vw,36px)}.section-head{max-width:60ch;margin-bottom:40px}.section-head p{margin:0}p{color:var(--text);font-size:18.5px;line-height:1.7}@media (width<=640px){section{padding:56px 0}}.project-logo[data-v-519feb77]{background:var(--bg-alt);border:1px solid var(--border);border-radius:14px;flex-shrink:0;width:52px;height:52px;overflow:hidden}.project-logo img[data-v-519feb77],.project-logo svg[data-v-519feb77]{object-fit:cover;width:100%;height:100%;display:block}.tech-chip[data-v-965fcd5c]{border:1px solid var(--border);background:var(--bg-card);color:var(--text-dim);white-space:nowrap;border-radius:20px;align-items:center;gap:7px;padding:6px 12px 6px 7px;font-size:14px;font-weight:500;display:inline-flex}.tech-chip[data-v-965fcd5c]:has(.tech-icon){padding-left:6px}.tech-icon[data-v-965fcd5c]{background:#fff;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:23px;height:23px;display:inline-flex;overflow:hidden}.tech-icon img[data-v-965fcd5c]{object-fit:contain;width:15px;height:15px}.tech-chip.large[data-v-965fcd5c]{color:var(--text);border-radius:24px;gap:9px;padding:9px 16px 9px 9px;font-size:16px;font-weight:600}.tech-chip.large[data-v-965fcd5c]:has(.tech-icon){padding-left:9px}.tech-chip.large .tech-icon[data-v-965fcd5c]{width:32px;height:32px}.tech-chip.large .tech-icon img[data-v-965fcd5c]{width:21px;height:21px}.lightbox[data-v-6b75ccc0]{z-index:100;background:#08090ceb;outline:none;justify-content:center;align-items:center;padding:60px 24px;display:flex;position:fixed;inset:0}.lightbox-img[data-v-6b75ccc0]{object-fit:contain;border-radius:8px;max-width:100%;max-height:100%;box-shadow:0 24px 60px -20px #0009}.lightbox-close[data-v-6b75ccc0]{color:#fff;cursor:pointer;background:#ffffff1a;border:none;border-radius:50%;justify-content:center;align-items:center;width:44px;height:44px;display:inline-flex;position:absolute;top:20px;right:20px}.lightbox-close[data-v-6b75ccc0]:hover{background:#ffffff2e}.lightbox-nav[data-v-6b75ccc0]{color:#fff;cursor:pointer;background:#ffffff1a;border:none;border-radius:50%;justify-content:center;align-items:center;width:48px;height:48px;display:inline-flex;position:absolute;top:50%;transform:translateY(-50%)}.lightbox-nav[data-v-6b75ccc0]:hover{background:#ffffff2e}.lightbox-nav.prev[data-v-6b75ccc0]{left:16px}.lightbox-nav.next[data-v-6b75ccc0]{right:16px}.lightbox-dots[data-v-6b75ccc0]{gap:10px;display:flex;position:absolute;bottom:24px;left:50%;transform:translate(-50%)}.lightbox-dot[data-v-6b75ccc0]{cursor:pointer;background:0 0;border:none;justify-content:center;align-items:center;width:24px;height:24px;padding:0;display:flex}.lightbox-dot[data-v-6b75ccc0]:before{content:"";background:#ffffff59;border-radius:50%;width:9px;height:9px;transition:background-color .15s,transform .15s}.lightbox-dot.active[data-v-6b75ccc0]:before{background:#fff;transform:scale(1.2)}@media (width<=640px){.lightbox-nav.prev[data-v-6b75ccc0]{left:6px}.lightbox-nav.next[data-v-6b75ccc0]{right:6px}}.card-flip[data-v-c46571dd]{perspective:1600px}.card-flip-inner[data-v-c46571dd]{transform-style:preserve-3d;transition:transform .6s cubic-bezier(.4,.2,.2,1);position:relative}.card-flip.flipped .card-flip-inner[data-v-c46571dd]{transform:rotateY(180deg)}.card-face[data-v-c46571dd]{background:var(--bg-card);border:1px solid var(--border);backface-visibility:hidden;border-radius:14px;padding:26px 24px 24px;transition:border-color .15s,box-shadow .15s,transform .15s}.card-flip:not(.flipped) .card-front[data-v-c46571dd]:hover{border-color:var(--border-light);transform:translateY(-2px);box-shadow:0 12px 32px -16px #14161f2e}.card-back[data-v-c46571dd]{flex-direction:column;display:flex;position:absolute;inset:0;transform:rotateY(180deg)}.card-head[data-v-c46571dd]{align-items:center;gap:14px;margin-bottom:14px;display:flex}.card-title[data-v-c46571dd]{flex-direction:column;gap:5px;min-width:0;display:flex}.card-title h3[data-v-c46571dd]{font-size:20px}.status[data-v-c46571dd]{font-family:var(--mono);letter-spacing:.03em;border-radius:20px;align-self:flex-start;padding:3px 9px;font-size:12px;font-weight:600}.status.deployed[data-v-c46571dd]{color:var(--ok);background:var(--ok-tint)}.status.progress[data-v-c46571dd]{color:var(--warn);background:var(--warn-tint)}.status.school[data-v-c46571dd]{color:var(--text-faint);background:var(--bg-alt);border:1px solid var(--border)}.summary[data-v-c46571dd]{color:var(--text-dim);margin:0 0 16px;font-size:16px}.tasks[data-v-c46571dd]{flex-direction:column;gap:8px;margin:0 0 18px;padding:0;list-style:none;display:flex}.tasks li[data-v-c46571dd]{color:var(--text);padding-left:17px;font-size:15px;line-height:1.5;position:relative}.tasks li[data-v-c46571dd]:before{content:"";background:var(--accent);border-radius:50%;width:5px;height:5px;position:absolute;top:8px;left:0}.stack[data-v-c46571dd]{flex-wrap:wrap;gap:6px;margin-bottom:16px;display:flex}.card-footer[data-v-c46571dd]{flex-wrap:wrap;align-items:center;gap:16px;display:flex}.card-links[data-v-c46571dd]{flex-wrap:wrap;gap:16px;display:flex}.link[data-v-c46571dd]{color:var(--accent);border-bottom:1px solid #0000;font-size:14.5px;font-weight:600;text-decoration:none}.link[data-v-c46571dd]:hover{border-color:var(--accent)}.screenshots-btn[data-v-c46571dd]{color:var(--text-dim);background:var(--bg-alt);border:1px solid var(--border);cursor:pointer;border-radius:20px;align-items:center;gap:6px;margin-left:auto;padding:6px 12px;font-size:13.5px;font-weight:600;transition:border-color .15s,color .15s;display:inline-flex}.screenshots-btn[data-v-c46571dd]:hover{border-color:var(--accent);color:var(--accent)}.back-btn[data-v-c46571dd]{color:var(--text-dim);cursor:pointer;background:0 0;border:none;align-self:flex-start;align-items:center;gap:6px;margin-bottom:14px;padding:0;font-size:13px;font-weight:600;display:inline-flex}.back-btn[data-v-c46571dd]:hover{color:var(--accent)}.shot-viewer[data-v-c46571dd]{background:var(--bg-alt);cursor:zoom-in;border:none;border-radius:10px;flex:1;justify-content:center;align-items:center;min-height:0;padding:0;display:flex;position:relative;overflow:hidden}.shot-viewer[data-v-c46571dd]:disabled{cursor:default}.shot-viewer img[data-v-c46571dd]{object-fit:contain;width:100%;height:100%}.shot-zoom-hint[data-v-c46571dd]{color:#fff;opacity:0;background:#0000008c;border-radius:50%;justify-content:center;align-items:center;width:32px;height:32px;transition:opacity .15s;display:inline-flex;position:absolute;bottom:10px;right:10px}.shot-viewer:hover .shot-zoom-hint[data-v-c46571dd],.shot-viewer:focus-visible .shot-zoom-hint[data-v-c46571dd]{opacity:1}.shot-dots[data-v-c46571dd]{justify-content:center;gap:4px;padding-top:14px;display:flex}.shot-dot[data-v-c46571dd]{cursor:pointer;background:0 0;border:none;justify-content:center;align-items:center;width:26px;height:26px;padding:0;display:flex}.shot-dot[data-v-c46571dd]:before{content:"";background:var(--border-light);border-radius:50%;width:9px;height:9px;transition:background-color .15s,transform .15s}.shot-dot[data-v-c46571dd]:hover:before{background:var(--text-faint)}.shot-dot.active[data-v-c46571dd]:before{background:var(--accent);transform:scale(1.2)}@media (prefers-reduced-motion:reduce){.card-flip-inner[data-v-c46571dd]{transition:none}}.nav[data-v-25f093d4]{z-index:10;background:color-mix(in srgb, var(--bg) 88%, transparent);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-bottom:1px solid var(--border);position:sticky;top:0}.nav-inner[data-v-25f093d4]{justify-content:space-between;align-items:center;gap:20px;height:68px;display:flex}.nav-brand[data-v-25f093d4]{letter-spacing:-.01em;flex-shrink:0;font-size:17px;font-weight:800}.nav-links[data-v-25f093d4]{gap:26px;margin-left:40px;margin-right:auto;display:flex}.nav-links a[data-v-25f093d4]{color:var(--text-dim);font-size:15px;font-weight:500;text-decoration:none}.nav-links a[data-v-25f093d4]:hover{color:var(--text)}.nav-controls[data-v-25f093d4]{flex-shrink:0;align-items:center;gap:8px;display:flex}.control-btn[data-v-25f093d4]{border:1px solid var(--border);background:var(--bg);color:var(--text-dim);cursor:pointer;border-radius:6px;justify-content:center;align-items:center;transition:border-color .15s,color .15s;display:inline-flex}.control-btn[data-v-25f093d4]:hover{border-color:var(--accent);color:var(--accent)}.lang-btn[data-v-25f093d4]{font-family:var(--mono);letter-spacing:.03em;padding:7px 10px;font-size:12.5px;font-weight:600}.theme-btn[data-v-25f093d4]{padding:7px}.hero[data-v-25f093d4]{background:var(--bg-alt);padding:80px 0 88px}h1[data-v-25f093d4]{letter-spacing:-.025em;max-width:18ch;margin-bottom:22px;font-size:clamp(32px,4.6vw,48px)}.hero-sub[data-v-25f093d4]{max-width:100ch;margin-bottom:30px;font-size:19px}.hero-actions[data-v-25f093d4]{flex-wrap:wrap;gap:14px;display:flex}.btn-primary[data-v-25f093d4],.btn-ghost[data-v-25f093d4]{border-radius:8px;padding:13px 24px;font-size:15.5px;font-weight:600;text-decoration:none;display:inline-block}.btn-primary[data-v-25f093d4]{background:var(--accent);color:#fff}.btn-primary[data-v-25f093d4]:hover{background:var(--accent-hover)}.btn-ghost[data-v-25f093d4]{border:1px solid var(--border-light);color:var(--text);background:var(--bg)}.btn-ghost[data-v-25f093d4]:hover{border-color:var(--accent);color:var(--accent)}.btn-resume[data-v-25f093d4]{align-items:center;gap:8px;display:inline-flex}.about[data-v-25f093d4]{background:var(--bg-alt);padding:80px 0 88px}.about-text[data-v-25f093d4]{max-width:100ch}.education-list[data-v-25f093d4]{flex-direction:column;display:flex}.education-entry[data-v-25f093d4]{border-bottom:1px solid var(--border);gap:24px;padding:18px 0;display:flex}.education-entry[data-v-25f093d4]:first-child{padding-top:0}.education-entry[data-v-25f093d4]:last-child{border-bottom:none}.education-period[data-v-25f093d4]{font-family:var(--mono);color:var(--text-black);flex-shrink:0;width:130px;padding-top:2px;font-size:14px}.education-main[data-v-25f093d4]{align-items:center;gap:14px;display:flex}.education-logo[data-v-25f093d4]{border:1px solid var(--border);background:#fff;border-radius:10px;flex-shrink:0;justify-content:center;align-items:center;width:44px;height:44px;display:flex;overflow:hidden}.education-logo img[data-v-25f093d4]{object-fit:contain;width:40px;height:40px}.education-detail[data-v-25f093d4]{flex-direction:column;justify-content:center;gap:3px;display:flex}.education-degree[data-v-25f093d4]{color:var(--text);font-size:18px;font-weight:700}.education-school[data-v-25f093d4]{color:var(--text-dim);align-items:center;gap:5px;width:fit-content;font-size:15px;text-decoration:none;display:inline-flex}a.education-school[data-v-25f093d4]:hover{color:var(--accent)}a.education-school svg[data-v-25f093d4]{color:var(--text-faint);flex-shrink:0}a.education-school:hover svg[data-v-25f093d4]{color:var(--accent)}.grid[data-v-25f093d4]{grid-template-columns:repeat(2,1fr);gap:20px;display:grid}.skills[data-v-25f093d4]{flex-direction:column;gap:32px;display:flex}.skill-group h3[data-v-25f093d4]{color:var(--text-dim);margin-bottom:14px;font-size:15.5px;font-weight:700}.skill-chips[data-v-25f093d4]{flex-wrap:wrap;gap:10px;display:flex}footer[data-v-25f093d4]{padding:60px 0}.contact-text[data-v-25f093d4]{max-width:100ch;margin-bottom:28px}.contact-links[data-v-25f093d4]{flex-wrap:wrap;gap:14px;display:flex}.contact-link[data-v-25f093d4]{border:1px solid var(--border);color:var(--text);cursor:pointer;background:0 0;border-radius:30px;align-items:center;gap:10px;padding:10px 18px 10px 10px;font-family:inherit;font-size:15px;font-weight:600;text-decoration:none;transition:border-color .15s,background-color .15s;display:inline-flex}.contact-link[data-v-25f093d4]:hover{border-color:var(--accent);background:var(--accent-tint)}.contact-link.copied[data-v-25f093d4]{border-color:var(--ok);background:var(--ok-tint);color:var(--ok)}.contact-icon[data-v-25f093d4]{color:#14161f;background:#fff;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:32px;height:32px;display:inline-flex;overflow:hidden}.contact-icon img[data-v-25f093d4]{object-fit:contain;width:20px;height:20px}@media (width<=800px){.grid[data-v-25f093d4]{grid-template-columns:1fr}.nav-links[data-v-25f093d4]{display:none}}@media (width<=480px){.education-entry[data-v-25f093d4]{flex-direction:column;gap:4px}.education-period[data-v-25f093d4]{width:auto}}
