:root{--primary-dark: #000000;--secondary-light: #f5f5f5;--accent-red: #ff4500;--title-font: "Oswald", sans-serif;--body-font: "Lato", sans-serif}*{margin:0;padding:0;box-sizing:border-box}strong{font-weight:700!important}.body-font strong{font-weight:700}html{scroll-behavior:smooth}body{background-color:var(--secondary-light);color:var(--primary-dark);font-family:var(--body-font);overflow-x:hidden}.title-font{font-family:var(--title-font);font-size:7vw;font-weight:700;line-height:1;letter-spacing:.1em;margin:0;padding:0;display:block}.subtitle-font{font-family:var(--title-font);font-size:2.5vw;font-weight:700;margin-bottom:20px}.body-font{font-family:var(--body-font);font-size:1.1rem;line-height:1.6}.white-text{color:var(--secondary-light)}.centered{text-align:center}.section-container{padding:80px 5%;min-height:auto;overflow:hidden}.full-screen{min-height:100vh}.half-screen{min-height:50vh}.dark-bg{background-color:var(--primary-dark);color:var(--secondary-light)}.light-bg{background-color:var(--secondary-light);color:var(--primary-dark)}.content-wrapper{max-width:1200px;margin:0 auto}header{display:flex;align-items:center;justify-content:center}.header-content{display:flex;align-items:center;justify-content:center;max-width:1200px;width:90%;height:60vh;position:relative;padding:0}.name-text-container{flex-grow:1;line-height:.9;transform:translateY(-20px)}.profile-image-container{width:250px;height:250px;border-radius:50%;overflow:hidden;border:5px solid var(--secondary-light);margin-left:50px;flex-shrink:0}.profile-image-container img{width:100%;height:100%;object-fit:cover}.about-flex{display:flex;gap:40px}.about-flex p{flex:2}.contact-box{flex:1;background-color:var(--primary-dark);color:var(--secondary-light);padding:20px;border-radius:5px}.centered-title-in-canvas{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);z-index:120;text-align:center;width:auto;pointer-events:none;font-size:2.4rem;color:var(--primary-dark);letter-spacing:.06em}.ballpit-skills-container{position:relative;width:100%;min-height:72vh;max-height:100%;overflow:hidden;margin-top:30px;border-radius:10px;background-color:#fff;box-shadow:0 6px 30px #0000000f}.ballpit-canvas-wrapper{position:absolute!important;top:0;left:0;width:100%!important;height:100%!important;z-index:10!important;pointer-events:auto}.skill-bubbles-overlay{position:absolute;top:0;left:0;width:100%;height:100%;z-index:130;padding:24px;pointer-events:none}.skill-bubble{pointer-events:all;position:absolute;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;border-radius:999px;background:#fff0;border:none;transition:transform .25s ease,box-shadow .25s ease,opacity .25s ease;cursor:pointer;opacity:.95;width:calc(var(--size-factor, 1) * 90px);height:calc(var(--size-factor, 1) * 90px);left:50%;top:50%;transform:translate(-50%,-50%)}.skill-logo{width:48%;height:48%;object-fit:contain;margin-bottom:6px;filter:drop-shadow(0 4px 8px rgba(0,0,0,.15))}.skill-name{font-size:.75rem;color:var(--primary-dark);font-weight:700;text-shadow:0 1px 0 rgba(255,255,255,.3)}.skill-bubble:hover{transform:translate(-50%,-50%) scale(1.06)}@media(max-width:900px){.ballpit-skills-container{min-height:52vh;max-height:60vh}.centered-title-in-canvas{font-size:1.8rem}.skill-bubble{width:calc(var(--size-factor, 1) * 64px);height:calc(var(--size-factor, 1) * 64px)}}#portfolio-3d{display:flex;flex-direction:column;align-items:center}.sketchfab-embed-wrapper{width:100%;max-width:800px;height:500px;margin-top:40px}.sketchfab-embed-wrapper iframe{width:100%;height:100%;border-radius:10px}.character-gallery{display:flex;justify-content:center;align-items:center;flex-wrap:wrap;gap:80px;margin-top:50px;margin-bottom:80px}.character-item{position:relative;width:330px;aspect-ratio:1 / 1;border:5px solid #ff3c00;border-radius:50%;overflow:hidden;box-shadow:0 0 25px #ff3c0066;background:#fff;transition:transform .3s ease,box-shadow .3s ease}.character-item:hover{transform:scale(1.06);box-shadow:0 0 40px #ff3c00b3}.character-bg{position:absolute;inset:0;border-radius:50%;z-index:1}.character-img{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;z-index:2;padding:8%}.character-link{display:flex;flex-direction:column;align-items:center;justify-content:flex-end;width:100%;height:100%;text-decoration:none;position:relative;color:#fff}.character-name{position:relative;z-index:3;background:#0000008c;width:100%;text-align:center;padding:10px 0;margin:0;font-weight:600;font-size:1.1rem;letter-spacing:.5px;border-top:2px solid rgba(255,255,255,.2)}@media(max-width:900px){.character-gallery{flex-direction:column;gap:50px}.character-item{width:75%;max-width:300px}.character-name{font-size:1rem}}.character-description{max-width:900px;margin:40px auto 0;font-size:1.15rem;color:#333;line-height:1.6;text-align:center;font-weight:400}.plugin-top-row{display:flex;flex-direction:row;gap:40px;align-items:center;justify-content:center;margin-top:40px;margin-bottom:40px}.plugin-info-text{flex:1;max-width:460px;text-align:left;font-size:3rem;font-weight:600;line-height:1.75;color:#f1f1f1}.plugin-img-interface{width:60%;max-width:600px;height:auto;border-radius:5px;box-shadow:0 4px 10px #0003}.plugin-img-infographic-large{display:block;margin:40px auto 60px;max-width:90%;width:auto;height:auto;position:relative;left:0;transform:none;box-shadow:0 4px 10px #0003;z-index:2}.columns-container{display:flex;gap:50px;margin-top:40px}.column{flex:1}.job-entry,.edu-entry{margin-bottom:25px;padding-left:15px;border-left:3px solid var(--accent-red)}.job-entry p:first-child,.edu-entry p:first-child{font-weight:700}#footer{text-align:center;padding:50px 5%}.footer-content{margin-top:30px;display:flex;flex-direction:column;align-items:center;gap:15px}.qr-code{width:300px;height:200px}.animate-on-scroll{opacity:1;transition:opacity .8s ease-out,transform .8s ease-out}.animate-on-scroll.active{opacity:1}.animate-on-scroll[data-animation=slide-up]{transform:translateY(30px)}.animate-on-scroll[data-animation=slide-up].active{transform:translateY(0)}.animate-on-scroll[data-animation=slide-right]{transform:translate(-30px)}.animate-on-scroll[data-animation=slide-right].active{transform:translate(0)}.animate-on-scroll[data-animation=slide-left]{transform:translate(30px)}.animate-on-scroll[data-animation=slide-left].active{transform:translate(0)}.animate-on-scroll[data-animation=scale-in]{transform:scale(.8)}.animate-on-scroll[data-animation=scale-in].active{transform:scale(1)}.animate-on-scroll[data-animation^=fade-in-delay]{transition:opacity 1.5s ease-out}.animate-on-scroll[data-animation^=fade-in-delay].active{opacity:1}.bg-canvas{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none;z-index:0}.section-container{position:relative}.arrow-down-wrapper{position:relative;margin:40px auto 20px;width:100px;height:100px;border-radius:50%;border:2px solid #fff;display:flex;justify-content:center;align-items:center;cursor:pointer;z-index:10;animation:pulse 2s infinite ease-in-out;font-size:30px;color:#fff}.arrow-down{width:30px;height:30px;border-left:10px solid transparent;border-right:10px solid transparent;border-top:10px solid #fff;transform:translateY(2px);animation:bounce 2s infinite}.arrow-down.multi{width:28px;height:48px;position:relative}.arrow-down .arrow-line{width:16px;height:16px;border-left:3px solid var(--accent-red);border-bottom:3px solid var(--accent-red);transform:rotate(-45deg);position:absolute;left:50%;margin-left:-8px;opacity:.95;animation:arrowDownMove 1.2s infinite ease-in-out}.arrow-down .arrow-line.delay{top:8px;animation-delay:.28s;opacity:.7}.arrow-down .arrow-line.delay-long{top:18px;animation-delay:.56s;opacity:.5}@keyframes arrowDownMove{0%{transform:translateY(0) rotate(-45deg);opacity:.95}50%{transform:translateY(8px) rotate(-45deg);opacity:.55}to{transform:translateY(0) rotate(-45deg);opacity:.95}}.arrow-to-contact{position:absolute;right:5%;top:50%;transform:translateY(-50%) rotate(10deg);z-index:6;pointer-events:none;display:flex;align-items:center}.arrow-to-contact .arrow-to-contact-line{width:2px;height:140px;background:linear-gradient(#999,transparent);transform-origin:top center;animation:contactLine 1.6s infinite ease-in-out;opacity:.7}.arrow-to-contact .arrow-to-contact-head{width:18px;height:18px;border-left:3px solid var(--accent-red);border-bottom:3px solid var(--accent-red);transform:rotate(-45deg);margin-left:-9px;margin-top:-6px;animation:contactHead 1.6s infinite ease-in-out}@keyframes contactLine{0%{transform:translateY(0) scaleY(1);opacity:.85}50%{transform:translateY(8px) scaleY(.98);opacity:.45}to{transform:translateY(0) scaleY(1);opacity:.85}}@keyframes contactHead{0%{transform:rotate(-45deg) translateY(0);opacity:1}50%{transform:rotate(-45deg) translateY(6px);opacity:.6}to{transform:rotate(-45deg) translateY(0);opacity:1}}#skills{overflow:visible}.bg-shape{position:absolute;border-radius:50%;opacity:.07;box-shadow:0 0 20px #00000008 inset;pointer-events:none;z-index:0}#portfolio-3d .bg-canvas,#characters .bg-canvas,#thesis-project .bg-canvas{z-index:0}.header-content,.content-wrapper,.character-gallery,.plugin-top-row{position:relative;z-index:3}@media(max-width:900px){.arrow-to-contact{display:none}.arrow-down-wrapper{margin-top:20px}}@media(max-width:900px){.title-font{font-size:12vw}.subtitle-font{font-size:4vw}.about-flex,.columns-container,.plugin-top-row{flex-direction:column;gap:20px}.header-content{height:auto;padding-right:0;text-align:center}.profile-image-container{margin:20px auto 0;width:150px;height:150px}.character-gallery{flex-direction:column;align-items:center}.character-item{width:80%;max-width:250px}.character-link{padding-top:100%}.character-img{padding:10% 5% 5%}.plugin-top-row{flex-direction:column}.plugin-img-interface,.plugin-info-text{width:100%;max-width:none;text-align:center}.plugin-img-infographic-large{width:100%;left:0;transform:none}.sketchfab-embed-wrapper{height:300px}}#thesis-project #bg-canvas-6{position:absolute;top:0;left:0;width:100%;height:100%;z-index:1;pointer-events:none}#skills.section-container{padding:0!important;width:100vw;height:100vh;max-width:100%;margin:0;overflow:hidden}.ballpit-skills-container{width:100%!important;height:100%!important;margin:0!important;border-radius:0!important;min-height:100vh!important;background-color:#fff;top:0;left:0}.centered-title-in-canvas{z-index:200}#skills.section-container{padding:0!important;margin:0!important;width:100vw;height:100dvh;min-height:100dvh;max-width:100%!important;overflow:hidden;position:relative}#skills .content-wrapper{width:100%!important;height:100%!important;max-width:none!important;margin:0!important;padding:0!important}.ballpit-skills-container{width:100%!important;height:100%!important;margin:0!important;border-radius:0!important;background-color:#fff;position:absolute;top:0;left:0}.centered-title-in-canvas{z-index:200;width:90%;font-size:clamp(1.5rem,5vw,3rem)}header#home,header{position:relative!important;overflow:hidden!important}.balatro-container{position:absolute!important;inset:0!important;width:100%!important;height:100%!important;z-index:0!important;pointer-events:none!important;background:transparent!important}.header-content{position:relative!important;z-index:100!important}:root{--col-gap: 5%;--row-gap: 5%;--cube-perspective: 99999999px;--cube-face-border: 1px solid #777777;--cube-face-bg: #060010}.default-animation{position:relative;width:100%;aspect-ratio:1 / 1;height:100%}.default-animation--scene{display:grid;width:100%;height:100%;column-gap:var(--col-gap);row-gap:var(--row-gap);perspective:var(--cube-perspective);grid-auto-rows:1fr}.cube{position:relative;width:100%;height:100%;aspect-ratio:1 / 1;transform-style:preserve-3d}.cube:before{content:"";position:absolute;inset:-36px}.default-animation .cube-face{position:absolute;width:100%;height:100%;display:flex;align-items:center;justify-content:center;background:var(--cube-face-bg);border:var(--cube-face-border);opacity:1}.default-animation .cube-face--top{transform:translateY(-50%) rotateX(90deg)}.default-animation .cube-face--bottom{transform:translateY(50%) rotateX(-90deg)}.default-animation .cube-face--left{transform:translate(-50%) rotateY(-90deg)}.default-animation .cube-face--right{transform:translate(50%) rotateY(90deg)}.default-animation .cube-face--back,.default-animation .cube-face--front{transform:rotateY(-90deg) translate(50%) rotateY(90deg)}@media(max-width:768px){.default-animation{width:90%}}.dot-grid{display:flex;align-items:center;justify-content:center;height:100%;width:100%;position:relative}.dot-grid__wrap{width:100%;height:100%;position:relative}.dot-grid__canvas{position:absolute;inset:0;width:100%;height:100%}
