.text-gradient{color:#0f172a;background:none;text-shadow:0 1px 0 rgba(255,255,255,.6),0 2px 10px rgba(15,23,42,.06)}.dark .text-gradient{background:linear-gradient(90deg,#fff,#93c5fd,#fde68a);-webkit-background-clip:text;background-clip:text;color:transparent;filter:drop-shadow(0 6px 24px rgba(255,255,255,.18));text-shadow:none}.grain{position:absolute;inset:-50%;z-index:-1;pointer-events:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.8' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3CfeComponentTransfer%3E%3CfeFuncA type='table' tableValues='0 0 0 .05'/%3E%3C/feComponentTransfer%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");opacity:.45}.hero-divider{height:12px;background:linear-gradient(to right,transparent,rgba(255,255,255,.7),transparent);filter:blur(8px)}.blob{position:absolute;border-radius:50%;filter:blur(28px);opacity:.7}.blob-pink{width:110px;height:110px;background:#f9a8d4;top:-18px;left:-22px}.blob-sky{width:140px;height:140px;background:#7dd3fc;bottom:-22px;right:-28px}.portrait-wrap{position:relative;isolation:isolate}.portrait{width:14rem;height:14rem;border-radius:9999px;object-fit:cover;box-shadow:0 20px 50px #00000040;outline:6px solid rgba(255,255,255,.6)}@media (min-width: 768px){.portrait{width:18rem;height:18rem}}.portrait-glow{position:absolute;inset:-8%;border-radius:9999px;z-index:-1;background:radial-gradient(closest-side,rgba(255,255,255,.55),transparent 70%);filter:blur(12px)}.btn-shine{position:relative;overflow:hidden}.btn-shine:after{content:"";position:absolute;inset:-120% 0 auto auto;width:40%;transform:skew(-20deg);background:linear-gradient(to right,transparent,rgba(255,255,255,.8),transparent);animation:shine 2.8s linear infinite}@keyframes shine{0%{transform:translate(-260%) skew(-20deg)}to{transform:translate(260%) skew(-20deg)}}.marquee{overflow:hidden;border-radius:1rem;border:1px solid rgba(148,163,184,.25);background:#fff9;backdrop-filter:blur(6px)}.dark .marquee{background:#0f172a59}.marquee-track{display:flex;gap:.75rem;padding:.75rem 1rem;width:max-content;animation:marquee 18s linear infinite}@keyframes marquee{0%{transform:translate(0)}to{transform:translate(-50%)}}.project{perspective:1000px}.project-media{position:relative;overflow:hidden;border-radius:1rem}.project-img{width:100%;height:220px;object-fit:cover;display:block;transform:scale(1.02);transition:transform .6s ease}.project .badge.glass{position:absolute;top:.75rem;left:.75rem;background:#ffffffb3;backdrop-filter:blur(6px)}.project-body{margin-top:.9rem}.project-title{font-weight:800;font-size:1.125rem}.project-desc{color:#475569}.dark .project-desc{color:#94a3b8}.tilt:hover .project-img{transform:scale(1.06) rotate(.6deg)}.link-underline{position:relative;display:inline-block;font-weight:600;color:#0284c7}.link-underline:after{content:"";position:absolute;left:0;bottom:-2px;height:2px;width:100%;background:currentColor;transform:scaleX(0);transform-origin:left;transition:transform .25s ease}.link-underline:hover:after{transform:scaleX(1)}.glass{background:#ffffff8c;backdrop-filter:blur(8px)}.dark .glass{background:#0f172a8c}.glass-outline{background:#ffffff1f;backdrop-filter:blur(6px)}@keyframes float{0%,to{transform:translateY(0)}50%{transform:translateY(-10px)}}.animate-float{animation:float 3s ease-in-out infinite}@keyframes pulseGlow{0%,to{box-shadow:0 0 #6366f166}50%{box-shadow:0 0 20px 5px #6366f133}}.chip{animation:pulseGlow 3s ease-in-out infinite}.hero-gradient{min-height:90vh}@keyframes countUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.card:hover .text-2xl{transform:scale(1.1)}@media (max-width: 768px){.hero-gradient{min-height:auto;padding-top:2rem;padding-bottom:4rem}.portrait{width:240px;height:240px}.blob,.animate-float{display:none}}.dark .project-media:after{content:"";position:absolute;inset:0;background:linear-gradient(to top,rgba(15,23,42,.8),transparent);opacity:0;transition:opacity .3s ease}.dark .project:hover .project-media:after{opacity:1}
