body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background-color:#fff;color:#1a1a1a;font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;height:100vh;height:100dvh;margin:0;overflow:hidden;width:100vw}@media (max-width:768px){body{-webkit-text-size-adjust:100%;height:auto;min-height:100vh;min-height:100dvh;overflow-x:hidden;overflow-y:auto}}.app-container{height:100vh;height:100dvh;width:100vw}.app-container,.intro-content{align-items:center;display:flex;justify-content:center;position:relative}.intro-content{flex-direction:column;padding:2rem;z-index:10}.name-title{animation:typing 1s steps(30) forwards,blink-caret .75s step-end infinite;animation:typing 1s steps(20) forwards,blink-caret .75s step-end infinite,caretFadeOut .1s ease-out 1.3s forwards;border-right:.15em solid orange;color:#111;font-size:5rem;font-weight:200;letter-spacing:1.2rem;margin:0 auto 0 1.2rem;opacity:1;overflow:hidden;white-space:nowrap;width:0}.separator-line{animation:expandLine .6s ease-out 1.05s forwards;background-color:#ccc;height:1px;margin:2rem 0;opacity:0;transform:scaleX(0);width:100px}.role-subtitle{animation:fadeIn .6s ease-out 1.45s forwards;color:#555;font-size:.9rem;font-weight:600;letter-spacing:.4rem;margin-bottom:4rem;margin-left:.4rem;margin-top:0;opacity:0;text-transform:uppercase}.loading-container{align-items:center;animation:fadeIn .6s ease-out 1.6s forwards;display:flex;flex-direction:column;opacity:0;width:300px}.loading-bar-bg{background-color:#e0e0e0;height:2px;overflow:hidden;position:relative;width:100%}.loading-bar-progress{animation:loadProgress 1.6s cubic-bezier(.22,1,.36,1) 1.7s forwards;background:linear-gradient(90deg,#111,#555);height:100%;left:0;position:absolute;top:0;width:0}.loading-text{color:#888;font-size:.7rem;letter-spacing:.15rem;margin-top:1rem;opacity:1}@keyframes typing{0%{width:0}to{width:100%}}@keyframes blink-caret{0%,to{border-color:#0000}50%{border-color:#111}}@keyframes caretFadeOut{to{border-color:#0000}}@keyframes expandLine{0%{opacity:0;transform:scaleX(0)}to{opacity:1;transform:scaleX(1)}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes loadProgress{to{width:100%}}@media (max-width:768px){.name-title{font-size:2.5rem;letter-spacing:.5rem;margin-left:.5rem}.role-subtitle{font-size:.75rem;letter-spacing:.2rem;margin-bottom:2rem}.separator-line{margin:1.5rem 0;width:60px}.loading-container{width:200px}.app-container{display:block;height:auto}.app-container,.intro-content{min-height:100vh;min-height:100dvh}}.main-page-container{animation:fadeInMain 1.5s ease-out forwards;display:flex;flex-direction:column;height:100vh;height:100dvh;left:0;opacity:0;pointer-events:none;position:absolute;top:0;width:100vw;z-index:20}.footer-panel,.main-header,.main-viewport,.project-title-container{pointer-events:auto}@keyframes fadeInMain{to{opacity:1}}.glass-panel{backdrop-filter:blur(12px);background:#ffffffb3;border:1px solid #ffffff80;box-shadow:0 4px 6px #0000000d}.glass-panel,.main-header{-webkit-backdrop-filter:blur(12px)}.main-header{align-items:center;backdrop-filter:blur(12px);background:#ffffffd9;border-bottom:1px solid #0000000d;display:flex;justify-content:space-between;margin:0;padding:1.2rem 3rem}.header-name{color:#111;font-size:1.5rem;font-weight:300;letter-spacing:-.02em}.header-nav{display:flex;gap:2.5rem}.header-nav a,.header-nav button{color:#444;font-size:.95rem;font-weight:500;text-decoration:none;transition:color .2s ease}.header-nav button{background:none;border:none;cursor:pointer;font-family:inherit;line-height:inherit;margin:0;padding:0}@media (hover:hover){.header-nav a:hover,.header-nav button:hover{color:#000}}.project-title-container{margin-bottom:.2rem;margin-top:.5rem;text-align:center}.project-title{background:linear-gradient(90deg,#333,#666);-webkit-background-clip:text;background-clip:text;color:#0000;font-size:1rem;font-weight:600;letter-spacing:.1em;margin:0;text-transform:uppercase}.main-viewport{align-items:center;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#ffffff80;border:1px solid #fff9;border-radius:16px;box-shadow:0 10px 30px #00000014;display:flex;flex:1 1;justify-content:center;margin:.5rem 4rem 1rem;overflow:hidden;position:relative}.project-viewer,.viewer-frame{height:100%;width:100%}.project-iframe,.project-image{border:none;display:block;height:100%;width:100%}.viewer-activate,.viewer-release{display:none}.placeholder-content{align-items:center;color:#666;display:flex;flex-direction:column;height:100%;justify-content:center}.footer-panel{align-items:center;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#ffffffd9;border:1px solid #ffffff80;border-radius:12px;box-shadow:0 4px 15px #0000000d;display:flex;justify-content:space-between;margin:0 4rem 1.5rem;padding:1.2rem 3rem}.description-btn{background:#fff;background-clip:padding-box,border-box;background-image:linear-gradient(#fff,#fff),linear-gradient(90deg,#7f00ff,#00bfff,#0ff);background-image:linear-gradient(#fff,#fff),var(--project-gradient,linear-gradient(90deg,#7f00ff,#00bfff,#0ff));background-origin:padding-box,border-box;border:2px solid #0000;border-radius:50px;box-shadow:0 2px 5px #0000000d;color:#333;cursor:pointer;font-family:Inter,sans-serif;font-size:.9rem;font-weight:600;padding:.6rem 2rem;position:relative;transition:transform .2s ease,box-shadow .2s ease;z-index:1}@media (hover:hover){.description-btn:hover{background-image:linear-gradient(90deg,#7f00ff,#00bfff,#0ff);background-image:var(--project-gradient,linear-gradient(90deg,#7f00ff,#00bfff,#0ff));border-color:#0000;box-shadow:0 4px 10px #0000001a;color:#fff;transform:translateY(-1px)}}.footer-center{align-items:center;display:flex;gap:1.5rem}.nav-arrow{background:none;border:none;color:#888;cursor:pointer;font-size:1.5rem;transition:color .2s,transform .2s}@media (hover:hover){.nav-arrow:hover{color:#111;transform:scale(1.1)}}.dots-container{gap:.8rem}.nav-dot{background-color:#e0e0e0;border-radius:50%;cursor:pointer;height:8px;transition:all .3s ease;width:8px}.nav-dot.active{background-color:#333;transform:scale(1.2)}.footer-right{font-size:.95rem;font-weight:500}.gradient-link{background:linear-gradient(90deg,#7f00ff,#00bfff,#0ff);background:var(--project-gradient,linear-gradient(90deg,#7f00ff,#00bfff,#0ff));-webkit-background-clip:text;background-clip:text;color:#0000;font-weight:700;text-decoration:none;transition:opacity .2s}@media (hover:hover){.gradient-link:hover{opacity:.8}}.separator{color:#ccc;margin:0 .5rem}.modal-overlay{align-items:center;backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);background:#fff6;display:flex;height:100vh;height:100dvh;justify-content:center;left:0;pointer-events:auto;position:fixed;top:0;width:100vw;z-index:100}.modal-content{backdrop-filter:blur(25px);-webkit-backdrop-filter:blur(25px);background:#ffffff73!important;border:1px solid #fffc;border-radius:20px;box-shadow:0 25px 50px #00000026;max-width:600px;padding:2.5rem;position:relative;width:90%}.modal-close-btn{background:none;border:none;color:#888;cursor:pointer;font-size:2rem;left:1.5rem;position:absolute;right:auto;top:1.2rem;transition:color .2s}@media (hover:hover){.modal-close-btn:hover{color:#111}}.modal-title{color:#111;font-size:2rem;font-weight:300;letter-spacing:-.02em;margin-bottom:.5rem;margin-top:1rem;text-align:center}.modal-dates{color:#555;font-size:.9rem;font-weight:500;text-align:center}.modal-dates,.modal-section{margin-bottom:2rem}.modal-section h3{color:#444;font-size:1.1rem;font-weight:600;letter-spacing:.05em;margin-bottom:.8rem;text-transform:uppercase}.modal-section p{color:#555;line-height:1.6}.stack-list{list-style:none;padding:0}.stack-list li{border-left:2px solid #00bfff;color:#555;line-height:1.5;margin-bottom:.8rem;padding-left:1rem}.stack-category{color:#333;font-weight:700;margin-right:.5rem}.about-modal{max-width:800px;padding:1.5rem 2rem;text-align:left;width:90%}.about-header{margin-bottom:1.2rem;text-align:center}.about-title{background:linear-gradient(90deg,#333,#555);-webkit-background-clip:text;background-clip:text;color:#0000;font-size:1.8rem;font-weight:700;letter-spacing:-.02em;margin:0}.about-divider{background:#00bfff;border-radius:2px;height:3px;margin:.8rem auto 0;width:40px}.about-body p{color:#444;font-size:.95rem;line-height:1.6;margin-bottom:1rem}.about-subtitle{border-left:3px solid #7f00ff;color:#222;font-size:1.1rem;font-weight:600;margin-bottom:.8rem;margin-top:1.5rem;padding-left:8px}.about-list{list-style:none;margin-bottom:1.5rem;padding:0}.about-list li{color:#555;font-size:.9rem;margin-bottom:.4rem;padding-left:1rem;position:relative}.about-list li:before{color:#00bfff;content:"•";font-weight:700;left:0;position:absolute}.about-footer{border-top:1px solid #0000001a;margin-top:2rem;padding-top:1.2rem;text-align:center}.thank-you{color:#333;font-size:.9rem;font-style:italic;font-weight:600}.contact-modal{max-width:600px;padding:1.5rem 2.5rem;width:90%}.contact-intro{color:#444;font-size:1rem;margin-bottom:2rem;text-align:center}.contact-list{list-style:none;margin:0 auto;max-width:450px;padding:0}.contact-list li{align-items:center;background:#fff6;border-radius:8px;display:flex;font-size:1rem;margin-bottom:1.2rem;padding:.8rem 1rem;transition:transform .2s,background .2s}@media (hover:hover){.contact-list li:hover{background:#fff9;transform:translateX(5px)}}.contact-label{color:#333;font-weight:700;width:100px}.contact-link,.contact-text{color:#555;flex:1 1;font-weight:500;text-decoration:none}@media (hover:hover){.contact-link:hover{color:#00bfff;text-decoration:underline}}@media (max-width:768px){.main-page-container{height:auto;min-height:100vh;min-height:100dvh;position:relative;width:100%}.main-viewport{flex:1 1 auto;min-height:240px}.project-viewer{bottom:0;height:auto;left:0;position:absolute;right:0;top:0;width:auto}.project-iframe{pointer-events:none}.project-viewer.is-active .project-iframe{pointer-events:auto}.viewer-activate{-webkit-tap-highlight-color:transparent;align-items:flex-end;background:none;border:none;bottom:0;cursor:pointer;display:flex;justify-content:center;left:0;padding:0 1rem 1.35rem;position:absolute;right:0;top:0;z-index:5}.viewer-activate-label{background-clip:padding-box,border-box;background-image:linear-gradient(#fff,#fff),linear-gradient(90deg,#7f00ff,#00bfff,#0ff);background-image:linear-gradient(#fff,#fff),var(--project-gradient,linear-gradient(90deg,#7f00ff,#00bfff,#0ff));background-origin:padding-box,border-box;border:2px solid #0000;border-radius:50px;box-shadow:0 8px 22px #0000002e;color:#333;display:block;font-family:Inter,sans-serif;font-size:.95rem;font-weight:700;letter-spacing:.01em;max-width:100%;padding:.85rem 2rem}a.viewer-activate{text-decoration:none}.viewer-release{-webkit-tap-highlight-color:transparent;background-clip:padding-box,border-box;background-image:linear-gradient(#fff,#fff),linear-gradient(90deg,#7f00ff,#00bfff,#0ff);background-image:linear-gradient(#fff,#fff),var(--project-gradient,linear-gradient(90deg,#7f00ff,#00bfff,#0ff));background-origin:padding-box,border-box;border:2px solid #0000;border-radius:50px;bottom:.6rem;box-shadow:0 6px 18px #0000002e;color:#333;cursor:pointer;display:block;font-family:Inter,sans-serif;font-size:.8rem;font-weight:700;letter-spacing:.01em;padding:.5rem 1.35rem;position:absolute;right:.6rem;z-index:6}.main-header{background:#ffffffe6;gap:.75rem;padding:.75rem 1rem}.header-name{font-size:1.05rem;white-space:nowrap}.header-nav{gap:1rem}.header-nav a,.header-nav button{font-size:.8rem;white-space:nowrap}.project-title-container{margin-bottom:.15rem;margin-top:.4rem;padding:0 .75rem}.project-title{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;font-size:.7rem;letter-spacing:.06em;line-height:1.35;overflow:hidden}.main-viewport{border-radius:12px;margin:.4rem .75rem}.footer-panel{grid-row-gap:.65rem;grid-column-gap:.75rem;align-items:center;column-gap:.75rem;display:grid;grid-template-areas:"pager pager" "details links";grid-template-columns:auto 1fr;margin:0 .75rem calc(.75rem + env(safe-area-inset-bottom, 0px));padding:.7rem 1rem;row-gap:.65rem}.footer-left{grid-area:details}.footer-center{gap:.75rem;grid-area:pager;justify-content:center;width:100%}.footer-right{font-size:.8rem;grid-area:links;text-align:right}.separator{margin:0 .25rem}.description-btn{font-size:.8rem;padding:.45rem 1.25rem;text-align:center;white-space:nowrap}.nav-arrow{font-size:1.35rem;padding:.1rem .6rem}.dots-container{gap:.55rem}.nav-dot{position:relative}.nav-dot:after{bottom:-9px;content:"";left:-9px;position:absolute;right:-9px;top:-9px}.footer-panel,.main-header{-webkit-tap-highlight-color:transparent}.description-btn,.gradient-link,.header-nav a,.header-nav button,.nav-arrow,.nav-dot{-webkit-user-select:none;user-select:none}.modal-content{-webkit-overflow-scrolling:touch;max-height:85vh;max-height:85dvh;overflow-y:auto;overscroll-behavior:contain;padding:1.5rem;width:95%}.modal-title{font-size:1.5rem;margin-top:1.5rem}.modal-close-btn{align-items:center;background:#fffc;border-radius:50%;display:flex;font-size:1.8rem;height:32px;justify-content:center;left:auto;right:1rem;top:1rem;width:32px}.stack-list li{font-size:.9rem}.about-modal{padding:1.5rem}.about-title{font-size:1.5rem}.contact-modal{padding:1.5rem}.contact-list li{align-items:flex-start;flex-direction:column;gap:.25rem}.contact-label{color:#777;font-size:.85rem;width:auto}}.resume-page-container{animation:fadeInMain .8s ease-out forwards;color:#000;display:flex;flex-direction:column;height:100vh;height:100dvh;left:0;opacity:0;overflow-x:hidden;overflow-y:auto;position:absolute;top:0;width:100vw;z-index:20}.resume-header{align-items:center;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#ffffffd9;border-bottom:1px solid #0000000d;display:flex;justify-content:space-between;padding:1.2rem 3rem;position:-webkit-sticky;position:sticky;top:0;z-index:50}.resume-btn{background:#fff;background-clip:padding-box,border-box;background-image:linear-gradient(#fff,#fff),linear-gradient(90deg,#7f00ff,#00bfff,#0ff);background-origin:padding-box,border-box;border:2px solid #0000;border-radius:50px;box-shadow:0 2px 5px #0000000d;color:#333;cursor:pointer;display:inline-block;font-family:Inter,sans-serif;font-size:.9rem;font-weight:600;padding:.6rem 2rem;text-decoration:none;transition:transform .2s ease,box-shadow .2s ease}@media (hover:hover){.resume-btn:hover{background-image:linear-gradient(90deg,#7f00ff,#00bfff,#0ff);border-color:#0000;box-shadow:0 4px 10px #0000001a;color:#fff;transform:translateY(-1px)}}.resume-document{background:#fff;border-radius:4px;box-shadow:0 10px 40px #00000026;font-family:Times New Roman,Times,serif;line-height:1.4;margin:2rem auto 4rem;max-width:900px;padding:4rem 5rem;width:90%}.resume-top-section{margin-bottom:1.5rem;text-align:center}.resume-name{color:#000;font-family:Times New Roman,Times,serif;font-size:2.2rem;font-weight:700;letter-spacing:.05em;margin-bottom:.8rem;text-transform:uppercase}.resume-contact-info{color:#000;display:flex;flex-wrap:wrap;font-family:Cambria,serif;font-size:.95rem;gap:1.5rem;justify-content:center}.resume-contact-info span i{font-size:.85rem;margin-right:.4rem}.resume-divider{background:#000;display:none;height:2px}.resume-divider,.resume-section{margin-bottom:2rem}.resume-section-title{color:#000;font-family:Arial,sans-serif;font-family:Times New Roman,Times,serif;font-size:1.1rem;font-weight:800;letter-spacing:.05em;margin-bottom:.3rem;text-transform:uppercase}.resume-section-divider{background-color:#000;height:2px;margin-bottom:1rem;width:100%}.resume-list{list-style-type:none;margin-top:.5rem;padding-left:0}.resume-list li{font-size:1rem;margin-bottom:.3rem;padding-left:1rem;position:relative}.resume-list li:before{content:"•";font-weight:700;left:0;position:absolute}.experience-item{margin-bottom:1.5rem}.job-header{align-items:flex-start;display:flex;font-family:Times New Roman,serif;justify-content:space-between}.job-title-company{display:flex;flex-direction:column}.job-title{font-size:1.05rem;font-weight:700}.company-name{font-size:1rem;font-style:italic}.job-location-date{display:flex;flex-direction:column;font-size:1rem;text-align:right}.job-details{margin-top:.2rem}.education-item{margin-bottom:1.2rem}.languages-grid{grid-gap:1rem 4rem;display:grid;gap:1rem 4rem;grid-template-columns:1fr 1fr}.language-item{align-items:center;border-bottom:1px solid #ddd;display:flex;justify-content:space-between;padding-bottom:.2rem}.lang-name{font-size:1rem;font-weight:700}.lang-level{color:#444;font-size:.9rem;font-weight:400;margin-left:.5rem}.dots-container{display:flex;gap:4px}.dot{background-color:#e0e0e0;border-radius:50%;height:10px;width:10px}.dot.filled{background-color:#000}@media (max-width:768px){.resume-page-container{height:auto;min-height:100vh;min-height:100dvh;overflow:visible;position:relative;width:100%}.resume-header{gap:.75rem;padding:.75rem 1rem}.resume-btn{-webkit-tap-highlight-color:transparent;font-size:.8rem;padding:.5rem 1.1rem;-webkit-user-select:none;user-select:none;white-space:nowrap}.resume-document{box-sizing:border-box;margin:1rem auto 2.5rem;max-width:100%;overflow-wrap:break-word;padding:1.5rem 1.25rem;width:calc(100% - 1.5rem)}.resume-name{font-size:1.5rem;letter-spacing:.03em}.resume-contact-info{font-size:.85rem}.resume-section{margin-bottom:1.5rem}.resume-section-title{font-size:1rem}.company-name,.job-location-date,.lang-name,.resume-list li{font-size:.9rem}.job-title{font-size:.95rem}.languages-grid{grid-template-columns:1fr}.resume-contact-info{align-items:center;gap:.5rem}.job-header,.resume-contact-info{flex-direction:column}.job-location-date{flex-direction:row;font-style:italic;gap:1rem;margin-top:.2rem;text-align:left}}
/*# sourceMappingURL=main.3ad16633.css.map*/