body,html{background:var(--bg-main);font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Open Sans,Helvetica Neue,sans-serif;margin:0;padding:0}button{background-color:#1a1a1a;border:1px solid transparent;border-radius:8px;cursor:pointer;font-family:inherit;font-size:1em;font-weight:500;min-height:44px;padding:.6em 1.2em;position:absolutes;transition:border-color .25s}button:active{transform:scale(.97)}button:hover{border-color:#646cff}button:focus,button:focus-visible{outline:4px auto -webkit-focus-ring-color}*{transition:background-color .25s ease,color .25s ease,border-color .25s ease}:root[data-theme=dark]{--bg-main:#020617;--bg-surface:#0f172a;--bg-card:#020617;--text-primary:#e5e7eb;--text-secondary:#cbd5e1;--text-muted:#94a3b8;--accent:#38bdf8;--border-subtle:#1f2937;--btn-bg:#020617;--btn-hover:#0f172a;--shadow-soft:rgba(15,23,42,.6)}:root[data-theme=light]{--bg-main:#fff;--bg-surface:#fff;--bg-card:#f8fafc;--text-primary:#020617;--text-secondary:#000;--text-muted:#1a283b;--accent:#02293d;--border-subtle:#e2e5f0;--btn-bg:#fff;--btn-hover:#e2e8f0;--shadow-soft:rgba(2,6,23,.15)}.photo-img[data-v-572e6fcc]{border-radius:inherit;height:96%;inset:0;-o-object-fit:cover;object-fit:cover;width:100%}.page[data-v-572e6fcc]{background:var(--bg-main);box-sizing:border-box;color:var(--text-primary);display:flex;flex-direction:column;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Open Sans,Helvetica Neue,sans-serif;min-height:100dvh;padding:1rem}.top-layout[data-v-572e6fcc]{align-items:start;display:grid;gap:.75rem;grid-template-columns:30% 70%;margin-bottom:0}.photo-column[data-v-572e6fcc]{display:block}.photo-stack[data-v-572e6fcc]{flex-direction:column;gap:5px;height:auto}.photo-container[data-v-572e6fcc],.photo-stack[data-v-572e6fcc]{display:flex;overflow:hidden;position:relative}.photo-container[data-v-572e6fcc]{align-items:end;background:var(--bg-main);border-radius:1.25rem;font-weight:500;height:280px;justify-content:center;margin:0;padding-bottom:1.2rem;padding-top:1.2rem;transform-origin:top center;transition:transform .5s cubic-bezier(.22,1,.36,1),padding .45s cubic-bezier(.2,.9,.3,1);width:100%;will-change:transform}.slide[data-v-572e6fcc]{height:95%;opacity:0;position:absolute;transition:opacity .5s ease;width:70%}.slide.active[data-v-572e6fcc]{opacity:1}.toggle-btn[data-v-572e6fcc]{align-self:stretch;background:var(--btn-bg);border:1px solid var(--accent);border-radius:999px;bottom:12px;box-sizing:border-box;color:var(--text-primary);cursor:pointer;font-size:.85rem;margin-top:3px;min-height:32px;padding:.45rem .9rem;position:relative;transition:transform .18s ease,box-shadow .18s ease,background .18s ease;will-change:5;z-index:5}.toggle-btn[data-v-572e6fcc]:hover{background:var(--btn-hover);box-shadow:0 8px 20px #0f172a99;transform:translateY(-1px)}.social-panel[data-v-572e6fcc]{bottom:calc(100% - 283px);box-sizing:border-box;display:flex;flex-wrap:wrap;gap:.5rem;height:90px;justify-content:stretch;max-height:0;opacity:0;overflow:hidden;position:absolute;transition:max-height .45s cubic-bezier(.2,.9,.3,1),opacity .25s ease,transform .25s ease;width:100%;z-index:4}.social-panel.open[data-v-572e6fcc]{max-height:220px;opacity:1}.social-btn[data-v-572e6fcc]{align-items:center;border-radius:999px;box-sizing:border-box;cursor:pointer;display:flex;flex:0 0 auto;font-size:.78rem;font-weight:500;gap:.45rem;justify-content:center;padding:.45rem .7rem;text-decoration:none;transition:background .15s ease,transform .15s ease;width:calc(50% - .25rem)}.social-btn svg[data-v-572e6fcc]{fill:currentColor;flex-shrink:0;height:14px;opacity:.75;transition:fill .25s ease,opacity .25 ease,transform .2s ease;width:14px}.social-btn[data-v-572e6fcc]:hover{opacity:1;transform:scale(1.03)}.social-btn.linkedin[data-v-572e6fcc]{background:#0797e5;color:var(--text-secondary)}.social-btn.linkedin[data-v-572e6fcc]:hover{color:#99cae9}.social-btn.github[data-v-572e6fcc]{background:#2d2c2c;color:#9cc8e3}.social-btn.social-btn.github[data-v-572e6fcc]:hover{color:#687084}.social-btn.whatsapp[data-v-572e6fcc]{background:#129337;color:var(--text-secondary)}.social-btn.whatsapp[data-v-572e6fcc]:hover{color:#4fd17f}.social-btn.email[data-v-572e6fcc]{background:#e16105;color:var(--text-secondary)}.social-btn.email[data-v-572e6fcc]:hover{color:#f7ad6c}.photo-stack.open .photo-container[data-v-572e6fcc]{padding-bottom:.6rem;padding-top:2.2rem;transform:translateY(-160px)}.theme-toggle-btn[data-v-572e6fcc]{align-self:flex-end;background:var(--btn-bg);border:1px solid var(--accent);border-color:var(--border-subtle);color:var(--text-primary);cursor:pointer;display:flex;font-size:.85rem;justify-content:center;margin-right:0;margin-top:0;min-height:32px;order:0;padding-right:0;transition:transform .18s ease,box-shadow .18s ease,background .18s ease;width:auto;will-change:5;z-index:0}button[data-v-572e6fcc]:focus:not(:focus-visible){box-shadow:none;outline:none}button[data-v-572e6fcc]:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.about-card[data-v-572e6fcc]{background:var(--bg-card);border:1px solid var(--border-subtle);border-radius:1.25rem;box-sizing:border-box;color:var(--text-primary);font-size:1rem;line-height:1.7;padding:2rem 2.5rem}.about-card h2[data-v-572e6fcc]{color:#38bdf8;font-size:1.8rem;font-weight:700;letter-spacing:-.02em;margin:0 0 1.5rem;text-align:center}.about-card p[data-v-572e6fcc]{margin:0 0 1.5rem;text-align:justify}.about-card p[data-v-572e6fcc]:last-child{margin-bottom:0}.about-card .about-me[data-v-572e6fcc]{color:var(--text-primary);font-weight:500;padding-left:1.5rem;position:relative}.about-card .about-me[data-v-572e6fcc]:first-child:before{left:0;top:-.2rem}.about-card .about-me[data-v-572e6fcc]:first-child:before,.about-card .about-me[data-v-572e6fcc]:last-child:after{color:#38bdf8;content:"`";font-family:serif;font-size:2rem;line-height:1;position:absolute}.about-card .about-me[data-v-572e6fcc]:last-child:after{bottom:-.2rem;right:-.5rem}.about-card strong[data-v-572e6fcc]{color:#38bdf8;font-weight:600}.about-card em[data-v-572e6fcc]{color:var(--text-secondary);font-style:italic}details summary[data-v-572e6fcc]{border-bottom:1px solid var(--border-subtle);cursor:pointer;font-weight:600;margin-bottom:1rem;padding:.75rem 0}.bottom-layout[data-v-572e6fcc]{margin-top:0}.bottom-layout h3[data-v-572e6fcc]{margin-bottom:0;margin-top:0}.projects-container[data-v-572e6fcc]{animation:climbIn-572e6fcc .35s cubic-bezier(.34,.1,.68,.55) both;background:var(--bg-card);gap:.75rem}.nav-btn[data-v-572e6fcc],.projects-container[data-v-572e6fcc]{align-items:center;display:flex}.nav-btn[data-v-572e6fcc]{background:var(--btn-bg);border:1px solid var(--accent);border-radius:999px;color:var(--text-secondary);cursor:pointer;flex-shrink:0;font-size:1.5rem;height:80px;justify-content:center;transition:background .18s ease,color .18s ease,box-shadow .18s ease;width:32px}.nav-btn[data-v-572e6fcc]:hover{background:var(--btn-hover);box-shadow:0 4px 12px #38bdf84d}.nav-btn[data-v-572e6fcc]:active{background:#1e293b;transform:scale(.95)}.projects-row[data-v-572e6fcc]{background:var(--bg-card);border-radius:1.25rem;box-sizing:border-box;color:var(--text-primary);display:grid;flex:1;gap:.75rem;grid-auto-flow:column;grid-auto-rows:1fr;grid-template-columns:repeat(4,1fr);overflow:hidden;padding:.9rem;transition:grid-template-columns .35s ease;transition:grid-template-columns .45s cubic-bezier(.22,1,.36,1)}.projects-row[style*="--expanded-index: 1"][data-v-572e6fcc]{grid-template-columns:2fr 1fr 1fr 1fr}.projects-row[style*="--expanded-index: 2"][data-v-572e6fcc]{grid-template-columns:1fr 2fr 1fr 1fr}.projects-row[style*="--expanded-index: 3"][data-v-572e6fcc]{grid-template-columns:1fr 1fr 2fr 1fr}.projects-row[style*="--expanded-index: 4"][data-v-572e6fcc]{grid-template-columns:1fr 1fr 1fr 2fr}.projects-row:has(.project-card.expanded).project-card[data-v-572e6fcc]:not(.expanded){opacity:.7;transform:scale(.75)}.project-card[data-v-572e6fcc]{align-items:flex-start;background:var(--bg-surface);border-radius:1rem;cursor:pointer;display:flex;flex-direction:column;font-weight:500;grid-column:auto;padding:.9rem 1rem;transform:transform .35s ease,opacity .35 ease;transition:flex .35s ease,transform .35s ease,background .25s ease;will-change:transform,opacity}.project-card.expanded[data-v-572e6fcc]{background:var(--bg-card)}.project-card[data-v-572e6fcc]:not(.expanded){opacity:.85}.project-desc[data-v-572e6fcc]{transition:max-height .3s ease}.project-title[data-v-572e6fcc]{align-self:center;color:var(--text-secondary);font-size:.95rem;font-weight:600;margin-bottom:.35rem;text-decoration:none}.project-title[data-v-572e6fcc]:hover{text-decoration:underline}.project-desc[data-v-572e6fcc]{color:var(--text-muted);font-size:.8rem;line-height:1.45}.projects-mobile[data-v-572e6fcc]{display:flex;flex-direction:column;overflow:visible}.projects-scroll[data-v-572e6fcc]{display:flex;gap:1rem;scroll-snap-type:x mandatory}.project-card.mobile[data-v-572e6fcc]{border:1px solid #687084;margin:.8rem;opacity:0;overflow:visible;scroll-snap-align:start;touch-action:auto;transform:translateY(24px);transition:opacity .6s ease,transform .6s ease;transition-delay:calc(var(--i)*80ms)}.project-card.mobile.in-view[data-v-572e6fcc]{opacity:1;transform:translate(0)}.footer[data-v-572e6fcc]{align-self:center;font-size:smaller}@media(max-width:640px){.photo-stack[data-v-572e6fcc]{overflow:visible}.top-layout[data-v-572e6fcc]{grid-template-columns:1fr}.photo-container[data-v-572e6fcc]{height:220px;margin-bottom:.5rem;margin-top:.2rem;order:1}.social-panel[data-v-572e6fcc]{background:var(--bg-card);border-radius:1rem;order:2;overflow:visible;padding:.5rem;position:absolute}.social-panel.open[data-v-572e6fcc]{opacity:1}.toggle-btn[data-v-572e6fcc]{font-size:.8rem;order:3}.about-card[data-v-572e6fcc]{font-size:.9rem;padding:1.25rem}.bottom-layout h3[data-v-572e6fcc]{margin-top:1.5rem}.footer[data-v-572e6fcc]{font-size:8px}}@keyframes pushIn-572e6fcc{0%{opacity:0;transform:translate(30px)}to{opacity:1;transform:translate(0)}}@keyframes climbIn-572e6fcc{0%{opacity:0;transform:translateY(30px)}to{opacity:1;transform:translateY(0)}}.project-card.exit[data-v-572e6fcc]{animation:pushOut-572e6fcc .35s cubic-bezier(.34,.1,.68,.55) forwards}@keyframes pushOut-572e6fcc{0%{opacity:1;transform:translate(0)}to{opacity:0;transform:translate(-30px)}}.projects-row.shift-left[data-v-572e6fcc]{animation:rowShiftLeft .36s ease}.projects-row.shift-right[data-v-572e6fcc]{animation:rowShiftRight .36s ease}@keyframes slide-left-572e6fcc{0%{opacity:1;transform:translate(0)}40%{transform:translate(-6%)}to{opacity:0;transform:translate(-110%)}}@keyframes slide-right-572e6fcc{0%{opacity:1;transform:translate(0)}40%{transform:translate(6%)}to{opacity:0;transform:translate(110%)}}.project-card.move-left[data-v-572e6fcc]{opacity:0;transform:translate(-120%)}.project-card.move-right[data-v-572e6fcc]{opacity:0;transform:translate(120%)}.fade-in-enter-active[data-v-572e6fcc],.fade-in-leave-active[data-v-572e6fcc]{transition:opacity 1.4s ease}.fade-in-enter-from[data-v-572e6fcc],.fade-in-leave-to[data-v-572e6fcc]{opacity:0;transform:translate(-40px)}.fade-leave-to[data-v-572e6fcc]{opacity:0}.fade-left-enter-active[data-v-572e6fcc],.fade-left-leave-active[data-v-572e6fcc]{transition:opacity .6s ease,transform .6s ease}.fade-left-enter-from[data-v-572e6fcc],.fade-left-leave-to[data-v-572e6fcc]{opacity:0;transform:translate(-40px)}.fade-right-enter-active[data-v-572e6fcc],.fade-right-leave-active[data-v-572e6fcc]{transition:opacity .6s ease,transform .6s ease}.fade-right-enter-from[data-v-572e6fcc],.fade-right-leave-to[data-v-572e6fcc]{opacity:0;transform:translate(40px)}.fade-up-enter-active[data-v-572e6fcc],.fade-up-leave-active[data-v-572e6fcc]{transition:opacity .6s ease,transform .6s ease}.fade-up-enter-from[data-v-572e6fcc],.fade-up-leave-to[data-v-572e6fcc]{opacity:0;transform:translateY(30px)}.slide-up-enter-active[data-v-572e6fcc],.slide-up-leave-active[data-v-572e6fcc]{transition:opacity .35s ease,transform .35s ease}.slide-up-enter-from[data-v-572e6fcc],.slide-up-leave-to[data-v-572e6fcc]{opacity:0;transform:translate(12px)}.roll-right[data-v-572e6fcc]{animation:rollRight-572e6fcc .6s ease-out both}@keyframes rollRight-572e6fcc{0%{opacity:0;transform:translate(40px) rotate(2deg)}to{opacity:1;transform:translate(0) rotate(0)}}@media(max-width:900px),(orientation:portrait){.top-layout[data-v-572e6fcc]{grid-template-columns:1fr}.about-card[data-v-572e6fcc]{order:2}}
