.rs-projects{position:relative;box-sizing:border-box;min-height:100svh;background:var(--bg);color:var(--fg);padding:clamp(110px,18vh,180px) clamp(18px,3vw,44px) clamp(80px,12vh,140px);transition:background-color 500ms cubic-bezier(0.16,1,0.3,1),color 300ms linear}

/* ---- Filter rail ---- */
.rs-projects__filters{position:fixed;top:50%;left:clamp(18px,3vw,44px);z-index:20;transform:translateY(-50%);display:flex;flex-direction:column;gap:14px;max-width:clamp(170px,12vw,196px)}
.rs-projects__filters-row{display:flex;flex-direction:column;gap:10px}

.rs-filter{display:flex;align-items:center;gap:10px;background:none;border:none;padding:2px 0;cursor:pointer;font-family:'Kern',sans-serif;font-weight:500;font-size:11px;letter-spacing:0.1em;text-transform:uppercase;color:var(--dim);transition:color 220ms linear}
.rs-filter__dot{flex:none;width:7px;height:7px;background:transparent;box-shadow:0 0 0 1px var(--mute);transition:background-color 200ms linear,box-shadow 200ms linear}
.rs-filter__label{flex:1 1 auto;text-align:left;white-space:nowrap}
.rs-filter__count{flex:none;font-variant-numeric:tabular-nums;color:inherit}
.rs-filter:hover{color:var(--fg)}
.rs-filter.is-active{font-weight:700;color:var(--fg)}
.rs-filter.is-active .rs-filter__dot{background:#00D663;box-shadow:0 0 0 1px #00D663}

.rs-projects__count{margin:4px 0 0;font-family:'Kern',sans-serif;font-weight:500;font-size:11px;letter-spacing:0.12em;text-transform:uppercase;color:var(--dim)}

/* ---- Grid ---- */
.rs-projects__grid{position:relative;box-sizing:border-box;max-width:1180px;margin:0 auto;padding-inline-start:clamp(215px,14vw,240px);display:grid;grid-template-columns:1fr 1fr;gap:clamp(22px,2.6vw,40px)}

.rs-tile{position:relative;display:block;aspect-ratio:1/1;overflow:hidden;background:var(--mute);opacity:1;transition:opacity 420ms cubic-bezier(0.16,1,0.3,1);clip-path:inset(100% 0 0 0);animation:rsTileIn 900ms cubic-bezier(0.16,1,0.3,1) both;animation-delay:660ms}
.rs-tile:nth-child(2n){transform:translateY(clamp(60px,12vw,140px))}
.rs-tile:nth-child(1){animation-delay:260ms}
.rs-tile:nth-child(2){animation-delay:340ms}
.rs-tile:nth-child(3){animation-delay:420ms}
.rs-tile:nth-child(4){animation-delay:500ms}
.rs-tile:nth-child(5){animation-delay:580ms}
.rs-tile:nth-child(6){animation-delay:660ms}
@keyframes rsTileIn{from{clip-path:inset(100% 0 0 0)}to{clip-path:inset(0 0 0 0)}}
@media (prefers-reduced-motion: reduce){.rs-tile{animation:none;clip-path:inset(0 0 0 0)}}

.rs-tile__frame{position:absolute;inset:0;display:block}
.rs-tile__frame img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;transition:opacity 200ms linear}

.rs-tile__badge{position:absolute;top:14px;left:14px;width:9px;height:9px;border-radius:50%;background:#00D663;opacity:0;transition:opacity 220ms linear;pointer-events:none}
.rs-tile:hover .rs-tile__badge,.rs-tile:focus-visible .rs-tile__badge{opacity:1}

.rs-projects__grid:has(> .rs-tile:hover) > .rs-tile:not(:hover){opacity:0.28}
.rs-projects__grid:has(> .rs-tile:focus-visible) > .rs-tile:not(:focus-visible){opacity:0.28}

.rs-tile.is-hidden{display:none}

.rs-projects__empty{max-width:1180px;margin:clamp(40px,8vh,90px) auto 0;padding-inline-start:clamp(215px,14vw,240px);box-sizing:border-box;font-family:'Kern',sans-serif;font-weight:500;font-size:13px;letter-spacing:0.06em;color:var(--dim);text-align:center}

/* ---- Hover title overlay (desktop only) ---- */
.rs-projects__title-overlay{position:fixed;top:50%;left:50%;z-index:15;transform:translate(-50%,calc(-50% + 12px));font-family:'Lustra',serif;font-weight:400;font-size:clamp(34px,6.4vw,120px);line-height:1;letter-spacing:-0.02em;text-transform:uppercase;color:#F7F7F5;text-shadow:0 2px 30px rgba(5,5,5,0.85),0 0 2px rgba(5,5,5,0.6);text-align:center;white-space:nowrap;pointer-events:none;opacity:0;filter:blur(11px);transition:opacity 320ms cubic-bezier(0.16,1,0.3,1),transform 320ms cubic-bezier(0.16,1,0.3,1),filter 320ms cubic-bezier(0.16,1,0.3,1)}
.rs-projects__title-overlay.is-visible{opacity:1;filter:blur(0px);transform:translate(-50%,-50%)}

/* ---- WebGL host ---- */
.rs-gl-host{position:fixed;inset:0;z-index:12;pointer-events:none}

/* ---- Mobile ---- */
@media (max-width: 860px){
	.rs-projects{padding-top:clamp(90px,16vh,140px)}

	.rs-projects__filters{position:static;transform:none;max-width:none;left:auto;top:auto;margin:0 calc(-1 * clamp(18px,3vw,44px)) 22px;gap:12px}
	.rs-projects__filters-row{flex-direction:row;overflow-x:auto;scroll-snap-type:x proximity;-webkit-overflow-scrolling:touch;scrollbar-width:none;gap:22px;padding:0 clamp(18px,3vw,44px)}
	.rs-projects__filters-row::-webkit-scrollbar{display:none}
	.rs-filter{flex:none;scroll-snap-align:start}
	.rs-projects__count{padding:0 clamp(18px,3vw,44px)}

	.rs-projects__grid{padding-inline-start:0;grid-template-columns:1fr;gap:18px}
	.rs-tile:nth-child(2n){transform:none}

	.rs-projects__empty{padding-inline-start:0}

	.rs-projects__title-overlay{display:none}
}
