body{margin:0;padding:0}*{margin:0;padding:0;box-sizing:border-box}body{background-color:#000;color:#fff;font-family:VT323,monospace;overflow:hidden;transition:background-color .5s ease-out}#root{min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;position:relative}.app{text-align:center;position:relative;min-height:100vh;display:flex;flex-direction:column;justify-content:center;align-items:center}.typewriter-text{font-size:2rem;margin-bottom:3rem;min-height:5rem;cursor:default;display:flex;flex-direction:column;gap:.5rem}.typewriter-line{opacity:0;animation:fadeIn .1s forwards}@keyframes fadeIn{to{opacity:1}}.cursor{animation:blink 1s infinite}@keyframes blink{0%,50%{opacity:1}51%,to{opacity:0}}.buttons-container{display:flex;flex-direction:column;gap:2rem;align-items:center;width:100%;max-width:800px;margin:0 auto}.retro-button{background:#000;border:4px solid #fff;color:#fff;font-family:VT323,monospace;font-size:1.5rem;padding:1rem 2rem;cursor:pointer;transition:all .1s;position:relative;min-width:400px;max-width:90%;image-rendering:pixelated;display:flex;align-items:center;justify-content:center;gap:.5rem;z-index:100}@media(max-width:768px){.retro-button{min-width:320px;max-width:90%;width:90%;font-size:1.1rem;padding:1rem 1.5rem}.button-heart{width:24px;height:24px}}.button-heart{width:32px;height:32px;image-rendering:pixelated;vertical-align:middle;flex-shrink:0}.sprite-basic_3,.sprite-fading_8,.sprite-beating_6,.sprite-lipsheart_8,.sprite-exploding_8,.sprite-beating_4,.sprite-p_beating_4,.sprite-p_beating_6,.sprite-p_lipsheart_8,.sprite-smoking_heart_9,.sprite-shy_heart_11,.sprite-evil_heart_10,.sprite-realheart_5,.sprite-tractor_4,.sprite-smoke_10,.sprite-smoke_11{width:32px;height:32px;background-repeat:no-repeat;image-rendering:pixelated;background-position:0 0}.sprite-basic_3{background-image:url(/basic_3.png);background-size:32px 96px;background-position:0 0}.retro-button:hover .button-heart.sprite-basic_3{background-position:0 -32px}.retro-button:active .button-heart.sprite-basic_3{background-position:0 -64px}.sprite-fading_8{background-image:url(/fading_8.png);background-size:32px 256px;animation:sprite-fading .8s steps(8) infinite}.clicked .sprite-fading_8{animation:sprite-fading .6s steps(8) forwards}.sprite-beating_6{background-image:url(/beating_6.png);background-size:32px 192px;animation:sprite-beating-6 .6s steps(6) infinite}.sprite-lipsheart_8{background-image:url(/lipsheart_8.png);background-size:32px 256px;animation:sprite-lipsheart .8s steps(8) infinite}.sprite-exploding_8{background-image:url(/exploding_8.png);background-size:32px 256px;animation:sprite-exploding .8s steps(8) infinite}.clicked .sprite-exploding_8{animation:sprite-exploding .6s steps(8) forwards}.sprite-beating_4{background-image:url(/beating_4.png);background-size:32px 128px;animation:sprite-beating-4 .4s steps(4) infinite}.sprite-p_beating_4{background-image:url(/p_beating_4.png);background-size:32px 128px;animation:sprite-beating-4 .4s steps(4) infinite}.sprite-p_beating_6{background-image:url(/p_beating_6.png);background-size:32px 192px;animation:sprite-beating-6 .6s steps(6) infinite}.sprite-p_lipsheart_8{background-image:url(/p_lipsheart_8.png);background-size:32px 256px;animation:sprite-lipsheart .8s steps(8) infinite}.sprite-smoking_heart_9{background-image:url(/smoking_heart_9.png);background-size:32px 288px;animation:sprite-smoking-heart .9s steps(9) infinite}.sprite-shy_heart_11{background-image:url(/shy_heart_11.png);background-size:32px 352px;animation:sprite-shy-heart 1.1s steps(11) infinite}.sprite-evil_heart_10{background-image:url(/evil_heart_10.png);background-size:32px 320px;animation:sprite-evil-heart 1s steps(10) infinite}.sprite-realheart_5{background-image:url(/realheart_5.png);background-size:32px 160px;animation:sprite-realheart .5s steps(5) infinite}.sprite-tractor_4{background-image:url(/tractor_4.png);background-size:64px 256px;animation:sprite-tractor .4s steps(4) infinite;width:64px;height:64px}.sprite-smoke_10{background-image:url(/smoke_10.png);background-size:64px 640px;animation:sprite-smoke-10 1s steps(10) infinite;width:64px;height:64px}.sprite-smoke_11{background-image:url(/smoke_11.png);background-size:64px 704px;animation:sprite-smoke-11 1.1s steps(11) infinite;width:64px;height:64px}@keyframes sprite-smoking-heart{0%{background-position:0 0}to{background-position:0 -288px}}@keyframes sprite-shy-heart{0%{background-position:0 0}to{background-position:0 -352px}}@keyframes sprite-evil-heart{0%{background-position:0 0}to{background-position:0 -320px}}@keyframes sprite-realheart{0%{background-position:0 0}to{background-position:0 -160px}}@keyframes sprite-tractor{0%{background-position:0 0}to{background-position:0 -256px}}@keyframes sprite-smoke-10{0%{background-position:0 0}to{background-position:0 -640px}}@keyframes sprite-smoke-11{0%{background-position:0 0}to{background-position:0 -704px}}@keyframes sprite-fading{0%{background-position:0 0}to{background-position:0 -256px}}@keyframes sprite-beating-6{0%{background-position:0 0}to{background-position:0 -192px}}@keyframes sprite-lipsheart{0%{background-position:0 0}to{background-position:0 -256px}}@keyframes sprite-exploding{0%{background-position:0 0}to{background-position:0 -256px}}@keyframes sprite-beating-4{0%{background-position:0 0}to{background-position:0 -128px}}.retro-button:hover{background:#fff;color:#000;box-shadow:0 0 20px #fff}.retro-button:active{transform:scale(.98)}.heart-counter{position:fixed;top:2rem;right:2rem;font-size:2rem;display:flex;flex-direction:column;align-items:flex-end;gap:.5rem;z-index:1000}.heart-display{display:flex;align-items:center;gap:.5rem;cursor:default}.heart-icon{width:32px;height:32px}.heart-icon.pulse{background-position:0 -32px}.floating-heart{position:fixed;z-index:150;animation:float-arc 3s linear forwards}.floating-heart.permanent{animation:float-arc-permanent 3s linear forwards}.floating-heart.permanent.clicked{animation:none!important}.floating-heart.fade-out{opacity:0;transition:opacity 3s ease-out}.combo-text{position:fixed;font-family:VT323,monospace;font-size:3rem;color:#fff;pointer-events:none;z-index:200;animation:combo-fly 2s ease-out forwards;white-space:nowrap;transform:translate(-50%,-50%)}@keyframes combo-fly{0%{transform:translate(-50%,-50%) scale(.5);opacity:0}20%{transform:translate(-50%,-50%) scale(1.5);opacity:1}60%{transform:translate(-50%,-150%) scale(1.2);opacity:1}to{transform:translate(-50%,-300%) scale(1);opacity:0}}.heart-sprite{width:32px;height:32px;transform:scale(1.5)}.debug-mode .heart-sprite,.debug-mode .button-heart,.debug-mode .heart-icon,.debug-mode .floating-heart{outline:1px solid gold}.tractor{position:fixed;bottom:60px;z-index:250;animation:tractor-sweep 8s linear forwards;image-rendering:pixelated}.tractor-smoke{position:fixed;bottom:60px;z-index:240;animation:tractor-sweep 8s linear forwards;image-rendering:pixelated;transform:translate(-50px)}@media(max-width:768px){.tractor,.tractor-smoke{animation:tractor-sweep 4s linear forwards}}@keyframes tractor-sweep{0%{right:-100px}to{right:100vw}}@keyframes float-arc{0%{transform:translate(0) scale(1) rotate(0);opacity:1}25%{transform:translate(calc(var(--velocity-x) * .25px),calc(var(--velocity-y) * .8px)) scale(1.1) rotate(calc(var(--velocity-x) * .04deg));opacity:1}40%{transform:translate(calc(var(--velocity-x) * .4px),calc(var(--velocity-y) * 1px)) scale(1.15) rotate(calc(var(--velocity-x) * .06deg));opacity:1}50%{transform:translate(calc(var(--velocity-x) * .5px),calc(var(--velocity-y) * .95px)) scale(1.2) rotate(calc(var(--velocity-x) * .08deg));opacity:.95}70%{transform:translate(calc(var(--velocity-x) * .7px),calc(var(--velocity-y) * .4px)) scale(1.15) rotate(calc(var(--velocity-x) * .1deg));opacity:.85}85%{transform:translate(calc(var(--velocity-x) * .85px),200px) scale(1.1) rotate(calc(var(--velocity-x) * .12deg));opacity:.5}to{transform:translate(calc(var(--velocity-x) * 1px),500px) scale(1) rotate(calc(var(--velocity-x) * .15deg));opacity:0}}@keyframes float-arc-permanent{0%{transform:translate(0) scale(1) rotate(0);opacity:1}25%{transform:translate(calc(var(--velocity-x) * .25px),calc(var(--velocity-y) * .8px)) scale(1.1) rotate(calc(var(--velocity-x) * .04deg));opacity:1}40%{transform:translate(calc(var(--velocity-x) * .4px),calc(var(--velocity-y) * 1px)) scale(1.15) rotate(calc(var(--velocity-x) * .06deg));opacity:1}50%{transform:translate(calc(var(--velocity-x) * .5px),calc(var(--velocity-y) * .95px)) scale(1.2) rotate(calc(var(--velocity-x) * .08deg));opacity:1}70%{transform:translate(calc(var(--velocity-x) * .7px),calc(var(--velocity-y) * .4px)) scale(1.15) rotate(calc(var(--velocity-x) * .1deg));opacity:1}85%{transform:translate(calc(var(--velocity-x) * .85px),calc(var(--distance-to-bottom) * .5px)) scale(1.1) rotate(calc(var(--velocity-x) * .12deg));opacity:1}to{transform:translate(calc(var(--velocity-x) * 1px),calc(var(--distance-to-bottom) * 1px)) scale(1) rotate(calc(var(--velocity-x) * .15deg));opacity:1}}.projects-page{position:fixed;top:0;left:0;width:100%;height:100vh;background:#000;z-index:2000;overflow-y:auto;padding:3rem;animation:slideIn .3s ease-out}@keyframes slideIn{0%{transform:translate(100%)}to{transform:translate(0)}}.projects-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:3rem}.projects-header h1{font-size:3rem}.close-button{background:transparent;border:3px solid #fff;color:#fff;font-family:VT323,monospace;font-size:1.5rem;padding:.5rem 1.5rem;cursor:pointer}.close-button:hover{background:#fff;color:#000}.projects-list{max-width:800px;margin:0 auto;display:flex;flex-direction:column;gap:3rem}.project-item{border:3px solid #fff;padding:2rem;text-align:left}.project-item h2{font-size:2rem;margin-bottom:1rem}.project-item p{font-size:1.3rem;line-height:1.6;margin-bottom:1rem}.project-link{color:#fff;text-decoration:underline;font-size:1.3rem}.project-link:hover{color:#aaa}.project-screenshot{width:100%;max-width:600px;margin-top:1rem;border:2px solid #fff;image-rendering:pixelated}.heart-grid-background{position:fixed;top:0;left:0;width:100vw;height:100vh;z-index:5000;background:#000;animation:gridFadeIn .5s ease-out,gridFadeOut .8s ease-out 2.2s forwards;overflow:hidden}@keyframes gridFadeIn{0%{opacity:0;transform:scale(.8)}to{opacity:1;transform:scale(1)}}@keyframes gridFadeOut{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(1.2)}}.grid-heart{position:absolute;width:32px;height:32px;background-repeat:no-repeat;image-rendering:pixelated;background-position:0 0}.slow-animate.sprite-fading_8,.slow-animate.sprite-exploding_8,.slow-animate.sprite-smoking_heart_9,.slow-animate.sprite-shy_heart_11,.slow-animate.sprite-evil_heart_10,.slow-animate.sprite-realheart_5,.slow-animate.sprite-beating_6,.slow-animate.sprite-lipsheart_8,.slow-animate.sprite-beating_4,.slow-animate.sprite-p_beating_4,.slow-animate.sprite-p_beating_6,.slow-animate.sprite-p_lipsheart_8{animation:none!important;background-position:0 0!important}.clicked-smoke{z-index:5100!important;animation:smokePoof 1s ease-out forwards}@keyframes smokePoof{0%{transform:scale(1);opacity:1}to{transform:scale(3);opacity:0}}.email-modal{position:fixed;top:0;left:0;width:100%;height:100vh;background:#000000e6;display:flex;align-items:center;justify-content:center;z-index:3000}.email-content{border:4px solid #fff;padding:3rem;background:#000;max-width:500px;width:90%;max-height:90vh;overflow-y:auto}@media(max-width:768px){.email-content{padding:1.5rem;width:85%}.email-content h2{font-size:2rem;margin-bottom:1.5rem}.email-form{gap:1rem}.email-buttons{flex-direction:column;width:100%}.email-buttons .retro-button{width:100%}}.email-content h2{font-size:2.5rem;margin-bottom:2rem}.email-form{display:flex;flex-direction:column;gap:1.5rem}.email-form input,.email-form textarea{background:#000;border:3px solid #fff;color:#fff;font-family:VT323,monospace;font-size:1.3rem;padding:1rem}.email-form input:focus,.email-form textarea:focus{outline:none;box-shadow:0 0 10px #fff}.email-form textarea{min-height:150px;resize:vertical}.email-buttons{display:flex;gap:1rem;justify-content:center}
