.site-header{z-index:1000;pointer-events:none;width:100%;position:fixed;top:14px;left:0}.site-header .container{-webkit-backdrop-filter:blur(16px)saturate(140%);backdrop-filter:blur(16px)saturate(140%);pointer-events:auto;background-color:#110e199e;border:1px solid #c39bd324;border-radius:999px;justify-content:space-between;align-items:center;max-width:1140px;padding:.55rem .6rem .55rem .85rem;transition:background-color .3s,box-shadow .3s,padding .3s,border-color .3s;display:flex;box-shadow:0 10px 30px -18px #000c}.site-header.scrolled .container{background-color:#110e19d9;border-color:#c39bd338;padding-top:.4rem;padding-bottom:.4rem;box-shadow:0 16px 40px -18px #000000e6}.logo{align-items:center;gap:.65rem;display:inline-flex}.logo-mark{background:linear-gradient(135deg, var(--primary-color), var(--primary-dark) 55%, var(--secondary-dark));width:36px;height:36px;color:var(--white);font-family:var(--font-heading);letter-spacing:.02em;border-radius:11px;justify-content:center;align-items:center;font-size:.85rem;font-weight:700;transition:transform .4s cubic-bezier(.22,1,.36,1);display:inline-flex;box-shadow:0 6px 16px -6px #9b59b6cc,inset 0 1px #ffffff40}.logo:hover .logo-mark{transform:rotate(-8deg)scale(1.06)}.logo-text{font-family:var(--font-heading);color:var(--white);white-space:nowrap;font-size:1.15rem;font-weight:700;line-height:1.2}.logo-surname{color:var(--text-muted);transition:color .3s}.logo:hover .logo-surname{color:var(--secondary-color)}.nav-links{gap:.25rem;list-style:none;display:flex;position:relative}.nav-links:before{content:"";height:100%;width:var(--ind-w,0);transform:translateX(var(--ind-x,0));opacity:var(--ind-o,0);pointer-events:none;background:linear-gradient(135deg,#9b59b647,#9b59b61f);border:1px solid #c39bd340;border-radius:999px;transition:transform .45s cubic-bezier(.22,1,.36,1),width .45s cubic-bezier(.22,1,.36,1),opacity .3s;position:absolute;top:0;left:0}.nav-links a{color:var(--text-muted);font-family:var(--font-ui);border-radius:999px;padding:.45rem .95rem;font-size:.95rem;font-weight:500;transition:color .3s;display:inline-block;position:relative}.nav-links a:hover,.nav-links a.active{color:var(--white)}.site-header nav{margin:0 auto}.language-switch{margin-left:.5rem}.header-cv{color:var(--white);font-family:var(--font-ui);background:linear-gradient(135deg,#9b59b647,#8e44ad24);border:1px solid #c39bd359;border-radius:999px;align-items:center;gap:.45rem;padding:8px 14px;font-size:.9rem;font-weight:500;transition:transform .25s,box-shadow .3s,border-color .3s;display:inline-flex}.header-cv svg{font-size:.8rem;transition:transform .3s}.header-cv:hover{color:var(--white);border-color:var(--primary-color);transform:translateY(-1px);box-shadow:0 8px 20px -10px #9b59b6e6}.header-cv:hover svg{transform:translateY(2px)}.nav-cv{display:none}.language-selector{display:inline-block;position:relative}.language-btn{border:1px solid var(--border-color);color:var(--white);font-family:var(--font-ui);cursor:pointer;background-color:#251e32b3;border-radius:999px;align-items:center;gap:6px;padding:8px 14px;font-size:.9rem;transition:background-color .3s,border-color .3s;display:flex}.language-btn:hover{border-color:var(--primary-color);background-color:var(--surface)}.language-icon{font-weight:700}.language-code{font-weight:600;display:none}.arrow-down{border:solid var(--white);border-width:0 2px 2px 0;margin-left:4px;padding:3px;transition:transform .3s;display:inline-block;transform:translateY(-2px)rotate(45deg)}.arrow-down.open{transform:translateY(2px)rotate(-135deg)}.language-dropdown{z-index:1;border:1px solid var(--border-color);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);background-color:#1c1727f5;border-radius:14px;min-width:150px;margin-top:8px;padding:6px;display:none;position:absolute;right:0;overflow:hidden;box-shadow:0 18px 40px -16px #000c}.language-dropdown.show{animation:.2s fadeUp;display:block}.language-dropdown a{color:var(--text-color);border-radius:9px;justify-content:space-between;gap:1rem;padding:10px 12px;transition:background-color .2s;display:flex}.language-dropdown a:hover{color:var(--white);background-color:#9b59b62e}.tick{color:var(--secondary-color)}.hamburger{cursor:pointer;background:0 0;border:none;border-radius:50%;margin-left:.5rem;padding:6px;display:none}.hamburger span{background-color:var(--text-color);width:22px;height:2px;transition:var(--transition);border-radius:2px;margin:5px;display:block}.hamburger.active .line1{transform:translateY(7px)rotate(45deg)}.hamburger.active .line2{opacity:0}.hamburger.active .line3{transform:translateY(-7px)rotate(-45deg)}@media screen and (max-width:768px){.site-header{top:10px}.site-header .container{border-radius:20px;width:calc(100% - 20px)}.nav-links{border:1px solid var(--border-color);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);opacity:0;visibility:hidden;background-color:#110e19fb;border-radius:18px;flex-direction:column;align-items:stretch;gap:.25rem;padding:.6rem;transition:opacity .25s,transform .25s,visibility .25s;position:absolute;top:calc(100% + 10px);left:0;right:0;transform:translateY(-8px)scale(.98);box-shadow:0 20px 40px -18px #000000e6}.nav-links:before{display:none}.nav-links.active{opacity:1;visibility:visible;transform:none}.nav-links a{border-radius:12px;padding:.8rem 1rem;font-size:1rem;display:block}.nav-links a:hover{background-color:#9b59b624}.header-cv{display:none}.nav-cv{border-top:1px solid var(--border-color);margin-top:.35rem;padding-top:.35rem;display:block}.nav-cv a{color:var(--primary-light);align-items:center;gap:.6rem;display:flex}.language-switch{margin-left:auto}.hamburger{display:block}}@media screen and (max-width:480px){.logo-text{font-size:1.05rem}.language-btn{padding:7px 11px;font-size:.85rem}.language-name{display:none}.language-code{display:inline}}@media screen and (max-width:380px){.logo-surname{display:none}}
.hero{background:var(--hero-gradient);border-bottom:1px solid var(--border-color);align-items:center;min-height:min(100vh,920px);padding:9rem 0 6rem;display:flex;position:relative;overflow:clip}.hero .container{z-index:1;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:3rem;display:flex;position:relative}.hero-content{flex:1.3;min-width:300px}.hero-content>*{animation:.9s cubic-bezier(.22,1,.36,1) both heroIn;animation-delay:calc(var(--d,0) * .11s + .15s)}.hero-badge{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);color:var(--primary-light);font-family:var(--font-ui);background-color:#1c172799;border:1px solid #c39bd338;border-radius:999px;align-items:center;gap:.5rem;margin-bottom:1.5rem;padding:6px 14px;font-size:.88rem;font-weight:500;display:inline-flex}.hero-content h1{color:var(--heading-color);letter-spacing:-.03em;margin-bottom:1.25rem;line-height:1.05}.hero-greeting{color:var(--text-muted);letter-spacing:-.01em;margin-bottom:.4rem;font-size:clamp(1.25rem,2.2vw,1.6rem);font-weight:500;display:block}.hero-name{background:linear-gradient(110deg, #f7f5fb 0%, var(--primary-light) 30%, var(--primary-color) 55%, var(--secondary-color) 85%, var(--primary-light) 100%);color:#0000;background-size:220% 100%;-webkit-background-clip:text;background-clip:text;padding-bottom:.08em;font-size:clamp(2.6rem,6.2vw,4.6rem);animation:9s ease-in-out infinite alternate name-shine;display:inline-block}@keyframes name-shine{0%{background-position:0%}to{background-position:100%}}.hero-tagline{max-width:36rem;color:var(--text-muted);margin-bottom:2.25rem;font-size:1.15rem;line-height:1.7}.cta-buttons{flex-wrap:wrap;gap:.85rem;display:flex}.hero-social{gap:.65rem;margin-top:2.25rem;display:flex}.hero-social a{border:1px solid var(--border-color);width:42px;height:42px;color:var(--text-muted);background-color:#1c172799;border-radius:50%;justify-content:center;align-items:center;font-size:1.1rem;display:flex}.hero-social a:hover{border-color:var(--primary-color);background-color:var(--primary-color);color:var(--white);transform:translateY(-3px);box-shadow:0 10px 22px -10px #9b59b6e6}.hero-photo{--size:340px;--orbit:calc(var(--size) * 1.36);width:var(--size);aspect-ratio:1;flex:none;margin:3rem 4.5rem 3rem 0;animation:1.3s cubic-bezier(.22,1,.36,1) .2s both photoIn;position:relative}.hero-photo:before{content:"";filter:blur(26px);background:radial-gradient(closest-side,#9b59b66b,#2ecc7124 55%,#0000 100%);border-radius:50%;animation:6s ease-in-out infinite alternate photoGlow;position:absolute;inset:-24%}.hero-photo__ring{background:conic-gradient(from 0deg, var(--primary-color), var(--secondary-color), var(--primary-light), var(--primary-color));border-radius:50%;animation:14s linear infinite spin;position:absolute;inset:0}.hero-photo__frame{border:6px solid var(--background-color);background-color:var(--surface);border-radius:50%;position:absolute;inset:5px;overflow:hidden}.hero-photo__frame img{object-fit:cover;object-position:50% 28%;transition:transform .8s cubic-bezier(.22,1,.36,1)}.hero-photo:hover .hero-photo__frame img{transform:scale(1.05)}.hero-orbit{width:var(--orbit);height:var(--orbit);margin:calc(var(--orbit) / -2) 0 0 calc(var(--orbit) / -2);border:1px dashed #c39bd333;border-radius:50%;animation:48s linear infinite spin;position:absolute;top:50%;left:50%}.hero-orbit ul{position:absolute;inset:0}.hero-orbit li{width:46px;height:46px;transform:rotate(calc(var(--i) * 60deg)) translateY(calc(var(--orbit) / -2)) rotate(calc(var(--i) * -60deg));margin:-23px 0 0 -23px;position:absolute;top:50%;left:50%}.hero-orbit li span{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);width:100%;height:100%;color:var(--primary-light);background-color:#1c1727d9;border:1px solid #c39bd347;border-radius:14px;justify-content:center;align-items:center;font-size:1.3rem;animation:48s linear infinite reverse spin;display:flex;box-shadow:0 10px 24px -12px #000000e6}.hero-orbit li:nth-child(2n) span{color:var(--secondary-light)}@keyframes photoIn{0%{opacity:0;filter:blur(10px);transform:scale(.9)}to{opacity:1;filter:none;transform:none}}@keyframes photoGlow{0%{opacity:.6;transform:scale(.95)}to{opacity:1;transform:scale(1.06)}}.hero-media{border:1px solid var(--border-color);border-radius:var(--radius);background-color:var(--surface);min-width:280px;max-width:560px;box-shadow:var(--shadow);flex:1;padding:1rem;animation:.6s both fadeUp}.hero-media video{border-radius:var(--radius-sm);width:100%;height:auto}@media screen and (max-width:1100px){.hero-photo{--size:290px;margin-right:3.5rem}}@media screen and (max-width:900px){.hero{min-height:0;padding:8rem 0 5rem}.hero .container{flex-direction:column;gap:2.5rem}.hero-content{text-align:center;min-width:0}.hero-tagline{margin-left:auto;margin-right:auto}.cta-buttons,.hero-social{justify-content:center}.hero-photo{--size:220px;order:-1;margin:2.5rem 0 1rem}.hero-orbit li{width:38px;height:38px;margin:-19px 0 0 -19px}.hero-orbit li span{border-radius:11px;font-size:1.05rem}.hero-media{width:100%;min-width:0;max-width:100%}}@media screen and (max-width:480px){.hero{padding:7rem 0 4rem}.hero-photo{--size:190px}.hero-tagline{font-size:1.02rem}}
.projects{background:radial-gradient(ellipse 60% 40% at 50% 0%, #9b59b61f, transparent 70%), var(--background-color)}.filter-bar{border:1px solid var(--border-color);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background-color:#1c172799;border-radius:999px;flex-wrap:wrap;justify-content:center;gap:.35rem;width:fit-content;max-width:100%;margin:-1.25rem auto 3rem;padding:.35rem;display:flex;position:relative}.filter-bar:before{content:"";width:var(--ind-w,0);height:var(--ind-h,0);background:linear-gradient(135deg, var(--primary-color), var(--primary-dark));transform:translate(var(--ind-x,0), var(--ind-y,0));border-radius:999px;transition:transform .45s cubic-bezier(.22,1,.36,1),width .45s cubic-bezier(.22,1,.36,1);position:absolute;top:0;left:0;box-shadow:0 8px 20px -10px #9b59b6e6}.filter-btn{color:var(--text-muted);font-family:var(--font-ui);cursor:pointer;background:0 0;border:none;border-radius:999px;align-items:center;gap:.5rem;padding:8px 16px;font-weight:500;transition:color .3s;display:inline-flex;position:relative}.filter-btn:hover,.filter-btn.active{color:var(--white)}.filter-count{min-width:1.5em;color:inherit;text-align:center;background-color:#ffffff14;border-radius:10px;padding:0 6px;font-size:.78rem;line-height:1.6}.filter-btn.active .filter-count{background-color:#ffffff38}.projects-grid{grid-template-columns:repeat(auto-fill,minmax(min(100%,320px),1fr));gap:1.75rem;display:grid}.project-cell{display:flex}.project-cell.is-visible{animation:.45s fadeUp}.project-card{border:1px solid var(--border-color);background:linear-gradient(180deg, #251e32a6, var(--surface) 45%);width:100%;box-shadow:var(--shadow);border-radius:16px;flex-direction:column;transition:transform .45s cubic-bezier(.22,1,.36,1),box-shadow .45s,border-color .3s;display:flex;overflow:hidden}.project-card:hover{border-color:#9b59b666;transform:translateY(-6px);box-shadow:0 24px 50px -24px #000000e6,0 0 0 1px #9b59b61f}.project-img{height:210px;display:block;position:relative;overflow:hidden}.project-img:after{content:"";pointer-events:none;background:linear-gradient(#0000,#1c17278c);height:45%;position:absolute;inset:auto 0 0}.project-img>:first-child{transition:transform .8s cubic-bezier(.22,1,.36,1)}.project-card:hover .project-img>:first-child{transform:scale(1.06)}.project-badges{z-index:1;flex-wrap:wrap;gap:.4rem;display:flex;position:absolute;top:12px;left:12px}.project-badges .badge{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);box-shadow:0 4px 12px #00000059}.project-info{flex-direction:column;flex:1;padding:1.5rem 1.6rem 1.6rem;display:flex}.project-meta{color:var(--text-muted);font-family:var(--font-ui);letter-spacing:.06em;text-transform:uppercase;flex-wrap:wrap;align-items:center;gap:.6rem;margin-bottom:.45rem;font-size:.78rem;font-weight:500;display:flex}.project-featured{background-color:var(--secondary-soft);color:var(--secondary-light);letter-spacing:.04em;border:1px solid #2ecc7159;border-radius:999px;align-items:center;gap:.35rem;padding:2px 9px;display:inline-flex}.project-info h3{letter-spacing:-.015em;margin-bottom:.55rem;font-size:1.4rem}.project-info h3 a{color:var(--heading-color);background:linear-gradient(90deg, var(--primary-light), var(--secondary-color)) left bottom / 0 2px no-repeat;transition:background-size .4s,color .3s}.project-info h3 a:hover{color:var(--white);background-size:100% 2px}.project-info>p:not(.project-meta){color:var(--text-muted);margin-bottom:1.1rem}.tag-list{flex-wrap:wrap;gap:.4rem;margin-bottom:1.5rem;display:flex}.tag{border:1px solid var(--border-color);background-color:var(--surface-2);color:var(--text-muted);border-radius:20px;padding:3px 10px;font-size:.78rem;font-weight:600}.tag--more{background-color:var(--primary-soft);color:var(--primary-light);border-color:#0000}.project-links{flex-wrap:wrap;align-items:center;gap:1rem;margin-top:auto;display:flex}.github-link{color:var(--text-muted);align-items:center;gap:.5rem;font-size:.9rem;display:inline-flex}.github-link svg{font-size:1.15rem}.github-link:hover{color:var(--white)}@media screen and (min-width:1024px){.projects-grid[data-filter=all] .project-cell--featured{grid-column:1/-1}.projects-grid[data-filter=all] .project-cell--featured .project-card{flex-direction:row}.projects-grid[data-filter=all] .project-cell--featured .project-img{flex:0 0 58%;height:auto;min-height:360px}.projects-grid[data-filter=all] .project-cell--featured .project-img:after{background:linear-gradient(90deg,#0000,#1c1727bf);width:35%;height:auto;inset:0 0 0 auto}.projects-grid[data-filter=all] .project-cell--featured .project-info{justify-content:center;padding:2.5rem}.projects-grid[data-filter=all] .project-cell--featured .project-info h3{font-size:1.9rem}.projects-grid[data-filter=all] .project-cell--featured .project-info>p:not(.project-meta){font-size:1.05rem}.projects-grid[data-filter=all] .project-cell--flip .project-card{flex-direction:row-reverse}.projects-grid[data-filter=all] .project-cell--flip .project-img:after{background:linear-gradient(270deg,#0000,#1c1727bf);inset:0 auto 0 0}}.projects-grid:not([data-filter=all]) .project-featured{display:none}.project-cover{width:100%;height:100%;color:var(--white);text-align:center;background-image:radial-gradient(#ffffff24 1.5px, transparent 1.5px), linear-gradient(135deg, var(--primary-color), var(--secondary-color));background-size:18px 18px,100% 100%;flex-direction:column;justify-content:center;align-items:center;gap:.75rem;padding:1.5rem;display:flex;position:relative;overflow:hidden}.project-cover:before{content:"";background:radial-gradient(circle at 30% 30%,#ffffff2e,#0000 45%);animation:18s ease-in-out infinite alternate drift-one;position:absolute;inset:-40%}.project-cover--markets{background-image:linear-gradient(135deg, var(--primary-color), var(--deep-purple));background-size:100% 100%}.project-cover--web{background-image:radial-gradient(#ffffff24 1.5px, transparent 1.5px), linear-gradient(135deg, var(--secondary-color), #16a085)}.project-cover__pattern{width:100%;height:100%;color:var(--white);position:absolute;inset:0}.project-cover__icon{opacity:.95;filter:drop-shadow(0 4px 8px #00000026);font-size:2.6rem;position:relative}.project-cover__title{font-family:var(--font-heading);text-shadow:0 2px 8px #00000026;font-size:1.35rem;font-weight:700;line-height:1.25;position:relative}.project-cover--large{gap:1rem}.project-cover--large .project-cover__icon{font-size:3.5rem}.project-cover--large .project-cover__title{font-size:2rem}.project-cover__image{object-fit:cover}@media screen and (max-width:480px){.projects-grid{gap:1.25rem}.filter-bar{border-radius:20px}.project-links{flex-direction:column;align-items:flex-start}}
.about{background:radial-gradient(ellipse 50% 40% at 0% 30%, #9b59b61a, transparent 70%), radial-gradient(ellipse 45% 35% at 100% 80%, #2ecc710f, transparent 70%), var(--background-alt);border-top:1px solid var(--border-color);border-bottom:1px solid var(--border-color)}.about-content{flex-wrap:wrap;gap:2rem;display:flex}.about-text{min-width:300px;color:var(--text-color);flex:2;font-size:1.08rem;line-height:1.8}.about-text p:first-child{color:var(--heading-color);font-size:1.15rem}.about-text p:last-child{margin-bottom:0}.skills{background:linear-gradient(180deg, #251e32b3, var(--surface));border:1px solid var(--border-color);min-width:300px;box-shadow:var(--shadow);border-radius:16px;flex:1;padding:1.75rem}.skills h3,.journey h3,.info-card h3{color:var(--primary-color);margin-bottom:1rem}.skill-group+.skill-group{margin-top:1.1rem}.skill-group h4{color:var(--text-muted);font-family:var(--font-ui);letter-spacing:.05em;text-transform:uppercase;margin-bottom:.5rem;font-size:.8rem;font-weight:500}.skill-tags{flex-wrap:wrap;gap:.5rem;display:flex}.skill-tag{color:var(--text-color);background-color:#9b59b61f;border:1px solid #c39bd338;border-radius:20px;align-items:center;gap:.4rem;padding:5px 11px;font-size:.88rem;transition:border-color .3s,background-color .3s,transform .3s;display:inline-flex}.skill-tag svg{color:var(--primary-light);font-size:.95rem}.skill-tag:hover{border-color:var(--primary-color);background-color:#9b59b63d;transform:translateY(-2px)}.skill-tag--soft{background-color:var(--primary-soft);color:var(--primary-light)}.about-grid{grid-template-columns:2fr 1fr;gap:2rem;margin-top:3rem;display:grid}.timeline{border-left:2px solid var(--border-color);margin-left:1.1rem;position:relative}.timeline:before{content:"";background:linear-gradient(180deg, var(--primary-color), var(--secondary-color));width:2px;height:100%;transform:scaleY(var(--progress,0));transform-origin:top;position:absolute;top:0;left:-2px;box-shadow:0 0 12px #9b59b699}.timeline-item{padding:0 0 1.75rem 2rem;position:relative}.timeline-item:last-child{padding-bottom:0}.timeline-icon{background-color:var(--background-alt);border:2px solid var(--secondary-color);width:2.2rem;height:2.2rem;color:var(--secondary-color);border-radius:50%;justify-content:center;align-items:center;font-size:.95rem;transition:box-shadow .6s,background-color .6s;display:flex;position:absolute;top:0;left:-1.15rem}.timeline-item.is-visible .timeline-icon{background-color:#2ecc711f;box-shadow:0 0 0 5px #2ecc711a,0 0 22px #2ecc7159}.timeline-body{background-color:var(--surface);border:1px solid var(--border-color);box-shadow:var(--shadow);transition:var(--transition);border-radius:14px;padding:1.1rem 1.35rem}.timeline-body:hover{box-shadow:var(--shadow-hover);border-color:#9b59b666;transform:translate(6px)}.timeline-body h4{color:var(--heading-color);margin-bottom:.15rem;font-size:1.1rem}.timeline-meta{color:var(--primary-light);font-family:var(--font-ui);margin-bottom:.5rem;font-size:.9rem;font-weight:500}.timeline-body ul li{color:var(--text-muted);padding-left:1rem;font-size:.95rem;position:relative}.timeline-body ul li:before{content:"";background-color:var(--secondary-color);border-radius:50%;width:6px;height:6px;position:absolute;top:.65em;left:0}.about-side{flex-direction:column;gap:1.25rem;display:flex}.info-card{background:linear-gradient(180deg, #251e32b3, var(--surface));border:1px solid var(--border-color);box-shadow:var(--shadow);border-radius:16px;padding:1.5rem}.info-card h3{align-items:center;gap:.5rem;font-size:1.15rem;display:flex}.info-card p{margin:0}.info-list li{flex-direction:column;padding:.5rem 0;display:flex}.info-list li+li{border-top:1px solid var(--border-color)}.info-list span{color:var(--text-muted);font-size:.9rem}@media screen and (max-width:900px){.about-grid{grid-template-columns:1fr}}@media screen and (max-width:480px){.about-text,.skills{flex-basis:100%;min-width:0}.skills{padding:1.25rem}}
.contact{background:radial-gradient(ellipse 55% 45% at 50% 100%, #9b59b624, transparent 70%), var(--background-color)}.contact-card{background:linear-gradient(160deg,#251e32f2,#16121ffa) padding-box padding-box,linear-gradient(135deg,#9b59b699,#332a4499 40%,#2ecc7173) border-box;border:1px solid #0000;border-radius:24px;grid-template-columns:minmax(0,1fr) minmax(0,1.35fr);gap:3rem;padding:2.75rem;display:grid;box-shadow:0 30px 60px -30px #000000e6}.contact-form{min-width:0}.contact-title{letter-spacing:-.02em;margin-bottom:.75rem;font-size:1.75rem}.form-group{margin-bottom:1.5rem}.form-group label{margin-bottom:.5rem;font-weight:600;display:block}.form-group input,.form-group textarea{border:1px solid var(--border-color);border-radius:var(--radius-sm);background-color:var(--surface-2);width:100%;font-family:var(--font-body);transition:var(--transition);padding:10px}.form-group textarea{resize:vertical;min-height:140px}.form-group input:focus,.form-group textarea:focus{border-color:var(--primary-color);box-shadow:0 0 0 3px var(--primary-soft);outline:none}.form-group [aria-invalid=true]{border-color:var(--accent-color)}.form-group [aria-invalid=true]:focus{box-shadow:0 0 0 3px var(--accent-soft)}.field-error{color:var(--accent-light);margin:.4rem 0 0;font-size:.875rem}.field-footer{justify-content:space-between;align-items:flex-start;gap:1rem;display:flex}.char-count{color:var(--text-muted);font-family:var(--font-ui);white-space:nowrap;margin-top:.4rem;margin-left:auto;font-size:.8rem}.submit-btn{min-width:140px}.hp-field{width:1px;height:1px;position:absolute;left:-10000px;overflow:hidden}.form-messages{border-radius:var(--radius-sm);align-items:flex-start;gap:.5rem;margin:15px 0 0;padding:10px 12px;font-weight:500;animation:.3s fadeUp;display:flex}.form-messages svg{flex-shrink:0;margin-top:.25em}.success-message{background-color:var(--secondary-soft);color:var(--secondary-light);border:1px solid #2ecc7159}.error-message{background-color:var(--accent-soft);color:var(--accent-light);border:1px solid #e74c3c66}.contact-info{min-width:0}.contact-email{flex-wrap:wrap;align-items:center;gap:.5rem .75rem;margin-bottom:1rem;display:flex}.contact-email .contact-item{margin-bottom:0}.copy-btn{border:1px solid var(--border-color);color:var(--text-muted);font-family:var(--font-ui);cursor:pointer;background-color:#ffffff0a;border-radius:999px;align-items:center;gap:.4rem;padding:4px 11px;font-size:.8rem;transition:color .3s,border-color .3s,background-color .3s;display:inline-flex}.copy-btn:hover{color:var(--white);border-color:var(--primary-color)}.copy-btn.copied{color:var(--secondary-light);background-color:var(--secondary-soft);border-color:#2ecc7173}.contact-intro{color:var(--text-muted);margin-bottom:1.5rem}.contact-item{color:var(--text-color);overflow-wrap:anywhere;align-items:center;margin-bottom:1rem;display:flex}a.contact-item:hover{color:var(--primary-light)}.contact-item svg{width:1.5rem;color:var(--primary-color);flex-shrink:0;margin-right:1rem;font-size:1.5rem}.contact-cv{color:var(--white);font-family:var(--font-ui);background-color:#9b59b61f;border:1px solid #c39bd34d;border-radius:12px;align-items:center;gap:.6rem;margin-top:.75rem;padding:.7rem 1.1rem;font-weight:500;transition:border-color .3s,background-color .3s,transform .25s;display:inline-flex}.contact-cv svg{color:var(--accent-light);font-size:1.15rem}.contact-cv:hover{color:var(--white);border-color:var(--primary-color);background-color:#9b59b638;transform:translateY(-2px)}.social-links{gap:1rem;margin-top:2rem;display:flex}.social-links a{background-color:var(--surface-2);border:1px solid var(--border-color);width:40px;height:40px;color:var(--primary-light);transition:var(--transition);border-radius:50%;justify-content:center;align-items:center;font-size:1.1rem;display:flex}.social-links a:hover{background-color:var(--primary-color);border-color:var(--primary-color);color:var(--white)}@media screen and (max-width:900px){.contact-card{grid-template-columns:1fr;gap:2.25rem;padding:2rem}}@media screen and (max-width:480px){.contact-card{border-radius:18px;padding:1.5rem 1.25rem}.submit-btn{width:100%}}
.site-footer{border-top:1px solid var(--border-color);background:linear-gradient(180deg, var(--background-alt), #0b0913);color:var(--text-muted);padding:3.5rem 0 2rem;position:relative}.site-footer:before{content:"";background:linear-gradient(90deg, transparent, var(--primary-color), var(--secondary-color), transparent);width:min(640px,80%);height:1px;position:absolute;top:-1px;left:50%;transform:translate(-50%)}.footer-top{border-bottom:1px solid var(--border-color);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:2rem;padding-bottom:2rem;display:flex}.footer-brand p{margin:.6rem 0 0;font-size:.92rem}.footer-links{flex-wrap:wrap;gap:.4rem 1.5rem;display:flex}.footer-links a{color:var(--text-muted);font-family:var(--font-ui);font-weight:500}.footer-links a:hover{color:var(--white)}.footer-social{gap:.6rem;display:flex}.footer-social a{border:1px solid var(--border-color);background-color:var(--surface);width:38px;height:38px;color:var(--text-muted);border-radius:50%;justify-content:center;align-items:center;display:flex}.footer-social a:hover{border-color:var(--primary-color);background-color:var(--primary-color);color:var(--white);transform:translateY(-3px)}.footer-bottom{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;padding-top:1.5rem;font-size:.88rem;display:flex}.copyright{margin:0}.back-to-top{border:1px solid var(--border-color);color:var(--text-muted);font-family:var(--font-ui);border-radius:999px;align-items:center;gap:.45rem;padding:6px 14px;font-weight:500;display:inline-flex}.back-to-top svg{transition:transform .3s}.back-to-top:hover{border-color:var(--primary-color);color:var(--white)}.back-to-top:hover svg{transform:translateY(-3px)}@media screen and (max-width:768px){.footer-top,.footer-bottom{text-align:center;flex-direction:column}.footer-brand .logo,.footer-links{justify-content:center}}
.project-details{background-color:var(--background-color);padding-bottom:4rem}.project-hero{background:var(--hero-gradient);border-bottom:1px solid var(--border-color);padding:9rem 0 3.5rem;position:relative;overflow:hidden}.project-hero>.container{z-index:1;max-width:1180px;position:relative}.project-hero__backdrop{filter:blur(48px)saturate(130%);opacity:.28;background-position:top;background-size:cover;position:absolute;inset:-40px;-webkit-mask-image:linear-gradient(#000 30%,#0000 100%);mask-image:linear-gradient(#000 30%,#0000 100%)}.project-layout{grid-template-columns:280px minmax(0,1fr);align-items:start;gap:3rem;max-width:1180px;padding-top:3rem;display:grid}.project-aside{flex-direction:column;gap:1rem;display:flex;position:sticky;top:100px}.aside-card{border:1px solid var(--border-color);background:linear-gradient(180deg, #251e32b3, var(--surface));border-radius:16px;padding:1.25rem 1.35rem}.aside-title{color:var(--primary-light);font-family:var(--font-ui);letter-spacing:.16em;text-transform:uppercase;margin-bottom:.85rem;font-size:.75rem;font-weight:500}.aside-links{flex-direction:column;gap:.6rem;display:flex}.aside-links .btn{width:100%}.project-toc ul{border-left:1px solid var(--border-color);position:relative}.project-toc a{color:var(--text-muted);padding:.4rem 0 .4rem 1rem;font-size:.92rem;line-height:1.4;display:block;position:relative}.project-toc a:before{content:"";background:linear-gradient(180deg, var(--primary-color), var(--secondary-color));width:2px;transition:transform .3s;position:absolute;top:0;bottom:0;left:-1px;transform:scaleY(0)}.project-toc a:hover,.project-toc a.active{color:var(--white)}.project-toc a.active:before{transform:scaleY(1)}.project-main{min-width:0}.project-section[id]{scroll-margin-top:100px}.breadcrumb{color:var(--text-muted);font-family:var(--font-ui);align-items:center;gap:.5rem;margin-bottom:1.5rem;font-weight:500;display:inline-flex}.breadcrumb:hover{color:var(--primary-light)}.project-header{text-align:center}.project-header h1{letter-spacing:-.03em;background:linear-gradient(110deg, #f7f5fb, var(--primary-light) 45%, var(--secondary-color));color:#0000;-webkit-background-clip:text;background-clip:text;margin-bottom:.6rem;font-size:clamp(2.2rem,5vw,3.4rem)}.project-subtitle{color:var(--text-muted);font-size:1.15rem}.badge--inline{margin-bottom:1rem}.project-header__links{flex-wrap:wrap;justify-content:center;gap:1.5rem;display:flex}.project-header .github-link{font-size:1.1rem}.project-banner{border:1px solid var(--border-color);border-radius:var(--radius);height:300px;box-shadow:var(--shadow);margin-bottom:2rem;position:relative;overflow:hidden}.project-shot{background-color:var(--surface);border:1px solid var(--border-color);border-radius:var(--radius);box-shadow:var(--shadow);margin-bottom:2rem;padding:.75rem}.project-shot img{border-radius:var(--radius-sm);width:100%;height:auto}.project-gallery{grid-template-columns:repeat(auto-fit,minmax(min(100%,260px),1fr));gap:1rem;margin-bottom:2rem;display:grid}.gallery-item{width:100%;box-shadow:var(--shadow);cursor:zoom-in;background:0 0;border:none;border-radius:8px;padding:0;display:block;overflow:hidden}.gallery-item img{object-fit:cover;width:100%;height:250px;transition:transform .3s}.gallery-item:hover img{transform:scale(1.05)}.gallery-figure{margin:0}.project-gallery--single{grid-template-columns:1fr}.project-gallery--single .gallery-item img{height:auto}.project-gallery--single .gallery-item:hover img{transform:none}.gallery-figure figcaption{color:var(--text-muted);text-align:center;margin-top:.6rem;font-size:.9rem}.project-facts{flex-direction:column;display:flex}.project-fact{border-bottom:1px dashed var(--border-color);justify-content:space-between;gap:1rem;padding:.55rem 0;display:flex}.project-fact:last-child{border-bottom:none;padding-bottom:0}.project-fact dt{color:var(--text-muted);font-size:.88rem}.project-fact dd{color:var(--heading-color);text-align:right;font-size:.9rem;font-weight:600}.project-section{margin-bottom:2rem}.project-section h2{color:var(--secondary-color);margin-bottom:1rem;font-size:1.8rem}.project-role p{background-color:var(--secondary-soft);border-left:3px solid var(--secondary-color);border-radius:var(--radius-sm);margin:0;padding:1rem 1.25rem}.feature-list li{margin-bottom:.6rem;padding-left:1.5rem;position:relative}.feature-list li:before{content:"";border:solid var(--secondary-color);border-width:0 3px 3px 0;width:.45rem;height:.8rem;position:absolute;top:.45em;left:.2rem;transform:rotate(45deg)}.tech-list{flex-wrap:wrap;gap:.5rem;margin:1rem 0;display:flex}.tech-item{background-color:var(--surface-2);border:1px solid var(--border-color);border-radius:20px;padding:.5rem 1rem;font-size:.9rem;font-weight:500}.project-pager{border-top:1px solid var(--border-color);grid-template-columns:1fr 1fr;gap:1rem;margin-top:3rem;padding-top:2rem;display:grid}.pager-link{background-color:var(--surface);border:1px solid var(--border-color);border-radius:var(--radius);color:var(--text-color);box-shadow:var(--shadow);flex-direction:column;gap:.25rem;padding:1rem 1.25rem;display:flex}.pager-link:hover{color:var(--primary-light);box-shadow:var(--shadow-hover);border-color:#9b59b673;transform:translateY(-3px)}.pager-link small{color:var(--text-muted);font-family:var(--font-ui);text-transform:uppercase;letter-spacing:.04em;align-items:center;gap:.4rem;font-size:.8rem;font-weight:500;display:inline-flex}.pager-link span{font-family:var(--font-heading);font-weight:700}.pager-link--next{text-align:right;grid-column:2;align-items:flex-end}.back-link{margin-top:2rem}.lightbox{border-radius:var(--radius);background:0 0;border:none;max-width:min(92vw,1100px);max-height:92vh;margin:auto;padding:0;overflow:visible}.lightbox::backdrop{background-color:#000000d9}.lightbox__figure img{border-radius:var(--radius);width:auto;max-width:100%;max-height:82vh}.lightbox__figure figcaption{color:var(--text-muted);text-align:center;margin-top:.75rem}.lightbox__btn{width:44px;height:44px;color:var(--white);cursor:pointer;transition:var(--transition);background-color:#ffffff26;border:none;border-radius:50%;justify-content:center;align-items:center;font-size:1.2rem;display:flex;position:fixed}.lightbox__btn:hover{background-color:var(--primary-color)}.lightbox__close{top:1rem;right:1rem}.lightbox__prev,.lightbox__next{top:50%;transform:translateY(-50%)}.lightbox__prev{left:1rem}.lightbox__next{right:1rem}@media screen and (max-width:1024px){.project-layout{grid-template-columns:1fr;gap:2rem}.project-aside{grid-template-columns:repeat(auto-fit,minmax(240px,1fr));display:grid;position:static}.project-toc{display:none}}@media screen and (max-width:768px){.project-hero{padding:7.5rem 0 2.5rem}.project-banner{height:220px}}@media screen and (max-width:480px){.project-section h2{font-size:1.5rem}.project-pager{grid-template-columns:1fr}.pager-link--next{grid-column:auto}.project-cover--large .project-cover__title{font-size:1.5rem}}
.scroll-progress{z-index:1100;pointer-events:none;height:3px;position:fixed;top:0;left:0;right:0}.scroll-progress__bar{background:linear-gradient(90deg, var(--primary-color), var(--secondary-color));transform-origin:0;height:100%;transform:scaleX(0);box-shadow:0 0 12px #9b59b699}.hero-bg,.project-hero__bg{pointer-events:none;z-index:0;position:absolute;inset:0;overflow:hidden}.hero-blob{filter:blur(90px);opacity:.55;will-change:transform;border-radius:50%;position:absolute}.hero-blob--one{background:radial-gradient(circle,#9b59b6bf,#0000 70%);width:520px;height:520px;animation:22s ease-in-out infinite alternate drift-one;top:-160px;left:-120px}.hero-blob--two{background:radial-gradient(circle,#2ecc716b,#0000 70%);width:460px;height:460px;animation:26s ease-in-out infinite alternate drift-two;bottom:-180px;right:-140px}.hero-blob--three{background:radial-gradient(circle,#8e44ad80,#0000 70%);width:380px;height:380px;animation:30s ease-in-out infinite alternate drift-three;top:20%;left:45%}@keyframes drift-one{to{transform:translate(140px,90px)scale(1.15)}}@keyframes drift-two{to{transform:translate(-160px,-80px)scale(1.1)}}@keyframes drift-three{to{transform:translate(-120px,70px)scale(.9)}}.hero-grid{background-image:linear-gradient(#c39bd312 1px,#0000 1px),linear-gradient(90deg,#c39bd312 1px,#0000 1px);background-size:56px 56px;position:absolute;inset:0;-webkit-mask-image:radial-gradient(70% 60% at 50% 40%,#000 30%,#0000 75%);mask-image:radial-gradient(70% 60% at 50% 40%,#000 30%,#0000 75%)}.hero-spotlight{background:radial-gradient(520px circle at var(--mx,50%) var(--my,40%), #9b59b629, transparent 60%);opacity:0;transition:opacity .5s;position:absolute;inset:0}.hero:hover .hero-spotlight{opacity:1}[data-spotlight].project-card,[data-spotlight].aside-card,[data-spotlight].info-card,[data-spotlight].skills,[data-spotlight].pager-link,[data-spotlight].contact-card{isolation:isolate;position:relative}[data-spotlight].project-card:before,[data-spotlight].aside-card:before,[data-spotlight].info-card:before,[data-spotlight].skills:before,[data-spotlight].pager-link:before,[data-spotlight].contact-card:before{content:"";z-index:3;border-radius:inherit;background:radial-gradient(380px circle at var(--mx,-1000px) var(--my,-1000px), #c39bd3b3, #2ecc7140 35%, transparent 60%);-webkit-mask-composite:xor;opacity:0;pointer-events:none;padding:1px;transition:opacity .35s;position:absolute;inset:-1px;-webkit-mask-image:linear-gradient(#000 0 0),linear-gradient(#000 0 0);-webkit-mask-position:0 0,0 0;-webkit-mask-size:auto,auto;-webkit-mask-repeat:repeat,repeat;-webkit-mask-clip:content-box,border-box;-webkit-mask-origin:content-box,border-box;-webkit-mask-composite:xor;mask-composite:exclude;-webkit-mask-source-type:auto,auto;mask-mode:match-source,match-source}[data-spotlight].project-card:hover:before,[data-spotlight].aside-card:hover:before,[data-spotlight].info-card:hover:before,[data-spotlight].skills:hover:before,[data-spotlight].pager-link:hover:before,[data-spotlight].contact-card:hover:before{opacity:1}.tech-strip{border-bottom:1px solid var(--border-color);background:linear-gradient(#24173a59,#0000);padding:2.25rem 0 2.5rem;position:relative}.tech-strip__label{color:var(--text-muted);font-family:var(--font-ui);letter-spacing:.2em;text-align:center;text-transform:uppercase;margin-bottom:1.25rem;font-size:.75rem;font-weight:500}.marquee{overflow:hidden;-webkit-mask-image:linear-gradient(90deg,#0000,#000 12% 88%,#0000);mask-image:linear-gradient(90deg,#0000,#000 12% 88%,#0000)}.marquee__track{gap:.9rem;width:max-content;animation:45s linear infinite marquee;display:flex}.marquee:hover .marquee__track{animation-play-state:paused}.marquee__item{border:1px solid var(--border-color);color:var(--text-muted);font-family:var(--font-ui);white-space:nowrap;background-color:#1c1727b3;border-radius:999px;align-items:center;gap:.55rem;padding:.6rem 1.1rem;font-weight:500;transition:color .3s,border-color .3s;display:inline-flex}.marquee__item svg{color:var(--primary-light);font-size:1.1rem}.marquee__item:hover{color:var(--white);border-color:var(--primary-color)}@keyframes marquee{to{transform:translate(calc(-50% - .45rem))}}.scroll-cue{z-index:2;opacity:.7;animation:.8s 1.2s both heroIn;position:absolute;bottom:1.75rem;left:50%;transform:translate(-50%)}.scroll-cue:hover{opacity:1}.scroll-cue__mouse{border:2px solid var(--text-muted);border-radius:14px;width:24px;height:38px;display:block}.scroll-cue__mouse span{background-color:var(--secondary-color);border-radius:2px;width:4px;height:8px;margin:6px auto 0;animation:1.8s ease-in-out infinite scroll-wheel;display:block}@keyframes scroll-wheel{0%{opacity:1;transform:translateY(0)}70%{opacity:0;transform:translateY(12px)}to{opacity:0;transform:translateY(0)}}@keyframes heroIn{0%{opacity:0;filter:blur(6px);transform:translateY(18px)}to{opacity:1;filter:none;transform:none}}@media (prefers-reduced-motion:reduce){.marquee__track{flex-wrap:wrap;justify-content:center;width:auto;animation:none}.marquee__item[aria-hidden=true]{display:none}.marquee{-webkit-mask-image:none;mask-image:none}.hero-blob{animation:none}}@media screen and (max-width:768px){.hero-blob{filter:blur(70px);opacity:.45}.hero-blob--one{width:340px;height:340px}.hero-blob--two{width:300px;height:300px}.hero-blob--three,.scroll-cue{display:none}}
