:root{--bg:#10130f;--mint:#b4e7ad;--pale-mint:#d4f3c8;--cyan:#b8f7a4;--lime:#a7df6f;--soft-lime:#ccebbd;--mint-bg:#c8e9bf;--accent-hover:#ddff9f;color:#fff;background:var(--bg);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:Montserrat,Avenir,Segoe UI,Helvetica,Arial,sans-serif}*{box-sizing:border-box}html{background:var(--bg);scroll-behavior:smooth}body{background:var(--bg);min-width:320px;margin:0}button,a{font:inherit}.portfolio{z-index:1;will-change:transform, filter, opacity;background:0 0;min-height:100vh;transition:transform .8s cubic-bezier(.22,1,.36,1),filter .8s cubic-bezier(.22,1,.36,1),opacity .8s cubic-bezier(.22,1,.36,1);position:relative;overflow:hidden}.portfolio.warp-active{filter:blur(8px)brightness(1.2);opacity:0;pointer-events:none;transform:scale(.92)translateZ(0)}.site-header{justify-content:space-between;align-items:flex-start;gap:32px;max-width:1170px;margin:0 auto;padding:26px 4px 0;animation:.56s cubic-bezier(.22,1,.36,1) .35s both slide-fade-in;display:flex}.brand{color:var(--mint);text-decoration:none;transition:color .18s,transform .18s}.brand:hover{color:var(--accent-hover);transform:translateY(-1px)}.brand strong{letter-spacing:0;font-size:clamp(2.7rem,5vw,3.8rem);font-weight:800;line-height:.95;display:block}.brand span{color:var(--cyan);margin-top:4px;font-size:1.14rem;line-height:1.25;display:block}.socials{align-items:center;gap:24px;padding-top:1px;display:flex}.socials a{color:var(--lime);justify-content:center;align-items:center;text-decoration:none;transition:color .18s,transform .18s;display:inline-flex}.socials a:hover{color:var(--accent-hover);transform:translateY(-3px)}.socials svg{fill:currentColor;width:43px;height:43px}.resume-link{border:2px solid var(--lime);border-radius:4px;gap:7px;min-height:38px;padding:0 10px;font-size:1.04rem;line-height:1;transition:background .18s,box-shadow .18s,transform .18s}.resume-link:hover{background:#a7df6f1a;box-shadow:0 0 0 4px #a7df6f17}.resume-link svg{width:18px;height:18px}.intro{grid-template-columns:246px minmax(0,840px);align-items:center;gap:50px;max-width:1170px;min-height:515px;margin:0 auto;padding:31px 4px 36px;animation:1s cubic-bezier(.22,1,.36,1) both page-rise;display:grid}.intro-copy{max-width:850px;color:var(--soft-lime)}.intro-copy h2{color:var(--pale-mint);margin:0 0 16px;font-size:clamp(2.1rem,4vw,3.3rem);font-weight:800;line-height:1}.intro-copy p{color:var(--soft-lime);margin:0;font-size:clamp(1.45rem,2.15vw,1.95rem);font-weight:400;line-height:1.22}.intro-copy p+p{margin-top:22px}.intro-copy strong{color:var(--pale-mint);font-weight:800}.profile-photo{background:#edf2df;border:4px solid #a9d68e;border-radius:50%;width:246px;height:246px;transition:border-color .2s,transform .24s;animation:1s cubic-bezier(.22,1,.36,1) both soft-pop;position:relative;overflow:hidden}.profile-photo:hover{border-color:var(--accent-hover);transform:translateY(-4px)scale(1.015)}.profile-photo img{object-fit:cover;object-position:center;width:100%;height:100%;display:block}.section-block{max-width:1170px;margin:0 auto;padding:34px 4px 0}.portfolio>section:nth-of-type(2){animation:.9s cubic-bezier(.22,1,.36,1) .35s both page-rise}.portfolio>section:nth-of-type(3){animation:.9s cubic-bezier(.22,1,.36,1) .45s both page-rise}.portfolio>section:nth-of-type(4){animation:.9s cubic-bezier(.22,1,.36,1) .55s both page-rise}.portfolio>section:nth-of-type(5){animation:.9s cubic-bezier(.22,1,.36,1) .65s both page-rise}.section-block h2,.project-detail h2{color:var(--pale-mint);margin:0 0 21px;font-size:2.02rem;font-weight:800;line-height:1.05}.project-grid,.education-grid,.detail-grid{gap:16px;display:grid}.project-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.education-grid{grid-template-columns:minmax(0,1fr)}.detail-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.project-card{cursor:pointer;text-align:left;width:100%;min-height:220px;color:inherit;background:#222;border:0;padding:0;transition:background .18s,box-shadow .22s,transform .22s;display:block;overflow:hidden;transform:translateY(0)}.project-card:hover{transform:translateY(-5px);box-shadow:0 18px 35px #0000003d}.project-card:focus-visible{outline:3px solid var(--lime);outline-offset:4px}.project-card:hover .project-image{filter:brightness(1.08)saturate(1.06)}.project-card-body{background:#242424;padding:0 23px 29px}.project-meta{color:#fff;z-index:1;background:linear-gradient(90deg,#101010bd,#10101040);width:calc(100% + 46px);min-height:34px;margin:-34px -23px 24px;padding:8px 23px 0;font-size:.9rem;font-weight:700;line-height:1;position:relative}.project-card-heading{justify-content:space-between;align-items:center;gap:20px;margin-bottom:3px;display:flex}.project-card-heading h3{color:var(--lime);margin:0;font-size:1.5rem;font-weight:800;line-height:1.05}.project-card-heading span{color:var(--lime);font-size:3rem;font-weight:300;line-height:.7;transition:transform .18s}.project-card:hover .project-card-heading span{transform:translate(6px)}.project-card-body p{color:#ddd;margin:0;font-size:1.17rem;line-height:1.36}.project-card-body p+p{margin-top:25px}.project-image{aspect-ratio:16/9;height:auto;position:relative;overflow:hidden}.screenshot-scene{background:#08100d}.screenshot-scene img,.screenshot-scene video,.project-hero-image img,.project-hero-image video{object-fit:cover;object-position:center top;width:100%;height:100%;display:block}.contact-block{padding-bottom:80px}.contact-container{grid-template-columns:1fr 1fr;gap:40px;margin-top:24px;display:grid}.contact-info h3{color:#fff;margin:20px 0 12px;font-size:1.6rem;font-weight:800}.contact-info p{color:#ccc;margin-bottom:24px;font-size:1.15rem;line-height:1.5}.contact-details{flex-direction:column;gap:16px;display:flex}.contact-detail-item{font-size:1.1rem}.contact-detail-item strong{color:var(--pale-mint);margin-right:8px}.contact-detail-item a{color:var(--lime);text-decoration:none;transition:color .15s}.contact-detail-item a:hover{color:var(--accent-hover);text-decoration:underline}.contact-form-wrapper{-webkit-backdrop-filter:blur(10px);background:#24242499;border:1px solid #a7df6f26;border-radius:8px;padding:32px;transition:border-color .2s}.contact-form-wrapper:focus-within{border-color:var(--lime)}.contact-form{flex-direction:column;gap:20px;display:flex}.form-group{flex-direction:column;gap:6px;display:flex}.form-group label{color:var(--pale-mint);font-size:.95rem;font-weight:700}.form-row{grid-template-columns:1fr 1fr;gap:16px;display:grid}.form-group input,.form-group select,.form-group textarea{color:#fff;background:#10130fcc;border:1px solid #ffffff1a;border-radius:4px;padding:12px 16px;font-family:inherit;font-size:1.05rem;transition:border-color .15s,box-shadow .15s}.form-group select{appearance:none;cursor:pointer;background-image:url("data:image/svg+xml;charset=UTF-8,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23b4e7ad' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3e%3cpolyline points='6 9 12 15 18 9'%3e%3c/polyline%3e%3c/svg%3e");background-position:right 16px center;background-repeat:no-repeat;background-size:16px;height:49px;padding-right:40px}.form-group select option{color:#fff;background:#171a16}.form-group input:focus,.form-group select:focus,.form-group textarea:focus{border-color:var(--lime);outline:none;box-shadow:0 0 0 3px #a7df6f26}.submit-btn{background:var(--lime);color:var(--bg);cursor:pointer;border:0;border-radius:4px;align-self:flex-start;padding:12px 28px;font-size:1.1rem;font-weight:800;transition:background .15s,transform .15s}.submit-btn:hover:not(:disabled){background:var(--accent-hover);transform:translateY(-2px)}.submit-btn:disabled{opacity:.6;cursor:not-allowed}.contact-success-message{text-align:center;flex-direction:column;justify-content:center;align-items:center;padding:40px 0;animation:.4s both soft-pop;display:flex}.success-icon{border:2px solid var(--lime);width:60px;height:60px;color:var(--lime);background:#a7df6f26;border-radius:50%;justify-content:center;align-items:center;margin-bottom:20px;font-size:32px;font-weight:700;display:flex}.contact-success-message h3{color:var(--lime);margin:0 0 10px;font-size:1.8rem;font-weight:800}.contact-success-message p{color:#ccc;max-width:320px;font-size:1.15rem;line-height:1.5}.info-card{color:#e9e7e7;background:#242424;border-radius:4px;min-height:116px;padding:26px 24px;transition:background .18s,transform .18s}.info-card:hover{background:#292929;transform:translateY(-2px)}.info-card h3{color:#fff;margin:20px 0 4px;font-size:1.49rem;font-weight:800;line-height:1.05}.info-card p,.info-card li{color:#e5e5e5;font-size:1.18rem;line-height:1.36}.skills-block{padding-bottom:48px}.skill-list{flex-wrap:wrap;gap:8px;padding-left:28px;display:flex}.skill-list span{border:1px solid var(--lime);min-height:36px;color:var(--lime);border-radius:7px;align-items:center;padding:0 9px;font-size:1.05rem;font-weight:700;transition:background .16s,color .16s,transform .16s;display:inline-flex}.skill-list span:hover{color:var(--accent-hover);background:#a7df6f24;transform:translateY(-2px)}.project-page{max-width:1154px;margin:0 auto;padding:36px 4px 0}.back-link{color:var(--lime);cursor:pointer;background:0 0;border:0;align-items:center;gap:11px;margin:0 0 22px;padding:0;font-size:1.5rem;transition:color .18s,transform .18s;animation:.9s cubic-bezier(.22,1,.36,1) .35s both slide-fade-in;display:inline-flex}.back-link:hover{color:var(--accent-hover);transform:translate(-4px)}.back-link svg{fill:currentColor;width:35px;height:35px}.back-link:focus-visible{outline:2px solid var(--lime);outline-offset:5px}.project-detail{width:100%}.project-hero-image{background:#08100d;height:452px;animation:1s cubic-bezier(.22,1,.36,1) both page-rise;overflow:hidden}.project-detail>h2{background:#172b1c;margin:-1px 0 15px;padding:16px 16px 15px;animation:.9s cubic-bezier(.22,1,.36,1) .1s both page-rise}.detail-grid{padding-bottom:22px;animation:.9s cubic-bezier(.22,1,.36,1) .35s both page-rise}.detail-grid .info-card{min-height:210px}.info-card ul{margin:28px 0 0;padding:0;list-style:none}.info-card li+li{margin-top:4px}.project-writeup{color:#dfe8e7;padding:28px 0 54px;animation:.9s cubic-bezier(.22,1,.36,1) .45s both page-rise}.project-writeup h2{color:#e7f1f0;margin:24px 0 18px;font-size:1.5rem;font-weight:800;line-height:1.1}.project-writeup p{color:#dce5e4;margin:0 0 18px;font-size:1.18rem;line-height:1.3}.project-writeup a{color:var(--lime);text-underline-offset:3px;align-items:baseline;gap:4px;font-weight:500;transition:color .16s,text-decoration-color .16s;display:inline-flex}.project-writeup a:hover{color:var(--accent-hover);-webkit-text-decoration-color:var(--accent-hover);text-decoration-color:var(--accent-hover)}.project-writeup svg{fill:currentColor;flex:none;width:17px;height:17px;transform:translateY(2px)}.project-writeup .code-link{color:var(--lime);margin-bottom:2px;font-size:1.45rem;font-weight:800;line-height:1.1}.project-links{flex-direction:column;align-items:flex-start;gap:8px;margin-bottom:20px;display:flex}.project-links .code-link{margin:0}.project-writeup .demo-link,.project-writeup .play-link{width:fit-content;color:var(--accent-hover);margin:10px 0 6px;display:flex}.project-writeup .play-link{margin-top:6px}.project-writeup .code-link.boxed{border:2px solid var(--pale-mint);border-radius:4px;margin:5px 0 0;padding:4px 6px;text-decoration-thickness:2px;transition:border-color .18s,background .18s,transform .18s}.project-writeup .code-link.boxed:hover{border-color:var(--accent-hover);background:#a7df6f1a;transform:translateY(-2px)}.video-embed-container{aspect-ratio:16/9;background:#000;border:1px solid #a7df6f40;border-radius:8px;width:100%;margin:18px 0 22px;transition:border-color .2s,box-shadow .2s;position:relative;overflow:hidden;box-shadow:0 12px 36px #00000080}.video-embed-container:hover{border-color:var(--accent-hover);box-shadow:0 16px 48px #a7df6f26,0 12px 36px #00000080}.video-embed-container iframe{border:0;width:100%;height:100%;position:absolute;top:0;left:0}.project-action-links{flex-wrap:wrap;gap:16px;margin:0 0 34px;display:flex}.project-btn{border:2px solid var(--lime);cursor:pointer;background:0 0;border-radius:6px;justify-content:center;align-items:center;gap:8px;padding:12px 22px;font-size:1.05rem;font-weight:700;text-decoration:none;transition:background .18s,border-color .18s,transform .18s,box-shadow .18s;display:inline-flex;color:var(--lime)!important}.project-btn:hover{border-color:var(--accent-hover);background:#a7df6f1f;transform:translateY(-3px);box-shadow:0 6px 20px #a7df6f26;color:var(--accent-hover)!important}.project-btn svg{fill:currentColor;width:18px;height:18px;transform:none!important}@keyframes slide-fade-in{0%{opacity:0;transform:translateY(-16px)}to{opacity:1;transform:translateY(0)}}@keyframes page-rise{0%{opacity:0;transform:translateY(22px)}to{opacity:1;transform:translateY(0)}}@keyframes soft-pop{0%{opacity:0;transform:scale(.94)}to{opacity:1;transform:scale(1)}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:1ms!important;animation-duration:1ms!important;animation-iteration-count:1!important}}@media (width<=900px){.site-header,.intro,.section-block,.project-page,.project-detail{padding-left:20px;padding-right:20px}.site-header{flex-direction:column;gap:18px}.socials{flex-wrap:wrap;gap:16px}.intro{grid-template-columns:1fr;gap:28px;min-height:0;padding-top:54px}.intro-copy p{font-size:1.35rem}.project-grid,.education-grid,.detail-grid{grid-template-columns:1fr}.contact-container{grid-template-columns:1fr;gap:30px}.video-hero{height:300px}}@media (width<=600px){.form-row{grid-template-columns:1fr;gap:20px}}.scroll-to-top{z-index:100;-webkit-backdrop-filter:blur(14px);width:50px;height:50px;color:var(--lime);cursor:pointer;opacity:0;visibility:hidden;background:radial-gradient(circle at 40% 35%,#b4e7ad1f,#10130fbf 70%);border:1.5px solid #a7df6f40;border-radius:50%;justify-content:center;align-items:center;padding:0;transition:opacity .4s cubic-bezier(.22,1,.36,1),visibility .4s cubic-bezier(.22,1,.36,1),transform .4s cubic-bezier(.22,1,.36,1),background .25s,border-color .25s,box-shadow .25s;display:flex;position:fixed;bottom:32px;left:50%;transform:translate(-50%,20px)scale(.7);box-shadow:0 0 16px #a7df6f14,0 4px 18px #0006}.scroll-to-top.visible{opacity:1;visibility:visible;animation:3s ease-in-out infinite cosmic-pulse;transform:translate(-50%)scale(1)}.scroll-to-top:before{content:"";-webkit-mask-composite:xor;opacity:0;background:conic-gradient(#0000 0%,#a7df6f59 25%,#0000 50%,#b8f7a433 75%,#0000 100%) border-box;border:1px solid #0000;border-radius:50%;transition:opacity .35s;position:absolute;inset:-5px;-webkit-mask-image:linear-gradient(#fff 0 0),linear-gradient(#fff 0 0);-webkit-mask-position:0 0,0 0;-webkit-mask-size:auto,auto;-webkit-mask-repeat:repeat,repeat;-webkit-mask-clip:padding-box,border-box;-webkit-mask-origin:padding-box,border-box;-webkit-mask-composite:xor;mask-composite:exclude;-webkit-mask-source-type:auto,auto;mask-mode:match-source,match-source}.scroll-to-top.visible:before{opacity:1;animation:6s linear infinite orbit-spin}.scroll-to-top:after{content:"";background:var(--accent-hover);opacity:0;border-radius:50%;width:5px;height:5px;transition:opacity .35s;position:absolute;top:-2px;right:-2px;box-shadow:0 0 6px 2px #ddff9f99}.scroll-to-top.visible:after{opacity:1;animation:2s ease-in-out infinite star-twinkle}.scroll-to-top:hover{border-color:var(--lime);color:var(--accent-hover);background:radial-gradient(circle at 40% 35%,#a7df6f38,#10130fd9 70%);animation:none;transform:translate(-50%,-4px)scale(1.12);box-shadow:0 0 30px #a7df6f4d,0 0 60px #a7df6f1a,0 8px 24px #00000073}.scroll-to-top:hover:before{opacity:1;animation:2s linear infinite orbit-spin}.scroll-to-top:active{transform:translate(-50%,-1px)scale(1.04)}.scroll-to-top svg{fill:currentColor;filter:drop-shadow(0 0 4px #a7df6f66);width:22px;height:22px;transition:filter .2s,transform .2s}.scroll-to-top:hover svg{filter:drop-shadow(0 0 8px #ddff9f99);transform:translateY(-1px)}@keyframes cosmic-pulse{0%,to{box-shadow:0 0 16px #a7df6f14,0 4px 18px #0006}50%{box-shadow:0 0 22px #a7df6f33,0 4px 18px #0006}}@keyframes orbit-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes star-twinkle{0%,to{opacity:1;transform:scale(1)}50%{opacity:.3;transform:scale(.6)}}@media (width<=900px){.scroll-to-top{width:46px;height:46px;bottom:24px}.scroll-to-top svg{width:20px;height:20px}}.motion-toggle{border:2px solid var(--lime);width:43px;height:43px;color:var(--lime);cursor:pointer;background:0 0;border-radius:4px;justify-content:center;align-items:center;margin-left:8px;padding:0;transition:background .18s,box-shadow .18s,transform .18s,border-color .18s,color .18s;display:inline-flex}.motion-toggle:hover{color:var(--accent-hover);border-color:var(--accent-hover);background:#a7df6f1a;transform:translateY(-2px);box-shadow:0 0 0 4px #a7df6f17}.motion-toggle svg{fill:currentColor;width:20px;height:20px}.portfolio.motion-disabled,.portfolio.motion-disabled *{transition-duration:0s!important;transition-delay:0s!important;animation-duration:0s!important;animation-delay:0s!important}
