:root{--bg:#faf9f6;--surface:#fff;--text:#4a4543;--text-h:#1a1513;--accent:#d96b43;--accent-soft:#d96b4314;--border:#ebe7e2;--shadow:0 24px 80px #1b18160a;--shadow-sm:0 16px 30px #1b181605;--serif:"Cormorant Garamond", Georgia, serif;--sans:"Plus Jakarta Sans", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;font-family:var(--sans);color:var(--text);background:var(--bg);scroll-behavior:smooth;min-height:100vh;margin:0;font-size:16px;line-height:1.6;overflow-x:hidden}*{box-sizing:border-box}html,body,#root{min-height:100%}body{margin:0}a{color:inherit}button,input,textarea{font:inherit}img{max-width:100%;display:block}h1,h2,h3,h4,h5,h6,p,label{margin:0}button{cursor:pointer;background:0 0;border:none;outline:none;padding:0}@media (width<=640px){:root{font-size:15px}}.portfolio-app{max-width:1300px;margin:0 auto;padding:0 40px}.scroll-progress{background:var(--accent);z-index:9999;height:1.5px;transition:width .1s ease-out;position:fixed;top:0;left:0}body{position:relative}body:before{content:"";animation:slowBg 20s ease-infinite;z-index:-2;pointer-events:none;background:linear-gradient(120deg,#faf9f6 0%,#fffdf9 50%,#faf8f2 100%) 0 0/200% 200%;position:fixed;inset:0}@keyframes slowBg{0%{background-position:0%}50%{background-position:100%}to{background-position:0%}}.navbar{z-index:1000;-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);border-bottom:1px solid var(--border);background:#faf9f6d9;justify-content:space-between;align-items:center;margin-left:-40px;margin-right:-40px;padding:24px 40px;animation:1s cubic-bezier(.16,1,.3,1) both navEntrance;display:flex;position:sticky;top:0}@keyframes navEntrance{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.brand{font-family:var(--serif);color:var(--text-h);font-size:24px;font-weight:500;text-decoration:none}.brand-accent{color:var(--accent);font-style:italic;font-weight:700}.nav-links{gap:32px;display:flex}.nav-links a{color:var(--text);letter-spacing:.05em;text-transform:uppercase;padding-bottom:4px;font-size:14px;font-weight:600;text-decoration:none;transition:color .3s;position:relative}.nav-links a:after{content:"";background:var(--accent);transform-origin:0;width:100%;height:2px;transition:transform .3s cubic-bezier(.25,1,.5,1);position:absolute;bottom:0;left:0;transform:scaleX(0)}.nav-links a:hover{color:var(--accent)}.nav-links a:hover:after{transform:scaleX(1)}.nav-cta{background:var(--text-h);color:var(--bg);border:1px solid var(--text-h);cursor:pointer;border-radius:999px;padding:12px 24px;font-size:14px;font-weight:600;transition:transform .25s cubic-bezier(.25,1,.5,1),box-shadow .25s cubic-bezier(.25,1,.5,1)}.nav-cta:hover{transform:translateY(-2px);box-shadow:0 4px 12px #1a151314}section{border-bottom:1px solid var(--border);padding:100px 0}.section-label{letter-spacing:.15em;text-transform:uppercase;color:var(--accent);opacity:0;margin-bottom:24px;font-size:12px;font-weight:700;animation:1s cubic-bezier(.16,1,.3,1) forwards fadeInLabel;display:block}@keyframes fadeInLabel{to{opacity:1}}.section-header h2{font-family:var(--serif);color:var(--text-h);margin-bottom:24px;font-size:clamp(2.5rem,5vw,4rem);font-weight:500;line-height:1.1}.section-note{max-width:680px;color:var(--text);font-size:18px;line-height:1.6}.hero-section{grid-template-columns:1.2fr .8fr;align-items:center;gap:80px;padding:60px 0 80px;display:grid}.available-badge{background:var(--surface);border:1px solid var(--border);color:var(--text);border-radius:999px;align-items:center;gap:10px;margin-bottom:32px;padding:8px 16px;font-size:13px;font-weight:600;display:inline-flex}.pulse-dot{background:var(--accent);border-radius:50%;width:8px;height:8px;animation:2s infinite pulse;display:inline-block}@keyframes pulse{0%{transform:scale(.85);box-shadow:0 0 #d96b4399}70%{transform:scale(1);box-shadow:0 0 0 8px #d96b4300}to{transform:scale(.85);box-shadow:0 0 #d96b4300}}.hero-headline{font-family:var(--sans);color:var(--text-h);letter-spacing:-.02em;margin-bottom:24px;font-size:clamp(3rem,6vw,5.5rem);font-weight:800;line-height:.95}.reveal-line-wrapper{display:block;overflow:hidden}.reveal-line{transition:transform 1s cubic-bezier(.16,1,.3,1);display:inline-block;transform:translateY(100%)}.hero-copy.visible .line-1{transition-delay:.1s;transform:translateY(0)}.hero-copy.visible .line-2{transition-delay:.25s;transform:translateY(0)}.serif-italic{font-family:var(--serif);letter-spacing:.02em;font-style:italic;font-weight:300}.hero-title{color:var(--text-h);margin-bottom:24px;font-size:22px;font-weight:500}.hero-text{color:var(--text);max-width:600px;margin-bottom:40px;font-size:18px;line-height:1.6}.hero-actions{flex-wrap:wrap;align-items:center;gap:24px;display:flex}.hero-title,.hero-text,.hero-actions{opacity:0;animation:1s cubic-bezier(.16,1,.3,1) forwards heroReveal;transform:translateY(15px)}.hero-title{animation-delay:.35s}.hero-text{animation-delay:.45s}.hero-actions{animation-delay:.55s}@keyframes heroReveal{to{opacity:1;transform:translateY(0)}}.primary-button{background:var(--text-h);color:var(--bg);border:1px solid var(--text-h);border-radius:999px;justify-content:center;align-items:center;padding:16px 36px;font-size:15px;font-weight:600;text-decoration:none;transition:transform .25s cubic-bezier(.25,1,.5,1),box-shadow .25s cubic-bezier(.25,1,.5,1);display:inline-flex}.primary-button:hover{transform:translateY(-2px);box-shadow:0 4px 12px #1a151314}.social-link{color:var(--text-h);padding:4px 0;font-size:15px;font-weight:700;text-decoration:none;position:relative}.social-link:after{content:"";background:var(--text-h);transform-origin:0;width:100%;height:1px;transition:transform .3s;position:absolute;bottom:0;left:0;transform:scaleX(.3)}.social-link:hover:after{transform:scaleX(1)}.hero-image{height:520px;box-shadow:var(--shadow);opacity:0;background:#fffdfb;border-radius:40px;transition:opacity 1.2s cubic-bezier(.16,1,.3,1),transform .5s cubic-bezier(.25,1,.5,1);position:relative;overflow:hidden;transform:translateY(20px)}.hero-image.visible{opacity:1}.hero-image img{object-fit:cover;width:100%;height:100%;transition:transform .3s cubic-bezier(.25,1,.5,1)}.hero-image:hover img{transform:scale(1.025)}.image-overlay{z-index:1;pointer-events:none;background:linear-gradient(#0000 60%,#1a15130d);position:absolute;inset:0}.about-section{grid-template-columns:.9fr 1.1fr;align-items:center;gap:80px;display:grid}.about-image-block{box-shadow:var(--shadow);aspect-ratio:4/5;background:var(--surface);border-radius:30px;transition:transform .4s cubic-bezier(.16,1,.3,1);overflow:hidden}.about-image-block:hover{transform:scale(1.015)}.about-image{object-fit:cover;width:100%;height:100%}.about-copy h2{font-family:var(--serif);color:var(--text-h);margin-bottom:24px;font-size:clamp(2rem,4vw,3.2rem);font-weight:500;line-height:1.1}.about-copy p{color:var(--text);margin-bottom:24px;font-size:17px;line-height:1.7}.secondary-button{color:var(--text-h);border:1px solid var(--border);cursor:pointer;background:0 0;border-radius:999px;justify-content:center;align-items:center;padding:14px 30px;font-size:14px;font-weight:600;text-decoration:none;transition:all .3s cubic-bezier(.16,1,.3,1);display:inline-flex}.secondary-button:hover{background:var(--text-h);color:var(--bg);border-color:var(--text-h);transform:translateY(-2px)}.services-grid{grid-template-columns:repeat(4,1fr);gap:24px;margin-top:50px;display:grid}.service-card{background:var(--surface);border:1px solid var(--border);background:linear-gradient(135deg,#d96b4304 0%,#fff0 100%);border-radius:24px;padding:40px 32px;transition:border-color .4s,box-shadow .4s}.service-card:hover{border-color:var(--accent);box-shadow:0 8px 30px #d96b430a}.service-number{font-family:var(--serif);color:var(--accent);margin-bottom:24px;font-size:32px;font-style:italic;display:block}.service-card h3{color:var(--text-h);margin-bottom:16px;font-size:18px;font-weight:700}.service-card p{color:var(--text);font-size:15px;line-height:1.6}.project-grid{grid-template-columns:repeat(2,1fr);gap:40px;margin-top:60px;display:grid}.project-card{background:var(--surface);border:1px solid var(--border);transform-style:preserve-3d;background:linear-gradient(135deg,#d96b4303 0%,#fff0 100%);border-radius:30px;transition:border-color .3s,transform .1s ease-out,box-shadow .3s;overflow:hidden}.project-card:hover{border-color:var(--accent);box-shadow:0 10px 40px #d96b430f}.card-image-wrapper{border-bottom:1px solid var(--border);background:#fff;height:280px;position:relative;overflow:hidden}.project-thumb{object-fit:cover;width:100%;height:100%;transition:transform .3s cubic-bezier(.25,1,.5,1)}.project-card:hover .project-thumb{transform:scale(1.03)}.card-image-gradient{pointer-events:none;background:linear-gradient(#0000 50%,#00000005 100%);position:absolute;inset:0}.project-card-content{padding:32px}.tech-tags{flex-wrap:wrap;gap:8px;margin-bottom:20px;display:flex}.tech-tag{color:var(--accent);background:var(--accent-soft);text-transform:uppercase;letter-spacing:.05em;border-radius:999px;padding:6px 12px;font-size:12px;font-weight:700}.tech-tag-more{color:var(--text);background:var(--border);border-radius:999px;padding:6px 12px;font-size:12px;font-weight:700}.project-card h3{font-family:var(--sans);color:var(--text-h);margin-bottom:12px;font-size:22px;font-weight:700;transition:transform .3s cubic-bezier(.25,1,.5,1)}.project-card:hover h3{transform:translate(4px)}.project-card p{color:var(--text);min-height:72px;margin-bottom:28px;font-size:15px;line-height:1.6}.project-card-actions{align-items:center;gap:24px;display:flex}.card-btn-primary{color:var(--text-h);cursor:pointer;background:0 0;border:none;align-items:center;padding:0;font-size:14px;font-weight:700;transition:color .2s;display:inline-flex;position:relative}.card-btn-primary span{transition:transform .2s cubic-bezier(.25,1,.5,1);display:inline-block}.card-btn-primary:hover{color:var(--accent)}.card-btn-primary:hover span{transform:translate(4px)}.card-btn-secondary{color:var(--text);background:0 0;border:none;padding:0;font-size:14px;font-weight:600;text-decoration:none;transition:color .2s}.card-btn-secondary:hover{color:var(--accent)}.experience-timeline{max-width:900px;margin-top:50px;position:relative}.timeline-item{border-bottom:1px solid var(--border);grid-template-columns:.3fr .7fr;gap:40px;padding:40px 0;display:grid;position:relative}.timeline-item:after{content:"";background:var(--accent);width:2px;height:0;transition:height .8s cubic-bezier(.25,1,.5,1);position:absolute;top:0;left:0}.timeline-item.visible:after{height:100%}.timeline-item:last-child{border-bottom:none}.timeline-meta{flex-direction:column;gap:8px;padding-left:20px;display:flex}.timeline-duration{color:var(--accent);font-size:16px;font-weight:700}.timeline-company{color:var(--text);font-size:14px;font-weight:600}.timeline-content h3{color:var(--text-h);margin-bottom:16px;font-size:20px;font-weight:700}.timeline-details-list{margin:0;padding-left:20px}.timeline-details-list li{color:var(--text);margin-bottom:12px;font-size:16px;line-height:1.7}.skills-edu-section{grid-template-columns:1fr 1fr;gap:80px;display:grid}.skills-col,.edu-cert-col{flex-direction:column;display:flex}.skills-accordion{flex-direction:column;gap:32px;margin-top:40px;display:flex}.skill-group h4{text-transform:uppercase;color:var(--text-h);letter-spacing:.05em;margin-bottom:16px;font-size:15px;font-weight:700}.skill-badges{flex-wrap:wrap;gap:10px;display:flex}.skill-badge{background:var(--surface);border:1px solid var(--border);color:var(--text-h);opacity:0;border-radius:999px;padding:10px 20px;font-size:14px;font-weight:600;transition:opacity .5s cubic-bezier(.25,1,.5,1),transform .5s cubic-bezier(.25,1,.5,1),border-color .2s,box-shadow .2s;transform:translateY(10px)}.skill-group.visible .skill-badge{opacity:1;transform:translateY(0)}.skill-group.visible .skill-badge:first-child{transition-delay:40ms}.skill-group.visible .skill-badge:nth-child(2){transition-delay:80ms}.skill-group.visible .skill-badge:nth-child(3){transition-delay:.12s}.skill-group.visible .skill-badge:nth-child(4){transition-delay:.16s}.skill-group.visible .skill-badge:nth-child(5){transition-delay:.2s}.skill-group.visible .skill-badge:nth-child(6){transition-delay:.24s}.skill-group.visible .skill-badge:nth-child(7){transition-delay:.28s}.skill-badge:hover{border-color:var(--accent);color:var(--accent);box-shadow:0 4px 12px #d96b430d}.education-block{background:var(--surface);border:1px solid var(--border);border-radius:24px;margin-top:40px;margin-bottom:40px;padding:32px;transition:border-color .2s}.education-block:hover{border-color:var(--accent)}.edu-year{color:var(--accent);margin-bottom:12px;font-size:14px;font-weight:700;display:block}.education-block h4{color:var(--text-h);margin-bottom:8px;font-size:18px;font-weight:700}.edu-college{color:var(--text);margin-bottom:12px;font-size:15px}.edu-status{text-transform:uppercase;letter-spacing:.05em;color:var(--accent);font-size:13px;font-weight:700}.certs-list h4{text-transform:uppercase;color:var(--text-h);letter-spacing:.05em;margin-bottom:24px;font-size:15px;font-weight:700}.certs-grid{flex-direction:column;gap:16px;display:flex}.cert-item{background:var(--surface);border:1px solid var(--border);border-radius:18px;align-items:center;gap:18px;padding:16px;transition:border-color .2s,transform .2s;display:flex}.cert-item:hover{border-color:var(--accent);transform:translate(4px)}.cert-thumbnail{background:var(--border);border-radius:10px;flex-shrink:0;width:50px;height:50px;overflow:hidden}.cert-thumbnail img{object-fit:cover;width:100%;height:100%}.cert-info h5{color:var(--text-h);margin:0 0 4px;font-size:15px;font-weight:700}.cert-info p{color:var(--text);margin:0;font-size:13px}.contact-section{border-bottom:none;padding-bottom:160px}.contact-grid{grid-template-columns:1fr 1.1fr;align-items:start;gap:80px;display:grid}.contact-headline{color:var(--text-h);margin-bottom:24px;font-size:clamp(2.5rem,5vw,4rem);font-weight:300;line-height:1.1}.contact-intro{color:var(--text);margin-bottom:48px;font-size:18px;line-height:1.6}.contact-details{flex-direction:column;gap:24px;display:flex}.contact-detail-item{flex-direction:column;gap:6px;display:flex}.detail-label{text-transform:uppercase;letter-spacing:.05em;color:var(--text);font-size:12px;font-weight:700}.detail-value{color:var(--text-h);font-size:18px;font-weight:600;text-decoration:none}a.detail-value{color:var(--accent);align-self:flex-start;position:relative}a.detail-value:after{content:"";background:var(--accent);transform-origin:0;width:100%;height:1px;transition:transform .3s;position:absolute;bottom:-2px;left:0;transform:scaleX(.3)}a.detail-value:hover:after{transform:scaleX(1)}.contact-form{background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow);border-radius:30px;flex-direction:column;gap:32px;padding:48px;display:flex}.form-group{position:relative}.form-group input,.form-group textarea{width:100%;font-family:var(--sans);color:var(--text-h);border:none;border-bottom:1px solid var(--border);background:0 0;outline:none;padding:12px 0;font-size:16px;transition:border-color .3s,box-shadow .3s}.form-group textarea{resize:none}.form-group label{font-family:var(--sans);color:var(--text);pointer-events:none;font-size:16px;transition:all .3s cubic-bezier(.16,1,.3,1);position:absolute;top:12px;left:0}.form-group input:focus~label,.form-group input:not(:placeholder-shown)~label,.form-group textarea:focus~label,.form-group textarea:not(:placeholder-shown)~label{color:var(--accent);font-size:12px;font-weight:700;top:-16px}.form-group input:focus,.form-group textarea:focus{border-color:var(--accent);box-shadow:0 4px 16px #d96b430f}.form-status{color:var(--accent);margin:0;font-size:14px;font-weight:600}.form-submit-btn{background:var(--text-h);color:var(--bg);border:1px solid var(--text-h);cursor:pointer;border-radius:999px;align-self:flex-start;padding:16px 36px;font-size:15px;font-weight:600;transition:transform .25s cubic-bezier(.25,1,.5,1),box-shadow .25s cubic-bezier(.25,1,.5,1)}.form-submit-btn:hover{transform:translateY(-2px);box-shadow:0 4px 12px #1a151314}.footer{border-top:1px solid var(--border);padding:40px 0;font-size:14px}.footer-content{color:var(--text);justify-content:space-between;align-items:center;display:flex}.footer-links{gap:24px;display:flex}.footer-links a{color:var(--text-h);font-weight:600;text-decoration:none;transition:color .3s}.footer-links a:hover{color:var(--accent)}.reveal{opacity:0;transition:opacity .8s cubic-bezier(.25,1,.5,1),transform .8s cubic-bezier(.25,1,.5,1);transform:translateY(20px)}.reveal.visible{opacity:1;transform:translateY(0)}.services-grid .service-card:first-child{transition-delay:40ms}.services-grid .service-card:nth-child(2){transition-delay:80ms}.services-grid .service-card:nth-child(3){transition-delay:.12s}.services-grid .service-card:nth-child(4){transition-delay:.16s}.project-grid .project-card:first-child{transition-delay:50ms}.project-grid .project-card:nth-child(2){transition-delay:.15s}.project-grid .project-card:nth-child(3){transition-delay:50ms}.project-grid .project-card:nth-child(4){transition-delay:.15s}@media (prefers-reduced-motion:reduce){.custom-cursor-dot,.custom-cursor-outline{display:none!important}html,a,button,.project-card,.skill-badge{cursor:auto!important}.reveal{opacity:1!important;transition:none!important;transform:none!important}.reveal-line,.hero-image img,.project-card img{transition:none!important;transform:none!important}.nav-links a:after{display:none!important}.navbar,.hero-text,.hero-title,.hero-actions,.scroll-progress{opacity:1!important;animation:none!important;transform:none!important}.skill-badge{opacity:1!important;transition:none!important;transform:none!important}.timeline-item:after{height:100%!important;transition:none!important}body:before{animation:none!important}.project-card{transition:none!important;transform:none!important}}@media (width<=1024px){.hero-section,.about-section,.skills-edu-section,.contact-grid{grid-template-columns:1fr;gap:60px}.services-grid{grid-template-columns:repeat(2,1fr)}.project-grid{grid-template-columns:1fr}.hero-image{order:-1;height:400px}}@media (width<=768px){.navbar{margin-left:-24px;margin-right:-24px;padding:16px 24px}.portfolio-app{padding:0 24px}.nav-links{display:none}.services-grid{grid-template-columns:1fr}.timeline-item{grid-template-columns:1fr;gap:16px}.contact-form{padding:32px 24px}.footer-content{text-align:center;flex-direction:column;gap:20px}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideUp{0%{opacity:0;transform:translateY(30px)}to{opacity:1;transform:translateY(0)}}.cv-modal{width:100%;max-width:950px}.cv-container{flex-direction:column;align-items:center;gap:24px;width:100%;padding:48px;display:flex}.cv-pdf-embed{border:1px solid var(--border);width:100%;min-height:650px;box-shadow:var(--shadow-sm);background:var(--surface);border-radius:20px}.cv-actions{justify-content:center;gap:16px;width:100%;margin-top:12px;display:flex}.cv-actions .button{text-align:center;min-width:180px}@media (width<=768px){.cv-container{padding:32px 24px}.cv-pdf-embed{min-height:450px}.cv-actions{flex-direction:column;align-items:stretch}.cv-actions .button{width:100%}}.modal-overlay{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);z-index:2000;background-color:#1a151373;justify-content:center;align-items:center;padding:40px;animation:.4s cubic-bezier(.16,1,.3,1) fadeIn;display:flex;position:fixed;inset:0}.modal-content{background:var(--bg);border:1px solid var(--border);box-shadow:var(--shadow);scrollbar-width:thin;scrollbar-color:var(--accent) var(--border);border-radius:30px;max-width:90vw;max-height:90vh;animation:.4s cubic-bezier(.16,1,.3,1) slideUp;position:relative;overflow-y:auto}.modal-close{background:var(--surface);border:1px solid var(--border);cursor:pointer;width:44px;height:44px;color:var(--text-h);z-index:10;border-radius:50%;justify-content:center;align-items:center;font-size:16px;transition:all .3s;display:flex;position:absolute;top:24px;right:24px}.modal-close:hover{border-color:var(--accent);color:var(--accent);transform:scale(1.1)}.project-modal{width:100%;max-width:1000px}.project-detail-container{grid-template-columns:1fr 1fr;align-items:start;gap:48px;padding:48px;display:grid}.project-detail-image{width:100%;box-shadow:var(--shadow);border:1px solid var(--border);background:linear-gradient(135deg,#ffefea 0%,#fff 100%);border-radius:20px;position:sticky;top:0;overflow:hidden}.project-detail-image img{object-fit:cover;width:100%;height:auto;display:block}.project-detail-content{flex-direction:column;gap:32px;display:flex}.project-detail-content h1{font-family:var(--serif);color:var(--text-h);margin:0;font-size:36px;font-weight:500}.project-brief{color:var(--text);margin:0;font-size:16px;line-height:1.6}.detail-grid{background:var(--surface);border:1px solid var(--border);border-radius:20px;grid-template-columns:1fr 1fr;gap:24px;padding:24px;display:grid}.detail-item h3{color:var(--accent);text-transform:uppercase;letter-spacing:.05em;margin:0 0 6px;font-size:12px;font-weight:700}.detail-item p{color:var(--text-h);margin:0;font-size:15px;font-weight:600}.detail-section{flex-direction:column;gap:12px;display:flex}.detail-section h2{color:var(--text-h);border-bottom:1px solid var(--border);margin:0;padding-bottom:8px;font-size:18px;font-weight:700}.detail-section p{color:var(--text);margin:0;font-size:15px;line-height:1.6}.tech-list{flex-wrap:wrap;gap:8px;margin-top:4px;display:flex}.tech-badge{background:var(--accent-soft);color:var(--accent);text-transform:uppercase;letter-spacing:.05em;border-radius:20px;padding:6px 12px;font-size:13px;font-weight:600;display:inline-block}.project-actions{gap:16px;margin-top:12px;display:flex}.project-actions .button{text-align:center;flex:1}.modal-content::-webkit-scrollbar{width:6px}.modal-content::-webkit-scrollbar-track{background:0 0}.modal-content::-webkit-scrollbar-thumb{background:var(--border);border-radius:10px}.modal-content::-webkit-scrollbar-thumb:hover{background:var(--accent)}@media (width<=1024px){.project-detail-container{gap:32px;padding:32px}}@media (width<=768px){.project-detail-container{grid-template-columns:1fr;gap:24px;padding:24px}.project-detail-image{position:static}.project-detail-content h1{font-size:28px}.project-actions{flex-direction:column}}
