@keyframes pulse{0%{box-shadow:0 0 0 0 rgba(34,197,94,.7)}70%{box-shadow:0 0 0 6px transparent}to{box-shadow:0 0 0 0 transparent}}.infinity-project-grid{display:grid;grid-template-columns:repeat(1,1fr);gap:24px}@media (min-width:768px){.infinity-project-grid{grid-template-columns:repeat(3,1fr);gap:32px}}.infinity-project-item--modern{background:#fff;border-radius:16px;overflow:hidden;border:1px solid #f3f4f6;box-shadow:0 1px 3px rgba(0,0,0,.05);transition:all .3s ease;display:flex;flex-direction:column}.infinity-project-item--modern:hover{box-shadow:0 20px 25px -5px rgba(0,0,0,.1),0 8px 10px -6px rgba(0,0,0,.1);transform:translateY(-8px)}.infinity-project-modern-img-wrap{position:relative;height:220px;overflow:hidden}@media (min-width:768px){.infinity-project-modern-img-wrap{height:250px}}.infinity-project-item--overlay img,.infinity-project-modern-img-wrap img{width:100%;height:100%;object-fit:cover;transition:transform .7s ease}.infinity-project-item--modern:hover .infinity-project-modern-img-wrap img,.infinity-project-item--overlay:hover img{transform:scale(1.1)}.infinity-project-category-badge{position:absolute;top:16px;left:16px;background:rgba(255,255,255,.95);backdrop-filter:blur(4px);font-size:11px;font-weight:700;padding:6px 12px;border-radius:999px;text-transform:uppercase;letter-spacing:.05em;color:#1f2937;z-index:10}.infinity-project-modern-content{padding:20px;display:flex;flex-direction:column;flex-grow:1}@media (min-width:768px){.infinity-project-modern-content{padding:24px}}.infinity-project-modern-title{font-size:18px;font-weight:700;color:#111827;margin:0 0 8px;transition:color .3s}@media (min-width:768px){.infinity-project-modern-title{font-size:20px}}.infinity-project-item--modern:hover .infinity-project-modern-title{color:var(--st-blue, var(--st-primary, #4f46e5))}.infinity-project-modern-desc{font-size:14px;color:#6b7280;line-height:1.6;margin-bottom:16px;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}@media (min-width:768px){.infinity-project-modern-desc{-webkit-line-clamp:2}}.infinity-project-modern-link{margin-top:auto;display:inline-flex;align-items:center;font-size:13px;font-weight:700;color:var(--st-blue, var(--st-primary, #4f46e5));text-decoration:none}.infinity-project-modern-link i{margin-left:4px;transition:transform .3s}.infinity-project-item--modern:hover .infinity-project-modern-link i{transform:translate(2px,-2px)}.infinity-project-item--overlay{position:relative;height:350px;border-radius:16px;overflow:hidden;cursor:pointer;display:block;text-decoration:none}@media (min-width:768px){.infinity-project-item--overlay{height:400px}}.infinity-project-item--overlay img{position:absolute;inset:0}.infinity-project-overlay-grad{position:absolute;inset:0;background:linear-gradient(to top,rgba(0,0,0,.9),rgba(0,0,0,.4),transparent);opacity:.8;transition:opacity .3s}.infinity-project-item--overlay:hover .infinity-project-overlay-grad{opacity:.95}.infinity-project-overlay-content{position:absolute;inset:0;padding:24px;display:flex;flex-direction:column;justify-content:flex-end}@media (min-width:768px){.infinity-project-overlay-content{padding:32px}}.infinity-project-overlay-inner{transform:translateY(0);transition:transform .4s ease}@media (min-width:992px){.infinity-project-overlay-inner{transform:translateY(20px)}.infinity-project-item--overlay:hover .infinity-project-overlay-inner{transform:translateY(0)}}.infinity-project-overlay-cat{display:block;color:#818cf8;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;margin-bottom:8px}.infinity-project-overlay-title{font-size:20px;font-weight:700;color:#fff;margin:0 0 8px;line-height:1.2}@media (min-width:768px){.infinity-project-overlay-title{font-size:24px}}.infinity-project-overlay-hidden{overflow:hidden;transition:all .4s ease .1s}@media (max-width:991px){.infinity-project-overlay-hidden{height:auto;opacity:1}.infinity-project-overlay-grad{opacity:.9}}@media (min-width:992px){.infinity-project-overlay-hidden{height:0;opacity:0}.infinity-project-item--overlay:hover .infinity-project-overlay-hidden{height:auto;opacity:1}}.infinity-project-overlay-desc{color:#d1d5db;font-size:14px;margin-bottom:16px;line-height:1.5}.infinity-project-overlay-link{display:inline-block;color:#fff;font-size:13px;font-weight:700;border-bottom:1px solid #6366f1;padding-bottom:2px;text-decoration:none}.infinity-project-overlay-icon{position:absolute;top:20px;right:20px;width:40px;height:40px;background:rgba(255,255,255,.1);backdrop-filter:blur(4px);border-radius:50%;display:flex;align-items:center;justify-content:center;color:#fff;opacity:1;transform:translateY(0);transition:all .3s}@media (min-width:992px){.infinity-project-overlay-icon{opacity:0;transform:translateY(-10px)}.infinity-project-item--overlay:hover .infinity-project-overlay-icon{opacity:1;transform:translateY(0)}}.infinity-project-item--tech{position:relative;background:#111827;border-radius:12px;overflow:hidden;border:1px solid #1f2937;transition:border-color .3s;display:block;text-decoration:none}.infinity-project-item--tech:hover{border-color:#6366f1}.infinity-project-tech-img{position:relative;height:200px;overflow:hidden}@media (min-width:768px){.infinity-project-tech-img{height:220px}}.infinity-project-tech-img img{width:100%;height:100%;object-fit:cover;opacity:.8;transition:opacity .3s}@media (max-width:767px){.infinity-project-tech-img img{opacity:.6}}.infinity-project-item--tech:hover .infinity-project-tech-img img,.infinity-project-item--tech:hover .infinity-project-tech-overlay{opacity:1}.infinity-project-tech-overlay{position:absolute;inset:0;background:rgba(99,102,241,.2);mix-blend-mode:overlay;opacity:0;transition:opacity .3s}.infinity-project-tech-content{padding:20px;position:relative}@media (min-width:768px){.infinity-project-tech-content{padding:24px}}.infinity-project-tech-icon{position:absolute;top:-24px;right:20px;background:var(--st-primary, #4f46e5);color:#fff;padding:8px;border-radius:8px;box-shadow:0 4px 6px rgba(0,0,0,.3);transition:transform .3s;z-index:5}@media (min-width:768px){.infinity-project-tech-icon{right:24px;padding:10px}}.infinity-project-item--tech:hover .infinity-project-tech-icon{transform:scale(1.1)}.infinity-project-tech-cat{font-family:monospace;font-size:12px;color:#818cf8;margin-bottom:8px}.infinity-project-tech-title{font-size:18px;font-weight:700;color:#fff;margin:0 0 12px;transition:color .3s}@media (min-width:768px){.infinity-project-tech-title{font-size:20px}}.infinity-project-item--tech:hover .infinity-project-tech-title{color:#a5b4fc}.infinity-project-tech-desc{color:#9ca3af;font-size:13px;margin-bottom:16px;padding-left:12px;border-left:2px solid #374151;transition:border-color .3s}@media (max-width:767px){.infinity-project-tech-desc{border-color:#6366f1}}.infinity-project-item--tech:hover .infinity-project-tech-desc{border-color:#6366f1}.infinity-project-tech-status{display:flex;align-items:center;font-family:monospace;font-size:11px;color:#6b7280;transition:color .3s}@media (max-width:767px){.infinity-project-tech-status{color:#fff}}.infinity-project-item--tech:hover .infinity-project-tech-status{color:#fff}.infinity-tech-dot{width:8px;height:8px;background:#22c55e;border-radius:50%;margin-right:8px;animation:pulse 2s infinite}.infinity-project-card{background:#fff;border-radius:16px;overflow:hidden;box-shadow:0 2px 8px rgba(0,0,0,.06);transition:all .3s ease;display:flex;flex-direction:column}.infinity-project-card:hover{box-shadow:0 16px 40px rgba(0,0,0,.1);transform:translateY(-6px)}.infinity-project-card__image{position:relative;height:220px;overflow:hidden}@media (min-width:768px){.infinity-project-card__image{height:240px}}.infinity-project-card__image img{width:100%;height:100%;object-fit:cover;transition:transform .7s ease}.infinity-project-card:hover .infinity-project-card__image img{transform:scale(1.08)}.infinity-project-card__overlay{position:absolute;inset:0;background:linear-gradient(to top,rgba(0,0,0,.35)0,transparent 60%);pointer-events:none}.infinity-project-card__badge{position:absolute;top:14px;right:14px;background:#22c55e;color:#fff;font-size:11px;font-weight:700;padding:5px 12px;border-radius:999px;text-transform:uppercase;letter-spacing:.04em;z-index:5;box-shadow:0 2px 8px rgba(34,197,94,.3)}.infinity-project-card__content{padding:22px 24px;display:flex;flex-direction:column;flex-grow:1}.infinity-project-card__category{display:inline-block;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--st-primary, #4f46e5);margin-bottom:8px}.infinity-project-card__title{font-size:18px;font-weight:700;color:#111827;margin:0 0 8px;line-height:1.3;transition:color .3s}@media (min-width:768px){.infinity-project-card__title{font-size:20px}}.infinity-project-card:hover .infinity-project-card__title{color:var(--st-primary, #4f46e5)}.infinity-project-card__desc{font-size:14px;color:#6b7280;line-height:1.6;margin-bottom:16px;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.infinity-project-card__link{margin-top:auto;display:inline-flex;align-items:center;gap:6px;font-size:13px;font-weight:700;color:var(--st-primary, #4f46e5);text-decoration:none;transition:gap .3s}.infinity-project-card:hover .infinity-project-card__link{gap:10px}.infinity-project-card:focus-visible,.infinity-project-item--modern:focus-visible,.infinity-project-item--overlay:focus-visible,.infinity-project-item--tech:focus-visible{outline:2px solid var(--st-primary, #4f46e5);outline-offset:2px}@media (prefers-reduced-motion:reduce){.infinity-project-card,.infinity-project-card__image img,.infinity-project-card__link,.infinity-project-card__title,.infinity-project-item--modern,.infinity-project-item--overlay img,.infinity-project-item--tech,.infinity-project-modern-img-wrap img,.infinity-project-modern-link i,.infinity-project-modern-title,.infinity-project-overlay-grad,.infinity-project-overlay-hidden,.infinity-project-overlay-icon,.infinity-project-overlay-inner,.infinity-project-tech-desc,.infinity-project-tech-icon,.infinity-project-tech-img img,.infinity-project-tech-overlay,.infinity-project-tech-status,.infinity-project-tech-title{transition:none!important}.infinity-tech-dot{animation:none!important}}