section{position:relative}.glass-card{transition:transform .3s,box-shadow .3s}.glass-card:hover{transform:translateY(-2px)}::selection{color:#064e3b;background:#10b9812e}:focus-visible{outline-offset:2px;outline:2px solid #10b98180}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}@keyframes shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}.loading-shimmer{background:linear-gradient(90deg,#fff0 0%,#ffffff1a 50%,#fff0 100%) 0 0/200% 100%;animation:1.5s infinite shimmer}@keyframes gradient-text{0%,to{background-position:0%}50%{background-position:100%}}.animated-gradient-text{background-size:200%;animation:3s infinite gradient-text}@keyframes glow-pulse{0%,to{box-shadow:0 0 20px #10b98159}50%{box-shadow:0 0 40px #10b9818c,0 0 60px #10b98159}}.glow-pulse{animation:2s ease-in-out infinite glow-pulse}.line-clamp-2{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.line-clamp-3{-webkit-line-clamp:3;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.bg-gradient-radial{background:radial-gradient(circle, var(--tw-gradient-stops))}@supports not ((-webkit-backdrop-filter:blur(20px)) or (backdrop-filter:blur(20px))){.glass{background:#fffffff2}}img{opacity:1;transition:opacity .3s}img[data-loading=true]{opacity:0}.ripple{pointer-events:none;background:#ffffff4d;border-radius:50%;animation:.6s linear ripple-animation;position:absolute;transform:scale(0)}@keyframes ripple-animation{to{opacity:0;transform:scale(4)}}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:#f0fdf499}::-webkit-scrollbar-thumb{background:linear-gradient(#10b981a6,#05966999);border-radius:4px}::-webkit-scrollbar-thumb:hover{background:linear-gradient(#10b981d9,#059669cc)}*{scrollbar-width:thin;scrollbar-color:#10b98199 #f0fdf499}.skill-marquee-mask{-webkit-mask-image:linear-gradient(90deg,#0000,#000 10% 90%,#0000);mask-image:linear-gradient(90deg,#0000,#000 10% 90%,#0000)}.skill-marquee{animation:26s linear infinite skill-marquee}.skill-marquee-reverse{animation:30s linear infinite skill-marquee-reverse}.skill-marquee:hover,.skill-marquee-reverse:hover{animation-play-state:paused}@keyframes skill-marquee{0%{transform:translate(0)}to{transform:translate(-33.333%)}}@keyframes skill-marquee-reverse{0%{transform:translate(-33.333%)}to{transform:translate(0)}}
