:root{--black: #0a0a0a;--white: #f5f5f0;--gray-dark: #1a1a1a;--gray-mid: #2e2e2e;--gray-light: #888;--gray-faint: #e8e8e4;--accent: #f5f5f0;--mono: "Space Mono", monospace;--serif: "Playfair Display", serif;--sans: "DM Sans", sans-serif}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth}body{background:var(--black);color:var(--white);font-family:var(--sans);overflow-x:hidden;cursor:none}.cursor{position:fixed;width:12px;height:12px;background:var(--white);border-radius:50%;pointer-events:none;z-index:9999;transform:translate(-50%,-50%);transition:transform .1s,background .3s,width .3s,height .3s;mix-blend-mode:difference}.cursor-follower{position:fixed;width:40px;height:40px;border:1px solid rgba(245,245,240,.4);border-radius:50%;pointer-events:none;z-index:9998;transform:translate(-50%,-50%);transition:left .15s ease-out,top .15s ease-out,width .3s,height .3s,border-color .3s}.cursor.active{width:20px;height:20px}.cursor-follower.active{width:60px;height:60px;border-color:#f5f5f0cc}nav{position:fixed;top:0;left:0;right:0;z-index:100;display:flex;justify-content:space-between;align-items:center;padding:1.5rem 4rem;border-bottom:1px solid transparent;transition:background .4s,border-color .4s,padding .4s}nav.scrolled{background:#0a0a0aeb;border-bottom-color:#f5f5f014;padding:1rem 4rem;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.nav-logo{font-family:var(--mono);font-size:.85rem;letter-spacing:.2em;color:var(--white);text-decoration:none;opacity:.9}.nav-links{display:flex;gap:2rem;list-style:none}.nav-links a{font-family:var(--mono);font-size:.65rem;letter-spacing:.15em;color:var(--gray-light);text-decoration:none;text-transform:uppercase;transition:color .3s;position:relative}.nav-links a:after{content:"";position:absolute;bottom:-4px;left:0;width:0;height:1px;background:var(--white);transition:width .3s}.nav-links a:hover{color:var(--white)}.nav-links a:hover:after{width:100%}.nav-resume-btn{display:inline-flex;align-items:center;gap:.5rem;font-family:var(--mono);font-size:.63rem;letter-spacing:.15em;color:var(--black);background:var(--white);text-decoration:none;text-transform:uppercase;padding:.55rem 1.1rem;border:1px solid var(--white);transition:background .3s,color .3s,gap .3s;margin-left:.5rem}.nav-resume-btn:hover{background:transparent;color:var(--white);gap:.75rem}.nav-resume-btn svg{width:12px;height:12px;transition:transform .3s}.nav-resume-btn:hover svg{transform:translateY(1px)}#hero{position:relative;height:100vh;display:flex;align-items:center;justify-content:center;overflow:hidden}#canvas-bg{position:absolute;inset:0;width:100%;height:100%}.hero-content{position:relative;z-index:2;text-align:center}.hero-tag{font-family:var(--mono);font-size:.72rem;letter-spacing:.35em;color:var(--gray-light);text-transform:uppercase;margin-bottom:1.5rem;opacity:0;transform:translateY(20px);animation:fadeUp .8s .3s ease forwards}.hero-name{font-family:var(--serif);font-size:clamp(3.5rem,8vw,8rem);font-weight:900;line-height:.95;letter-spacing:-.02em;color:var(--white);opacity:0;transform:translateY(40px);animation:fadeUp 1s .5s ease forwards}.hero-name span{display:block;-webkit-text-stroke:1px rgba(245,245,240,.3);color:transparent;font-style:italic}.hero-role{font-family:var(--mono);font-size:.9rem;letter-spacing:.15em;color:var(--gray-light);margin-top:2rem;opacity:0;animation:fadeUp .8s .9s ease forwards}.hero-cta{margin-top:2.5rem;opacity:0;animation:fadeUp .8s 1.1s ease forwards;display:flex;align-items:center;justify-content:center;gap:1.2rem}.hero-resume-btn{display:inline-flex;align-items:center;gap:.65rem;font-family:var(--mono);font-size:.7rem;letter-spacing:.2em;text-transform:uppercase;text-decoration:none;padding:.85rem 2rem;color:var(--black);background:var(--white);border:1px solid var(--white);transition:background .3s,color .3s,gap .3s,transform .3s}.hero-resume-btn:hover{background:transparent;color:var(--white);gap:1rem}.hero-resume-btn svg{width:14px;height:14px;transition:transform .3s}.hero-resume-btn:hover svg{transform:translateY(2px)}.hero-resume-ghost{display:inline-flex;align-items:center;gap:.65rem;font-family:var(--mono);font-size:.7rem;letter-spacing:.2em;text-transform:uppercase;text-decoration:none;padding:.85rem 2rem;color:#f5f5f099;background:transparent;border:1px solid rgba(245,245,240,.2);transition:color .3s,border-color .3s}.hero-resume-ghost:hover{color:var(--white);border-color:#f5f5f099}.hero-scroll-indicator{position:absolute;bottom:2rem;left:50%;transform:translate(-50%);display:flex;flex-direction:column;align-items:center;gap:.5rem;opacity:0;animation:fadeUp .8s 1.4s ease forwards}.hero-scroll-indicator span{font-family:var(--mono);font-size:.62rem;letter-spacing:.3em;color:var(--gray-light);text-transform:uppercase}.scroll-line{width:1px;height:60px;background:linear-gradient(to bottom,var(--white),transparent);animation:scrollPulse 2s ease infinite}@keyframes scrollPulse{0%,to{opacity:.4;transform:scaleY(1)}50%{opacity:1;transform:scaleY(1.1)}}.photo-strip{position:absolute;right:4rem;top:50%;transform:translateY(-50%);opacity:0;animation:fadeUp 1s 1s ease forwards}.photo-frame{width:240px;height:300px;overflow:hidden;border:1px solid rgba(245,245,240,.15);position:relative}.photo-frame img{width:100%;height:100%;object-fit:cover;filter:grayscale(100%) contrast(1.1);transition:filter .6s}.photo-frame:hover img{filter:grayscale(60%) contrast(1.1)}.photo-frame:before{content:"";position:absolute;inset:0;background:linear-gradient(to bottom,transparent 60%,rgba(10,10,10,.7));z-index:1}.photo-caption{font-family:var(--mono);font-size:.62rem;letter-spacing:.2em;color:var(--gray-light);margin-top:.75rem;text-align:right;text-transform:uppercase}@keyframes fadeUp{to{opacity:1;transform:translateY(0)}}section{padding:8rem 4rem}.section-header{display:flex;align-items:center;gap:2rem;margin-bottom:5rem}.section-num{font-family:var(--mono);font-size:.7rem;letter-spacing:.2em;color:var(--gray-light)}.section-line{flex:1;height:1px;background:#f5f5f01a}.section-title{font-family:var(--serif);font-size:clamp(2.5rem,4vw,4rem);font-weight:700;letter-spacing:-.02em}#about{background:var(--gray-dark)}.about-grid{display:grid;grid-template-columns:1fr 1fr;gap:6rem;align-items:start}.about-text p{font-size:1.1rem;line-height:1.9;color:#f5f5f0b3;margin-bottom:1.5rem}.about-text p strong{color:var(--white);font-weight:500}.about-stats{display:grid;grid-template-columns:1fr 1fr;gap:2rem;margin-top:3rem}.stat-item{border-top:1px solid rgba(245,245,240,.15);padding-top:1.5rem}.stat-num{font-family:var(--serif);font-size:3rem;font-weight:900;color:var(--white);line-height:1}.stat-label{font-family:var(--mono);font-size:.65rem;letter-spacing:.2em;color:var(--gray-light);text-transform:uppercase;margin-top:.5rem}.about-image-wrap{position:relative}.about-img-frame{width:100%;aspect-ratio:3/4;overflow:hidden;border:1px solid rgba(245,245,240,.12);position:relative}.about-img-frame img{width:100%;height:100%;object-fit:cover;filter:grayscale(100%) contrast(1.05)}.about-img-frame:after{content:"";position:absolute;inset:0;background:linear-gradient(135deg,transparent 40%,rgba(10,10,10,.5))}.about-img-overlay{position:absolute;bottom:-1.5rem;right:-1.5rem;background:var(--black);border:1px solid rgba(245,245,240,.15);padding:1.5rem 2rem;font-family:var(--mono);font-size:.7rem;letter-spacing:.15em;color:var(--gray-light);text-transform:uppercase}#skills{background:var(--black)}.skills-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:1px;background:#f5f5f014;border:1px solid rgba(245,245,240,.08)}.skill-card{background:var(--black);padding:2.5rem 2rem;transition:background .3s;position:relative;overflow:hidden}.skill-card:before{content:"";position:absolute;bottom:0;left:0;right:0;height:2px;background:var(--white);transform:scaleX(0);transform-origin:left;transition:transform .4s ease}.skill-card:hover{background:var(--gray-dark)}.skill-card:hover:before{transform:scaleX(1)}.skill-icon{font-size:2rem;margin-bottom:1.2rem;display:block;filter:grayscale(1)}.skill-name{font-family:var(--mono);font-size:.75rem;letter-spacing:.1em;color:var(--white);text-transform:uppercase;margin-bottom:.5rem}.skill-desc{font-size:.82rem;color:var(--gray-light);line-height:1.6}.skill-bar-wrap{margin-top:1.2rem}.skill-bar-track{height:1px;background:#f5f5f026;position:relative;overflow:hidden}.skill-bar-fill{height:100%;background:var(--white);width:0;transition:width 1.2s ease}.projects-list{display:flex;flex-direction:column}.project-item{display:grid;grid-template-columns:80px 1fr auto;align-items:center;gap:3rem;padding:2.5rem 0;border-bottom:1px solid rgba(245,245,240,.08);cursor:pointer;transition:padding .3s;position:relative;text-decoration:none;color:inherit}.project-item:first-child{border-top:1px solid rgba(245,245,240,.08)}.project-item:hover{padding-left:1.5rem}.project-num{font-family:var(--serif);font-size:3.5rem;font-weight:900;color:#f5f5f014;line-height:1;transition:color .3s}.project-item:hover .project-num{color:#f5f5f02e}.project-info{flex:1}.project-title{font-family:var(--serif);font-size:1.8rem;font-weight:700;color:var(--white);margin-bottom:.5rem;transition:letter-spacing .3s}.project-item:hover .project-title{letter-spacing:.02em}.project-tags{display:flex;gap:.75rem;flex-wrap:wrap;margin-top:.75rem}.project-tag{font-family:var(--mono);font-size:.62rem;letter-spacing:.15em;color:var(--gray-light);border:1px solid rgba(245,245,240,.15);padding:.3rem .75rem;text-transform:uppercase}.project-tag-live{font-family:var(--mono);font-size:.62rem;letter-spacing:.15em;padding:.3rem .75rem;text-transform:uppercase;border:1px solid rgba(100,220,100,.4);color:#a0ffa0d9}.project-desc{font-size:.9rem;color:#f5f5f08c;line-height:1.6;margin-top:.5rem;max-width:60ch}.project-arrow{font-size:1.5rem;color:#f5f5f033;transition:color .3s,transform .3s;font-family:var(--mono)}.project-item:hover .project-arrow{color:var(--white);transform:translate(6px)}.project-arrow-soon{font-size:.75rem;font-family:var(--mono);letter-spacing:.12em;color:#f5f5f033;text-transform:uppercase}a.project-item:hover .project-arrow{transform:translate(4px,-4px)}#education{background:var(--black)}.edu-timeline{display:flex;flex-direction:column}.edu-item{display:grid;grid-template-columns:160px 48px 1fr;gap:0 2rem;padding:3.5rem 0;border-bottom:1px solid rgba(245,245,240,.07);transition:background .3s}.edu-item:first-child{border-top:1px solid rgba(245,245,240,.07)}.edu-year{font-family:var(--mono);font-size:.68rem;letter-spacing:.15em;color:var(--gray-light);text-align:right;padding-top:.25rem;line-height:1.6}.edu-dot-col{display:flex;flex-direction:column;align-items:center;gap:0}.edu-dot{width:10px;height:10px;border-radius:50%;border:1px solid rgba(245,245,240,.3);background:var(--black);flex-shrink:0;margin-top:.2rem;transition:background .3s,border-color .3s,box-shadow .3s}.edu-item:hover .edu-dot{background:var(--white);border-color:var(--white);box-shadow:0 0 12px #f5f5f066}.edu-vline{width:1px;flex:1;background:#f5f5f012;margin-top:.5rem}.edu-body{padding-bottom:.5rem}.edu-degree{font-family:var(--serif);font-size:1.5rem;font-weight:700;color:var(--white);margin-bottom:.4rem;transition:letter-spacing .3s}.edu-item:hover .edu-degree{letter-spacing:.01em}.edu-school{font-family:var(--mono);font-size:.68rem;letter-spacing:.15em;color:var(--gray-light);text-transform:uppercase;margin-bottom:1rem}.edu-desc{font-size:.9rem;color:#f5f5f080;line-height:1.8;max-width:65ch;margin-bottom:1.2rem}.edu-tags{display:flex;gap:.75rem;flex-wrap:wrap}.edu-tag{font-family:var(--mono);font-size:.6rem;letter-spacing:.15em;color:var(--white);border:1px solid rgba(245,245,240,.2);padding:.3rem .85rem;text-transform:uppercase}#certificates{background:var(--gray-dark)}.cert-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:1px;background:#f5f5f012;border:1px solid rgba(245,245,240,.07)}.cert-card{background:var(--gray-dark);padding:2.5rem 2rem;display:flex;flex-direction:column;gap:.75rem;position:relative;overflow:hidden;transition:background .3s}.cert-card:after{content:"";position:absolute;top:0;left:0;right:0;height:2px;background:var(--white);transform:scaleX(0);transform-origin:left;transition:transform .5s ease}.cert-card:hover{background:#202020}.cert-card:hover:after{transform:scaleX(1)}a.cert-card{text-decoration:none;color:inherit;display:flex;flex-direction:column;cursor:pointer}.cert-badge--link{color:#f5f5f040;transition:color .3s,letter-spacing .3s}a.cert-card:hover .cert-badge--link{color:#f5f5f0b3;letter-spacing:.25em}.cert-logo{font-size:2rem;line-height:1;margin-bottom:.3rem}.cert-issuer{font-family:var(--mono);font-size:.6rem;letter-spacing:.2em;color:var(--gray-light);text-transform:uppercase}.cert-name{font-size:1rem;font-weight:500;color:var(--white);line-height:1.4}.cert-date{font-family:var(--mono);font-size:.6rem;letter-spacing:.1em;color:var(--gray-light)}.cert-badge{margin-top:auto;display:inline-flex;align-items:center;gap:.4rem;font-family:var(--mono);font-size:.58rem;letter-spacing:.2em;color:#f5f5f059;text-transform:uppercase;padding-top:.75rem}.cert-badge:before{content:"";display:inline-block;width:6px;height:6px;border-radius:50%;background:#f5f5f040}#experience{background:var(--black)}.exp-list{display:flex;flex-direction:column}.exp-item{display:grid;grid-template-columns:160px 48px 1fr;gap:0 2rem;padding:3rem 0;border-bottom:1px solid rgba(245,245,240,.07)}.exp-item:first-child{border-top:1px solid rgba(245,245,240,.07)}.exp-year{font-family:var(--mono);font-size:.68rem;letter-spacing:.15em;color:var(--gray-light);text-align:right;padding-top:.25rem;line-height:1.6}.exp-dot-col{display:flex;flex-direction:column;align-items:center}.exp-dot{width:10px;height:10px;border-radius:50%;border:1px solid rgba(245,245,240,.3);background:var(--black);flex-shrink:0;margin-top:.2rem;transition:background .3s,border-color .3s,box-shadow .3s}.exp-item:hover .exp-dot{background:var(--white);border-color:var(--white);box-shadow:0 0 12px #f5f5f066}.exp-vline{width:1px;flex:1;background:#f5f5f012;margin-top:.5rem}.exp-title{font-family:var(--serif);font-size:1.5rem;font-weight:700;color:var(--white);margin-bottom:.4rem}.exp-org{font-family:var(--mono);font-size:.68rem;letter-spacing:.15em;color:var(--gray-light);text-transform:uppercase;margin-bottom:1rem}.exp-desc{font-size:.9rem;color:#f5f5f080;line-height:1.8;max-width:65ch}.exp-desc li{margin-bottom:.5rem;list-style:none;padding-left:1rem;position:relative}.exp-desc li:before{content:"—";position:absolute;left:0;color:#f5f5f040}#achievements{background:var(--gray-dark)}.ach-list{display:flex;flex-direction:column}.ach-item{display:grid;grid-template-columns:56px 1fr 72px;align-items:start;gap:2.5rem;padding:2.5rem 0;border-bottom:1px solid rgba(245,245,240,.07);transition:padding-left .3s;cursor:default}.ach-item:first-child{border-top:1px solid rgba(245,245,240,.07)}.ach-item:hover{padding-left:1rem}.ach-icon{font-size:1.8rem;line-height:1;padding-top:.2rem;filter:grayscale(1);transition:filter .3s,transform .3s}.ach-item:hover .ach-icon{filter:grayscale(0);transform:scale(1.15)}.ach-title{font-family:var(--serif);font-size:1.35rem;font-weight:700;color:var(--white);margin-bottom:.35rem;transition:letter-spacing .3s}.ach-item:hover .ach-title{letter-spacing:.01em}.ach-sub{font-family:var(--mono);font-size:.63rem;letter-spacing:.12em;color:var(--gray-light);text-transform:uppercase;margin-bottom:.75rem}.ach-desc{font-size:.875rem;color:#f5f5f080;line-height:1.75;max-width:65ch}.ach-rank{font-family:var(--serif);font-size:1rem;font-weight:900;color:#f5f5f01a;text-align:right;padding-top:.2rem;transition:color .3s;white-space:nowrap;letter-spacing:.05em}.ach-item:hover .ach-rank{color:#f5f5f04d}#contact{background:var(--black)}.contact-wrap{display:grid;grid-template-columns:1fr 1fr;gap:6rem;align-items:start}.contact-headline{font-family:var(--serif);font-size:clamp(2rem,4vw,3.5rem);font-weight:900;line-height:1.1;margin-bottom:2rem}.contact-headline em{font-style:italic;color:transparent;-webkit-text-stroke:1px rgba(245,245,240,.5)}.contact-sub{font-size:1rem;color:#f5f5f080;line-height:1.8;margin-bottom:3rem}.contact-links{display:flex;flex-direction:column;gap:1.5rem}.contact-link{display:flex;align-items:center;gap:1.5rem;text-decoration:none;color:var(--white);border-bottom:1px solid rgba(245,245,240,.1);padding-bottom:1.5rem;transition:gap .3s}.contact-link:hover{gap:2rem}.contact-link-icon{width:42px;height:42px;border:1px solid rgba(245,245,240,.2);display:flex;align-items:center;justify-content:center;font-size:1.1rem;transition:background .3s,border-color .3s}.contact-link:hover .contact-link-icon{background:var(--white);color:var(--black);border-color:var(--white)}.contact-link-text{font-family:var(--mono);font-size:.8rem;letter-spacing:.1em}.contact-link-sub{font-size:.75rem;color:var(--gray-light);margin-top:.2rem}.form-group{margin-bottom:1.5rem}.form-group label{display:block;font-family:var(--mono);font-size:.65rem;letter-spacing:.2em;color:var(--gray-light);text-transform:uppercase;margin-bottom:.75rem}.form-group input,.form-group textarea{width:100%;background:transparent;border:none;border-bottom:1px solid rgba(245,245,240,.2);color:var(--white);font-family:var(--sans);font-size:1rem;padding:.75rem 0;outline:none;transition:border-color .3s}.form-group input:focus,.form-group textarea:focus{border-bottom-color:var(--white)}.form-group textarea{resize:none;height:120px}.btn-send{display:inline-flex;align-items:center;gap:1rem;background:var(--white);color:var(--black);border:none;padding:1.1rem 2.5rem;font-family:var(--mono);font-size:.75rem;letter-spacing:.2em;text-transform:uppercase;cursor:pointer;transition:background .3s,color .3s,gap .3s}.btn-send:hover{background:var(--gray-dark);color:var(--white);gap:1.5rem}.btn-arrow{transition:transform .3s}.btn-send:hover .btn-arrow{transform:translate(4px)}footer{background:var(--gray-dark);border-top:1px solid rgba(245,245,240,.08);padding:3rem 4rem;display:flex;justify-content:space-between;align-items:center}.footer-logo{font-family:var(--serif);font-size:1.2rem;font-weight:700;color:var(--white)}.footer-copy{font-family:var(--mono);font-size:.65rem;letter-spacing:.15em;color:var(--gray-light);text-transform:uppercase}.footer-socials{display:flex;gap:1.5rem}.footer-socials a{font-family:var(--mono);font-size:.65rem;letter-spacing:.15em;color:var(--gray-light);text-decoration:none;text-transform:uppercase;transition:color .3s}.footer-socials a:hover{color:var(--white)}.resume-fab{position:fixed;bottom:2rem;right:2rem;z-index:200;display:flex;align-items:center;gap:0;overflow:hidden;background:var(--white);color:var(--black);border:1px solid var(--white);font-family:var(--mono);font-size:.65rem;letter-spacing:.15em;text-decoration:none;text-transform:uppercase;padding:.75rem;transition:padding .4s ease,gap .4s ease,background .3s,color .3s;box-shadow:0 4px 24px #00000080}.resume-fab:hover{padding:.75rem 1.4rem;gap:.6rem}.resume-fab svg{width:16px;height:16px;flex-shrink:0}.resume-fab-label{max-width:0;overflow:hidden;white-space:nowrap;transition:max-width .4s ease}.resume-fab:hover .resume-fab-label{max-width:120px}.reveal{opacity:0;transform:translateY(40px);transition:opacity .9s ease,transform .9s ease}.reveal.visible{opacity:1;transform:translateY(0)}.reveal-delay-1{transition-delay:.1s}.reveal-delay-2{transition-delay:.2s}.reveal-delay-3{transition-delay:.3s}.reveal-delay-4{transition-delay:.4s}@media(max-width:900px){nav{padding:1.5rem 2rem}.nav-links{display:none}section{padding:5rem 2rem}.about-grid,.contact-wrap{grid-template-columns:1fr;gap:3rem}.photo-strip{display:none}.hero-content{padding:0 2rem}footer{flex-direction:column;gap:1.5rem;text-align:center}.edu-item,.exp-item{grid-template-columns:1fr;gap:.75rem}.edu-dot-col,.exp-dot-col{display:none}.edu-year,.exp-year{text-align:left}.ach-item{grid-template-columns:44px 1fr}.ach-rank{display:none}}#projects{background:var(--gray-dark)}.projects-list{margin-top:0;display:flex;flex-direction:column;gap:2.5rem}.project-item{position:relative;display:grid;grid-template-columns:48% 1fr;align-items:center;gap:3rem;padding:2.5rem;border-radius:20px;overflow:hidden;text-decoration:none;color:inherit;cursor:pointer;background:#ffffff08;border:1px solid rgba(255,255,255,.07);transition:transform .5s cubic-bezier(.23,1,.32,1),border-color .5s ease,box-shadow .5s ease}.project-item:hover{transform:translateY(-6px);border-color:#ffffff2e;box-shadow:0 24px 60px #00000080}.project-preview-wrap{grid-column:1;grid-row:1;position:relative;border-radius:12px;overflow:hidden;border:1px solid rgba(255,255,255,.08);width:100%;min-width:0;align-self:stretch}.project-preview{width:100%;height:100%;min-height:260px;object-position:center;object-fit:cover;display:block;filter:brightness(.95) saturate(1.05);transition:transform .7s cubic-bezier(.23,1,.32,1),filter .5s ease}.project-item:hover .project-preview{transform:scale(1.04);filter:brightness(1) saturate(1.1)}.project-preview-wrap:before{content:"";position:absolute;top:0;left:0;right:0;height:2px;background:linear-gradient(90deg,transparent,rgba(245,245,240,.6),transparent);transform:scaleX(0);transform-origin:left;transition:transform .55s cubic-bezier(.23,1,.32,1);z-index:2}.project-item:hover .project-preview-wrap:before{transform:scaleX(1)}.project-info{grid-column:2;grid-row:1;display:flex;flex-direction:column;align-items:flex-start;min-width:0;z-index:2}.project-num{font-family:var(--mono);font-size:.62rem;letter-spacing:.25em;color:var(--gray-light);margin-bottom:.9rem;text-transform:uppercase}.project-title{font-family:var(--serif);font-size:clamp(1.4rem,2vw,2rem);font-weight:700;line-height:1.15;letter-spacing:-.02em;color:var(--white);margin-bottom:.9rem;transition:letter-spacing .35s ease}.project-item:hover .project-title{letter-spacing:-.01em}.project-desc{font-size:.88rem;line-height:1.8;color:#f5f5f080;margin-bottom:1.5rem;max-width:100%}.project-tags{display:flex;flex-wrap:wrap;gap:.5rem}.project-tag{font-family:var(--mono);font-size:.58rem;letter-spacing:.18em;text-transform:uppercase;color:var(--gray-light);border:1px solid rgba(245,245,240,.12);padding:.32rem .75rem;background:transparent;transition:color .3s,border-color .3s}.project-item:hover .project-tag{color:#f5f5f0bf;border-color:#f5f5f040}.project-tag-live{font-family:var(--mono);font-size:.58rem;letter-spacing:.18em;text-transform:uppercase;color:#a0ffa0e6;border:1px solid rgba(100,220,100,.35);padding:.32rem .75rem;background:transparent;display:inline-flex;align-items:center;gap:.4rem}.project-tag-live:before{content:"";width:5px;height:5px;border-radius:50%;background:#a0ffa0e6;flex-shrink:0;animation:live-pulse 2.2s ease-in-out infinite}@keyframes live-pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.35;transform:scale(.7)}}.project-arrow{position:absolute;bottom:1.75rem;right:1.75rem;width:40px;height:40px;border-radius:50%;border:1px solid rgba(245,245,240,.12);display:flex;align-items:center;justify-content:center;font-size:1rem;font-family:var(--mono);color:#f5f5f040;transition:color .4s ease,background .4s ease,border-color .4s ease,transform .4s cubic-bezier(.23,1,.32,1)}a.project-item:hover .project-arrow{color:var(--black);background:var(--white);border-color:var(--white);transform:translate(3px,-3px) rotate(-45deg)}.project-arrow-soon{position:absolute;bottom:1.75rem;right:1.75rem;font-family:var(--mono);font-size:.58rem;letter-spacing:.2em;text-transform:uppercase;color:#f5f5f033;border:1px solid rgba(245,245,240,.08);padding:.4rem .85rem}@media(max-width:900px){.projects-list{gap:1.5rem}.project-item{grid-template-columns:1fr;padding:1.75rem;gap:1.5rem}.project-preview-wrap{grid-column:1;grid-row:1}.project-info{grid-column:1;grid-row:2}.project-title{font-size:1.5rem}.project-arrow,.project-arrow-soon{display:none}}@media(max-width:480px){.project-item{padding:1.4rem;border-radius:14px}.project-desc{font-size:.83rem}}.skill-icon-wrap{width:52px;height:52px;display:flex;align-items:center;justify-content:center;background:#ffffff0a;border:1px solid rgba(255,255,255,.08);border-radius:14px;margin-bottom:1rem;transition:background .3s ease,border-color .3s ease}.skill-card:hover .skill-icon-wrap{background:#ffffff14;border-color:#ffffff29}.skill-devicon{width:28px;height:28px;object-fit:contain;display:block}.skill-icon-wrap--invert .skill-devicon{filter:invert(1)}.skill-bar-wrap{display:flex;align-items:center;gap:.6rem;margin-top:.75rem}.skill-bar-pct{font-size:.7rem;font-weight:600;color:#ffffff59;letter-spacing:.04em;min-width:2.2rem;text-align:right}.project-tag-doc{font-size:.85rem;padding:.3rem .8rem;border-radius:4px;text-decoration:none;font-weight:500;display:inline-flex;align-items:center;gap:.4rem;cursor:pointer;transition:all .25s ease-in-out;background:#00c48c14;color:#00c48c;border:1px solid rgba(0,196,140,.25)}.project-tag-doc:hover{background:#00c48c;color:#fff;border-color:#00c48c;box-shadow:0 4px 12px #00c48c33;transform:translateY(-1px)}.projects-section{padding:8rem 2rem;max-width:1400px;margin:auto}.section-title{text-align:center;font-size:3rem;font-weight:700;color:#fff;margin-bottom:4rem;letter-spacing:-1px}.projects-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(370px,1fr));gap:2rem}.project-card{background:#121212d9;border:1px solid rgba(255,255,255,.06);border-radius:24px;overflow:hidden;transition:all .45s ease;-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);position:relative}.project-card:before{content:"";position:absolute;top:0;left:0;width:100%;height:100%;background:linear-gradient(135deg,rgba(0,255,170,.08),transparent,transparent);opacity:0;transition:.5s}.project-card:hover:before{opacity:1}.project-card:hover{transform:translateY(-10px);border:1px solid rgba(0,255,170,.25);box-shadow:0 0 20px #00ffaa14,0 20px 50px #0009}.project-image{width:100%;height:240px;object-fit:cover;transition:1s}.project-card:hover .project-image{transform:scale(1.05)}.project-content{padding:1.8rem}.project-content h3{color:#fff;font-size:1.5rem;margin-bottom:.8rem}.project-content p{color:#9ca3af;line-height:1.8;margin-bottom:1.5rem;font-size:.95rem}.tech-stack{display:flex;flex-wrap:wrap;gap:.6rem;margin-bottom:1.7rem}.tech-badge{padding:.45rem .9rem;border-radius:30px;font-size:.8rem;color:#0fa;background:#00ffaa14;border:1px solid rgba(0,255,170,.15)}.project-links{display:flex;gap:1rem}.project-links a{flex:1;text-align:center;text-decoration:none;padding:.9rem;border-radius:12px;font-size:.95rem;font-weight:600;transition:.4s}.project-links a:first-child{color:#fff;border:1px solid rgba(255,255,255,.08);background:#ffffff0a}.project-links a:last-child{color:#000;background:linear-gradient(135deg,#0fa,#0c8)}.project-links a:hover{transform:translateY(-3px)}@media(max-width:768px){.section-title{font-size:2.2rem}.projects-grid{grid-template-columns:1fr}.project-image{height:200px}.project-links{flex-direction:column}}.project-metrics{display:flex;flex-wrap:wrap;gap:8px;margin:10px 0 12px}.project-metric{font-size:10px;font-family:monospace;letter-spacing:.05em;color:#fff6;border:1px solid rgba(255,255,255,.1);padding:3px 8px;border-radius:2px;text-transform:uppercase;display:inline-flex;align-items:center}.project-tag-github{display:inline-flex;align-items:center;justify-content:center;font-size:11px;font-family:monospace;letter-spacing:.08em;text-transform:uppercase;color:#fff9;border:1px solid rgba(255,255,255,.25);padding:4px 10px;border-radius:2px;text-decoration:none;transition:all .2s ease;cursor:pointer;background:transparent}.project-tag-github:hover{color:#fff;border-color:#ffffffb3;background:#ffffff0d}.project-tag-soon{display:inline-flex;align-items:center;justify-content:center;font-size:11px;font-family:monospace;letter-spacing:.08em;text-transform:uppercase;color:#ffc850cc;border:1px solid rgba(255,200,80,.3);padding:4px 10px;border-radius:2px}
