@import "https://fonts.googleapis.com/css2?family=Cormorant+Garamond:ital,wght@1,300;1,400;1,500;1,600&family=Space+Mono:wght@400;700&display=swap";:root{--bg-blue:#0046e8;--grid-line:#ffffff14;--text-white:#fff;--text-yellow:#fcd34d;--text-red:#ef4444;--text-green:#22c55e;--font-serif:"Cormorant Garamond", serif;--font-mono:"Space Mono", monospace;--transition-smooth:all .3s cubic-bezier(.25, .8, .25, 1);--transition-fast:all .15s ease}*{box-sizing:border-box;margin:0;padding:0}body{background-color:var(--bg-blue);color:var(--text-white);font-family:var(--font-mono);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;min-height:100vh;margin:0;padding:0;position:relative;overflow-x:hidden}body:after{content:"";background-size:50px 50px;background-image:linear-gradient(to right, var(--grid-line) 1px, transparent 1px), linear-gradient(to bottom, var(--grid-line) 1px, transparent 1px);pointer-events:none;z-index:-1;position:fixed;inset:0}.spotlight{pointer-events:none;z-index:999;background:radial-gradient(400px circle at var(--mouse-x,-500px) var(--mouse-y,-500px), #ffffff14, transparent 80%);position:fixed;inset:0}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:var(--bg-blue)}::-webkit-scrollbar-thumb{background:#fff3;border-radius:3px}::-webkit-scrollbar-thumb:hover{background:#fff6}a{color:inherit;text-decoration:none}.portfolio-container{z-index:10;flex-direction:column;justify-content:space-between;min-height:100vh;padding:2.5rem;display:flex;position:relative}@media (width<=768px){.portfolio-container{padding:1.5rem}}@keyframes float{0%{transform:translateY(0)rotate(0)}50%{transform:translateY(-6px)rotate(1deg)}to{transform:translateY(0)rotate(0)}}@keyframes sway{0%{transform:rotate(-2deg)}50%{transform:rotate(2deg)}to{transform:rotate(-2deg)}}@keyframes scroll-wheel{0%{opacity:1;transform:translateY(0)}50%{opacity:0;transform:translateY(5px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes wiggle{0%{transform:rotate(0)}15%{transform:rotate(-8deg)}30%{transform:rotate(6deg)}45%{transform:rotate(-6deg)}60%{transform:rotate(4deg)}75%{transform:rotate(-4deg)}90%{transform:rotate(2deg)}to{transform:rotate(0)}}.fade-in{animation:.6s cubic-bezier(.215,.61,.355,1) forwards fadeIn}.page-transition{opacity:0;transition:opacity .3s ease-in-out}.page-transition.active{opacity:1}.hamburger-btn{display:none}.home-bg-pokemons-desktop{transition:opacity .35s cubic-bezier(.25,.46,.45,.94);display:block}.home-bg-pokemons-desktop.hide-bg-pokemons{opacity:0;pointer-events:none}.home-pokemons-mobile{display:none}@media (width<=768px){.home-bg-pokemons-desktop{display:none!important}.home-pokemons-mobile{z-index:10;opacity:1;flex-direction:column;align-items:center;gap:.5rem;width:100%;max-height:150px;margin:2rem auto;transition:max-height .4s cubic-bezier(.25,.8,.25,1),opacity .3s,margin .4s cubic-bezier(.25,.8,.25,1);display:flex;overflow:hidden}.home-pokemons-mobile.hide-party-mobile{opacity:0;pointer-events:none;max-height:0;margin-top:0;margin-bottom:0}.party-title{font-family:var(--font-mono);color:var(--text-yellow);letter-spacing:.25em;opacity:.8;font-size:.6rem;font-weight:700}.party-row{background:#001c7766;border:1px dashed #fff3;border-radius:4px;flex-wrap:wrap;justify-content:center;align-items:center;gap:1.25rem;width:fit-content;max-width:90vw;padding:.75rem 1.25rem;display:flex}.scroll-indicator-container,.desktop-nav,.desktop-socials{display:none!important}.hamburger-btn{cursor:pointer;z-index:110;transition:var(--transition-fast);background:0 0;border:none;outline:none;padding:.5rem;display:block!important}.hamburger-btn:hover{transform:scale(1.1)}.hamburger-btn svg{display:block}.hero-wrapper{order:1;flex-direction:column!important;gap:1rem!important;padding:3rem 0!important}.hero-subtitle-top{text-align:center!important;align-self:center!important;width:100%!important;margin-bottom:.5rem!important;margin-left:0!important}.hero-subtitle-bottom{text-align:center!important;align-self:center!important;width:100%!important;margin-top:.5rem!important;margin-right:0!important}.home-pokemons-mobile{order:2!important;margin:1.5rem auto!important}.pokeball-trigger{transition:all .3s;order:3!important;margin:1.5rem auto!important;position:relative!important;bottom:auto!important}.pokeball-trigger.fade-out-fast{pointer-events:none;margin:0!important;position:absolute!important;left:50%!important;transform:translate(-50%)scale(.8)!important}.starter-selector-container{order:3!important}.footer-row{text-align:center!important;flex-direction:column!important;order:4!important;align-items:center!important;gap:1.5rem!important;width:100%!important;margin-top:3rem!important;padding-bottom:1rem!important;position:relative!important;bottom:auto!important;left:auto!important;right:auto!important}.footer-row>div{text-align:center!important}.works-header-area{text-align:center!important;flex-direction:column!important;align-items:center!important;gap:.5rem!important}.page-title{text-align:center!important;width:100%!important;font-size:clamp(2rem,8vw,3rem)!important}.coordinate-label{text-align:center!important;width:100%!important}.projects-grid{grid-template-columns:repeat(auto-fill,minmax(280px,1fr))!important;gap:1.2rem!important}.about-layout,.contact-layout{gap:2rem!important}.about-lead,.contact-heading{font-size:clamp(1.8rem,6vw,2.5rem)!important}.gateway-row{flex-direction:column!important;align-items:flex-start!important;gap:.25rem!important}.mail-console{padding:1.2rem!important}}@media (width<=480px){.portfolio-container{padding:1rem!important}.navbar-nav{flex-wrap:wrap!important;gap:.8rem!important}.navbar-nav button{font-size:.75rem!important}}.loader-container{background-color:var(--bg-blue);z-index:998;opacity:1;flex-direction:column;justify-content:center;align-items:center;transition:opacity .6s cubic-bezier(.25,.46,.45,.94);display:flex;position:fixed;inset:0}.loader-container.fade-out{opacity:0;pointer-events:none}.loader-container:after{content:"";background-size:50px 50px;background-image:linear-gradient(to right, var(--grid-line) 1px, transparent 1px), linear-gradient(to bottom, var(--grid-line) 1px, transparent 1px);pointer-events:none;z-index:-1;position:absolute;inset:0}.loader-status{font-family:var(--font-mono);letter-spacing:.2em;opacity:.8;text-transform:uppercase;margin-bottom:2.5rem;font-size:.75rem;font-weight:700}.loader-title{font-family:var(--font-serif);color:var(--text-white);text-align:center;-webkit-user-select:none;user-select:none;justify-content:center;align-items:center;margin-bottom:4rem;font-size:clamp(4rem,12vw,9rem);font-style:italic;font-weight:400;line-height:.9;display:flex}.blur-fade-char{opacity:0;filter:blur(20px);animation:.8s cubic-bezier(.25,.46,.45,.94) forwards blurFadeIn;display:inline-block;transform:scale(.85)}@keyframes blurFadeIn{0%{opacity:0;filter:blur(20px);transform:scale(.85)}to{opacity:1;filter:blur();transform:scale(1)}}.loader-progress-wrapper{flex-direction:column;gap:.6rem;width:clamp(220px,45vw,360px);margin-bottom:3rem;display:flex}.loader-bar-bg{background-color:#ffffff26;width:100%;height:4px;position:relative;overflow:hidden}.loader-bar-fill{background-color:var(--text-yellow);height:100%;transition:width 50ms linear}.loader-progress-labels{font-family:var(--font-mono);letter-spacing:.1em;opacity:.6;justify-content:space-between;font-size:.65rem;display:flex}.loader-footer{font-family:var(--font-mono);letter-spacing:.15em;opacity:.6;font-size:.65rem;font-weight:700;position:absolute;bottom:2.5rem}.page-loader-overlay{background-color:var(--bg-blue);z-index:1005;opacity:1;pointer-events:all;flex-direction:column;justify-content:center;align-items:center;transition:opacity .6s cubic-bezier(.25,.46,.45,.94);display:flex;position:fixed;inset:0}.page-loader-overlay.fade-out{opacity:0;pointer-events:none}.loader-grid-overlay{background-size:50px 50px;background-image:linear-gradient(to right, var(--grid-line) 1px, transparent 1px), linear-gradient(to bottom, var(--grid-line) 1px, transparent 1px);pointer-events:none;z-index:1;position:absolute;inset:0}.pokemon-battle-container{z-index:2;width:100vw;height:100vh;image-rendering:pixelated;background:radial-gradient(circle,#101935 0%,#050a18 100%);flex-direction:column;display:flex;position:fixed;inset:0;overflow:hidden}.battle-opponent-area{width:100%;height:50vh;position:absolute;top:0;right:0}.battle-player-area{width:100%;height:50vh;position:absolute;bottom:0;left:0}.platform-container{justify-content:center;align-items:center;display:flex;position:absolute}.opponent-platform{width:min(280px,45vw);height:min(70px,12vw);top:30%;right:15%}.player-platform{width:min(340px,50vw);height:min(85px,13vw);bottom:140px;left:15%}.grass-platform{z-index:1;background:radial-gradient(#10b98166 0%,#065f461a 70%,#0000 100%);border:1px dashed #10b98199;border-radius:50%;width:100%;height:100%;position:absolute}.pokemon-sprite-wrapper{z-index:2;justify-content:center;align-items:center;display:flex;position:absolute}.opponent-wrapper{transform-origin:bottom;margin-left:-65px;animation:1s cubic-bezier(.25,.8,.25,1) forwards opponent-enter;bottom:12px;left:50%}.opponent-wrapper.fainted{animation:.8s cubic-bezier(.6,-.28,.735,.045) forwards opponent-faint}.player-wrapper{transform-origin:bottom;margin-left:-75px;animation:1s cubic-bezier(.25,.8,.25,1) forwards player-enter;bottom:15px;left:50%}.charizard-sprite-flipped{filter:drop-shadow(0 4px 6px #0000004d);display:block;transform:scaleX(-1)}.greninja-sprite{filter:drop-shadow(0 4px 6px #0000004d);display:block}@keyframes opponent-enter{0%{opacity:0;transform:translate(300px)}to{opacity:1;transform:translate(0)}}@keyframes player-enter{0%{opacity:0;transform:translate(-300px)}to{opacity:1;transform:translate(0)}}@keyframes opponent-faint{0%{opacity:1;transform:translateY(0)}30%{opacity:1;transform:translateY(-12px)}to{opacity:0;transform:translateY(120px)}}.battle-info-card{z-index:5;width:190px;font-family:var(--font-mono);background:#0f172ae6;border:2px solid #fff;border-radius:4px;padding:6px 10px;position:absolute;box-shadow:4px 4px #0009}.opponent-card{animation:.8s cubic-bezier(.25,.8,.25,1) forwards card-enter-left;top:40px;left:10%}.player-card{animation:.8s cubic-bezier(.25,.8,.25,1) forwards card-enter-right;bottom:160px;right:10%}@keyframes card-enter-left{0%{opacity:0;transform:translate(-200px)}to{opacity:1;transform:translate(0)}}@keyframes card-enter-right{0%{opacity:0;transform:translate(200px)}to{opacity:1;transform:translate(0)}}.info-name-row{letter-spacing:.05em;justify-content:space-between;align-items:center;margin-bottom:5px;font-size:.65rem;font-weight:700;display:flex}.pokemon-name{color:#fff}.gender-symbol{font-weight:700}.gender-symbol.male{color:#60a5fa;margin-left:2px}.pokemon-level{color:var(--text-yellow);font-size:.6rem}.hp-bar-container{align-items:center;gap:6px;display:flex}.hp-label{color:var(--text-yellow);font-size:.55rem;font-weight:900}.hp-bar-bg{background:#334155;border:1px solid #475569;border-radius:3px;flex:1;height:6px;overflow:hidden}.hp-bar-fill{background:#22c55e;height:100%;transition:width .3s ease-out}.hp-numbers{text-align:right;color:#ffffffb3;margin-top:3px;font-size:.55rem;font-weight:700}.battle-bottom-console{z-index:10;background:#060b18;border-top:4px double #fff;width:100%;height:110px;display:flex;position:absolute;bottom:0;left:0}.battle-dialog-box{align-items:center;width:100%;height:100%;padding:16px 32px;display:flex}.dialog-text{color:#fff;word-wrap:break-word;text-align:left;font-size:.85rem;line-height:1.5;font-family:var(--font-mono);margin:0;font-weight:700}.flamethrower-emitter{z-index:10;width:0;height:0;position:absolute;top:32%;right:12%}.fire-particle-block{opacity:0;border-radius:2px;animation-name:blue-flame-shoot;animation-timing-function:cubic-bezier(.1,.8,.3,1);animation-iteration-count:1;animation-fill-mode:forwards;display:block;position:absolute;box-shadow:0 0 8px}@keyframes blue-flame-shoot{0%{transform:rotate(var(--shoot-angle)) translateX(0px) scale(.3);opacity:1;filter:blur()}15%{opacity:1}70%{opacity:.8}to{transform:rotate(var(--shoot-angle)) translateX(var(--shoot-dist)) scale(3.5);opacity:0;filter:blur(3px)}}@media (width<=768px){.opponent-platform{width:min(220px,45vw);height:min(55px,12vw);top:25%;right:8%}.player-platform{width:min(260px,50vw);height:min(65px,13vw);bottom:150px;left:8%}.battle-info-card{width:160px;padding:4px 8px}.opponent-card{top:60px;left:6%}.player-card{bottom:170px;right:6%}.info-name-row{font-size:.6rem}.pokemon-level{font-size:.55rem}.hp-bar-bg{height:5px}.hp-numbers{font-size:.5rem}.battle-bottom-console{height:95px}.battle-dialog-box{padding:12px 20px}.dialog-text{font-size:.75rem}.skip-transition-btn{padding:.4rem .8rem;font-size:.65rem;bottom:1.2rem;right:1.2rem}.loader-progress-wrapper{width:80%;margin-top:1.5rem}}@media (width<=480px){.opponent-platform{width:170px;height:42px;top:20%;right:5%}.player-platform{width:200px;height:50px;bottom:160px;left:5%}.opponent-card{width:140px;top:45px;left:5%}.player-card{width:140px;bottom:180px;right:5%}.opponent-wrapper{margin-left:-50px}.player-wrapper{margin-left:-65px}.pokemon-sprite-wrapper.opponent-wrapper svg{width:100px!important;height:100px!important}.pokemon-sprite-wrapper.player-wrapper svg{width:110px!important;height:110px!important}.fire-particle-block{box-shadow:0 0 4px}}.works-header-area{border-bottom:1px solid #ffffff26;flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:1rem;margin-top:2rem;margin-bottom:2.5rem;padding-bottom:1rem;display:flex}.works-page-title{font-family:var(--font-serif);color:var(--text-white);font-size:clamp(3rem,8vw,5rem);font-style:italic;font-weight:400;line-height:1}.works-page-subtitle{font-family:var(--font-mono);opacity:.5;letter-spacing:.15em;text-transform:uppercase;margin-top:.5rem;font-size:.65rem}.works-coordinate-label{font-family:var(--font-mono);opacity:.5;letter-spacing:.1em;text-align:right;font-size:.65rem}.works-filter-bar{flex-wrap:wrap;gap:.8rem;margin-bottom:3.5rem;display:flex}.works-filter-btn{font-family:var(--font-mono);color:#fff9;cursor:pointer;letter-spacing:.1em;background:0 0;border:1px solid #fff3;padding:.5rem 1.2rem;font-size:.7rem;font-weight:700;transition:all .25s cubic-bezier(.25,.8,.25,1)}.works-filter-btn.active{background-color:var(--text-white);color:var(--bg-blue);border-color:var(--text-white)}.works-filter-btn:hover:not(.active){color:var(--text-white);background-color:#ffffff0d;border-color:#fffc}.projects-columns-container{align-items:start;gap:4rem;width:100%;display:flex}.projects-column{flex-direction:column;flex:1;gap:4.5rem;display:flex}.projects-column.right-col{margin-top:6rem}.project-card{cursor:pointer;color:inherit;opacity:0;flex-direction:column;width:100%;text-decoration:none;animation:.5s cubic-bezier(.25,.8,.25,1) forwards project-appear;display:flex;transform:translateY(20px)}.projects-column .project-card:first-child{animation-delay:50ms}.projects-column .project-card:nth-child(2){animation-delay:.15s}.projects-column .project-card:nth-child(3){animation-delay:.25s}.projects-column .project-card:nth-child(4){animation-delay:.35s}@keyframes project-appear{to{opacity:1;transform:translateY(0)}}.project-image-wrapper{background-color:#002ca3;border:1px solid #ffffff1a;width:100%;transition:border-color .4s;position:relative;overflow:hidden}.project-image-wrapper:after{content:"";mix-blend-mode:color;pointer-events:none;background-color:#0046e833;transition:opacity .4s;position:absolute;inset:0}.project-image{object-fit:cover;width:100%;height:auto;transition:transform .6s cubic-bezier(.25,.46,.45,.94);display:block}.project-card:hover .project-image{transform:scale(1.05)}.project-card:hover .project-image-wrapper:after{opacity:0}.project-card:hover .project-image-wrapper{border-color:var(--text-yellow)}.project-card-category{font-family:var(--font-mono);color:#fff9;letter-spacing:.1em;text-transform:uppercase;margin-top:1rem;font-size:.65rem}.project-title-row{justify-content:space-between;align-items:baseline;margin-top:.3rem;display:flex}.project-card-title{font-family:var(--font-mono);letter-spacing:.05em;color:var(--text-white);text-transform:uppercase;font-size:1.15rem;font-weight:700;transition:color .3s}.project-card:hover .project-card-title{color:var(--text-yellow)}.project-card-year{font-family:var(--font-mono);opacity:.7;font-size:.85rem}.project-card-arrow{opacity:0;color:var(--text-yellow);margin-left:auto;margin-right:.8rem;font-size:1.1rem;transition:opacity .3s,transform .3s;transform:translateY(2px)}.project-card:hover .project-card-arrow{opacity:1;transform:translateY(-1px)}.project-card-desc{font-family:var(--font-mono);opacity:.75;color:var(--text-white);margin:.6rem 0 0;font-size:.7rem;line-height:1.6}.project-card-stack{flex-wrap:wrap;gap:.4rem;margin-top:.8rem;display:flex}.project-stack-tag{font-family:var(--font-mono);letter-spacing:.05em;color:#ffffffb3;background-color:#ffffff08;border:1px solid #ffffff26;border-radius:2px;padding:.2rem .5rem;font-size:.55rem;font-weight:700;transition:all .25s}.project-card:hover .project-stack-tag{color:var(--text-yellow);background-color:#fcd34d0d;border-color:#fcd34d4d}.load-more-container{cursor:pointer;-webkit-user-select:none;user-select:none;flex-direction:column;justify-content:center;align-items:center;margin:5rem 0 6rem;display:flex}.load-more-line{background-color:#ffffff4d;width:1px;height:60px;margin-bottom:1.2rem;transition:height .3s cubic-bezier(.25,.8,.25,1),background-color .3s}.load-more-container:hover .load-more-line{background-color:var(--text-yellow);height:85px}.load-more-text{font-family:var(--font-mono);letter-spacing:.2em;color:var(--text-white);font-size:.7rem;font-weight:700;transition:color .3s}.load-more-container:hover .load-more-text{color:var(--text-yellow)}.works-footer{width:100%;font-family:var(--font-mono);letter-spacing:.15em;border-top:1px solid #ffffff26;justify-content:space-between;align-items:center;margin-top:2rem;padding:2rem 0;font-size:.65rem;font-weight:700;display:flex}.works-footer-center{cursor:pointer;transition:color .3s}.works-footer-center:hover{color:var(--text-yellow)}@media (width<=768px){.projects-columns-container{flex-direction:column;gap:2.5rem}.projects-column{gap:2.5rem}.projects-column.right-col{margin-top:0}.works-header-area{text-align:center;flex-direction:column;align-items:center;gap:1.5rem}.works-coordinate-label{text-align:center}.works-filter-bar{justify-content:center}.works-footer{text-align:center;flex-direction:column;gap:1.5rem}}.ai-move{color:#000;background-color:#fed63f}.web-move{color:#fff;background-color:#58a5ff}.ml-move{color:#fff;background-color:#ff5858}.skip-transition-btn{z-index:1010;font-family:var(--font-mono);letter-spacing:.15em;color:#ffffff80;cursor:pointer;background:0 0;border:1px solid #fff3;padding:.5rem 1rem;font-size:.7rem;font-weight:700;transition:all .25s;position:fixed;bottom:2rem;right:2.5rem}.skip-transition-btn:hover{color:var(--text-yellow);border-color:var(--text-yellow);background:#fcd34d0d}.resume-btn{font-family:var(--font-mono);letter-spacing:.1em;background-color:var(--text-yellow);border:1px solid var(--text-yellow);margin-left:.5rem;padding:.25rem .75rem;font-size:.75rem;font-weight:700;transition:all .25s cubic-bezier(.25,.8,.25,1);color:var(--bg-blue)!important;text-decoration:none!important}.resume-btn:hover{background-color:#0000;color:var(--text-yellow)!important}.contact-email-link:hover{color:var(--text-yellow)!important}.contact-layout input:focus{border-bottom-color:var(--text-yellow)!important}.contact-layout textarea:focus{border-color:var(--text-yellow)!important}.contact-layout button[type=submit]:hover{border-color:var(--text-yellow)!important;color:var(--text-yellow)!important}.trainer-stats-row{flex-wrap:wrap;gap:1.5rem;margin-bottom:1.5rem;display:flex}.trainer-stat{background-color:#ffffff05;border:1px solid #ffffff1f;border-radius:2px;flex-direction:column;flex:1;align-items:center;gap:.25rem;min-width:80px;padding:.8rem .5rem;transition:border-color .3s;display:flex}.trainer-stat:hover{border-color:var(--text-yellow)}.trainer-stat-num{font-family:var(--font-serif);color:var(--text-yellow);font-size:1.8rem;font-style:italic;font-weight:400;line-height:1}.trainer-stat-label{font-family:var(--font-mono);letter-spacing:.1em;opacity:.6;text-align:center;font-size:.55rem;font-weight:700}.say-hello-btn:hover{transform:translateY(-2px);box-shadow:0 4px 15px #ffffff26;background-color:var(--text-white)!important;color:var(--bg-blue)!important}.starter-selector-container{z-index:10;flex-direction:column;align-items:center;gap:1.2rem;width:100%;margin:3rem auto 0;animation:.45s cubic-bezier(.175,.885,.32,1.275) forwards pop-in;display:flex}@keyframes pop-in{0%{opacity:0;transform:scale(.8)translateY(15px)}to{opacity:1;transform:scale(1)translateY(0)}}.starter-header{font-family:var(--font-mono);color:var(--text-yellow);letter-spacing:.2em;opacity:.8;text-align:center;font-size:.7rem;font-weight:700}.starter-options{flex-wrap:wrap;justify-content:center;align-items:stretch;gap:2.5rem;width:100%;max-width:800px;padding:0 1rem;display:flex}.starter-card{cursor:pointer;-webkit-user-select:none;user-select:none;opacity:0;background-color:#00000026;border:1px dashed #fff3;border-radius:4px;flex-direction:column;flex:200px;align-items:center;gap:.75rem;max-width:240px;padding:1.25rem 1rem;transition:transform .25s cubic-bezier(.25,.8,.25,1),background-color .25s,border-color .25s,box-shadow .25s;animation:.6s cubic-bezier(.34,1.56,.64,1) forwards card-appear;display:flex;transform:translateY(20px)scale(.95)}.starter-card.grass{animation-delay:.1s}.starter-card.fire{animation-delay:.22s}.starter-card.water{animation-delay:.34s}@keyframes card-appear{to{opacity:1;transform:translateY(0)scale(1)}}.fade-out-fast{animation:.25s ease-out forwards fadeOutFast}@keyframes fadeOutFast{to{opacity:0;transform:scale(.8)}}.starter-card:hover{background-color:#ffffff05;transform:translateY(-5px)}.starter-card.grass:hover{border:1px solid var(--text-green);box-shadow:0 0 15px #22c55e59}.starter-card.fire:hover{border:1px solid var(--text-red);box-shadow:0 0 15px #ef444459}.starter-card.water:hover{border:1px solid #00b2ff;box-shadow:0 0 15px #00b2ff59}.starter-label{font-family:var(--font-mono);letter-spacing:.1em;opacity:.5;font-size:.55rem;font-weight:700}.starter-poke-wrapper{justify-content:center;align-items:center;height:70px;display:flex}.starter-tech{font-family:var(--font-mono);letter-spacing:.05em;color:var(--text-white);text-align:center;border-top:1px dashed #ffffff1a;width:100%;padding-top:.5rem;font-size:.75rem;font-weight:700}.dialog-box{border:4px double var(--text-white);width:90%;max-width:600px;font-family:var(--font-mono);color:var(--text-white);background-color:#000c40;border-radius:4px;padding:1.5rem;font-size:.8rem;line-height:1.6;position:relative;box-shadow:0 10px 40px #0009}.dialog-arrow{border-left:6px solid #0000;border-right:6px solid #0000;border-top:6px solid var(--text-white);width:0;height:0;animation:.8s infinite blink-arrow;position:absolute;bottom:.5rem;right:1rem}@keyframes blink-arrow{50%{opacity:0}}.project-card-actions{gap:.8rem;margin-top:1.2rem;display:flex}.project-action-btn{font-family:var(--font-mono);letter-spacing:.1em;color:var(--text-white);cursor:pointer;background-color:#ffffff05;border:1px solid #fff3;border-radius:2px;align-items:center;gap:.4rem;padding:.45rem 1rem;font-size:.65rem;font-weight:700;text-decoration:none;transition:all .2s ease-in-out;display:inline-flex}.project-action-btn.github-btn:hover{transform:translateY(-2px);background-color:var(--text-white)!important;color:var(--bg-blue)!important;border-color:var(--text-white)!important}.project-action-btn.demo-btn{border-color:var(--text-yellow);color:var(--text-yellow);background-color:#fed63f05}.project-action-btn.demo-btn:hover{transform:translateY(-2px);background-color:var(--text-yellow)!important;color:var(--bg-blue)!important;border-color:var(--text-yellow)!important}.pokeball-release-container{pointer-events:none;z-index:20;width:1px;height:1px;position:absolute;top:28px;left:50%;transform:translate(-50%,-50%)}.release-flash{background:radial-gradient(circle,#fff 10%,#ff8bf0 60%,#fff0 100%);border-radius:50%;width:30px;height:30px;animation:.55s cubic-bezier(.15,.85,.35,1) forwards flash-expand;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)scale(0);box-shadow:0 0 30px #ff8bf0,0 0 60px #fff}.release-ray{transform-origin:bottom;width:4px;height:160px;transform:translate(-50%, -100%) rotate(var(--angle)) scaleY(0);background:linear-gradient(#fff0 0%,#7bf5ff 40%,#fff 80%);animation:.55s cubic-bezier(.15,.85,.35,1) forwards ray-extend;position:absolute;top:50%;left:50%}@keyframes flash-expand{0%{opacity:1;transform:translate(-50%,-50%)scale(.2)}60%{opacity:1}to{opacity:0;transform:translate(-50%,-50%)scale(25)}}@keyframes ray-extend{0%{transform:translate(-50%, -100%) rotate(var(--angle)) scaleY(.1);opacity:1}40%{opacity:1}to{transform:translate(-50%, -100%) rotate(var(--angle)) scaleY(1.5);opacity:0}}@keyframes release-scale{0%{filter:brightness();transform:scale(1)}30%{filter:brightness(2);transform:scale(1.35)rotate(-15deg)}50%{filter:brightness(3.5);transform:scale(.85)rotate(15deg)}to{filter:brightness(5);transform:scale(0)}}.aura-particle{bottom:10px;left:var(--p-left);width:var(--p-size);height:var(--p-size);background-color:var(--p-color);opacity:0;pointer-events:none;animation:1.2s ease-out infinite aura-rise;animation-delay:var(--p-delay);box-shadow:0 0 6px var(--p-color);position:absolute}@keyframes aura-rise{0%{opacity:0;transform:translateY(0)translate(0)scale(.5)}20%{opacity:.8}to{transform:translateY(-50px) translateX(var(--p-drift)) scale(1.2);opacity:0}}.battle-pokeball{z-index:5;image-rendering:pixelated;position:absolute;bottom:20px}.opponent-ball-throw{animation:.8s cubic-bezier(.25,.46,.45,.94) forwards ball-throw-opponent}.player-ball-throw{animation:.8s cubic-bezier(.25,.46,.45,.94) forwards ball-throw-player}@keyframes ball-throw-opponent{0%{transform:translate(250px,-200px)rotate(0)scale(1.6)}50%{transform:translate(0)rotate(360deg)scale(1)}70%{transform:translateY(-30px)rotate(480deg)}to{transform:translate(0)rotate(540deg)}}@keyframes ball-throw-player{0%{transform:translate(-250px,200px)rotate(0)scale(1.6)}50%{transform:translate(0)rotate(-360deg)scale(1)}70%{transform:translateY(-35px)rotate(-480deg)}to{transform:translate(0)rotate(-540deg)}}.pokeball-release-overlay{pointer-events:none;z-index:10;background:radial-gradient(circle,#fff 10%,#7bf5ff 60%,#fff0 100%);border-radius:50%;width:30px;height:30px;animation:.5s ease-out forwards sprite-release-flash;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}@keyframes sprite-release-flash{0%{opacity:1;transform:translate(-50%,-50%)scale(.1)}to{opacity:0;transform:translate(-50%,-50%)scale(4.5)}}.pokemon-sprite-wrapper{transform-origin:bottom;animation:.5s cubic-bezier(.25,.8,.25,1) forwards sprite-materialize}@keyframes sprite-materialize{0%{filter:brightness(3);transform:scale(0)}50%{filter:brightness(2);transform:scale(1.1)}to{filter:brightness();transform:scale(1)}}.mobile-drawer{z-index:90;width:100vw;height:100dvh;padding:7rem 2.5rem 3rem;padding-bottom:calc(3rem + env(safe-area-inset-bottom));background-color:#002aa6;flex-direction:column;justify-content:space-between;animation:.3s ease-out forwards fadeIn;display:flex;position:fixed;top:0;left:0;overflow-y:auto}@media (width<=768px){.mobile-drawer{padding:5.5rem 1.5rem 2rem;padding-bottom:calc(2rem + env(safe-area-inset-bottom))}}.mobile-socials{border-top:1px solid #ffffff26;justify-content:space-between;align-items:center;gap:1.5rem;width:100%;padding-top:1.5rem;display:flex}
