.swf-project-grid{position:relative;background:var(--bg-color,#ffffff);color:var(--text-color,#1a1a1a);padding:5rem 0;font-family:var(--font-family-base);width:100%;overflow:hidden;box-sizing:border-box}.swf-project-grid__canvas{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none;z-index:0;opacity:.4}.swf-project-grid__isohyps{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none;z-index:0}.swf-project-grid--isohyps{position:relative;overflow:hidden}.swf-project-grid--isohyps .swf-container{position:relative;z-index:2}.swf-project-grid .swf-container{max-width:1240px;margin:0 auto;padding:0 2rem;width:100%;box-sizing:border-box;position:relative;z-index:1}.swf-project-grid__header{text-align:left;margin-bottom:4rem;max-width:100%;position:relative}.swf-project-grid__title{font-size:clamp(2rem, 5vw, 3rem);font-weight:400;line-height:1.2;margin-bottom:1rem;opacity:1;transform:translateY(0);letter-spacing:-.02em;visibility:visible}.swf-project-grid--text-dark .swf-project-grid__title{color:var(--dark-color,#1a1a1a)}.swf-project-grid--text-light .swf-project-grid__title{color:#fff}.swf-project-grid__subtitle{font-size:1rem;line-height:1.6;margin:0;font-weight:400;opacity:.7}.swf-project-grid--text-dark .swf-project-grid__subtitle{color:var(--text-muted,#666)}.swf-project-grid--text-light .swf-project-grid__subtitle{color:rgba(255,255,255,.8)}.swf-project-grid__container{margin-bottom:4rem;position:relative}.swf-project-grid__grid{display:grid;grid-template-columns:repeat(3,1fr);gap:2rem;align-items:start}.swf-project-item:nth-child(3n+1) .swf-project-item__image{aspect-ratio:5 / 4}.swf-project-item:nth-child(3n+2) .swf-project-item__image{aspect-ratio:16 / 9}.swf-project-item:nth-child(3n) .swf-project-item__image{aspect-ratio:5 / 4}.swf-project-item{background:transparent;border-radius:0;overflow:visible;position:relative;opacity:0;transform:translateY(30px);will-change:transform}.swf-project-grid--animated .swf-project-item{animation:fadeInUp 0.6s cubic-bezier(.4,0,.2,1) forwards}@keyframes fadeInUp{to{opacity:1;transform:translateY(0)}}.swf-project-item__link{display:block;text-decoration:none;color:inherit;width:100%}.swf-project-item__image{position:relative;width:100%;overflow:hidden;background:#f5f5f5;margin-bottom:1.5rem}.swf-project-item__image img{width:100%;height:100%;object-fit:cover;display:block;transition:transform 0.6s cubic-bezier(.4,0,.2,1)}.swf-project-item__image-overlay{position:absolute;top:0;left:0;width:100%;height:100%;opacity:0;transition:opacity 0.4s cubic-bezier(.4,0,.2,1);display:flex;align-items:center;justify-content:center;z-index:2;pointer-events:none}.swf-project-item__image:hover .swf-project-item__image-overlay{opacity:1}.swf-project-item__plus{display:flex;align-items:center;justify-content:center;color:#fff;transform:scale(.8);transition:transform 0.4s cubic-bezier(.4,0,.2,1);background:transparent}.swf-project-item__image:hover .swf-project-item__plus{transform:scale(1)}.swf-project-item__plus svg{width:32px;height:32px;stroke-width:1.5}.swf-project-item__info{display:flex;flex-direction:column;gap:.5rem}.swf-project-item__title{font-size:clamp(1.25rem, 2vw, 1.5rem);font-weight:600;line-height:1.3;margin:0;color:var(--dark-color,#1a1a1a);letter-spacing:-.01em;position:relative;overflow:hidden;height:1.3em;display:block}.swf-project-item__title{color:transparent}.swf-project-item__title::before{content:attr(data-text);position:absolute;top:0;left:0;width:100%;height:100%;display:block;color:var(--primary-color,#b9fe65);transform:translateY(100%);transition:transform 0.4s cubic-bezier(.4,0,.2,1);z-index:1}.swf-project-item__title::after{content:attr(data-text);position:absolute;top:0;left:0;width:100%;height:100%;display:block;transform:translateY(0);transition:transform 0.4s cubic-bezier(.4,0,.2,1);z-index:2}.swf-project-grid--text-dark .swf-project-item__title::after{color:var(--dark-color,#1a1a1a)}.swf-project-grid--text-light .swf-project-item__title::after{color:#fff}.swf-project-item:hover .swf-project-item__title::before{transform:translateY(0);z-index:3}.swf-project-item:hover .swf-project-item__title::after{transform:translateY(-100%);z-index:1}.swf-project-item__services{font-size:.875rem;line-height:1.5;margin:0;font-weight:400;font-style:italic;opacity:.7}.swf-project-grid--text-dark .swf-project-item__services{color:var(--text-muted,#666)}.swf-project-grid--text-light .swf-project-item__services{color:rgba(255,255,255,.7)}.swf-project-item__placeholder{width:100%;height:100%;display:flex;align-items:center;justify-content:center;color:#d0d0d0;background:#f5f5f5}.swf-project-grid__cta{text-align:left;margin-top:4rem;opacity:0;transform:translateY(20px)}.swf-project-grid__cta-btn{display:inline-flex;align-items:center;gap:.5rem;padding:.75rem 0;text-decoration:none;font-weight:400;font-size:.875rem;transition:all 0.3s ease;border:none;cursor:pointer;opacity:.6;border-bottom:1px solid transparent}.swf-project-grid--text-dark .swf-project-grid__cta-btn{color:var(--dark-color,#1a1a1a)}.swf-project-grid--text-dark .swf-project-grid__cta-btn:hover{border-bottom-color:var(--dark-color,#1a1a1a)}.swf-project-grid--text-light .swf-project-grid__cta-btn{color:#fff}.swf-project-grid--text-light .swf-project-grid__cta-btn:hover{border-bottom-color:#fff}.swf-project-grid__cta-btn:hover{opacity:1}.swf-project-grid__cta-arrow{transition:transform 0.3s ease;width:14px;height:14px}.swf-project-grid__cta-btn:hover .swf-project-grid__cta-arrow{transform:translateX(3px)}.swf-project-grid__empty{text-align:center;padding:4rem 2rem;grid-column:1 / -1}.swf-project-grid--text-dark .swf-project-grid__empty{color:var(--text-muted,#666)}.swf-project-grid--text-light .swf-project-grid__empty{color:rgba(255,255,255,.7)}@media (max-width:991px){.swf-project-grid__grid{grid-template-columns:repeat(2,1fr);gap:2rem}}@media (max-width:768px){.swf-project-grid{padding:4rem 0}.swf-project-grid .swf-container{padding:0 1rem!important}.swf-project-grid__header{margin-bottom:3rem}.swf-project-grid__title{font-size:clamp(2rem, 8vw, 3rem)}.swf-project-grid__subtitle{font-size:1.1rem}.swf-project-grid__grid{grid-template-columns:1fr!important;gap:2rem}}.swf-project-item__link:focus{outline:3px solid var(--primary-color,#007bff);outline-offset:2px}@media (prefers-reduced-motion:reduce){.swf-project-item,.swf-project-item__image img,.swf-project-item__image-overlay,.swf-project-item__title::before,.swf-project-item__title::after{transition:none;animation:none}.swf-project-item:hover{transform:none}}