@keyframes marquee{to{transform:translateX(-25%)}}@keyframes float{50%{transform:translateY(-.5rem)}}.reveal{opacity:0;transform:translateY(2rem);transition:opacity .8s cubic-bezier(.22,1,.36,1),transform .8s cubic-bezier(.22,1,.36,1)}.reveal.is-visible{opacity:1;transform:translateY(0)}.reveal-delay-1{transition-delay:.12s}.reveal-delay-2{transition-delay:.24s}.reveal-delay-3{transition-delay:.36s}.circle-link{animation:float 4s ease-in-out infinite}.project-visual svg path{stroke-dasharray:1000;stroke-dashoffset:1000;transition:stroke-dashoffset 1.8s ease}.project-card.is-visible .project-visual svg path{stroke-dashoffset:0}.grid-orbit{animation:spin 18s linear infinite}@keyframes spin{to{transform:translate(-50%,-50%) rotate(360deg)}}.rain-container{position:fixed;top:0;left:0;width:100vw;height:100vh;max-height:100vh;pointer-events:none;z-index:4;overflow:hidden;opacity:0;transition:opacity 1s ease}.rain-container.is-active{opacity:1}.drop{position:absolute;background:linear-gradient(transparent,var(--accent));width:1.5px;height:24px;opacity:0.4;animation:rainDrop 1.2s linear infinite}@keyframes rainDrop{0%{transform:translateY(-40px)}100%{transform:translateY(100vh)}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;scroll-behavior:auto!important;transition-duration:.01ms!important}.reveal{opacity:1;transform:none}}.satellite-easter-egg{position:absolute;top:12%;width:48px;height:48px;pointer-events:none;z-index:5;opacity:0}.satellite-easter-egg.ltr{left:-100px}.satellite-easter-egg.rtl{right:-100px}.satellite-flyby-ltr{animation:satellitePassLTR 13s cubic-bezier(.37,0,.63,1) forwards}.satellite-flyby-rtl{animation:satellitePassRTL 13s cubic-bezier(.37,0,.63,1) forwards}@keyframes satellitePassLTR{0%{transform:translate(0,0) rotate(-15deg) scale(.7);opacity:0}8%{opacity:.95}50%{transform:translate(calc(50vw + 50px),calc(15vh + 30px)) rotate(0deg) scale(1)}92%{opacity:.95}100%{transform:translate(calc(100vw + 160px),calc(5vh - 20px)) rotate(15deg) scale(1.15);opacity:0}}@keyframes satellitePassRTL{0%{transform:translate(0,0) rotate(15deg) scale(.7);opacity:0}8%{opacity:.95}50%{transform:translate(calc(-50vw - 50px),calc(15vh + 30px)) rotate(0deg) scale(1)}92%{opacity:.95}100%{transform:translate(calc(-100vw - 160px),calc(5vh - 20px)) rotate(-15deg) scale(1.15);opacity:0}}.meteor-easter-egg{position:absolute;width:1.5px;height:45px;background:linear-gradient(to bottom,transparent 0%,var(--accent) 60%,#ffffff 100%);border-radius:1px;box-shadow:0 0 6px 1px var(--accent),0 0 10px #ffffff;pointer-events:none;z-index:6;opacity:0;transform-origin:top center}.meteor-easter-egg::after{content:"";position:absolute;bottom:-2px;left:-2.5px;width:6px;height:6px;background:#ffffff;border-radius:50%;box-shadow:0 0 8px 3px #ffffff,0 0 14px 4px var(--accent)}.meteor-fall-left{animation:meteorPassLeft 2.2s cubic-bezier(.2,.6,.4,1) forwards}.meteor-fall-right{animation:meteorPassRight 2.2s cubic-bezier(.2,.6,.4,1) forwards}@keyframes meteorPassLeft{0%{transform:translate(0,0) rotate(28deg) scaleY(.4);opacity:0}20%{opacity:.85}65%{opacity:.7}100%{transform:translate(-110px,28vh) rotate(28deg) scaleY(1);opacity:0}}@keyframes meteorPassRight{0%{transform:translate(0,0) rotate(-28deg) scaleY(.4);opacity:0}20%{opacity:.85}65%{opacity:.7}100%{transform:translate(110px,28vh) rotate(-28deg) scaleY(1);opacity:0}}/* Preloader Overlay (Homepage Only) */
.homepage-preloader{position:fixed;inset:0;background:var(--bg);z-index:999999;display:flex;align-items:center;justify-content:center;opacity:1;transition:opacity .7s ease 1.1s,visibility .7s ease 1.1s;overflow:hidden}
.homepage-preloader.is-loaded{opacity:0;visibility:hidden;pointer-events:none}
.homepage-preloader .loader {
  position: absolute;
  top: 50%;
  margin-left: -50px;
  left: 50%;
  animation: speeder 0.4s linear infinite;
}
.homepage-preloader.is-loaded .loader {
  animation: speeder 0.4s linear infinite, loaderFlyOut 0.6s cubic-bezier(.4, 0, .2, 1) forwards;
}
@keyframes loaderFlyOut {
  0% { transform: translate(0, 0); }
  100% { transform: translate(120vw, 0); }
}
.homepage-preloader .longfazers {
  position: absolute;
  width: 100%;
  height: 100%;
  transition: opacity .4s ease .4s;
}
.homepage-preloader.is-loaded .longfazers {
  opacity: 0;
}




.homepage-preloader .loader > span {
  height: 5px;
  width: 35px;
  background: var(--ink);
  position: absolute;
  top: -19px;
  left: 60px;
  border-radius: 2px 10px 1px 0;
}
.homepage-preloader .base span {
  position: absolute;
  width: 0;
  height: 0;
  border-top: 6px solid transparent;
  border-right: 100px solid var(--ink);
  border-bottom: 6px solid transparent;
}
.homepage-preloader .base span:before {
  content: "";
  height: 22px;
  width: 22px;
  border-radius: 50%;
  background: var(--ink);
  position: absolute;
  right: -110px;
  top: -16px;
}
.homepage-preloader .base span:after {
  content: "";
  position: absolute;
  width: 0;
  height: 0;
  border-top: 0 solid transparent;
  border-right: 55px solid var(--ink);
  border-bottom: 16px solid transparent;
  top: -16px;
  right: -98px;
}
.homepage-preloader .face {
  position: absolute;
  height: 12px;
  width: 20px;
  background: var(--ink);
  border-radius: 20px 20px 0 0;
  transform: rotate(-40deg);
  right: -125px;
  top: -15px;
}
.homepage-preloader .face:after {
  content: "";
  height: 12px;
  width: 12px;
  background: var(--ink);
  right: 4px;
  top: 7px;
  position: absolute;
  transform: rotate(40deg);
  transform-origin: 50% 50%;
  border-radius: 0 0 0 2px;
}
.homepage-preloader .loader > span > span:nth-child(1),
.homepage-preloader .loader > span > span:nth-child(2),
.homepage-preloader .loader > span > span:nth-child(3),
.homepage-preloader .loader > span > span:nth-child(4) {
  width: 30px;
  height: 1px;
  background: var(--ink);
  position: absolute;
  animation: fazer1 0.2s linear infinite;
}
.homepage-preloader .loader > span > span:nth-child(2) {
  top: 3px;
  animation: fazer2 0.4s linear infinite;
}
.homepage-preloader .loader > span > span:nth-child(3) {
  top: 1px;
  animation: fazer3 0.4s linear infinite;
  animation-delay: -1s;
}
.homepage-preloader .loader > span > span:nth-child(4) {
  top: 4px;
  animation: fazer4 1s linear infinite;
  animation-delay: -1s;
}
@keyframes fazer1 {
  0% { left: 0; }
  100% { left: -80px; opacity: 0; }
}
@keyframes fazer2 {
  0% { left: 0; }
  100% { left: -100px; opacity: 0; }
}
@keyframes fazer3 {
  0% { left: 0; }
  100% { left: -50px; opacity: 0; }
}
@keyframes fazer4 {
  0% { left: 0; }
  100% { left: -150px; opacity: 0; }
}
@keyframes speeder {
  0% { transform: translate(2px, 1px) rotate(0deg); }
  10% { transform: translate(-1px, -3px) rotate(-1deg); }
  20% { transform: translate(-2px, 0px) rotate(1deg); }
  30% { transform: translate(1px, 2px) rotate(0deg); }
  40% { transform: translate(1px, -1px) rotate(1deg); }
  50% { transform: translate(-1px, 3px) rotate(-1deg); }
  60% { transform: translate(-1px, 1px) rotate(0deg); }
  70% { transform: translate(3px, 1px) rotate(-1deg); }
  80% { transform: translate(-2px, -1px) rotate(1deg); }
  90% { transform: translate(2px, 1px) rotate(0deg); }
  100% { transform: translate(1px, -2px) rotate(-1deg); }
}
.homepage-preloader .longfazers {
  position: absolute;
  width: 100%;
  height: 100%;
}
.homepage-preloader .longfazers span {
  position: absolute;
  height: 2px;
  width: 20%;
  background: var(--ink);
}
.homepage-preloader .longfazers span:nth-child(1) {
  top: 20%;
  animation: lf 0.6s linear infinite;
  animation-delay: -5s;
}
.homepage-preloader .longfazers span:nth-child(2) {
  top: 40%;
  animation: lf2 0.8s linear infinite;
  animation-delay: -1s;
}
.homepage-preloader .longfazers span:nth-child(3) {
  top: 60%;
  animation: lf3 0.6s linear infinite;
}
.homepage-preloader .longfazers span:nth-child(4) {
  top: 80%;
  animation: lf4 0.5s linear infinite;
  animation-delay: -3s;
}
@keyframes lf {
  0% { left: 200%; }
  100% { left: -200%; opacity: 0; }
}
@keyframes lf2 {
  0% { left: 200%; }
  100% { left: -200%; opacity: 0; }
}
@keyframes lf3 {
  0% { left: 200%; }
  100% { left: -100%; opacity: 0; }
}
@keyframes lf4 {
  0% { left: 200%; }
  100% { left: -100%; opacity: 0; }
}
