*{box-sizing:border-box;margin:0;padding:0}html{font-size:16px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;font-size:1rem;line-height:1.5;color:#2c2416;background-color:#fdfbf7}.dark body{color:#fdfbf7;background-color:#1a1510}h1,h2,h3,h4,h5,h6{margin:0;font-weight:600;line-height:1.2}h1{font-size:2.25rem;font-weight:700}@media(min-width:640px){h1{font-size:3rem}}@media(min-width:1024px){h1{font-size:3.75rem}}h2{font-size:1.875rem}@media(min-width:640px){h2{font-size:2.25rem}}h3{font-size:1.25rem;font-weight:600}h4{font-size:1.125rem;font-weight:600}p{margin:0}a{color:inherit;text-decoration:none}button{font-family:inherit;cursor:pointer;border:none;background:none}img{max-width:100%;height:auto}.btn{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;white-space:nowrap;border-radius:.625rem;font-size:.875rem;font-weight:500;transition-property:all;transition-duration:.2s;transition-timing-function:ease-in-out;outline:none;cursor:pointer;flex-shrink:0}.btn:disabled{pointer-events:none;opacity:.5}.btn:focus-visible{border-color:#8b3a62;box-shadow:0 0 0 3px #8b3a6280}.btn svg{pointer-events:none;flex-shrink:0;width:1rem;height:1rem}.btn-default{background-color:#8b3a62;color:#fdfbf7}.btn-default:hover{background-color:#8b3a62e6}.dark .btn-default{background-color:#b85c87}.btn-destructive{background-color:#d4183d;color:#fff}.btn-destructive:hover{background-color:#d4183de6}.btn-destructive:focus-visible{box-shadow:0 0 0 3px #d4183d33}.dark .btn-destructive{background-color:#d4183d99;box-shadow:0 0 0 3px #d4183d66}.btn-outline{border:1px solid rgba(139,58,98,.15);background-color:#fdfbf7;color:#2c2416}.btn-outline:hover{background-color:#c4a57b;color:#2c2416}.dark .btn-outline{background-color:#3d34274d;border-color:#3d3427}.dark .btn-outline:hover{background-color:#3d342780}.btn-secondary{background-color:#2e5c8a;color:#fdfbf7}.btn-secondary:hover{background-color:#2e5c8acc}.dark .btn-secondary{background-color:#4a7bad}.btn-ghost:hover{background-color:#c4a57b;color:#2c2416}.dark .btn-ghost:hover{background-color:#6b5d4f80}.btn-link{color:#8b3a62;text-decoration:underline;text-underline-offset:4px}.btn-link:hover{text-decoration:underline}.dark .btn-link{color:#b85c87}.btn-sm{height:2rem;border-radius:.625rem;gap:.375rem;padding:0 .75rem}.btn-sm:has(svg){padding:0 .625rem}.btn-default-size{height:2.25rem;padding:.5rem 1rem}.btn-default-size:has(svg){padding:0 .75rem}.btn-lg{height:2.5rem;border-radius:.625rem;padding:0 1.5rem}.btn-lg:has(svg){padding:0 1rem}.btn-icon{width:2.25rem;height:2.25rem;border-radius:.625rem;padding:0}.card{background-color:#fff;color:#2c2416;display:flex;flex-direction:column;gap:1.5rem;border-radius:1rem;border:1px solid rgba(139,58,98,.15)}.dark .card{background-color:#2c2416;color:#fdfbf7;border-color:#b85c8733}.badge{display:inline-flex;align-items:center;justify-content:center;border-radius:.625rem;border:1px solid transparent;padding:.125rem .5rem;font-size:.75rem;font-weight:500;width:fit-content;white-space:nowrap;flex-shrink:0;gap:.25rem;transition-property:color,box-shadow;transition-duration:.2s;transition-timing-function:ease-in-out;overflow:hidden}.badge svg{width:.75rem;height:.75rem;pointer-events:none}.badge:focus-visible{border-color:#8b3a62;box-shadow:0 0 0 3px #8b3a6280}.badge[aria-invalid=true]{border-color:#d4183d;box-shadow:0 0 0 3px #d4183d33}.badge-default{border-color:transparent;background-color:#8b3a62;color:#fdfbf7}.badge-default:is(a):hover{background-color:#8b3a62e6}.dark .badge-default{background-color:#b85c87}.badge-secondary{border-color:transparent;background-color:#2e5c8a;color:#fdfbf7}.badge-secondary:is(a):hover{background-color:#2e5c8ae6}.dark .badge-secondary{background-color:#4a7bad}.badge-destructive{border-color:transparent;background-color:#d4183d;color:#fff}.badge-destructive:is(a):hover{background-color:#d4183de6}.badge-destructive:focus-visible{box-shadow:0 0 0 3px #d4183d33}.dark .badge-destructive{background-color:#d4183d99}.dark .badge-destructive:focus-visible{box-shadow:0 0 0 3px #d4183d66}.badge-outline{border:1px solid rgba(139,58,98,.15);color:#2c2416}.badge-outline:is(a):hover{background-color:#c4a57b;color:#2c2416}.dark .badge-outline{border-color:#b85c8733;color:#fdfbf7}.dark .badge-outline:is(a):hover{background-color:#6b5d4f;color:#fdfbf7}.label{display:flex;align-items:center;gap:.5rem;font-size:.875rem;line-height:1;font-weight:500;-webkit-user-select:none;user-select:none}.label:has([data-disabled=true]){pointer-events:none;opacity:.5}.label:has(.peer:disabled){cursor:not-allowed;opacity:.5}.input{display:flex;height:2.25rem;width:100%;min-width:0;border-radius:.625rem;border:1px solid rgba(139,58,98,.15);background-color:#f5efe6;padding:.25rem .75rem;font-size:1rem;transition-property:color,box-shadow;transition-duration:.2s;transition-timing-function:ease-in-out;outline:none}@media(min-width:768px){.input{font-size:.875rem}}.input::placeholder{color:#6b5d4f}.input::selection{background-color:#8b3a62;color:#fdfbf7}.input:focus-visible{outline:none;border-color:#8b3a62;box-shadow:0 0 0 3px #8b3a6280}.input[aria-invalid=true]{border-color:#d4183d;box-shadow:0 0 0 3px #d4183d33}.input:disabled{pointer-events:none;cursor:not-allowed;opacity:.5}.input[type=file]::file-selector-button{display:inline-flex;height:1.75rem;border:0;background-color:transparent;font-size:.875rem;font-weight:500;color:#2c2416}.dark .input{background-color:#3d34274d;border-color:#3d3427}.dark .input[aria-invalid=true]{box-shadow:0 0 0 3px #d4183d66}.textarea{resize:none;border:1px solid rgba(139,58,98,.15);display:flex;field-sizing:content;min-height:4rem;width:100%;border-radius:.625rem;background-color:#f5efe6;padding:.5rem .75rem;font-size:1rem;transition-property:color,box-shadow;transition-duration:.2s;transition-timing-function:ease-in-out;outline:none}@media(min-width:768px){.textarea{font-size:.875rem}}.textarea::placeholder{color:#6b5d4f}.textarea:focus-visible{outline:none;border-color:#8b3a62;box-shadow:0 0 0 3px #8b3a6280}.textarea[aria-invalid=true]{border-color:#d4183d;box-shadow:0 0 0 3px #d4183d33}.textarea:disabled{cursor:not-allowed;opacity:.5}.dark .textarea{background-color:#3d34274d;border-color:#3d3427}.dark .textarea[aria-invalid=true]{box-shadow:0 0 0 3px #d4183d66}.toast-container{position:fixed;top:2rem;right:2rem;z-index:9999;display:flex;flex-direction:column;gap:1rem;max-width:420px;width:100%;pointer-events:none}@media(max-width:768px){.toast-container{top:1rem;right:1rem;left:1rem;max-width:none}}.toast{display:flex;align-items:center;gap:1rem;padding:1rem 1.25rem;background:#fdfbf7;border-radius:12px;box-shadow:0 10px 40px #00000026,0 0 0 1px #ffffff0d;pointer-events:all;animation:slideIn .3s cubic-bezier(.4,0,.2,1);transition:all .3s ease;border-left:4px solid transparent}.toast:hover{transform:translateY(-2px);box-shadow:0 15px 50px #0003,0 0 0 1px #ffffff0d}.toast .toast-icon{display:flex;align-items:center;justify-content:center;flex-shrink:0}.toast .toast-icon svg{width:24px;height:24px}.toast .toast-message{flex:1;margin:0;font-size:.95rem;line-height:1.5;color:#2c2416}.toast .toast-close{display:flex;align-items:center;justify-content:center;background:none;border:none;cursor:pointer;padding:.25rem;border-radius:6px;transition:all .2s ease;color:#6b5d4f;flex-shrink:0}.toast .toast-close svg{width:18px;height:18px}.toast .toast-close:hover{background:#ffffff0d;color:#2c2416}.toast .toast-close:active{transform:scale(.95)}.toast.toast-success{border-left-color:#8b3a62}.toast.toast-success .toast-icon{color:#8b3a62}.toast.toast-error{border-left-color:#ef4444}.toast.toast-error .toast-icon{color:#ef4444}@keyframes slideIn{0%{opacity:0;transform:translate(100%)}to{opacity:1;transform:translate(0)}}.toast-exit{animation:fadeOut .2s ease forwards}@keyframes fadeOut{0%{opacity:1;transform:translate(0)}to{opacity:0;transform:translate(100%)}}.app{min-height:100vh}.header{position:fixed;top:0;left:0;right:0;z-index:50;background-color:#fdfbf7f2;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-bottom:1px solid rgba(139,58,98,.15)}.dark .header{background-color:#1a1510f2;border-bottom-color:#b85c8733}.header-container{max-width:1280px;margin:0 auto;padding:0 1rem}@media(min-width:640px){.header-container{padding:0 1.5rem}}@media(min-width:1024px){.header-container{padding:0 2rem}}.header-content{display:flex;align-items:center;justify-content:space-between;height:4rem}.header-logo{flex-shrink:0}.header-logo h3{color:#8b3a62;font-weight:700}.dark .header-logo h3{color:#b85c87}.header-nav{display:none}@media(min-width:768px){.header-nav{display:flex;align-items:center;gap:2rem}}.header-nav button{color:#2c2416;font-weight:600;transition-property:color;transition-duration:.2s;transition-timing-function:ease-in-out}.header-nav button:hover{color:#8b3a62}.dark .header-nav button{color:#fdfbf7}.dark .header-nav button:hover{color:#b85c87}@media(min-width:768px){.header-mobile-button{display:none}}.header-mobile-nav{padding:1rem 0;border-top:1px solid rgba(139,58,98,.15)}@media(min-width:768px){.header-mobile-nav{display:none}}.dark .header-mobile-nav{border-top-color:#b85c8733}.header-mobile-nav button{display:block;width:100%;text-align:left;padding:.5rem 0;color:#2c2416;transition-property:color;transition-duration:.2s;transition-timing-function:ease-in-out}.header-mobile-nav button:hover{color:#8b3a62}.dark .header-mobile-nav button{color:#fdfbf7}.dark .header-mobile-nav button:hover{color:#b85c87}.hero{min-height:100vh;padding-top:4rem;display:flex;align-items:center}.hero-container{max-width:1280px;margin:0 auto;padding:3rem 1rem}@media(min-width:640px){.hero-container{padding-left:1.5rem;padding-right:1.5rem}}@media(min-width:1024px){.hero-container{padding:5rem 2rem}}.hero-grid{display:grid;grid-template-columns:1fr;gap:2rem;align-items:center}@media(min-width:1024px){.hero-grid{grid-template-columns:repeat(2,1fr);gap:3rem}}.hero-text{order:2}@media(min-width:1024px){.hero-text{order:1}}.hero-badge{display:inline-block;padding:.5rem 1rem;background-color:#e8dcc8;border-radius:9999px;margin-bottom:1rem}.dark .hero-badge{background-color:#3d3427}.hero-badge p{color:#6b5d4f}.dark .hero-badge p{color:#c4a57b}.hero-title{font-size:2.25rem;margin-bottom:1rem}@media(min-width:640px){.hero-title{font-size:3rem}}@media(min-width:1024px){.hero-title{font-size:3.75rem}}.hero-title .highlight{color:#8b3a62}.dark .hero-title .highlight{color:#b85c87}.hero-description{font-size:1.125rem;color:#6b5d4f;margin-bottom:2rem;max-width:36rem}@media(min-width:640px){.hero-description{font-size:1.25rem}}.dark .hero-description{color:#c4a57b}.hero-buttons{display:flex;flex-direction:column;gap:1rem;margin-bottom:2rem}@media(min-width:640px){.hero-buttons{flex-direction:row}}.hero-social{display:flex;gap:1rem}.hero-social a{padding:.75rem;background-color:#fff;border:1px solid rgba(139,58,98,.15);border-radius:9999px;transition-property:background-color,border-color,color;transition-duration:.2s;transition-timing-function:ease-in-out}.dark .hero-social a{background-color:#2c2416;border-color:#b85c8733}.hero-social a:hover.github{background-color:#8b3a62;border-color:#8b3a62;color:#fdfbf7}.dark .hero-social a:hover.github{background-color:#b85c87;border-color:#b85c87}.hero-social a:hover.linkedin{background-color:#2e5c8a;border-color:#2e5c8a;color:#fdfbf7}.dark .hero-social a:hover.linkedin{background-color:#4a7bad;border-color:#4a7bad}.hero-social a:hover.mail{background-color:#c4a57b;border-color:#c4a57b}.dark .hero-social a:hover.mail{background-color:#6b5d4f;border-color:#6b5d4f}.hero-social a svg{width:1.25rem;height:1.25rem}.hero-image{order:1;display:flex;justify-content:center}@media(min-width:1024px){.hero-image{order:2}}.hero-image-wrapper{position:relative}.hero-image-wrapper .image-bg{position:absolute;inset:0;background:linear-gradient(to bottom right,#8b3a6233,#2e5c8a33);border-radius:1.875rem;transform:rotate(6deg)}.dark .hero-image-wrapper .image-bg{background:linear-gradient(to bottom right,#b85c8733,#4a7bad33)}.hero-image-wrapper img{position:relative;width:100%;max-width:28rem;border-radius:1.875rem;box-shadow:0 25px 50px -12px #00000040}.about{padding:5rem 0;background-color:#e8dcc84d}.dark .about{background-color:#3d34274d}.about-container{max-width:1280px;margin:0 auto;padding:0 1rem}@media(min-width:640px){.about-container{padding:0 1.5rem}}@media(min-width:1024px){.about-container{padding:0 2rem}}.about-header{text-align:center;margin-bottom:3rem}.about-header h2{font-size:1.875rem;margin-bottom:1rem}@media(min-width:640px){.about-header h2{font-size:2.25rem}}.about-header p{font-size:1.125rem;color:#6b5d4f;max-width:42rem;margin:0 auto}.dark .about-header p{color:#c4a57b}.about-journey{margin-bottom:4rem}.about-journey h3{color:#8b3a62;margin-bottom:1rem}.dark .about-journey h3{color:#b85c87}.about-journey .prose{max-width:none;font-size:1.125rem;line-height:1.75}.about-journey .prose p{color:#6b5d4f}.dark .about-journey .prose p{color:#c4a57b}.about-journey .prose p:not(:last-child){margin-bottom:1rem}.about-skills{display:grid;grid-template-columns:1fr;gap:1.5rem;margin-bottom:4rem}@media(min-width:768px){.about-skills{grid-template-columns:repeat(3,1fr)}}.skill-card{padding:1.5rem;transition:all .2s ease-in-out;transition-duration:.3s}.skill-card:hover{box-shadow:0 10px 15px -3px #0000001a,0 4px 6px -4px #0000001a;transform:translateY(-4px)}.skill-card .skill-icon{width:3rem;height:3rem;border-radius:.75rem;display:flex;align-items:center;justify-content:center;margin-bottom:1rem}.skill-card .skill-icon svg{width:1.5rem;height:1.5rem}.skill-card .skill-icon.primary{background-color:#8b3a621a;color:#8b3a62}.dark .skill-card .skill-icon.primary{background-color:#b85c871a;color:#b85c87}.skill-card .skill-icon.secondary{background-color:#2e5c8a1a;color:#2e5c8a}.dark .skill-card .skill-icon.secondary{background-color:#4a7bad1a;color:#4a7bad}.skill-card .skill-icon.accent{background-color:#c4a57b33;color:#c4a57b}.dark .skill-card .skill-icon.accent{background-color:#6b5d4f33;color:#6b5d4f}.skill-card h4{margin-bottom:.5rem}.skill-card p{color:#6b5d4f}.dark .skill-card p{color:#c4a57b}.about-technologies h3{margin-bottom:1.5rem;text-align:center}.about-technologies .tech-list{display:flex;flex-wrap:wrap;justify-content:center;gap:.75rem}.about-technologies .tech-list span{padding:.5rem 1rem;background-color:#fff;border:1px solid rgba(139,58,98,.15);border-radius:.75rem;transition-property:border-color,color;transition-duration:.2s;transition-timing-function:ease-in-out}.dark .about-technologies .tech-list span{background-color:#2c2416;border-color:#b85c8733}.about-technologies .tech-list span:hover{border-color:#8b3a62;color:#8b3a62}.dark .about-technologies .tech-list span:hover{border-color:#b85c87;color:#b85c87}.projects{padding:5rem 0}.projects-container{max-width:1280px;margin:0 auto;padding:0 1rem}@media(min-width:640px){.projects-container{padding:0 1.5rem}}@media(min-width:1024px){.projects-container{padding:0 2rem}}.projects-header{text-align:center;margin-bottom:3rem}.projects-header h2{font-size:1.875rem;margin-bottom:1rem}@media(min-width:640px){.projects-header h2{font-size:2.25rem}}.projects-header p{font-size:1.125rem;color:#6b5d4f;max-width:42rem;margin:0 auto}.dark .projects-header p{color:#c4a57b}.projects-grid{display:grid;grid-template-columns:1fr;gap:1.5rem}@media(min-width:768px){.projects-grid{grid-template-columns:repeat(2,1fr)}}@media(min-width:1024px){.projects-grid{grid-template-columns:repeat(3,1fr)}}.project-card{overflow:hidden;transition:all .2s ease-in-out;transition-duration:.3s}.project-card:hover{box-shadow:0 20px 25px -5px #0000001a,0 8px 10px -6px #0000001a;transform:translateY(-8px)}.project-image{position:relative;height:12rem;overflow:hidden;background-color:#e8dcc8}.dark .project-image{background-color:#3d3427}.project-image img{width:100%;height:100%;object-fit:cover;transition:transform .3s ease-in-out}.project-image:hover img{transform:scale(1.1)}.project-content{padding:1.5rem}.project-content h3{margin-bottom:.5rem}.project-content .project-description{color:#6b5d4f;margin-bottom:1rem;display:-webkit-box;-webkit-line-clamp:3;line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.dark .project-content .project-description{color:#c4a57b}.project-content .project-tags{display:flex;flex-wrap:wrap;gap:.5rem;margin-bottom:1rem}.project-content .project-links{display:flex;gap:.75rem}.project-content .project-links .btn{flex:1}.contact{padding:5rem 0;background-color:#e8dcc84d}.dark .contact{background-color:#3d34274d}.contact-container{max-width:1280px;margin:0 auto;padding:0 1rem}@media(min-width:640px){.contact-container{padding:0 1.5rem}}@media(min-width:1024px){.contact-container{padding:0 2rem}}.contact-header{text-align:center;margin-bottom:3rem}.contact-header h2{font-size:1.875rem;margin-bottom:1rem}@media(min-width:640px){.contact-header h2{font-size:2.25rem}}.contact-header p{font-size:1.125rem;color:#6b5d4f;max-width:42rem;margin:0 auto}.dark .contact-header p{color:#c4a57b}.contact-grid{display:grid;grid-template-columns:1fr;gap:2rem}@media(min-width:1024px){.contact-grid{grid-template-columns:repeat(2,1fr);gap:3rem}}.contact-info h3{margin-bottom:1.5rem}.contact-info .contact-description{color:#6b5d4f;margin-bottom:2rem}.dark .contact-info .contact-description{color:#c4a57b}.contact-info-list{display:flex;flex-direction:column;gap:1.5rem}.contact-info-item{padding:1rem;transition-property:box-shadow;transition-duration:.2s;transition-timing-function:ease-in-out}.contact-info-item:hover{box-shadow:0 4px 6px -1px #0000001a,0 2px 4px -2px #0000001a}.contact-info-item a{display:flex;align-items:center;gap:1rem}.contact-info-item a .contact-icon{padding:.75rem;background-color:#e8dcc8;border-radius:.75rem;transition-property:transform;transition-duration:.2s;transition-timing-function:ease-in-out}.dark .contact-info-item a .contact-icon{background-color:#3d3427}.contact-info-item a .contact-icon.primary{color:#8b3a62}.dark .contact-info-item a .contact-icon.primary{color:#b85c87}.contact-info-item a .contact-icon.secondary{color:#2e5c8a}.dark .contact-info-item a .contact-icon.secondary{color:#4a7bad}.contact-info-item a .contact-icon.accent{color:#c4a57b}.dark .contact-info-item a .contact-icon.accent{color:#6b5d4f}.contact-info-item a .contact-icon svg{width:1.5rem;height:1.5rem}.contact-info-item a:hover .contact-icon{transform:scale(1.1)}.contact-info-item a .contact-details .contact-label{color:#6b5d4f}.dark .contact-info-item a .contact-details .contact-label{color:#c4a57b}.contact-info-item a .contact-details .contact-value{transition-property:color;transition-duration:.2s;transition-timing-function:ease-in-out}.contact-info-item a:hover .contact-value{color:#8b3a62}.dark .contact-info-item a:hover .contact-value{color:#b85c87}.contact-cta{padding:1.5rem;margin-top:2rem;background-color:#8b3a620d;border:1px solid rgba(139,58,98,.2)}.dark .contact-cta{background-color:#b85c870d;border-color:#b85c8733}.contact-cta h4{margin-bottom:.5rem}.contact-cta p{color:#6b5d4f}.dark .contact-cta p{color:#c4a57b}.contact-form-card{padding:1.5rem}@media(min-width:1024px){.contact-form-card{padding:2rem}}.contact-form-card h3{margin-bottom:1.5rem}.contact-form-card form{display:flex;flex-direction:column;gap:1.5rem}.contact-form-card form .form-field .label{margin-bottom:.5rem}.contact-form-card form button[type=submit]{width:100%}.footer{background-color:#fff;border-top:1px solid rgba(139,58,98,.15)}.dark .footer{background-color:#2c2416;border-top-color:#b85c8733}.footer-container{max-width:1280px;margin:0 auto;padding:2rem 1rem}@media(min-width:640px){.footer-container{padding:2rem 1.5rem}}@media(min-width:1024px){.footer-container{padding:2rem}}.footer-content{display:flex;flex-direction:column;justify-content:space-between;align-items:center;gap:1rem}@media(min-width:768px){.footer-content{flex-direction:row}}.footer-content .footer-copyright{color:#6b5d4f}.dark .footer-content .footer-copyright{color:#c4a57b}.footer-content .footer-social{display:flex;gap:1rem}.footer-content .footer-social a{color:#6b5d4f;transition-property:color;transition-duration:.2s;transition-timing-function:ease-in-out}.dark .footer-content .footer-social a{color:#c4a57b}.footer-content .footer-social a svg{width:1.25rem;height:1.25rem}.footer-content .footer-social a:hover.github{color:#8b3a62}.dark .footer-content .footer-social a:hover.github{color:#b85c87}.footer-content .footer-social a:hover.linkedin{color:#2e5c8a}.dark .footer-content .footer-social a:hover.linkedin{color:#4a7bad}.footer-content .footer-social a:hover.mail{color:#c4a57b}.dark .footer-content .footer-social a:hover.mail{color:#6b5d4f}.footer-content .footer-links{display:flex;gap:1rem;font-size:.875rem}.footer-content .footer-links button{color:#6b5d4f;transition-property:color;transition-duration:.2s;transition-timing-function:ease-in-out}.dark .footer-content .footer-links button{color:#c4a57b}.footer-content .footer-links button:hover{color:#8b3a62}.dark .footer-content .footer-links button:hover{color:#b85c87}
