header[data-v-69ba1c76]{min-height:110px;font-weight:100;margin:0 8px;display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;padding-bottom:10px}img[data-v-69ba1c76]{max-width:72px}#header-title[data-v-69ba1c76]{font-size:3.6rem;font-weight:700;text-shadow:1px 1px 0px #FFF}#header-subtitle[data-v-69ba1c76]{font-weight:500;text-shadow:1px 1px 0px #FFF;font-size:16px;margin-top:-6px}#connections-icons[data-v-69ba1c76]{display:flex;gap:10px;margin:10px 0}#connections-icons img[data-v-69ba1c76]{max-width:32px;border-radius:5px;transition-duration:.2s;opacity:.6}#connections-icons img[data-v-69ba1c76]:hover{transform:scale(1.2);opacity:1;box-shadow:-1px -1px #fff,1px 1px #777}footer[data-v-cef2db61]{padding:10px;display:flex;align-items:center;justify-content:flex-end;font-size:16px;color:#ddd;text-shadow:1px 1px 0px #333;background-color:#264d6d;border-top-left-radius:5px;border-top-right-radius:5px}#site-menu-wrapper[data-v-0b28ae15]{min-height:38px;display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:10px 30px;background-color:#264d6d;padding:0 10px;border-radius:5px}.site-menu-item[data-v-0b28ae15]{color:#ddd;text-shadow:1px 1px 0px #000;text-decoration:none}.site-menu-item[data-v-0b28ae15]:hover{text-decoration:underline}.site-menu-active-item[data-v-0b28ae15]{color:#13ca4a;text-shadow:-1px -1px 0px #000}#page-content-wrapper[data-v-f63d5f4c]{min-height:calc(100vh - 191px);padding:0 10px}@font-face{font-family:Roboto Mono;src:url(/assets/RobotoMono-VariableFont_wght-978fbe82.woff2) format("woff2");font-weight:100 700;font-display:swap}@font-face{font-family:Roboto Mono;src:url(/assets/RobotoMono-Italic-VariableFont_wght-783979de.woff2) format("woff2");font-weight:100 700;font-style:italic;font-display:swap}@font-face{font-family:Share Tech Mono;src:url(/assets/ShareTechMono-Regular-ae76bc6d.woff2) format("woff2");font-weight:400;font-display:swap}html,body,#app{font-family:Roboto Mono,monospace;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;margin:0;padding:0;background-color:#f3f3f3;line-height:1.4}#app{max-width:900px;display:flex;flex-direction:column;margin:0 auto;padding:0 20px;font-size:16px}.page-title{text-align:center;font-size:200%;font-weight:700}.page-subtitle{text-align:center;font-size:80%}.breadscrumbs{padding:10px 0;font-size:80%;color:#777}.breadscrumbs-icon{max-width:16px;margin-bottom:-2px}.center{text-align:center}.sfp{display:none}@media print{.hfp{display:none!important}.sfp{display:block!important}.key-skill img{box-shadow:none!important}}#home-page-key-skills[data-v-9af949df]{text-shadow:1px 1px 0px #FFF}.small-gray[data-v-9af949df]{color:#777;font-size:70%;font-weight:400}li[data-v-9af949df]{font-weight:700}.section-title[data-v-9af949df]{font-size:130%;margin-top:30px;margin-bottom:18px;color:#264d6d}#projects-tiles[data-v-9af949df]{display:flex;flex-wrap:wrap;gap:50px;justify-content:space-between}.one-project[data-v-9af949df]{width:390px;height:265px;background-color:#f9f9f9;padding:10px;border-radius:5px;box-shadow:1px 1px 3px #999;font-size:80%;transition-duration:.3s}.one-project[data-v-9af949df]:hover{transform:scale(1.1)}.one-project-thumbnail[data-v-9af949df]{max-width:390px;height:auto}.repo-card[data-v-9af949df]{height:195px;margin-bottom:8px;box-sizing:border-box;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;padding:0 18px;text-align:center;background:linear-gradient(135deg,#eef3f8,#dde8f2);border-radius:4px}.repo-card-name[data-v-9af949df]{font-family:Share Tech Mono,monospace;font-size:30px;font-weight:700;letter-spacing:1px;color:#264d6d}.repo-card-tagline[data-v-9af949df]{font-size:14px;line-height:1.35;color:#333}.repo-card-meta[data-v-9af949df]{font-size:12px;color:#6b7785}.one-project a[data-v-9af949df]{text-decoration:none;color:#1d73ba}#more-projects-link[data-v-9af949df]{text-align:center;margin-top:50px;margin-bottom:40px}#more-projects-link a[data-v-9af949df]{text-decoration:none;color:#1d73ba}#more-projects-link a[data-v-9af949df]:hover{text-decoration:underline}#my-projects-disclaimer[data-v-906ff3ae]{margin:30px 0}.is-pulled-left[data-v-906ff3ae]{float:left}.is-pulled-right[data-v-906ff3ae]{float:right}.one-project[data-v-906ff3ae]{margin:30px 0 70px}.one-project a[data-v-906ff3ae]{text-align:right;margin-top:4px}p[data-v-906ff3ae],li[data-v-906ff3ae],.one-project-title[data-v-906ff3ae]{text-align:left}.content ol[data-v-906ff3ae]{margin-left:60px}.one-project-title[data-v-906ff3ae]{margin-bottom:12px;padding-top:6px;font-size:120%;font-weight:700}.one-project-icon img[data-v-906ff3ae]{max-width:40px;margin-right:10px;border-radius:8px}.with-top-border[data-v-906ff3ae]{margin-top:10px;padding-top:5px;border-top:dotted 1px #999}.pdf-stuff-wrapper[data-v-efd94fa7]{float:right;width:210px;display:flex;flex-direction:column;gap:15px}.pdf-cv[data-v-efd94fa7]{display:flex;justify-content:end;align-items:center;gap:10px;cursor:pointer;font-size:15px;color:#aaa}.pdf-cv img[data-v-efd94fa7]{width:50px;height:60px;box-shadow:-1px -1px 1px #fff,1px 1px 2px #777;background-color:#c9c9c9;border-radius:5px;transition-duration:.3s}.pdf-cv img[data-v-efd94fa7]:hover{transform:scale(1.2)}.key-skills-wrapper[data-v-efd94fa7]{display:flex;flex-direction:column;gap:50px;margin:40px 0}.key-skill-left-column[data-v-efd94fa7]{display:flex;gap:20px}.key-skill img[data-v-efd94fa7]{width:96px;height:96px;border-radius:30px;box-shadow:-1px -1px 1px #fff,1px 1px 2px #777}.key-skill-name[data-v-efd94fa7]{font-size:150%}.key-skill-time[data-v-efd94fa7]{font-size:90%;color:#1aa54f}.more-skills[data-v-efd94fa7]{margin-top:10px;font-size:80%;color:#999;text-align:left}.comment[data-v-efd94fa7]{color:#999;font-size:80%}h2[data-v-efd94fa7]{margin-top:70px;text-align:center}.company-wrapper[data-v-efd94fa7]{margin-bottom:70px}.one-project[data-v-efd94fa7]{margin-bottom:16px}.one-project[data-v-efd94fa7]:last-child{margin-bottom:0}.one-company[data-v-efd94fa7]{font-size:90%;display:flex;margin-bottom:20px}.company-name[data-v-efd94fa7]{font-weight:700;text-align:left;border-bottom:dotted 1px #AAA;padding:0 0 5px;margin-bottom:5px}.company-name a[data-v-efd94fa7]{color:#2c3e50}.company-name a[data-v-efd94fa7]:hover{text-decoration:underline;color:#3273dc}.period-wrapper[data-v-efd94fa7]{flex-basis:200px;flex-grow:0;flex-shrink:0}.period[data-v-efd94fa7]{color:#777;font-size:80%;margin-top:3px}.position[data-v-efd94fa7]{font-weight:700;color:#1aa54f}.location[data-v-efd94fa7]{font-weight:400;color:#777;font-size:80%;float:right}.location img[data-v-efd94fa7]{max-width:12px}.highlights a[data-v-efd94fa7]:hover{text-decoration:underline;color:#3273dc}.more-skills[data-v-efd94fa7],.comment[data-v-efd94fa7],.period[data-v-efd94fa7],.location[data-v-efd94fa7]{text-shadow:1px 1px 0px #FFF;color:#777}.cv-contact-row[data-v-efd94fa7]{display:flex;justify-content:space-between;border-top:dotted 1px #AAA;border-bottom:dotted 1px #AAA;margin:15px 0 10px;color:#888}.sfp[data-v-efd94fa7]{display:none}.about-section[data-v-e782a25a]{margin:30px 0}.about-section h2[data-v-e782a25a]{font-size:130%;margin-bottom:10px;color:#264d6d}.about-intro[data-v-e782a25a]{font-size:105%}.highlight-grid[data-v-e782a25a],.about-card-grid[data-v-e782a25a]{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.highlight-card[data-v-e782a25a],.about-card[data-v-e782a25a],.work-principles[data-v-e782a25a]{background-color:#f9f9f9;border-radius:5px;box-shadow:1px 1px 3px #ccc}.highlight-card[data-v-e782a25a]{padding:16px;text-align:center;border-top:4px solid rgb(38 77 109)}.highlight-value[data-v-e782a25a]{font-size:140%;font-weight:700;color:#1d73ba;text-shadow:1px 1px 0px #FFF}.highlight-label[data-v-e782a25a]{font-size:85%;color:#555}.about-card[data-v-e782a25a]{padding:14px;border-left:4px solid rgb(38 77 109)}.about-card h3[data-v-e782a25a]{margin:0 0 8px;font-size:100%;color:#1d73ba}.about-card p[data-v-e782a25a]{margin:0;font-size:90%}.work-principles[data-v-e782a25a]{padding:16px 16px 16px 38px}.work-principles li[data-v-e782a25a]{margin-bottom:8px}.about-links[data-v-e782a25a]{display:flex;justify-content:center;flex-wrap:wrap;gap:14px;margin:36px 0 60px}.about-links a[data-v-e782a25a]{background-color:#264d6d;border-radius:5px;color:#ddd;padding:8px 12px;text-decoration:none;text-shadow:1px 1px 0px #000}.about-links a[data-v-e782a25a]:hover{text-decoration:underline}@media (max-width: 700px){.highlight-grid[data-v-e782a25a],.about-card-grid[data-v-e782a25a]{grid-template-columns:1fr}}.email[data-v-b1bb1871]{text-align:center;font-size:180%;margin-bottom:20px;text-shadow:1px 1px 0px #FFF}.email a[data-v-b1bb1871]{text-decoration:none}.email a[data-v-b1bb1871]:hover{text-decoration:underline}.contact-section[data-v-b1bb1871]{margin:30px 0}.contact-section h2[data-v-b1bb1871]{font-size:130%;margin-bottom:10px;color:#264d6d}.help-grid[data-v-b1bb1871]{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;margin-top:16px}.help-card[data-v-b1bb1871]{background-color:#f9f9f9;border-left:4px solid rgb(38 77 109);border-radius:5px;box-shadow:1px 1px 3px #ccc;padding:14px}.help-card h3[data-v-b1bb1871]{margin:0 0 8px;font-size:100%;color:#1d73ba}.help-card p[data-v-b1bb1871]{margin:0;font-size:90%}.contact-checklist[data-v-b1bb1871]{background-color:#f9f9f9;border-radius:5px;box-shadow:1px 1px 3px #ccc;margin-top:16px;padding:16px 16px 16px 38px}.contact-checklist li[data-v-b1bb1871]{margin-bottom:8px}#why-email-explanation[data-v-b1bb1871]{font-size:80%}@media (max-width: 700px){.help-grid[data-v-b1bb1871]{grid-template-columns:1fr}}#notes-links[data-v-f4848a6c]{list-style:none;padding:0}li[data-v-f4848a6c]{display:flex;gap:10px;align-items:flex-end}.note-date[data-v-f4848a6c]{color:#777;font-size:80%}#error-404-text[data-v-76a085b5]{text-align:center;color:red;text-shadow:1px 1px 0px #FFF;font-size:160%;margin:80px}ul[data-v-2108da08]{font-family:Share Tech Mono;text-shadow:1px 1px 1px #fff}.project-screenshots[data-v-2108da08]{text-align:center}.project-screenshots img[data-v-2108da08]{margin:20px 0;box-shadow:2px 2px 6px #666;border-radius:4px;width:860px;max-width:90vw;height:auto}.project-page-bottom[data-v-2108da08]{margin-bottom:60px}ul[data-v-90327e12]{font-family:Share Tech Mono;text-shadow:1px 1px 1px #fff}.project-screenshots[data-v-90327e12]{text-align:center}.project-screenshots img[data-v-90327e12]{margin:20px 0;box-shadow:2px 2px 6px #666;border-radius:4px;width:860px;max-width:90vw;height:auto}.project-page-bottom[data-v-90327e12]{margin-bottom:60px}ul[data-v-d7743421]{font-family:Share Tech Mono;text-shadow:1px 1px 1px #fff}.project-screenshots[data-v-d7743421]{text-align:center}.project-screenshots img[data-v-d7743421]{margin:20px 0;box-shadow:2px 2px 6px #666;border-radius:4px;width:860px;max-width:90vw;height:auto}.app-store-bage[data-v-d7743421]{margin:40px 0 20px}.project-page-bottom[data-v-d7743421]{margin-bottom:60px}ul[data-v-bb144526]{font-family:Share Tech Mono;text-shadow:1px 1px 1px #fff}.project-screenshots[data-v-bb144526]{text-align:center}.project-screenshots img[data-v-bb144526]{margin:20px 0;box-shadow:2px 2px 6px #666;border-radius:4px;width:860px;max-width:90vw;height:auto}.app-store-bage[data-v-bb144526]{margin:40px 0 20px}.project-page-bottom[data-v-bb144526]{margin-bottom:60px}ul[data-v-7a52af37]{font-family:Share Tech Mono;text-shadow:1px 1px 1px #fff}.project-screenshots[data-v-7a52af37]{text-align:center}.project-screenshots img[data-v-7a52af37]{margin:20px 0;box-shadow:2px 2px 6px #666;border-radius:4px;width:860px;max-width:90vw;height:auto}.app-store-bage[data-v-7a52af37]{margin:40px 0 20px}.project-page-bottom[data-v-7a52af37]{margin-bottom:60px}.zero-to-mvp-header[data-v-ef3d1f18]{display:flex;align-items:center;justify-content:center;gap:30px}.zero-to-mvp-image[data-v-ef3d1f18]{max-width:80px;height:auto;border-radius:50%;box-shadow:1px 1px 5px #6c6c6c}h2[data-v-ef3d1f18]{font-size:20px;margin-top:40px;margin-bottom:10px}p[data-v-ef3d1f18]{margin:10px 0;color:#333}li[data-v-ef3d1f18]{color:#333}a[data-v-ef3d1f18]{color:#000;text-decoration:underline}.sponsor-form[data-v-ef3d1f18]{margin:24px auto 60px;padding:24px;border:1px solid #eee;border-radius:8px;background:#fafafa;max-width:560px}.sponsor-form .form-row[data-v-ef3d1f18]{display:flex;flex-direction:column;margin-bottom:16px}.sponsor-form .form-grid-2[data-v-ef3d1f18]{display:grid;grid-template-columns:1fr 1fr;gap:16px}@media (max-width: 560px){.sponsor-form .form-grid-2[data-v-ef3d1f18]{grid-template-columns:1fr}}.sponsor-form label[data-v-ef3d1f18]{font-size:14px;font-weight:600;margin-bottom:6px;color:#333}.sponsor-form input[data-v-ef3d1f18],.sponsor-form select[data-v-ef3d1f18],.sponsor-form textarea[data-v-ef3d1f18]{font:inherit;padding:10px 12px;border:1px solid #ddd;border-radius:6px;background:#fff;color:#333;resize:vertical}.sponsor-form input[data-v-ef3d1f18]:focus,.sponsor-form select[data-v-ef3d1f18]:focus,.sponsor-form textarea[data-v-ef3d1f18]:focus{outline:none;border-color:#999}.sponsor-form .form-actions[data-v-ef3d1f18]{margin-top:8px}.sponsor-form button[data-v-ef3d1f18]{padding:12px 22px;font-size:15px;font-weight:600;color:#fff;background:#000;border:none;border-radius:6px;cursor:pointer}.sponsor-form button[data-v-ef3d1f18]:hover:not(:disabled){background:#333}.sponsor-form button[data-v-ef3d1f18]:disabled{cursor:not-allowed;opacity:.65}.sponsor-form .form-note[data-v-ef3d1f18],.sponsor-form .form-status[data-v-ef3d1f18]{margin-top:16px;font-size:13px;color:#777}.sponsor-form .form-note[data-v-ef3d1f18]{line-height:1.4}.sponsor-form .form-status.success[data-v-ef3d1f18]{color:#1aa54f}.sponsor-form .form-status.error[data-v-ef3d1f18]{color:#b00020}.page-title[data-v-ef1a1f7b]{font-size:180%;margin-top:30px;margin-bottom:15px}h3[data-v-ef1a1f7b]{margin-bottom:0}p[data-v-ef1a1f7b]{margin-top:5px}.privacy-policy-bottom-space[data-v-ef1a1f7b]{height:60px}h1[data-v-60287c80]{text-align:center}li[data-v-60287c80]{margin-bottom:10px}table[data-v-60287c80]{margin:5px auto}table[data-v-60287c80],th[data-v-60287c80],td[data-v-60287c80]{border-collapse:collapse;border:solid 1px #999;padding:10px;text-align:left}th[data-v-60287c80]{background-color:#ddd}#note-content[data-v-60287c80]{margin:20px 0 60px}
