body.dark-theme{--main-bg-color: #070505;--secondary-bg-color: #181818;--tag-bg-color: #23272F;--blue-bg-color: #1a2e3d;--navbar-border-color: #3d73a6;--primary-color: #234264;--highlight-color: #2a4d6b;--field-focus: #181616;--text: #fff;--text-darker: #e0e0e0;--gradient0: #3d73a6;--gradient1: #5099cc;--gradient2: #66b3ff;--gradient0-dark: #4d86b9;--gradient1-dark: #339fff;--gradient2-dark: #4db3ff}body.light-theme{--main-bg-color: #f8f8f8;--secondary-bg-color: #ffffff;--tag-bg-color: #f0f0f0;--blue-bg-color: #e6f3ff;--navbar-border-color: #0066cc;--primary-color: #0066cc8a;--highlight-color: #4d9fff;--field-focus: #f0f8ff;--text: #222;--text-darker: #000;--gradient0: #003366;--gradient1: #0066cc;--gradient2: #4d9fff;--gradient0-dark: #004d99;--gradient1-dark: #3399ff;--gradient2-dark: #6bb3ff}.dark-theme .navbar-svg,.dark-theme .contact-svg,.dark-theme .theme-svg{filter:invert(1) brightness(90%)}.light-theme .navbar-svg,.light-theme .contact-svg,.light-theme .theme-svg{filter:invert(0) brightness(90%)}.dark-theme #contact .contact-item:hover .contact-svg{filter:invert(1) brightness(100%)}.light-theme #contact .contact-item:hover .contact-svg{filter:invert(0) brightness(100%)}.dark-theme .tag-unity{--tag-color: #ffffff}.light-theme .tag-unity{--tag-color: #000000}#theme-toggle{position:absolute;top:18px;right:-10px;z-index:10000;overflow:visible;display:flex;align-items:center;justify-content:center}.theme-svg{width:1.8em;height:1.8em;vertical-align:middle;transition:filter .3s ease}#svg-sun.theme-svg{transform-origin:center}*{font-family:Segoe UI,Arial,sans-serif}body,html{transition:background .5s ease-in-out;color:var(--text-darker)}#root{color:var(--text-darker);background:var(--main-bg-color)}h1{font-size:3rem;margin:.2em 0 .4em;word-break:break-word;text-align:center;width:100%}#sections p{color:var(--text-darker);font-size:1.08rem;line-height:1.6}.description{width:70%;text-align:center;color:var(--text)!important}section{width:100vw;min-width:100vw;height:100vh;flex-shrink:0;display:flex;flex-direction:column;justify-content:flex-start;align-items:center;font-size:2rem;transition:background .5s;padding-top:5rem}#root,html,body{height:100vh;width:100vw;overflow:hidden;margin:0;padding:0;background:var(--main-bg-color)}#sections{display:flex;flex-direction:row;height:100vh;width:100vw;transition:transform .4s cubic-bezier(.77,0,.18,1);will-change:transform}section.active{opacity:1;pointer-events:auto;z-index:2;transform:translate(0)}section.slide-in-left{opacity:1;z-index:2;transform:translate(-100vw)}section.slide-in-right{opacity:1;z-index:2;transform:translate(100vw)}section.slide-out-left{opacity:1;z-index:1;transform:translate(-100vw);pointer-events:none}section.slide-out-right{opacity:1;z-index:1;transform:translate(100vw);pointer-events:none}body.home-active #navbar{background:transparent!important;border-bottom:none!important;box-shadow:none!important}#contact{transition:background-color .5s ease-in-out}.dark-theme #contact{background-color:#22344d}.light-theme #contact{background-color:#80ccff6d}#projects{background:transparent;padding-top:0!important}#about{transition:background-color .5s ease-in-out}.dark-theme #about{background-color:#22344d}.light-theme #about{background-color:#80ccff6d}#three-bg-gradient{position:fixed;left:0;right:0;bottom:0;height:20vh;pointer-events:none;z-index:2}.dark-theme #three-bg-gradient{background:linear-gradient(to top,#020305cc,#02030599 35%,#02030566 65%,#02030533 80%,#02030500)}.light-theme #three-bg-gradient{background:transparent}#navbar p{font-size:1.1rem;color:var(--text-darker);margin:0;font-weight:500}#sections h2{color:var(--text);font-weight:700;margin-bottom:1.2em;line-height:1.2}#navbar{position:fixed;top:0;left:0;width:100vw;background:var(--blue-bg-color);border-bottom:1px solid var(--navbar-border-color);display:flex;justify-content:center;gap:2rem;padding:1rem 0;z-index:1000;transition:top .3s,bottom .3s;box-shadow:0 2px 8px #0000002e}#navbar a{color:var(--text-darker);text-decoration:none;font-weight:700;padding:.5rem 1rem;border-radius:4px;transition:background .2s,color .2s}#navbar a p{margin:0;font-weight:700;color:var(--text-darker)}#navbar a.active{background:var(--primary-color);color:var(--text)}#navbar a.active p{color:var(--text)}.navbar-svg{display:none;width:1.8em;vertical-align:middle}@media (max-width: 600px){.navbar-p{display:none}.navbar-svg{display:block}#navbar{top:auto;bottom:0;border-bottom:none;box-shadow:0 -2px 8px #0000002e}section{padding-bottom:3.5rem!important;padding-top:.15rem!important}#arrow-left,#arrow-right{display:none}}#mtpsete{width:26%;left:0%;background-color:var(--gradient0)}#naccessoires{width:10%;left:16%;background-color:var(--gradient0-dark)}#licence{width:37%;left:26%;background-color:var(--gradient1)}#master{width:37%;left:63%;background-color:var(--gradient2)}#timeline{width:85%;height:0;display:block;position:relative;top:26%}.timeline-element{height:25px;border-radius:50px;position:absolute;scale:.95;z-index:2000}#timeline-arrow{width:0;height:0;border-radius:3px;border-top:30px solid transparent;border-bottom:30px solid transparent;border-left:30px solid var(--gradient2);position:absolute;left:98%;top:-17px;z-index:100001}.timeline-info{position:absolute;border-left:2px solid var(--text-darker);z-index:-1!important;left:10px}.timeline-main .timeline-info{padding-left:10px;padding-top:25px;margin-top:25px}.timeline-top .timeline-info{padding-left:10px;padding-bottom:25px;margin-bottom:25px;top:-109px;width:350px}.timeline-info h3{color:var(--text);margin:0;font-size:1.4rem}.timeline-element .timeline-year{font-size:1.2rem;color:var(--text-darker);font-weight:600;margin:0}.timeline-element .timeline-location{font-size:1.2rem;color:var(--text-darker);margin:0}.timeline-top{top:-30px}section h2{margin-bottom:1rem!important}@media (max-width: 900px){#timeline{height:50%;width:0;top:0%}.timeline-element{width:25px!important;height:auto}.timeline-info{position:absolute;border-top:2px solid var(--text-darker);border-left:none}.timeline-main .timeline-info{left:-320px;padding-right:30px;width:280px;padding-top:5px;margin-top:13px}.timeline-top .timeline-info{padding-top:5px;padding-left:50px;margin-top:13px;top:0;left:25px;width:130px}.timeline-top{top:0;left:30px!important}#mtpsete{height:26%;top:0%;background-color:var(--gradient0)}#naccessoires{height:10%;top:16%;background-color:var(--gradient0-dark)}#licence{height:37%;top:26%;background-color:var(--gradient1)}#master{height:37%;top:63%;background-color:var(--gradient2)}section h2{margin-bottom:0}#timeline-arrow{width:0!important;height:0;border-left:30px solid transparent;border-right:30px solid transparent;border-top:30px solid var(--gradient2);left:-18px;top:95%}.dark-theme #timeline-arrow{border-top-color:#4d9fff!important;filter:brightness(1.3) drop-shadow(0 0 5px rgba(77,159,255,.3))}}@media (max-width: 750px){.timeline-info h3{font-size:1rem}.timeline-year,.timeline-location{font-size:.9rem!important}.timeline-main .timeline-info{left:-260px;width:220px}}@media (max-width: 500px){.timeline-info h3{font-size:.9rem}.timeline-main .timeline-info{left:-220px;width:180px}section h2{margin-top:1rem!important}}@media (max-width: 480px){.timeline-top .timeline-info{left:25px;width:90px}}@media (max-width: 430px){.timeline-main .timeline-info{left:-210px;width:170px}.description{font-size:.96rem!important}}#arrows{position:fixed;top:50%;left:0;width:100vw;display:flex;justify-content:space-between;align-items:center;transform:translateY(-50%);z-index:1500;pointer-events:none}@keyframes arrow-wiggle-left{0%,to{transform:translateY(-50%) translate(0)}50%{transform:translateY(-50%) translate(-6px)}}@keyframes arrow-wiggle-right{0%,to{transform:translateY(-50%) translate(0)}50%{transform:translateY(-50%) translate(6px)}}#arrow-left{animation:arrow-wiggle-left 2.2s infinite}#arrow-right{animation:arrow-wiggle-right 2.2s infinite}#arrows button{background:none;color:var(--text-darker);border:none;font-size:3rem;padding:1rem;margin:0 2vw;cursor:pointer;opacity:.9;pointer-events:auto;transition:all .3s ease;line-height:1}#arrows button:hover{opacity:1;transform:scale(1.05)}#arrows button:disabled,#arrows button.hidden{visibility:hidden;pointer-events:none}.arrow-svg{width:3.5rem;height:3.5rem;filter:brightness(0) saturate(100%) invert(85%) sepia(12%) saturate(300%) hue-rotate(169deg) brightness(95%) contrast(90%) drop-shadow(0 2px 4px rgba(0,0,0,.3));transition:filter .2s,transform .2s;pointer-events:none}.arrow-left-svg{transform:scaleX(-1)}.arrow-right-svg{transform:rotate(0)}#arrows button:hover .arrow-svg{filter:brightness(0) saturate(100%) invert(100%) sepia(0%) saturate(7500%) hue-rotate(324deg) brightness(120%) contrast(120%) drop-shadow(0 4px 8px rgba(255,255,255,.4));transform:scale(1.2)}#arrows button:hover .arrow-left-svg{transform:scaleX(-1) scale(1.2)}.light-theme .arrow-svg{filter:brightness(0) saturate(100%) invert(20%) sepia(12%) saturate(300%) hue-rotate(169deg) brightness(50%) contrast(90%) drop-shadow(0 2px 4px rgba(0,0,0,.3))}.light-theme #arrows button:hover .arrow-svg{filter:brightness(0) saturate(100%) invert(10%) sepia(0%) saturate(7500%) hue-rotate(324deg) brightness(30%) contrast(120%) drop-shadow(0 4px 8px rgba(0,0,0,.4));transform:scale(1.2)}.light-theme #arrows button:hover .arrow-left-svg{transform:scaleX(-1) scale(1.2)}.dark-theme .arrow-svg{filter:brightness(0) saturate(100%) invert(85%) sepia(12%) saturate(300%) hue-rotate(169deg) brightness(95%) contrast(90%) drop-shadow(0 2px 4px rgba(0,0,0,.3))}.dark-theme #arrows button:hover .arrow-svg{filter:brightness(0) saturate(100%) invert(100%) sepia(0%) saturate(7500%) hue-rotate(324deg) brightness(120%) contrast(120%) drop-shadow(0 4px 8px rgba(255,255,255,.4));transform:scale(1.2)}.dark-theme #arrows button:hover .arrow-left-svg{transform:scaleX(-1) scale(1.2)}#projects-top-anchor{position:absolute;top:0;left:0;width:1px;height:1px;visibility:hidden}#scroll-to-top{position:fixed;bottom:30px;right:2vw;width:50px;height:50px;background-color:var(--primary-color);border:2px solid rgba(255,255,255,.2);border-radius:50%;display:flex;align-items:center;justify-content:center;cursor:pointer;z-index:1500;opacity:0;visibility:hidden;transition:all .3s ease}#scroll-invite{position:absolute;left:50%;bottom:32px;transform:translate(-50%);cursor:pointer;z-index:10;width:48px;height:48px;display:flex;align-items:center;justify-content:center;outline:none}#scroll-invite .arrow{display:block;width:32px;height:32px;border-left:4px solid var(--text);border-bottom:4px solid var(--text);transform:rotate(-45deg);animation:bounce 1.2s infinite}@keyframes bounce{0%,to{transform:translateY(0) rotate(-45deg)}50%{transform:translateY(12px) rotate(-45deg)}}#home{min-height:100vh;display:flex;flex-direction:column;justify-content:flex-start;align-items:center;position:relative;background:transparent!important;padding-top:25vh}#projects h3{color:var(--text);text-align:center}#projects h2{color:var(--text)}#project-tags{position:relative;width:100%;text-align:center;display:flex;justify-content:center;align-items:center;flex-wrap:wrap;gap:1rem;padding:1rem 0;margin-bottom:1rem}.tag-cpp{--tag-color: #1067a8}.tag-kotlin{--tag-color: #A97BFF}.tag-opengl{--tag-color: #b4651c}.tag-opencv{--tag-color: #9633a3}.tag-qt{--tag-color: #12834B}.tag-unity{--tag-color: #000000}.tag-threejs{--tag-color: #157512}.tag-godot{--tag-color: #61DAFB}.tag-python{--tag-color: #3572A5}#project-tags .tag[data-tag=All]{color:var(--text-darker);background:var(--tag-bg-color);border:1.5px solid #444}#project-tags .tag[data-tag=All].active{color:var(--text);background:var(--primary-color);border:1.5px solid var(--primary-color)}#project-tags .tag{color:var(--tag-color);background:var(--tag-bg-color);border:1.5px solid var(--tag-color);border-radius:999px!important;padding:.2em 1em;font-size:.95rem;font-weight:500;margin:0 .3em 0 0;cursor:pointer;transition:background .2s,color .2s,border .2s;display:inline-flex;align-items:center}#project-tags .tag.active{color:var(--text);background:var(--tag-color);border:1.5px solid var(--tag-color)}#project-content{width:100%;height:100%;overflow-y:auto;padding:5rem 2rem 1rem;display:flex;flex-direction:column;align-items:center;box-sizing:border-box}.dark-theme #project-content{background:#22344d}.light-theme #project-content{background:#80ccff6d}#project-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:2.5rem 2rem;width:90%;max-width:1200px;padding:2rem 0;margin-bottom:3rem;position:relative;margin-left:auto;margin-right:auto;justify-items:center}.project-card{background:var(--secondary-bg-color);border-radius:12px;box-shadow:0 2px 12px #0000002e;padding:1rem;display:flex;flex-direction:column;align-items:center;transition:transform .18s cubic-bezier(.4,1.4,.6,1),box-shadow .18s,background-color .5s ease-in-out,border-color .5s ease-in-out;cursor:pointer;border:1px solid var(--navbar-border-color);width:345px}.dark-theme .project-card{background:#181818e6;border:1px solid rgba(61,115,166,.3);box-shadow:0 2px 12px #0006}.light-theme .project-card{background:#fffffff2;border:1px solid rgba(0,102,204,.4);box-shadow:0 2px 12px #00000026}.project-card:hover,.project-card:focus{transform:scale(1.045);z-index:2;border:1.5px solid var(--primary-color)}.dark-theme .project-card:hover,.dark-theme .project-card:focus{box-shadow:0 6px 24px #00000080;background:#181818f2}.light-theme .project-card:hover,.light-theme .project-card:focus{box-shadow:0 6px 24px #0003;background:#fff}.project-card img{width:100%;max-width:320px;border-radius:8px;margin-bottom:1rem;background:#181a20;aspect-ratio:16 / 9;object-fit:cover}.project-card h3{margin:.5rem 0;color:var(--text);font-size:1.3rem}.project-card-tags .tag{color:var(--tag-color);background:var(--tag-bg-color);border:1.5px solid var(--tag-color);border-radius:20px;padding:.2em 1em;font-size:.95rem;font-weight:500;margin:0 .3em 0 0;cursor:default;transition:none;box-shadow:none;pointer-events:none;display:inline-flex;align-items:center}.project-card p{text-align:center;font-size:1rem;margin:.5rem 0 0;color:var(--text-darker);opacity:.8}@media (max-width: 1500px){#project-grid{grid-template-columns:repeat(2,1fr)}}@media (max-width: 975px){#project-grid{grid-template-columns:1fr;padding:1.2rem 0}#project-content{padding:0 1rem}}.ps{overflow:hidden!important;touch-action:auto}.ps__rail-y{width:8px;background:transparent;right:2px;border-radius:4px}.ps__thumb-y{background:#333a4d;border-radius:4px;width:8px;min-height:40px;opacity:.7;transition:background .2s}.ps__thumb-y:hover{background:#0078d7}#contact-form{background:var(--secondary-bg-color);padding:32px 24px;border-radius:12px;box-shadow:0 2px 16px #0000002e;display:flex;flex-direction:column;gap:18px;min-width:320px;max-width:400px;width:100%;border:1px solid #23272F}#contact .contact-container{display:flex;justify-content:space-evenly;align-items:center;gap:2.5rem;width:100%;max-width:800px;height:100%}#contact .contact-info{display:flex;flex-direction:column;justify-content:center;align-items:center;width:100%;height:100%;text-align:left;margin-bottom:0;font-size:1.05rem;line-height:1.5;color:var(--text-darker);padding:0 24px}#contact .contact-item{display:flex;flex-direction:row;width:100%;justify-content:flex-start;margin:1.5rem 0}.contact-item>a{padding-left:10px}.contact-svg{width:1.8em;vertical-align:middle;margin-right:.4em}#contact .contact-info a{color:var(--text-darker);text-decoration:none;word-break:break-all}#contact .contact-item:hover .contact-svg{scale:1.05}#contact .contact-item:hover a{color:var(--text);font-weight:600}#contact-form label{color:var(--text-darker);font-weight:500;margin-bottom:4px}#contact-form input,#contact-form textarea{padding:10px 12px;border:1px solid #444;border-radius:6px;font-size:1rem;background:var(--secondary-bg-color);color:var(--text-darker);transition:border .2s,background .2s;margin-bottom:12px;resize:vertical}.dark-theme #contact-form input,.dark-theme #contact-form textarea{filter:brightness(.75)}.light-theme #contact-form input,.light-theme #contact-form textarea{filter:brightness(.9)}#contact-form input:focus,#contact-form textarea:focus{border-color:var(--primary-color);outline:none;background:var(--field-focus)}#contact-form button[type=submit]{margin-top:8px;padding:10px 0;background:var(--primary-color);color:var(--text-darker);border:none;border-radius:6px;font-size:1.1rem;font-weight:600;cursor:pointer;transition:background .2s}#contact-form button[type=submit]:not(:disabled):hover{background:var(--primary-color);color:var(--text);filter:brightness(1.15)}@media screen and (max-width: 1000px){#contact .contact-container{flex-direction:column;align-items:center;height:auto}#contact .contact-info{flex-direction:row!important;flex-wrap:wrap;padding:0 24px;width:auto!important}.contact-item{width:50%!important;align-items:center}}@media screen and (max-width: 500px){#contact-form{padding:12px 8px}#contact-form button{margin-top:0!important}}@media screen and (max-width: 450px){#contact-form{width:auto}.contact-item{flex-direction:column!important}}#scroll-to-top{box-shadow:0 4px 12px #0000004d}#scroll-to-top:hover{animation:none;filter:none}#scroll-to-top.visible{opacity:1;visibility:visible}.scroll-to-top-svg{width:28px;height:28px;filter:invert(0) brightness(90%);transition:none;transform:rotate(180deg)}.dark-theme #scroll-to-top{background:#22344d;border-color:var(--text-darker)}.dark-theme #scroll-to-top:hover{background:#22344d;border-color:var(--text-darker);transform:scale(1.045);box-shadow:0 6px 24px #00000080}.dark-theme .scroll-to-top-svg{filter:invert(1) brightness(90%)}.light-theme #scroll-to-top{background:#80ccff6d;border-color:var(--text-darker)}.light-theme #scroll-to-top:hover{background:#80ccff6d;border-color:var(--text-darker);transform:scale(1.045);box-shadow:0 6px 24px #0003}.light-theme .scroll-to-top-svg{filter:invert(0) brightness(90%)}.dark-theme #scroll-to-top:hover .scroll-to-top-svg{transform:rotate(180deg);filter:invert(1) brightness(90%)}.light-theme #scroll-to-top:hover .scroll-to-top-svg{transform:rotate(180deg);filter:invert(0) brightness(90%)}@media (max-width: 600px){#scroll-to-top{bottom:5rem;right:20px;left:auto;transform:none;width:50px;height:50px;z-index:9999;pointer-events:auto}#scroll-to-top:hover{transform:translateY(-3px) scale(1.05)}#scroll-to-top.visible{opacity:1;visibility:visible;pointer-events:auto}.scroll-to-top-svg{width:24px;height:24px;pointer-events:none;transform:rotate(180deg)}}#project-tags .tag,.project-card-tags .tag{border-radius:999px!important}.ps{overflow:hidden!important;overflow-anchor:none;-ms-overflow-style:none;touch-action:auto;-ms-touch-action:auto}.ps__rail-x{display:none;opacity:0;transition:background-color .2s linear,opacity .2s linear;-webkit-transition:background-color .2s linear,opacity .2s linear;height:15px;bottom:0;position:absolute}.ps__rail-y{display:none;opacity:0;transition:background-color .2s linear,opacity .2s linear;-webkit-transition:background-color .2s linear,opacity .2s linear;width:15px;right:0;position:absolute}.ps--active-x>.ps__rail-x,.ps--active-y>.ps__rail-y{display:block;background-color:transparent}.ps:hover>.ps__rail-x,.ps:hover>.ps__rail-y,.ps--focus>.ps__rail-x,.ps--focus>.ps__rail-y,.ps--scrolling-x>.ps__rail-x,.ps--scrolling-y>.ps__rail-y{opacity:.6}.ps .ps__rail-x:hover,.ps .ps__rail-y:hover,.ps .ps__rail-x:focus,.ps .ps__rail-y:focus,.ps .ps__rail-x.ps--clicking,.ps .ps__rail-y.ps--clicking{background-color:#eee;opacity:.9}.ps__thumb-x{background-color:#aaa;border-radius:6px;transition:background-color .2s linear,height .2s ease-in-out;-webkit-transition:background-color .2s linear,height .2s ease-in-out;height:6px;bottom:2px;position:absolute}.ps__thumb-y{background-color:#aaa;border-radius:6px;transition:background-color .2s linear,width .2s ease-in-out;-webkit-transition:background-color .2s linear,width .2s ease-in-out;width:6px;right:2px;position:absolute}.ps__rail-x:hover>.ps__thumb-x,.ps__rail-x:focus>.ps__thumb-x,.ps__rail-x.ps--clicking .ps__thumb-x{background-color:#999;height:11px}.ps__rail-y:hover>.ps__thumb-y,.ps__rail-y:focus>.ps__thumb-y,.ps__rail-y.ps--clicking .ps__thumb-y{background-color:#999;width:11px}@supports (-ms-overflow-style: none){.ps{overflow:auto!important}}@media screen and (-ms-high-contrast: active),(-ms-high-contrast: none){.ps{overflow:auto!important}}
