@keyframes circuitBreath{0%,to{filter:invert(0) drop-shadow(0 0 3px rgba(255,255,255,.5)) drop-shadow(0 0 7px rgba(255,255,255,.2));transform:scale(1)}50%{filter:invert(0) drop-shadow(0 0 8px #fff) drop-shadow(0 0 18px rgba(255,255,255,.65)) drop-shadow(0 0 32px rgba(255,255,255,.3));transform:scale(1.04)}}@keyframes circuitBreathHover{0%,to{filter:invert(0) drop-shadow(0 0 8px rgba(255,255,255,.9)) drop-shadow(0 0 18px rgba(255,255,255,.55)) drop-shadow(0 0 32px rgba(255,255,255,.25));transform:perspective(400px) rotateY(4deg) scale(1.05)}50%{filter:invert(0) drop-shadow(0 0 14px #fff) drop-shadow(0 0 28px rgba(255,255,255,.8)) drop-shadow(0 0 48px rgba(255,255,255,.45));transform:perspective(400px) rotateY(4deg) scale(1.08)}}@keyframes toggle-spin{0%{transform:rotate(0deg)}to{transform:rotate(360deg)}}@keyframes glitch{0%{clip-path:inset(0);transform:translate(0) scale(1);opacity:1;filter:none}5%{clip-path:inset(30%0 25%0);transform:translate(-12px,4px) skewX(5deg) scaleX(1.03);filter:hue-rotate(60deg) saturate(3) brightness(1.3)}8%{clip-path:inset(0);transform:translate(8px,-3px) skewX(-3deg);filter:none}12%{clip-path:inset(70%0 5%0);transform:translate(-15px,-6px) skewX(8deg) scaleX(.97);filter:hue-rotate(180deg) saturate(5) contrast(1.5)}15%{clip-path:inset(5%0 80%0);transform:translate(10px,2px);filter:hue-rotate(90deg)}18%{clip-path:inset(0);transform:translate(0) scale(1.02);filter:none}22%{clip-path:inset(15%0 50%0);transform:translate(-18px,5px) skewX(-6deg);filter:hue-rotate(270deg) saturate(4) brightness(1.4)}25%{clip-path:inset(55%0 10%0);transform:translate(14px,-4px) skewX(4deg);filter:saturate(6) contrast(2)}28%{clip-path:inset(0);transform:translate(-6px,3px);filter:none;opacity:.9}32%{clip-path:inset(40%0 20%0);transform:translate(20px,-7px) skewX(-10deg) scaleX(1.05);filter:hue-rotate(120deg) saturate(4);opacity:.85}35%{clip-path:inset(0);transform:translate(-10px,5px) skewX(6deg);filter:brightness(1.6)}38%{clip-path:inset(60%0 15%0);transform:translate(12px,-2px) scaleX(.95);filter:hue-rotate(200deg) saturate(3);opacity:.75}42%{clip-path:inset(0);transform:translate(0);filter:none;opacity:.7}46%{clip-path:inset(20%0 45%0);transform:translate(-22px,6px) skewX(12deg);filter:hue-rotate(300deg) saturate(5) brightness(1.5);opacity:.6}50%{clip-path:inset(75%0 3%0);transform:translate(16px,-5px) skewX(-8deg) scaleX(1.08);filter:contrast(2) saturate(6)}54%{clip-path:inset(0);transform:translate(-8px,4px);filter:none;opacity:.45}58%{clip-path:inset(35%0 35%0);transform:translate(25px,-8px) skewX(15deg);filter:hue-rotate(150deg) brightness(1.8);opacity:.35}62%{clip-path:inset(0);transform:translate(-14px,6px) scaleX(.92);filter:saturate(8);opacity:.25}68%{clip-path:inset(50%0 25%0);transform:translate(18px,-3px) skewX(-12deg);filter:hue-rotate(240deg) brightness(2);opacity:.15}75%{clip-path:inset(0);transform:translate(-6px,2px);opacity:.08;filter:none}82%{clip-path:inset(10%0 70%0);transform:translate(10px,-4px) skewX(6deg);opacity:.03}90%{opacity:0}to{clip-path:inset(0);transform:translate(0) scale(1);opacity:0;filter:none}}@keyframes glitchIn{0%{clip-path:inset(0);transform:translate(0) scale(1);opacity:0;filter:none}10%{clip-path:inset(10%0 70%0);transform:translate(10px,-4px) skewX(6deg);opacity:.03}18%{clip-path:inset(0);transform:translate(-6px,2px);opacity:.08;filter:none}25%{clip-path:inset(50%0 25%0);transform:translate(18px,-3px) skewX(-12deg);filter:hue-rotate(240deg) brightness(2);opacity:.15}32%{clip-path:inset(0);transform:translate(-14px,6px) scaleX(.92);filter:saturate(8);opacity:.25}38%{clip-path:inset(35%0 35%0);transform:translate(25px,-8px) skewX(15deg);filter:hue-rotate(150deg) brightness(1.8);opacity:.35}42%{clip-path:inset(0);transform:translate(-8px,4px);filter:none;opacity:.45}46%{clip-path:inset(75%0 3%0);transform:translate(16px,-5px) skewX(-8deg) scaleX(1.08);filter:contrast(2) saturate(6);opacity:.55}50%{clip-path:inset(20%0 45%0);transform:translate(-22px,6px) skewX(12deg);filter:hue-rotate(300deg) saturate(5) brightness(1.5);opacity:.6}54%{clip-path:inset(0);transform:translate(0);filter:none;opacity:.7}58%{clip-path:inset(60%0 15%0);transform:translate(12px,-2px) scaleX(.95);filter:hue-rotate(200deg) saturate(3);opacity:.75}62%{clip-path:inset(0);transform:translate(-10px,5px) skewX(6deg);filter:brightness(1.6);opacity:.85}68%{clip-path:inset(40%0 20%0);transform:translate(20px,-7px) skewX(-10deg) scaleX(1.05);filter:hue-rotate(120deg) saturate(4);opacity:.9}75%{clip-path:inset(0);transform:translate(-6px,3px);filter:none;opacity:.95}82%{clip-path:inset(15%0 50%0);transform:translate(8px,-3px) skewX(-3deg);filter:hue-rotate(60deg) saturate(3)}88%{clip-path:inset(0);transform:translate(-3px,1px);filter:none}95%{clip-path:inset(5%0 80%0);transform:translate(4px,-2px) skewX(2deg);filter:hue-rotate(90deg);opacity:1}to{clip-path:inset(0);transform:translate(0) scale(1);opacity:1;filter:none}}@keyframes nier-noise{0%,79.9%,82%,84.9%,87%,to{text-shadow:none;transform:translateX(0);filter:none}89.9%{text-shadow:none;filter:none;text-shadow:-1px 0 rgba(255,50,50,.5),1px 0 rgba(0,220,255,.5);transform:translateX(-1px)}80%,81.9%{text-shadow:-2px 0 rgba(255,50,50,.85),2px 0 rgba(0,220,255,.85);transform:translateX(-2px)}85%,86.9%{text-shadow:2px 0 rgba(255,50,50,.85),-2px 0 rgba(0,220,255,.85);transform:translateX(2px);filter:brightness(1.1)}90%{text-shadow:-1px 0 rgba(255,50,50,.5),1px 0 rgba(0,220,255,.5);transform:translateX(-1px)}}@keyframes nierSlice1{0%,to{clip-path:inset(0 0 75%0);transform:translate(-5px,0)}25%{clip-path:inset(45%0 30%0);transform:translate(-7px,2px)}50%{clip-path:inset(15%0 55%0);transform:translate(-4px,-2px)}75%{clip-path:inset(70%0 5%0);transform:translate(-6px,0)}}@keyframes nierSlice2{0%,to{clip-path:inset(65%0 0 0);transform:translate(5px,0)}25%{clip-path:inset(10%0 60%0);transform:translate(7px,-2px)}50%{clip-path:inset(40%0 25%0);transform:translate(4px,2px)}75%{clip-path:inset(80%0 5%0);transform:translate(6px,0)}}@keyframes logo-glitch{0%,85%,to{filter:none;clip-path:none;transform:none}20%{filter:hue-rotate(90deg) saturate(4) brightness(1.5);clip-path:inset(0 0 60%0);transform:translateX(-6px)}40%{filter:hue-rotate(200deg) saturate(3);clip-path:inset(35%0 25%0);transform:translateX(6px)}60%{filter:hue-rotate(300deg) brightness(.7);clip-path:inset(10%0 50%0);transform:translateX(-4px)}75%{filter:invert(.4) saturate(2);clip-path:none;transform:translateX(2px)}}@keyframes nier-noise-nav{0%,79.9%,82%,84.9%,87%,89.9%,to{text-shadow:none}80%,81.9%{text-shadow:-2px 0 rgba(255,50,50,.85),2px 0 rgba(0,220,255,.85)}85%,86.9%{text-shadow:2px 0 rgba(255,50,50,.85),-2px 0 rgba(0,220,255,.85)}89.9%,90%{text-shadow:-1px 0 rgba(255,50,50,.5),1px 0 rgba(0,220,255,.5)}}html{scroll-behavior:smooth}:root{--color-bg:#f6f6f6;--color-text:#111;--color-accent:#888;--color-primary:#1a1a1a;--color-secondary:#666;--color-white:#ffffff;--color-border:#374151}body{font-family:"Raleway",sans-serif;background-color:var(--color-bg);color:var(--color-text);margin:0;padding:0;transition:background-color .3s,color .3s;overflow-x:hidden}a,button,input,select,textarea{-webkit-tap-highlight-color:transparent}img{max-width:100%;height:auto}.dark-mode{--color-bg:#111;--color-text:#f6f6f6;--color-accent:#bbb}@media (prefers-reduced-motion:reduce){*,::after,::before{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}.skip-link{position:absolute;top:-100%;left:0;background:var(--color-primary);color:var(--color-white);padding:12px 24px;z-index:9999;text-decoration:none;font-weight:700}.skip-link:focus{top:0}header{text-align:center;padding:1rem;position:relative;background:var(--color-primary);--color-text:#f6f6f6;--color-bg:#1a1a1a;box-shadow:0 2px 8px rgba(0,0,0,.35);margin:0}body.dark-mode header{box-shadow:0 2px 6px rgba(255,220,220,.3)}#darkModeToggle{background:0 0;border:0;cursor:pointer;padding:0;display:inline-flex;align-items:center;justify-content:center;position:relative;-webkit-tap-highlight-color:transparent;appearance:none}#darkModeToggle img{width:85px;height:auto;filter:invert(0);animation:circuitBreath 2s ease-in-out infinite}#darkModeToggle:hover img,.dark-mode #darkModeToggle:hover img{animation:circuitBreathHover 1s ease-in-out infinite}@media (hover:none){#darkModeToggle:hover img,.dark-mode #darkModeToggle:hover img{animation:circuitBreath 2s ease-in-out infinite}}#darkModeToggle.spinning{animation:toggle-spin .6s cubic-bezier(.4,0,.2,1)}#darkModeToggle:focus-visible{outline:0}#muteToggle{position:absolute;top:38px;right:1rem;background:0 0;border:0;cursor:pointer;color:var(--color-text);width:2.5rem;height:2.5rem;display:flex;align-items:center;justify-content:center;opacity:.5;transition:opacity .2s}#muteToggle:hover{opacity:1}#muteToggle.muted{opacity:.3}#muteToggle:focus-visible{outline:0}.burger{display:none;position:absolute;top:26px;left:1rem;background:0 0;border:0;cursor:pointer;padding:8px;z-index:1001;width:4rem;height:4rem;align-items:center;justify-content:center}.burger-line{display:block;width:28px;height:2px;background:var(--color-text);margin:6px 0;transition:all .3s ease}.burger.active .burger-line:nth-child(1){transform:rotate(45deg) translate(6px,6px)}.burger.active .burger-line:nth-child(2){opacity:0}.burger.active .burger-line:nth-child(3){transform:rotate(-45deg) translate(6px,-6px)}[data-i18n]{transition:opacity .2s ease}.lang-dropdown{position:relative;margin-left:1rem}.lang-current{background:0 0;border:0;color:var(--color-text);font-family:"Cinzel",serif;font-size:1rem;font-weight:700;padding:0;cursor:pointer;transition:opacity .3s ease;opacity:.7;white-space:nowrap}.lang-current .arrow{display:inline-block;transition:transform .3s ease;font-size:.7rem}.lang-current.open .arrow{transform:rotate(180deg)}.lang-current:hover{opacity:1}.lang-menu,nav ul{display:flex;padding:0}.lang-menu{position:absolute;top:calc(100% + 6px);left:50%;transform:translateX(-50%);background:var(--color-bg);border:1px solid transparent;border-radius:6px;z-index:100;flex-direction:column;max-height:0;overflow:hidden;opacity:0;transition:max-height .3s ease,opacity .3s ease,padding .3s ease;box-shadow:none}.lang-menu.open{max-height:150px;opacity:1;padding:6px 0;border-color:var(--color-accent);box-shadow:0 4px 12px rgba(0,0,0,.08)}.dark-mode .lang-menu.open{box-shadow:0 4px 12px rgba(255,220,220,.08)}.lang-option,nav a{color:var(--color-text);font-weight:700;font-family:"Cinzel",serif}.lang-option{background:0 0;border:0;font-size:.8rem;padding:4px 8px;cursor:pointer;transition:opacity .2s ease;opacity:.4;text-align:center}.lang-option:hover{opacity:.8}.card:hover .card-overlay,.lang-option.active{opacity:1}nav ul{list-style:none;justify-content:center;align-items:center;gap:2rem;margin-top:20px}nav a{text-decoration:none;position:relative;display:block;padding:8px 16px;transition:color .3s;z-index:1;white-space:nowrap}nav a::after,nav a::before{content:"";position:absolute;left:0;width:100%;height:100%;opacity:0;transition:.3s}nav a::before{top:0;border-top:2px solid var(--color-text);border-bottom:2px solid var(--color-text);transform:scaleY(2)}nav a::after{top:2px;background-color:var(--color-text);transform:scale(0);z-index:-1}nav a:focus-visible,nav a:hover{color:var(--color-bg)}nav a:focus-visible::after,nav a:focus-visible::before,nav a:hover::after,nav a:hover::before{transform:scaleY(1);opacity:1}nav a.active{color:var(--color-bg)}nav a.active::after,nav a.active::before{transform:scaleY(1);opacity:1}a:focus-visible,button:focus-visible,nav a:focus-visible{outline:2px solid var(--color-text);outline-offset:4px}main section{padding:4rem 2rem}#apropos,#technologies{background-color:#ececec}.dark-mode #apropos,.dark-mode #technologies{background-color:#1a1a1a}main section+section::before{content:"❖ ❖";display:block;text-align:justify;text-align-last:justify;color:var(--color-accent);font-size:1rem;line-height:.5;margin:0 auto 2rem;max-width:200px;background:linear-gradient(var(--color-accent),var(--color-accent)) no-repeat center/calc(100% - 2em) 1px}.dark-mode .hero-text h1,.dark-mode .hero-text p{color:var(--color-text)}.dark-mode .btn-primary{background:var(--color-text);color:var(--color-bg)}.dark-mode .btn-secondary{color:var(--color-text);border-color:var(--color-text)}.hero-img-dark{inset:0;object-fit:contain;margin:auto}.hero-img-dark.visible{opacity:1;position:static;pointer-events:auto}.hero-img-dark,.hero-img-light.hidden{opacity:0;position:absolute;pointer-events:none}.hero-img-light.glitch-out{animation:glitch .8s steps(1,end) forwards}.hero-img-light.glitch-in{animation:glitchIn .8s steps(1,end) forwards}.hero-content{display:grid;grid-template-columns:1fr 1fr;gap:80px;align-items:center;max-width:1200px;margin:0 auto}.hero-text h1,h2{font-family:"Cinzel",serif}.hero-text h1{color:var(--color-primary);font-size:40px;font-weight:700;line-height:1.1;margin-bottom:24px}.hero-text p{font-size:18px;color:var(--color-primary);margin-bottom:32px;line-height:1.6}.hero-buttons{display:flex;gap:16px}.btn-primary,.btn-secondary{padding:16px 32px;border-radius:8px;text-decoration:none;font-weight:500;transition:all .2s ease}.btn-primary{background:var(--color-primary);color:var(--color-white)}.btn-primary:hover{background:#333;transform:translateY(-2px)}.btn-secondary{background:0 0;color:var(--color-primary);border:1px solid var(--color-primary)}.btn-secondary:hover{border-color:var(--color-primary);transform:translateY(-2px)}.apropos-container,.hero-visual{display:flex;justify-content:center;align-items:center}.hero-visual{position:relative}h2{margin-bottom:1rem;font-size:2rem}.apropos-container{gap:180px}.dark-mode #scrollToTop img,.dark-mode .cv{filter:invert(1)}.bio{flex:1;min-width:280px;max-width:500px;font-size:1.1rem;line-height:1.6;text-align:justify;hyphens:auto}.btn-cv{display:inline-block;margin-top:1rem;background:var(--color-primary);color:var(--color-white);padding:16px 32px;border-radius:8px;text-decoration:none;font-weight:500;transition:all .2s ease}.btn-cv:hover{background:#333;transform:translateY(-2px)}#projets>p,h2{text-align:center}.carousel-container{position:relative;margin-top:2rem;overflow:hidden}.carousel-wrapper{display:flex;transition:transform .5s cubic-bezier(.4,0,.2,1)}.carousel-slide{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:2rem;min-width:100%;box-sizing:border-box;padding:10px max(0px,calc((100% - 1200px)/2))}.carousel-nav{position:absolute;top:50%;transform:translateY(-50%);width:50px;height:50px;background:var(--color-text);color:var(--color-bg);border:2px solid var(--color-text);border-radius:50%;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .3s ease;z-index:10;box-shadow:0 4px 15px rgba(0,0,0,.2)}.carousel-nav:hover{background:var(--color-bg);color:var(--color-text);transform:translateY(-50%) scale(1.1);box-shadow:0 6px 20px rgba(0,0,0,.3)}.carousel-nav:disabled{opacity:.3;cursor:not-allowed;transform:translateY(-50%)}.carousel-nav.prev{left:10px}.carousel-nav.next{right:10px}.carousel-indicators{display:flex;justify-content:center;gap:12px;margin-top:30px;position:static;width:100%;padding:10px 0}.carousel-dot{width:12px;height:12px;border-radius:50%;background:var(--color-accent);cursor:pointer;transition:all .3s ease;border:0;padding:0;margin:0;outline:0;-webkit-appearance:none;appearance:none}.carousel-dot.active,.carousel-dot:hover{background:var(--color-text);transform:scale(1.2)}.carousel-dot.active{transform:scale(1.3)}.card{border:1px solid var(--color-accent);border-radius:15px;background:rgba(255,255,255,.9);transition:transform .3s ease,box-shadow .3s ease;overflow:hidden;display:flex;flex-direction:column}.card:hover{transform:translateY(-8px)}.card-image{width:100%;height:200px;overflow:hidden;position:relative}.card-image img{width:100%;height:100%;object-fit:cover;transition:transform .3s ease}.card:hover .card-image img{transform:scale(1.05)}.card-overlay{position:absolute;top:0;left:0;right:0;bottom:0;background:rgba(255,255,255,.237);display:flex;align-items:center;justify-content:center;opacity:0;transition:opacity .3s ease}.card-content{padding:1.5rem;flex:1;display:flex;flex-direction:column}.card-description{flex:1}.card-technologies{margin-top:auto}.card-title{font-size:1.4rem;font-weight:700;margin-top:0;margin-bottom:.8rem}.dark-mode .card{background:rgba(40,40,40,.95);border-color:rgba(255,220,220,.2);box-shadow:0 2px 8px rgba(255,220,220,.1)}.dark-mode .card-title{color:var(--color-text)}.dark-mode .card-description{color:var(--color-accent)}.dark-mode .card-link.primary{background:var(--color-white);color:var(--color-primary);border-color:var(--color-white)}.dark-mode .card-link.primary:hover{background:#ddd}.dark-mode .card-link.secondary{color:var(--color-text);border-color:var(--color-text)}.dark-mode .tech-tag{background:var(--color-white);color:var(--color-primary)}.card-description{color:var(--color-secondary);line-height:1.6;margin-bottom:1rem}.card-technologies{display:flex;flex-wrap:wrap;gap:.5rem;margin-bottom:1rem}.tech-tag{background:var(--color-primary);color:var(--color-white);padding:.3rem .8rem;border-radius:20px;font-size:.8rem}.card-links{display:flex;gap:1rem}.card-link{padding:.6rem 1.2rem;border-radius:8px;text-decoration:none;font-weight:500;transition:all .3s ease;border:2px solid var(--color-primary)}.card-link.primary{background:var(--color-primary);color:var(--color-white)}.card-link.primary:hover{background:#333;transform:translateY(-2px)}.card-link.secondary{background:0 0;color:var(--color-primary);border:1px solid var(--color-primary)}.card-link.secondary:hover{border-color:var(--color-primary);transform:translateY(-2px)}.card-link.disabled{opacity:.4;cursor:not-allowed;pointer-events:none}.contact-form{max-width:600px;margin:2rem auto 0}.form-group{margin-bottom:1.5rem}.form-group label{display:block;margin-bottom:.5rem;font-weight:700;font-family:"Cinzel",serif;font-size:.9rem}.form-group input,.form-group textarea{width:100%;padding:12px 16px;border:1px solid var(--color-accent);border-radius:8px;background:var(--color-bg);color:var(--color-text);font-family:"Raleway",sans-serif;font-size:1rem;transition:border-color .3s ease;box-sizing:border-box}.form-group input:focus,.form-group textarea:focus{outline:0;border-color:var(--color-text)}.form-group textarea{resize:vertical}.form-error{display:none;font-family:"Cinzel",serif;font-size:.6rem;letter-spacing:2px;color:#c0392b;margin-top:.4rem}.form-error.visible{display:block}.dark-mode .form-error{color:#e74c3c}.form-group input.invalid,.form-group textarea.invalid{border-color:#c0392b}.dark-mode .form-group input.invalid,.dark-mode .form-group textarea.invalid{border-color:#e74c3c}.form-success{text-align:center;color:#2d7a3a;font-weight:700;font-family:"Cinzel",serif;margin-top:1.5rem;font-size:1rem}.dark-mode .form-success{color:#7dda8d}.contact-form .btn-primary{border:0;cursor:pointer;font-family:"Cinzel",serif;font-size:1rem}.carousel-indicators-mobile{display:none}@media (min-width:769px) and (max-width:960px){nav ul{gap:1rem}nav a{padding:8px 10px}}@media (max-width:768px){.carousel-indicators,.carousel-nav,nav a::after,nav a::before{display:none}.carousel-container{padding:10px 0;overflow:hidden}.carousel-wrapper{display:flex;flex-direction:row;overflow-x:scroll;scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch;scrollbar-width:none;gap:1rem;padding:0 1rem}.carousel-wrapper::-webkit-scrollbar{display:none}.carousel-slide{display:contents}.card{min-width:80vw;max-width:80vw;scroll-snap-align:center;flex-shrink:0}.card:hover,.card:hover .card-image img{transform:none}.card:hover .card-overlay{opacity:0}.carousel-indicators-mobile{display:flex;justify-content:center;align-items:center;gap:8px;margin-top:20px;padding:10px 0}.mobile-dot{width:8px;height:8px;border-radius:50%;background:var(--color-accent);transition:all .15s ease;opacity:.4;border:0;padding:0;cursor:pointer;-webkit-appearance:none;appearance:none;outline:0}.mobile-dot.active{background:var(--color-text);transform:scale(1.4);opacity:1}header{padding:.5rem}.burger{display:block;top:18px}#muteToggle{top:30px}nav{max-height:0;overflow:hidden;transition:max-height .3s ease}nav.open{max-height:500px}nav ul{flex-direction:column;gap:0;margin-top:20px;padding:0}nav a{display:block;padding:12px 20px;font-size:14px}nav a,nav a.active{color:var(--color-text)}.lang-dropdown{display:flex;flex-direction:column;align-items:center;margin:10px 0}.lang-menu{position:static;transform:none;margin-top:6px;text-align:center;border-radius:6px}.hero-content{display:flex;gap:40px;text-align:center}.hero-text h1{font-size:28px}.hero-text p{font-size:16px;padding:0 1rem}.apropos-container,.hero-buttons,.hero-content{flex-direction:column;align-items:center}.hero-buttons a{width:100%;max-width:250px;text-align:center}.hero-visual img{max-width:80%;height:auto}.apropos-container{text-align:center;gap:0}.bio,.cv{max-width:100%}#scrollToTop{bottom:20px;right:20px}#scrollToTop,#scrollToTop img{width:60px;height:60px}}#scrollToTop{position:fixed;bottom:30px;right:30px;background:0 0;border:0;cursor:pointer;opacity:0;visibility:hidden;transition:all .3s ease-in-out;z-index:1000;padding:0;width:100px;height:100px;display:flex;align-items:center;justify-content:center}#scrollToTop.show{opacity:1;visibility:visible}#scrollToTop:hover{transform:translateY(-2px)}#scrollToTop img{width:100px;height:100px;transition:filter .3s ease;display:block;filter:drop-shadow(0 0 3px rgba(255,255,255,.8)) drop-shadow(0 0 6px rgba(255,255,255,.4))}footer{text-align:center;background:var(--color-primary);padding:1rem;box-shadow:0-2px 8px rgba(0,0,0,.35)}body.dark-mode footer{box-shadow:0-2px 6px rgba(255,220,220,.3)}.footer-content{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:40px;margin-bottom:40px}.footer-section h3{font-size:18px;font-weight:600;margin-bottom:20px}.footer-section ul{list-style:none;padding:0;margin:0}.footer-section a,.footer-section li{color:#9ca3af;text-decoration:none;line-height:1.6;font-size:15px}.footer-section a:hover,footer{color:var(--color-white)}.footer-bottom{padding-top:40px;border-top:1px solid var(--color-border);text-align:center;color:#9ca3af}.fade-in{opacity:0;transform:translateY(30px);transition:all .6s ease-out}.fade-in.visible{opacity:1;transform:translateY(0)}.tech-list{display:flex;flex-wrap:wrap;justify-content:center;gap:60px 30px;padding:3rem 2rem 6rem;list-style:none;margin:0 auto;max-width:1120px}.tech-card{text-decoration:none;display:flex;align-items:center;gap:12px;width:180px;height:70px;background:var(--color-white);padding-left:16px;transform:rotate(-30deg) skew(25deg) translate(0,0);transition:.5s;box-shadow:-20px 20px 10px rgba(0,0,0,.3);position:relative}.dark-mode .tech-card{background:#2a2a2a;box-shadow:-20px 20px 10px rgba(0,0,0,.6)}.tech-card::after,.tech-card::before{content:"";position:absolute;background:#b1b1b1;transition:.5s}.tech-card::before{top:10px;left:-20px;height:100%;width:20px;transform:rotate(0deg) skewY(-45deg)}.tech-card::after{bottom:-20px;left:-10px;height:20px;width:100%;transform:rotate(0deg) skewX(-45deg)}.dark-mode .tech-card::after,.dark-mode .tech-card::before{background:#1a1a1a}.tech-card:hover{transform:rotate(-30deg) skew(25deg) translate(20px,-15px);box-shadow:-50px 50px 50px rgba(0,0,0,.5)}.tech-item{cursor:default;user-select:none}.tech-icon,.tech-name{color:var(--color-text);transition:.5s}.tech-icon{font-size:36px;flex-shrink:0}.tech-name{letter-spacing:2px;font-size:.8rem;font-family:"Raleway",sans-serif;font-weight:700}.tech-item:hover .tech-icon,.tech-item:hover .tech-name{color:#fff}.tech-item:hover:nth-child(1) .tech-card{background:#e34f26}.tech-item:hover:nth-child(1) .tech-card::before{background:#b83c1c}.tech-item:hover:nth-child(1) .tech-card::after{background:#f06040}.tech-item:hover:nth-child(2) .tech-card{background:#264de4}.tech-item:hover:nth-child(2) .tech-card::before{background:#1a35a0}.tech-item:hover:nth-child(2) .tech-card::after{background:#4d6eee}.tech-item:hover:nth-child(3) .tech-card{background:#c5ac00}.tech-item:hover:nth-child(3) .tech-card::before{background:#957f00}.tech-item:hover:nth-child(3) .tech-card::after{background:#e8cc10}.tech-item:hover:nth-child(4) .tech-card{background:#777bb4}.tech-item:hover:nth-child(4) .tech-card::before{background:#55588a}.tech-item:hover:nth-child(4) .tech-card::after{background:#9598c8}.tech-item:hover:nth-child(5) .tech-card{background:#ff2d20}.tech-item:hover:nth-child(5) .tech-card::before{background:#c01e14}.tech-item:hover:nth-child(5) .tech-card::after{background:#ff6b61}.tech-item:hover:nth-child(6) .tech-card{background:#c69}.tech-item:hover:nth-child(6) .tech-card::before{background:#a04a78}.tech-item:hover:nth-child(6) .tech-card::after{background:#dd88b0}.tech-item:hover:nth-child(7) .tech-card{background:#f05032}.tech-item:hover:nth-child(7) .tech-card::before{background:#b83a23}.tech-item:hover:nth-child(7) .tech-card::after{background:#f47860}.tech-item:hover:nth-child(8) .tech-card{background:#06b6d4}.tech-item:hover:nth-child(8) .tech-card::before{background:#0591aa}.tech-item:hover:nth-child(8) .tech-card::after{background:#38d1eb}.tech-item:hover:nth-child(9) .tech-card{background:#77c1d2}.tech-item:hover:nth-child(9) .tech-card::before{background:#4fa3b8}.tech-item:hover:nth-child(9) .tech-card::after{background:#a0d8e5}.tech-item:hover:nth-child(10) .tech-card{background:#4479a1}.tech-item:hover:nth-child(10) .tech-card::before{background:#2e5578}.tech-item:hover:nth-child(10) .tech-card::after{background:#69b}.dark-mode section h2{animation:nier-noise 3s linear infinite}@media (max-width:768px){.tech-list{gap:50px 10px;padding:2rem 0 5rem}.tech-card{width:130px;height:58px;gap:8px;padding-left:10px}.tech-icon{font-size:24px}.tech-name{font-size:.65rem;letter-spacing:1px}}.nier-glitch{position:relative}a.nier-glitch,span.nier-glitch{display:inline-block}.nier-glitch.is-glitching::after,.nier-glitch.is-glitching::before{content:attr(data-text);position:absolute;left:0;top:0;width:100%;height:100%;overflow:hidden;pointer-events:none;font-family:inherit;font-size:inherit;font-weight:inherit;text-align:inherit;white-space:pre}.nier-glitch.is-glitching::before{color:#ff2828;opacity:.9;animation:nierSlice1 160ms steps(2,end) infinite}.nier-glitch.is-glitching::after{color:#00dcff;opacity:.9;animation:nierSlice2 180ms steps(2,end) infinite}.logo.is-glitching{animation:logo-glitch .65s steps(4,end)}.dark-mode h1 .nier-glitch{animation:nier-noise 3.5s linear infinite}.dark-mode nav a.nier-glitch{animation:nier-noise-nav 3s linear infinite}.dark-mode nav a.nier-glitch.active,.dark-mode nav a.nier-glitch:focus-visible,.dark-mode nav a.nier-glitch:hover{animation:none;transform:none;text-shadow:none}.dark-mode footer h3.nier-glitch{animation:nier-noise 4s linear infinite}