@font-face{font-family:__Inter_f367f3;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/ba9851c3c22cd980-s.woff2) format("woff2");unicode-range:u+0460-052f,u+1c80-1c8a,u+20b4,u+2de0-2dff,u+a640-a69f,u+fe2e-fe2f}@font-face{font-family:__Inter_f367f3;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/21350d82a1f187e9-s.woff2) format("woff2");unicode-range:u+0301,u+0400-045f,u+0490-0491,u+04b0-04b1,u+2116}@font-face{font-family:__Inter_f367f3;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/c5fe6dc8356a8c31-s.woff2) format("woff2");unicode-range:u+1f??}@font-face{font-family:__Inter_f367f3;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/19cfc7226ec3afaa-s.woff2) format("woff2");unicode-range:u+0370-0377,u+037a-037f,u+0384-038a,u+038c,u+038e-03a1,u+03a3-03ff}@font-face{font-family:__Inter_f367f3;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/df0a9ae256c0569c-s.woff2) format("woff2");unicode-range:u+0102-0103,u+0110-0111,u+0128-0129,u+0168-0169,u+01a0-01a1,u+01af-01b0,u+0300-0301,u+0303-0304,u+0308-0309,u+0323,u+0329,u+1ea0-1ef9,u+20ab}@font-face{font-family:__Inter_f367f3;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/8e9860b6e62d6359-s.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c0,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:__Inter_f367f3;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/e4af272ccee01ff0-s.p.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-family:__Inter_Fallback_f367f3;src:local("Arial");ascent-override:90.49%;descent-override:22.56%;line-gap-override:0.00%;size-adjust:107.06%}.__className_f367f3{font-family:__Inter_f367f3,__Inter_Fallback_f367f3;font-style:normal}*{margin:0;padding:0;box-sizing:border-box}:root{--primary-color:#374151;--primary-dark:#1f2937;--primary-light:#4b5563;--secondary-color:#6b7280;--text-primary:#111827;--text-secondary:#4b5563;--text-light:#9ca3af;--bg-primary:#fff;--bg-secondary:#f9fafb;--bg-tertiary:#f3f4f6;--bg-dark:#1f2937;--border-color:#e5e7eb;--accent-gray:#6b7280;--shadow-sm:0 1px 2px 0 rgba(0,0,0,.05);--shadow-md:0 4px 6px -1px rgba(0,0,0,.1);--shadow-lg:0 10px 15px -3px rgba(0,0,0,.1);--shadow-xl:0 20px 25px -5px rgba(0,0,0,.1);--shadow-glow:0 0 40px -10px rgba(55,65,81,.25);--transition:all 0.3s cubic-bezier(0.4,0,0.2,1);--transition-bounce:all 0.4s cubic-bezier(0.34,1.56,0.64,1)}body{font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;line-height:1.6;color:var(--text-primary);background-color:var(--bg-primary);overflow-x:hidden}body:before{content:"";position:fixed;top:0;left:0;right:0;bottom:0;background:radial-gradient(ellipse 80% 50% at 50% -20%,rgba(243,244,246,.9),transparent),radial-gradient(ellipse 60% 40% at 100% 50%,rgba(249,250,251,.6),transparent),radial-gradient(ellipse 60% 40% at 0 80%,rgba(243,244,246,.5),transparent);pointer-events:none;z-index:-1}.container{max-width:1400px;margin:0 auto;padding:0 2rem}.navbar{position:fixed;top:0;left:0;right:0;background:hsla(0,0%,100%,.98);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-bottom:1px solid var(--border-color);z-index:1000;transition:var(--transition)}.navbar.scrolled{box-shadow:0 1px 3px 0 rgba(0,0,0,.1);background:#fff}.navbar .container{display:flex;justify-content:space-between;align-items:center;padding:1rem 2rem}.nav-brand{font-size:1.5rem;font-weight:700;color:var(--text-primary);letter-spacing:-.5px;position:relative}.nav-brand:after{content:"";position:absolute;bottom:-4px;left:0;width:100%;height:2px;background:var(--text-primary);transform:scaleX(0);transition:transform .3s ease}.navbar:hover .nav-brand:after{transform:scaleX(1)}.nav-menu{display:flex;list-style:none;gap:2rem}.nav-link{text-decoration:none;color:var(--text-primary);font-weight:500;transition:var(--transition);position:relative;display:inline-block}.nav-link:after{content:"";position:absolute;bottom:-4px;left:0;width:0;height:2px;background:var(--text-primary);transition:width .3s ease}.nav-link:hover{transform:translateY(-1px)}.nav-link:hover:after{width:100%}.nav-toggle{display:none;flex-direction:column;background:none;border:none;cursor:pointer;gap:4px}.nav-toggle span{width:25px;height:2px;background:var(--text-primary);transition:var(--transition)}.hero{min-height:auto;position:relative;padding:10rem 0 4rem;background:linear-gradient(135deg,#f9fafb,#fff);border-bottom:1px solid var(--border-color)}.hero,.hero .container{display:flex;align-items:center;justify-content:center}.hero .container{text-align:center}.hero-content{animation:fadeInUp .8s ease-out}.hero-title{font-size:clamp(2.5rem,5vw,4rem);font-weight:700;line-height:1.2;margin-bottom:2rem;position:relative}.greeting{display:block;font-size:1.5rem;font-weight:400;color:var(--text-secondary);margin-bottom:.5rem}.name{display:block;color:var(--text-primary);font-weight:700;font-size:clamp(3rem,6vw,5rem);letter-spacing:-2px;position:relative;margin-top:.5rem}.name:after{content:"";position:absolute;bottom:-8px;left:50%;transform:translateX(-50%);width:60px;height:4px;background:var(--text-primary);border-radius:2px}.hero-subtitle{font-size:1.25rem;color:var(--text-secondary);margin-bottom:2.5rem;max-width:600px;margin-left:auto;margin-right:auto;line-height:1.7}.hero-buttons{display:flex;gap:1rem;flex-wrap:wrap}.btn{padding:.875rem 2rem;border-radius:.5rem;font-weight:600;text-decoration:none;transition:var(--transition);border:none;cursor:pointer;font-size:1rem;display:inline-block}.btn-primary{background:var(--text-primary);color:#fff;box-shadow:var(--shadow-md)}.btn-primary:hover{background:var(--primary-dark);transform:translateY(-3px);box-shadow:var(--shadow-lg),0 4px 20px rgba(31,41,55,.2)}.btn-primary:active{transform:translateY(-1px)}.btn-secondary{background:transparent;color:var(--text-primary);border:2px solid var(--border-color)}.btn-secondary:hover{background:var(--text-primary);color:#fff;transform:translateY(-2px);border-color:var(--text-primary)}.about{padding:6rem 0;background:var(--bg-primary);border-top:1px solid var(--border-color)}.section-title{font-size:clamp(2rem,4vw,3rem);font-weight:700;text-align:center;margin-bottom:3rem;color:var(--text-primary);position:relative;padding-bottom:1.5rem}.section-title:after{content:"";position:absolute;bottom:0;left:50%;transform:translateX(-50%);width:0;height:3px;background:var(--text-primary);border-radius:2px;transition:width .5s ease}.section-title.visible:after{width:80px}.about-content{max-width:800px;margin:0 auto;text-align:center}.about-description{font-size:1.125rem;color:var(--text-secondary);margin-bottom:2rem;line-height:1.8}.skills{text-align:center}.skills h3{font-size:1.5rem;margin-bottom:1.5rem;color:var(--text-primary)}.skills .skill-category{font-size:1rem;font-weight:600;color:var(--text-primary);margin:1.5rem 0 .75rem;text-align:center}.skills .skill-category:first-of-type{margin-top:0}.skills-grid{justify-content:center;display:flex;flex-wrap:wrap;gap:.75rem}.skill-tag{padding:.5rem 1rem;background:var(--bg-tertiary);border-radius:.5rem;font-size:.875rem;font-weight:500;color:var(--text-primary);transition:var(--transition-bounce);display:inline-block}.skill-tag:hover{background:var(--text-primary);color:#fff;transform:translateY(-4px) scale(1.05);box-shadow:var(--shadow-md)}.projects{padding:8rem 0 6rem;background:var(--bg-secondary)}.projects-grid{display:grid;grid-template-columns:repeat(4,1fr);grid-gap:2rem;gap:2rem}.project-card{background:var(--bg-primary);border-radius:1rem;overflow:hidden;box-shadow:var(--shadow-md);transition:transform .4s cubic-bezier(.34,1.56,.64,1),box-shadow .35s ease,border-color .35s ease;cursor:pointer;border:1px solid transparent;opacity:0;transform:translateY(40px)}.project-card.reveal{opacity:1;transform:translateY(0)}.project-card.reveal:first-child{transition:opacity .6s ease-out .1s,transform .5s cubic-bezier(.34,1.56,.64,1) .1s,box-shadow .35s ease,border-color .35s ease}.project-card.reveal:nth-child(2){transition:opacity .6s ease-out .2s,transform .5s cubic-bezier(.34,1.56,.64,1) .2s,box-shadow .35s ease,border-color .35s ease}.project-card.reveal:nth-child(3){transition:opacity .6s ease-out .3s,transform .5s cubic-bezier(.34,1.56,.64,1) .3s,box-shadow .35s ease,border-color .35s ease}.project-card.reveal:nth-child(4){transition:opacity .6s ease-out .4s,transform .5s cubic-bezier(.34,1.56,.64,1) .4s,box-shadow .35s ease,border-color .35s ease}.project-card:hover{transform:translateY(-12px) scale(1.02);box-shadow:var(--shadow-xl),var(--shadow-glow);border-color:var(--border-color)}.project-image{position:relative;width:100%;height:200px;overflow:hidden;background:linear-gradient(135deg,#374151,#1f2937)}.project-image img{width:100%;height:100%;object-fit:cover;object-position:center;transition:var(--transition)}.project-card:hover .project-image img{transform:scale(1.05)}.project-image-smaller{background:#fff}.project-image-smaller img{object-fit:contain;object-position:center;transform:scale(.72)}.project-card:hover .project-image-smaller img{transform:scale(.78)}.project-image-cover{background:#fff}.project-image-cover img{object-fit:contain;object-position:center;width:100%;height:100%;transform:scale(1.02)}.project-card:hover .project-image-cover img{transform:scale(1.08)}.project-image-safeguard{background:#fff}.project-image-safeguard img{object-fit:contain;object-position:center;transform:scale(.88)}.project-card:hover .project-image-safeguard img{transform:scale(.92)}.project-image-close img{object-fit:cover;object-position:center;transform:scale(1.5)}.project-card:hover .project-image-close img{transform:scale(1.6)}.project-image-chatbt{background:#fff}.project-image-chatbt img{object-fit:cover;object-position:center;transform:scale(.8)}.project-card:hover .project-image-chatbt img{transform:scale(.85)}.project-placeholder{width:100%;height:100%;color:#fff;font-size:1.5rem;font-weight:600}.project-overlay,.project-placeholder{display:flex;align-items:center;justify-content:center}.project-overlay{position:absolute;top:0;left:0;right:0;bottom:0;background:linear-gradient(0deg,rgba(0,0,0,.9),rgba(0,0,0,.6));gap:1rem;opacity:0;transition:opacity .35s ease,-webkit-backdrop-filter .35s ease;transition:opacity .35s ease,backdrop-filter .35s ease;transition:opacity .35s ease,backdrop-filter .35s ease,-webkit-backdrop-filter .35s ease;-webkit-backdrop-filter:blur(0);backdrop-filter:blur(0)}.project-card:hover .project-overlay{opacity:1;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.project-overlay .project-link{transform:translateY(20px);opacity:0;transition:transform .35s ease,opacity .35s ease,background .2s ease;transition-delay:.05s}.project-card:hover .project-overlay .project-link{transform:translateY(0);opacity:1}.project-link{padding:.75rem 1.75rem;background:hsla(0,0%,100%,.95);color:var(--text-primary);text-decoration:none;border-radius:.5rem;font-weight:600;font-size:.95rem;transition:transform .25s ease,box-shadow .25s ease,background .2s ease;box-shadow:0 4px 14px rgba(0,0,0,.15);border:1px solid hsla(0,0%,100%,.3)}.project-link:after{content:" →";opacity:.8}.project-overlay .project-link:hover{background:#fff;transform:translateY(0) scale(1.05);box-shadow:0 8px 24px rgba(0,0,0,.25)}.project-info{padding:1.5rem;text-align:center}.project-title .title-gradient{color:#10b981}.project-title{font-size:1.5rem;font-weight:600;margin-bottom:.75rem;color:var(--text-primary);text-align:center}.project-description{color:var(--text-secondary);margin-bottom:1rem;line-height:1.6}.project-url{display:inline-block;font-size:.875rem;font-weight:600;color:#fff;background:var(--text-primary);text-decoration:none;padding:.5rem 1rem;border-radius:.5rem;margin-bottom:1rem;transition:transform .2s ease,box-shadow .2s ease,background .2s ease;box-shadow:0 2px 8px rgba(17,24,39,.25)}.project-url:hover{background:var(--primary-dark);transform:translateY(-2px);box-shadow:0 4px 12px rgba(17,24,39,.35)}.project-tags{display:flex;flex-wrap:wrap;gap:.5rem;justify-content:center}.project-tags span{padding:.25rem .75rem;background:var(--bg-tertiary);border-radius:.25rem;font-size:.75rem;font-weight:500;color:var(--text-secondary)}.contact{padding:6rem 0;background:var(--bg-primary);border-top:1px solid var(--border-color)}.contact-subtitle{text-align:center;color:var(--text-secondary);font-size:1.125rem;margin-bottom:3rem}.contact-content{max-width:600px;margin:0 auto}.contact-info{display:flex;flex-direction:column;gap:2rem;align-items:center;text-align:center}.contact-item{gap:1rem}.contact-icon,.contact-item{display:flex;align-items:center;justify-content:center}.contact-icon{font-size:1.5rem;width:48px;height:48px;background:var(--bg-tertiary);border-radius:.5rem;flex-shrink:0}.contact-item h3{font-size:1.125rem;margin-bottom:.25rem;color:var(--text-primary)}.contact-item a{color:var(--text-primary);text-decoration:none;transition:var(--transition)}.contact-item a:hover{color:var(--primary-dark);text-decoration:underline}.contact-form{gap:1.5rem}.contact-form,.form-group{display:flex;flex-direction:column}.form-group input,.form-group textarea{padding:.875rem;border:2px solid var(--border-color);border-radius:.5rem;font-family:inherit;font-size:1rem;transition:border-color .25s ease,box-shadow .25s ease,transform .2s ease;background:var(--bg-primary);color:var(--text-primary)}.form-group input:focus,.form-group textarea:focus{outline:none;border-color:var(--text-primary);box-shadow:0 0 0 3px rgba(55,65,81,.12);transform:translateY(-1px)}.form-group textarea{resize:vertical;min-height:120px}.footer{padding:2rem 0;background:var(--bg-secondary);text-align:center;color:var(--text-secondary);border-top:1px solid var(--border-color)}@keyframes fadeInUp{0%{opacity:0;transform:translateY(30px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@media (max-width:768px){.nav-menu{position:fixed;top:70px;left:-100%;flex-direction:column;background:#fff;width:100%;text-align:center;transition:var(--transition);box-shadow:var(--shadow-lg);padding:2rem 0;gap:0}.nav-menu.active{left:0}.nav-menu li{padding:1rem 0}.nav-toggle{display:flex}.nav-toggle.active span:first-child{transform:rotate(45deg) translate(8px,8px)}.nav-toggle.active span:nth-child(2){opacity:0}.nav-toggle.active span:nth-child(3){transform:rotate(-45deg) translate(7px,-7px)}.hero .container{text-align:center}.hero-buttons{justify-content:center}.projects-grid{grid-template-columns:repeat(2,1fr);gap:1rem}.container{padding:0 1rem}}@media (max-width:1024px){.projects-grid{grid-template-columns:repeat(2,1fr);gap:1.5rem}}@media (max-width:768px){.projects-grid{grid-template-columns:repeat(2,1fr);gap:1rem}}@media (max-width:480px){.hero-title{font-size:2rem}.hero-subtitle{font-size:1rem}.btn{padding:.75rem 1.5rem;font-size:.875rem}.projects-grid{grid-template-columns:1fr}}html{scroll-behavior:smooth}::selection{background:var(--text-primary);color:#fff}.details-page{padding:6rem 0 4rem}.details-hero{text-align:center;margin-bottom:3rem;padding:2rem 0;border-bottom:1px solid var(--border-color)}.details-hero h1{font-size:clamp(1.75rem,4vw,2.5rem);margin-bottom:.5rem}.details-hero .subtitle{color:var(--text-secondary);font-size:1.1rem;margin-bottom:1rem}.details-hero .stack{font-size:.9rem;color:var(--text-light);margin-bottom:1rem}.details-url{display:inline-block;color:#fff;font-weight:600;text-decoration:none;padding:.6rem 1.25rem;background:var(--text-primary);border-radius:.5rem;transition:transform .2s ease,box-shadow .2s ease,background .2s ease;box-shadow:0 4px 14px rgba(17,24,39,.25)}.details-url:hover{background:var(--primary-dark);transform:translateY(-2px);box-shadow:0 6px 20px rgba(17,24,39,.35)}.lang-toggle{position:fixed;top:90px;right:20px;z-index:999;display:flex;gap:0;background:var(--bg-tertiary);border-radius:.5rem;padding:4px;box-shadow:var(--shadow-md)}.lang-toggle button{padding:.5rem 1rem;border:none;background:transparent;cursor:pointer;font-weight:600;font-size:.875rem;color:var(--text-secondary);border-radius:.25rem;transition:var(--transition)}.lang-toggle button.active{background:var(--text-primary);color:#fff}.lang-toggle button:hover:not(.active){background:var(--border-color)}.details-content{max-width:800px;margin:0 auto}.details-section{margin-bottom:2.5rem}.details-section h2{font-size:1.35rem;margin-bottom:1rem;color:var(--text-primary);padding-bottom:.5rem;border-bottom:2px solid var(--border-color)}.details-section h3.details-subsection{font-size:1.1rem;margin:1.5rem 0 .5rem;color:var(--text-primary);font-weight:600}.details-section li,.details-section p{color:var(--text-secondary);line-height:1.75;margin-bottom:.75rem}.details-section ol.references-list{margin-left:1.25rem;color:var(--text-secondary);line-height:1.7}.details-section ol.references-list li{margin-bottom:.5rem}.details-section ul{margin-left:1.25rem;margin-bottom:1rem}.details-section strong{color:var(--text-primary)}.lang-content{display:none}.lang-content.active{display:block}.back-link{display:inline-flex;align-items:center;gap:.5rem;color:#fff;background:var(--text-primary);text-decoration:none;font-weight:600;padding:.5rem 1rem;border-radius:.5rem;margin-bottom:2rem;transition:transform .2s ease,box-shadow .2s ease;box-shadow:0 2px 8px rgba(17,24,39,.2)}.back-link:hover{background:var(--primary-dark);color:#fff;transform:translateY(-2px);box-shadow:0 4px 12px rgba(17,24,39,.3)}.details-section code{background:var(--bg-tertiary);padding:.2rem .5rem;border-radius:.25rem;font-size:.9em}.details-gallery{margin-bottom:3rem}.details-gallery h2{font-size:1.35rem;margin-bottom:1.25rem;color:var(--text-primary);padding-bottom:.5rem;border-bottom:2px solid var(--border-color);text-align:center}.gallery-grid{display:grid;grid-template-columns:repeat(2,1fr);grid-gap:1rem;gap:1rem;max-width:900px;margin:0 auto}.gallery-grid img{width:100%;height:auto;border-radius:.5rem;box-shadow:var(--shadow-md);object-fit:cover;aspect-ratio:16/10;transition:var(--transition)}.gallery-grid img:hover{transform:scale(1.02);box-shadow:var(--shadow-lg)}@media (max-width:600px){.gallery-grid{grid-template-columns:1fr}}