.portfolio-hero.svelte-1uo84gz{position:relative}.hero-bg.svelte-1uo84gz{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:50vw;height:30vw;background:radial-gradient(ellipse at center,rgba(135,192,61,.1) 0%,transparent 60%);z-index:-1;pointer-events:none}.filter-tabs.svelte-1uo84gz{display:flex;gap:.5rem;flex-wrap:wrap;justify-content:center}.filter-tab.svelte-1uo84gz{position:relative;padding:.75rem 1.5rem;background:transparent;border:none;color:var(--text-muted);cursor:pointer;transition:color .3s;font-family:Inter;font-weight:500;font-size:.95rem}.filter-tab.svelte-1uo84gz:before{content:"";position:absolute;bottom:0;left:50%;width:0;height:2px;background:var(--accent-primary);transform:translate(-50%);transition:width .3s cubic-bezier(.16,1,.3,1)}.filter-tab.active.svelte-1uo84gz:before,.filter-tab.svelte-1uo84gz:hover:before{width:80%}.filter-tab.active.svelte-1uo84gz{color:var(--text-primary)}.loader-container.svelte-1uo84gz{text-align:center;padding:6rem;color:var(--text-secondary)}.spinner.svelte-1uo84gz{width:40px;height:40px;border:2px solid var(--border-glass);border-top-color:var(--accent-primary);border-radius:50%;animation:svelte-1uo84gz-spin 1s linear infinite;margin:0 auto 1.5rem}@keyframes svelte-1uo84gz-spin{to{transform:rotate(360deg)}}.projects-grid.svelte-1uo84gz{display:grid;grid-template-columns:repeat(auto-fill,minmax(350px,1fr));gap:3rem}.project-card.svelte-1uo84gz{display:flex;flex-direction:column;overflow:hidden;transition:transform .4s cubic-bezier(.16,1,.3,1),box-shadow .4s ease,border-color .4s ease;cursor:pointer}.project-image-wrapper.svelte-1uo84gz{position:relative;width:100%;aspect-ratio:16/10;overflow:hidden;border-bottom:1px solid var(--border-glass);background:var(--bg-secondary)}.project-image.svelte-1uo84gz{width:100%;height:100%;object-fit:cover;transition:transform .6s cubic-bezier(.16,1,.3,1)}.project-placeholder.svelte-1uo84gz{width:100%;height:100%;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#00ff411a,#87c03d1a)}.project-overlay.svelte-1uo84gz{position:absolute;inset:0;background:#05050580;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;opacity:0;transition:all .4s ease}.view-btn.svelte-1uo84gz{display:flex;align-items:center;gap:.5rem;background:var(--bg-primary);color:#fff;padding:.75rem 1.5rem;border-radius:100px;font-family:Outfit,sans-serif;font-weight:600;transform:translateY(20px);transition:transform .4s cubic-bezier(.16,1,.3,1),box-shadow .4s ease}.featured-badge.svelte-1uo84gz{position:absolute;top:1rem;right:1rem;background:linear-gradient(135deg,var(--accent-primary),var(--accent-secondary));padding:.4rem .75rem;border-radius:6px;font-family:JetBrains Mono;font-weight:600;font-size:.7rem;color:#fff;box-shadow:0 4px 12px var(--accent-glow)}.project-card.svelte-1uo84gz:hover .project-overlay:where(.svelte-1uo84gz){opacity:1}.project-card.svelte-1uo84gz:hover .view-btn:where(.svelte-1uo84gz){transform:translateY(0);box-shadow:0 4px 20px #00000080}.project-card.svelte-1uo84gz:hover .project-image:where(.svelte-1uo84gz){transform:scale(1.05)}.project-content.svelte-1uo84gz{padding:2rem;flex-grow:1;display:flex;flex-direction:column}.project-content.svelte-1uo84gz h3:where(.svelte-1uo84gz){font-size:1.4rem;color:var(--text-primary);margin-bottom:.75rem;font-family:Outfit}.project-content.svelte-1uo84gz p:where(.svelte-1uo84gz){color:var(--text-secondary);line-height:1.6;font-size:.95rem;margin-bottom:2rem;display:-webkit-box;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.tags.svelte-1uo84gz{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:auto}.tag.svelte-1uo84gz{font-family:JetBrains Mono,monospace;font-size:.7rem;padding:.3rem .6rem;background:#ffffff0d;border:1px solid var(--border-glass-strong);border-radius:6px;color:var(--text-secondary);transition:all .3s}.project-card.svelte-1uo84gz:hover .tag:where(.svelte-1uo84gz){background:var(--accent-glow);border-color:#00ff4166;color:#fff}.project-card.svelte-1uo84gz{animation:svelte-1uo84gz-cardReveal .5s ease forwards;opacity:0;transform:translateY(20px) scale(.95);transition:transform .4s cubic-bezier(.16,1,.3,1),box-shadow .4s ease,border-color .4s ease}@keyframes svelte-1uo84gz-cardReveal{to{opacity:1;transform:translateY(0) scale(1)}}
