.ProjectsGrid_section__ZfwHO{background:var(--offwhite);min-height:100vh}.ProjectsGrid_hero__5LY1Q{padding-top:calc(var(--nav-height) + clamp(4rem, 8vw, 7rem));padding-bottom:clamp(3rem,5vw,4.5rem);width:var(--container);margin-inline:auto;display:flex;flex-direction:column;gap:var(--space-6)}.ProjectsGrid_heroTitle__axE6h{font-family:var(--font-display);font-size:var(--text-3xl);font-weight:600;line-height:1.1;letter-spacing:-.02em;color:var(--black);max-width:18ch}.ProjectsGrid_heroSub__jg0JI{font-family:var(--font-body);font-size:var(--text-lg);color:var(--gray-600);line-height:1.7;max-width:52ch}.ProjectsGrid_filtersWrap__tBZQF{width:var(--container);margin-inline:auto;margin-bottom:clamp(2.5rem,5vw,4rem);display:flex;flex-direction:column;gap:var(--space-4)}.ProjectsGrid_filterRow__d6nPW{display:flex;flex-wrap:wrap;gap:var(--space-3);align-items:center}.ProjectsGrid_filterBtn__6ti75{font-family:var(--font-body);font-size:var(--text-sm);font-weight:500;letter-spacing:.06em;text-transform:uppercase;color:var(--gray-400);background:transparent;border:1px solid var(--gray-200);padding:var(--space-2) var(--space-4);cursor:pointer;line-height:1;transition:color var(--duration-fast) var(--ease-out),border-color var(--duration-fast) var(--ease-out),background var(--duration-fast) var(--ease-out)}.ProjectsGrid_filterBtn__6ti75:hover{color:var(--black);border-color:var(--gray-400)}.ProjectsGrid_filterBtnActive__uaqm1{background:var(--black)}.ProjectsGrid_filterBtnActive__uaqm1,.ProjectsGrid_filterBtnActive__uaqm1:hover{color:var(--offwhite);border-color:var(--black)}.ProjectsGrid_gridWrap__jdKNk{width:var(--container-lg);margin-inline:auto;padding-bottom:var(--section-gap)}.ProjectsGrid_grid__7einr{display:grid;grid-template-columns:1fr;grid-gap:var(--space-2);gap:var(--space-2);list-style:none;padding:0;margin:0}@media (min-width:640px){.ProjectsGrid_grid__7einr{grid-template-columns:repeat(2,1fr)}}@media (min-width:1024px){.ProjectsGrid_grid__7einr{grid-template-columns:repeat(3,1fr)}}.ProjectsGrid_cardLink__kSj6o{position:relative;display:block;overflow:hidden;background:var(--gray-100);aspect-ratio:4/3;text-decoration:none}.ProjectsGrid_imageWrap__4vCRU{position:absolute;inset:0}.ProjectsGrid_image__46tGN{object-fit:cover;transition:transform var(--duration-slow) var(--ease-out)}.ProjectsGrid_overlay__wKpjU{position:absolute;inset:0;background:linear-gradient(0deg,rgba(10,10,10,.88) 0,rgba(10,10,10,.45) 40%,transparent 72%);opacity:.85;transition:opacity var(--duration-base) var(--ease-out)}.ProjectsGrid_cardLink__kSj6o:hover .ProjectsGrid_image__46tGN{transform:scale(1.04)}.ProjectsGrid_cardLink__kSj6o:hover .ProjectsGrid_overlay__wKpjU{opacity:1}@media (hover:none){.ProjectsGrid_overlay__wKpjU{opacity:1}}.ProjectsGrid_meta__nDYjL{text-shadow:0 1px 10px rgba(0,0,0,.45);position:absolute;bottom:0;left:0;right:0;padding:var(--space-6);display:flex;flex-direction:column;gap:var(--space-1);z-index:1;transform:translateY(4px);transition:transform var(--duration-base) var(--ease-out)}.ProjectsGrid_cardLink__kSj6o:hover .ProjectsGrid_meta__nDYjL{transform:translateY(0)}.ProjectsGrid_metaType__5c9vd{font-family:var(--font-body);font-size:var(--text-xs);font-weight:500;letter-spacing:.14em;text-transform:uppercase;color:var(--accent-light)}.ProjectsGrid_metaTitle__XXPCD{font-family:var(--font-display);font-size:clamp(1rem,1.5vw,1.375rem);font-weight:400;color:var(--offwhite);line-height:1.2}.ProjectsGrid_metaLocation__7inSq{font-family:var(--font-body);font-size:var(--text-xs);color:rgba(245,244,240,.78)}.ProjectsGrid_empty__UUQ2G{text-align:center;padding:var(--space-16);font-family:var(--font-body);color:var(--gray-400);font-size:var(--text-lg);font-style:italic}@media (prefers-reduced-motion:reduce){.ProjectsGrid_filterBtn__6ti75,.ProjectsGrid_image__46tGN,.ProjectsGrid_meta__nDYjL,.ProjectsGrid_overlay__wKpjU{transition:none}}.UpcomingProjects_section__7vvGB{background:var(--black);padding-block:clamp(5rem,10vw,9rem)}.UpcomingProjects_inner__eKymk{width:var(--container);margin-inline:auto;display:flex;flex-direction:column;gap:clamp(3rem,5vw,5rem)}.UpcomingProjects_header__5xP4R{display:flex;flex-direction:column;gap:var(--space-4);max-width:52ch}.UpcomingProjects_overline__VL_wE{color:var(--accent)}.UpcomingProjects_title__IoMHz{font-family:var(--font-display);font-size:clamp(2rem,4vw,3.5rem);font-weight:400;line-height:1.1;letter-spacing:-.02em;color:var(--offwhite)}.UpcomingProjects_sub__8gUAr{font-family:var(--font-body);font-size:var(--text-base);color:rgba(245,244,240,.65);line-height:1.7}.UpcomingProjects_grid__zArYa{display:grid;grid-template-columns:1fr;grid-gap:clamp(2rem,4vw,4rem);gap:clamp(2rem,4vw,4rem)}@media (min-width:640px){.UpcomingProjects_grid__zArYa{grid-template-columns:repeat(2,1fr)}}.UpcomingProjects_item__O8wjm{position:relative;aspect-ratio:4/3;overflow:hidden;background:var(--gray-900);border-radius:16px}.UpcomingProjects_img__9jXQh{object-fit:cover;transition:transform var(--duration-slow) var(--ease-out)}.UpcomingProjects_item__O8wjm:hover .UpcomingProjects_img__9jXQh{transform:scale(1.05)}.UpcomingProjects_overlay__gRS3c{position:absolute;inset:0;background:rgba(10,10,10,.18);transition:background var(--duration-base) var(--ease-out)}.UpcomingProjects_item__O8wjm:hover .UpcomingProjects_overlay__gRS3c{background:rgba(10,10,10,.42)}.UpcomingProjects_zoomHint__waxl0{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;color:var(--offwhite);opacity:0;transition:opacity var(--duration-fast) var(--ease-out);z-index:1}.UpcomingProjects_item__O8wjm:hover .UpcomingProjects_zoomHint__waxl0{opacity:1}@media (prefers-reduced-motion:reduce){.UpcomingProjects_img__9jXQh,.UpcomingProjects_overlay__gRS3c{transition:none}}.UpcomingProjects_loadMoreWrap__Zzabv{display:flex;justify-content:center;margin-top:var(--space-8)}.UpcomingProjects_loadMoreBtn__yxpiM{display:inline-flex;align-items:center;gap:var(--space-3);font-family:var(--font-body);font-size:var(--text-base);font-weight:500;color:var(--black);background:var(--offwhite);padding:var(--space-3) var(--space-6);border-radius:999px;cursor:pointer;transition:transform var(--duration-fast) var(--ease-out),opacity var(--duration-fast)}.UpcomingProjects_loadMoreBtn__yxpiM:hover{opacity:.9;transform:translateY(-2px)}