@keyframes gradientShift{0%{background-position:0 50%}50%{background-position:100% 50%}to{background-position:0 50%}}@keyframes moveStarsSlow{0%{background-position:0 0}to{background-position:-10000px 5000px}}@keyframes moveStarsFast{0%{background-position:0 0}to{background-position:-10000px 3000px}}@keyframes twinkle{0%,to{opacity:.8}50%{opacity:.4}}.bg-gradient-animate{background:linear-gradient(-45deg,#050505,#101018,#080808,#151520,#050505);background-size:400% 400%;animation:gradientShift 15s ease infinite;background-color:#050505;position:relative;z-index:0;overflow:hidden}.bg-gradient-animate:before{z-index:-2;background-image:radial-gradient(1px 1px at 20px 30px,#eee,transparent),radial-gradient(1px 1px at 40px 70px,#ddd,transparent),radial-gradient(1px 1px at 50px 160px,#fff,transparent),radial-gradient(1.5px 1.5px at 90px 40px,#eee,transparent),radial-gradient(1px 1px at 130px 80px,#ddd,transparent),radial-gradient(1.5px 1.5px at 160px 120px,#fff,transparent);background-size:200px 200px;opacity:.8;animation:moveStarsSlow 200s linear infinite,twinkle 5s ease-in-out infinite alternate}.bg-gradient-animate:after,.bg-gradient-animate:before{content:"";position:absolute;inset:0;width:100%;height:100%;background-repeat:repeat}.bg-gradient-animate:after{z-index:-1;background-image:radial-gradient(1.5px 1.5px at 50px 20px,#fff,transparent),radial-gradient(2px 2px at 100px 90px,#eee,transparent),radial-gradient(1.5px 1.5px at 150px 150px,#ddd,transparent);background-size:300px 300px;opacity:.6;animation:moveStarsFast 120s linear infinite}html{scroll-behavior:smooth}.sections-container{width:100%}.section{min-height:100vh}.page-transition,.section{width:100%;position:relative}.background{background-color:black;position:fixed;inset:0;z-index:999;pointer-events:none}.transition-overlay{height:100%;z-index:9999}.transition-container,.transition-overlay{position:fixed;top:0;left:0;width:100%;pointer-events:none}.transition-container{height:100vh;display:flex;z-index:1000}.transition-container>div{position:relative;height:0;width:20%;background-color:rgb(10,10,10);z-index:1000;border-right:1px solid;border-image:linear-gradient(180deg,rgba(255,255,255,0),rgba(255,255,255,.15),rgba(255,255,255,0)) 1}.transition-container>div:last-child{border-right:none}:focus{outline:none}:root{--project-card-min-height:450px}.project-row{position:relative}.project-card{width:100%}.project-card:hover{border-color:rgba(255,255,255,.18);box-shadow:0 18px 54px -8px rgba(0,0,0,.65),inset 0 0 0 1px rgba(255,255,255,.15)}.project-image-wrapper{position:relative;display:flex;align-items:center;justify-content:center;width:100%;max-width:700px;margin:0 auto;aspect-ratio:16/9;overflow:hidden}.project-image-wrapper:before{content:"";position:absolute;inset:0;pointer-events:none}.project-image{width:100%;height:100%;object-fit:cover;display:block;transition:transform 4s ease}.project-card:hover .project-image{transform:scale(1.07)}.project-content{padding:2rem 2.2rem;flex:1 1 auto;display:flex;flex-direction:column;position:relative;z-index:2}.project-title{font-size:1.5rem;margin-bottom:.5rem;font-weight:800;background:linear-gradient(90deg,#ffffff,#edf4f5);-webkit-background-clip:text;background-clip:text;color:transparent;line-height:1.3;text-shadow:0 1px 3px rgba(0,0,0,.3);letter-spacing:.5px}.project-categories{margin-bottom:1rem;display:flex;flex-wrap:wrap;gap:.25rem 0;line-height:1.5}.category-color-data-science{color:#60a5fa}.project-tech-stack{margin-bottom:1.2rem;display:flex;flex-wrap:wrap;gap:.6rem}.project-description{font-size:.95rem;color:#9ca3af;margin-bottom:1.8rem;line-height:1.6;flex-grow:1;max-width:640px}.project-links{display:flex}.project-button{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;padding:.6rem 1.2rem;border:1px solid #6b7280;border-radius:6px;text-decoration:none;font-weight:500;font-size:.9rem;cursor:none;transition:background-color .2s ease,border-color .2s ease,color .2s ease;text-align:center;background-color:transparent}.project-button.github{color:#d1d5db;border-color:#4b5563}.project-button.github:hover{background:rgba(55,65,81,.7);border-color:#9ca3af;color:#f9fafb}.project-button.preview{color:#d1d5db;border-color:#4b5563}.project-button.preview:hover{background:rgba(59,130,246,.4);border-color:#93c5fd;color:#f9fafb}.project-button.view-more{padding:.8rem 2rem;font-size:1rem;border-color:#9ca3af;color:#e5e7eb}.project-button.view-more:hover{background:rgba(75,85,99,.7);border-color:#d1d5db;color:#f9fafb}.modal-content .project-button,.modal-content .project-card{cursor:none}.projects-scroll-wrapper{width:100%;overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch;scroll-snap-type:x mandatory;display:flex;gap:4rem;padding:0 var(--dynamic-side-pad,6rem) 3rem var(--dynamic-side-pad,6rem);scrollbar-width:none;-ms-overflow-style:none}.projects-scroll-wrapper::-webkit-scrollbar{display:none}.projects-row{display:flex;gap:6rem;position:relative}.projects-row .project-row{flex:0 0 70vw;max-width:1000px;scroll-snap-align:center;position:relative;display:flex;justify-content:center}@media (min-width:1400px){.projects-row .project-row{flex-basis:55vw}}@media (max-width:820px){.projects-row .project-row{flex:0 0 85vw}.project-card{flex-direction:column;min-height:auto}.project-content{padding:1.6rem 1.6rem 1.2rem}.project-image-wrapper{flex:0 0 auto;max-width:100%;width:100%;min-height:240px;order:2}}.portfolio-section{padding:5rem 1rem;position:relative;overflow:hidden}:root{--assignment-card-min-height:450px}.section-heading{text-align:center;font-size:2.8rem;margin-bottom:4rem;color:#e5e7eb;font-weight:600;text-shadow:0 2px 10px rgba(0,0,0,.5)}.portfolio-grid{display:grid;grid-template-columns:1fr;gap:15.5rem;max-width:1100px;margin:0 auto;padding-left:3rem}.assignment-row{position:relative}.assignment-card{width:100%}.assignment-card:hover{border-color:rgba(255,255,255,.18);box-shadow:0 18px 54px -8px rgba(0,0,0,.65),inset 0 0 0 1px rgba(255,255,255,.15)}.assignment-image-wrapper{position:relative;display:flex;align-items:center;justify-content:center;width:100%;max-width:700px;margin:0 auto;aspect-ratio:16/9;overflow:hidden}.assignment-image-wrapper:before{content:"";position:absolute;inset:0;pointer-events:none}.assignment-image{width:100%;height:100%;object-fit:cover;display:block;transition:transform 4s ease}.assignment-card:hover .assignment-image{transform:scale(1.07)}.assignment-content{padding:2rem 2.2rem;flex:1 1 auto;display:flex;flex-direction:column;position:relative;z-index:2}.assignment-title{font-size:1.5rem;margin-bottom:.5rem;font-weight:800;background:linear-gradient(90deg,#ffffff,#edf4f5);-webkit-background-clip:text;background-clip:text;color:transparent;line-height:1.3;text-shadow:0 1px 3px rgba(0,0,0,.3);letter-spacing:.5px}.assignment-categories{margin-bottom:1rem;display:flex;flex-wrap:wrap;gap:.25rem 0;line-height:1.5}.category-text{font-size:.9rem;font-weight:500}.category-separator{color:#6b7280;margin:0 .4rem;font-weight:700}.category-color-ai-ml{color:#f472b6}.category-color-web-dev{color:#34d399}.category-color-frontend{color:#38bdf8}.category-color-backend{color:#fb923c}.category-color-full-stack{color:#a78bfa}.category-color-database{color:#60a5fa}.category-color-finance{color:#4ade80}.category-color-ocr{color:#7fb5b5}.category-color-default,.category-color-placeholder{color:#9ca3af}.assignment-tech-stack{margin-bottom:1.2rem;display:flex;flex-wrap:wrap;gap:.6rem}.tech-badge{background:rgba(255,255,255,.1);color:#cbd5e1;padding:.35rem .7rem;border-radius:5px;font-size:.8rem;font-weight:500;border:1px solid rgba(255,255,255,.15)}.assignment-description{font-size:.95rem;color:#9ca3af;margin-bottom:1.8rem;line-height:1.6;flex-grow:1;max-width:640px}.assignment-links{display:flex}.assignment-button{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;padding:.6rem 1.2rem;border:1px solid #6b7280;border-radius:6px;text-decoration:none;font-weight:500;font-size:.9rem;cursor:none;transition:background-color .2s ease,border-color .2s ease,color .2s ease;text-align:center;background-color:transparent}.assignment-button.github{color:#d1d5db;border-color:#4b5563}.assignment-button.github:hover{background:rgba(55,65,81,.7);border-color:#9ca3af;color:#f9fafb}.assignment-button.preview{color:#d1d5db;border-color:#4b5563}.assignment-button.preview:hover{background:rgba(59,130,246,.4);border-color:#93c5fd;color:#f9fafb}.view-more-container{text-align:center;margin-top:3rem}.assignment-button.view-more{padding:.8rem 2rem;font-size:1rem;border-color:#9ca3af;color:#e5e7eb}.assignment-button.view-more:hover{background:rgba(75,85,99,.7);border-color:#d1d5db;color:#f9fafb}.modal-backdrop{position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(0,0,0,.7);backdrop-filter:blur(5px);-webkit-backdrop-filter:blur(5px);display:flex;justify-content:center;align-items:center;z-index:10000;cursor:none}.modal-content{background:rgba(25,25,35,.8);backdrop-filter:blur(15px);-webkit-backdrop-filter:blur(15px);border-radius:18px;border:1px solid rgba(255,255,255,.15);box-shadow:0 15px 40px rgba(0,0,0,.5);padding:2.5rem;width:90%;max-width:1300px;height:85vh;position:relative;display:flex;flex-direction:column;cursor:none}.modal-close-button{position:absolute;top:1rem;right:1rem;background:none;border:none;color:#9ca3af;cursor:none;padding:.5rem;border-radius:50%;transition:color .2s ease,background-color .2s ease;z-index:1010}.modal-close-button:hover{color:#f3f4f6;background:rgba(255,255,255,.1)}.modal-heading{text-align:center;font-size:2.2rem;margin-bottom:2rem;color:#e5e7eb;font-weight:600;flex-shrink:0}.modal-grid-container{overflow-y:auto;flex-grow:1;overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:rgba(255,255,255,.2) transparent}.modal-grid-container::-webkit-scrollbar{width:8px}.modal-grid-container::-webkit-scrollbar-track{background:transparent}.modal-grid-container::-webkit-scrollbar-thumb{background:rgba(255,255,255,.2);border-radius:10px;border:2px solid transparent;background-clip:content-box}.modal-grid-container .portfolio-grid{padding:.5rem;max-width:none}.modal-content .assignment-button,.modal-content .assignment-card{cursor:none}.assignments-scroll-wrapper{width:100%;overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch;scroll-snap-type:x mandatory;display:flex;gap:4rem;padding:0 var(--dynamic-side-pad,6rem) 3rem var(--dynamic-side-pad,6rem);scrollbar-width:none;-ms-overflow-style:none}.assignments-scroll-wrapper::-webkit-scrollbar{display:none}.assignments-row{display:flex;gap:6rem;position:relative}.scroll-head-spacer,.scroll-tail-spacer{flex:0 0 var(--dynamic-side-pad,6rem);pointer-events:none}.assignments-row .assignment-row{flex:0 0 70vw;max-width:1000px;scroll-snap-align:center;position:relative;display:flex;justify-content:center}@media (min-width:1400px){.assignments-row .assignment-row{flex-basis:55vw}}@media (max-width:820px){.assignments-row .assignment-row{flex:0 0 85vw}.assignment-card{flex-direction:column;min-height:auto}.assignment-content{padding:1.6rem 1.6rem 1.2rem}.assignment-image-wrapper{flex:0 0 auto;max-width:100%;width:100%;min-height:240px;order:2}}