(function(){const e=document.createElement("link").relList;if(e&&e.supports&&e.supports("modulepreload"))return;for(const i of document.querySelectorAll('link[rel="modulepreload"]'))r(i);new MutationObserver(i=>{for(const o of i)if(o.type==="childList")for(const s of o.addedNodes)s.tagName==="LINK"&&s.rel==="modulepreload"&&r(s)}).observe(document,{childList:!0,subtree:!0});function n(i){const o={};return i.integrity&&(o.integrity=i.integrity),i.referrerPolicy&&(o.referrerPolicy=i.referrerPolicy),i.crossOrigin==="use-credentials"?o.credentials="include":i.crossOrigin==="anonymous"?o.credentials="omit":o.credentials="same-origin",o}function r(i){if(i.ep)return;i.ep=!0;const o=n(i);fetch(i.href,o)}})();function d(){const t=document.querySelector(".typewriter");if(!t)return;const e=t.getAttribute("data-text");let n=0;t.textContent="",t.style.opacity="1";function r(){n<e.length&&(t.textContent+=e.charAt(n),n++,setTimeout(r,80))}setTimeout(r,500)}function u(){const t=document.querySelector(".scroll-progress");if(!t)return;function e(){const n=document.documentElement.scrollHeight-window.innerHeight,i=window.scrollY/n*100;t.style.setProperty("--scroll-progress",`${i}%`),t.setAttribute("aria-valuenow",Math.round(i))}window.addEventListener("scroll",e,{passive:!0}),e()}function h(){const t=document.querySelectorAll(".skill-item");if(!t.length)return;const e=new IntersectionObserver(n=>{n.forEach(r=>{r.isIntersecting&&(r.target.classList.add("animate"),e.unobserve(r.target))})},{threshold:.3});t.forEach(n=>e.observe(n))}function f(){const t=document.getElementById("particles");if(!t)return;const e=t.getContext("2d");let n=[],r;function i(){t.width=window.innerWidth,t.height=window.innerHeight}class o{constructor(){this.x=Math.random()*t.width,this.y=Math.random()*t.height,this.vx=(Math.random()-.5)*.3,this.vy=(Math.random()-.5)*.3,this.radius=Math.random()*1.5+.5,this.opacity=Math.random()*.3+.1}update(){this.x+=this.vx,this.y+=this.vy,(this.x<0||this.x>t.width)&&(this.vx*=-1),(this.y<0||this.y>t.height)&&(this.vy*=-1)}draw(){e.beginPath(),e.arc(this.x,this.y,this.radius,0,Math.PI*2),e.fillStyle=`rgba(111, 78, 55, ${this.opacity})`,e.fill()}}function s(){i(),n=[];const c=Math.floor(t.width*t.height/15e3);for(let a=0;a<c;a++)n.push(new o)}function l(){e.clearRect(0,0,t.width,t.height),n.forEach(c=>{c.update(),c.draw()}),r=requestAnimationFrame(l)}window.addEventListener("resize",()=>{cancelAnimationFrame(r),s(),l()}),s(),l()}function m(){document.querySelectorAll(".testimonial-card").forEach(e=>{const n=e.querySelector(".testimonial-toggle"),r=e.querySelector(".testimonial-excerpt"),i=e.querySelector(".testimonial-full");!n||!r||!i||n.addEventListener("click",()=>{const o=e.classList.contains("expanded");e.classList.toggle("expanded"),n.textContent=o?"Read More":"Read Less",n.setAttribute("aria-expanded",!o),o?(r.style.display="block",i.style.display="none"):(r.style.display="none",i.style.display="block")})})}document.addEventListener("DOMContentLoaded",()=>{d(),u(),h(),f(),m()});
