/* Riff Street artwork lab — non-destructive, deterministic editorial treatments. */
.riff2-fx{position:relative;isolation:isolate;overflow:hidden;background:#201d1b}
.riff2-fx>img,.riff2-fx>picture,.riff2-fx>picture>img{display:block;object-fit:cover}
.riff2-fx:before,.riff2-fx:after{content:"";position:absolute;inset:0;z-index:2;pointer-events:none}
/* Leave a readable lower third on headline-overlay hero cards. */
.riff2-photo.riff2-fx:after{z-index:2;background:linear-gradient(to top,rgba(0,0,0,.82),transparent 72%)}
.riff2-photo.riff2-fx:before{z-index:3}
.riff2-fx-clean:before{display:none!important}
.riff2-fx-clean>img{filter:none!important}
.riff2-fx-grain>img{filter:contrast(1.13) saturate(.82) sepia(.11)}
.riff2-fx-grain:before{background:repeating-linear-gradient(73deg,transparent 0 2px,#00000018 3px,transparent 4px),radial-gradient(#ffffff4d .6px,transparent .9px) 0 0/4px 5px;opacity:.42;mix-blend-mode:soft-light}
/* Torn paper: uneven photographic trim with cream paper curling inward. */
.riff2-fx-torn>img{filter:contrast(1.1) saturate(.84) sepia(.05);clip-path:polygon(0 0,100% 0,100% 98.4%,96% 99.3%,92% 98.6%,87% 99.4%,82% 98.2%,76% 99.5%,70% 98.5%,63% 99.2%,56% 98.4%,49% 99.4%,43% 98.4%,37% 99.2%,30% 98.5%,24% 99.4%,18% 98.5%,12% 99.2%,6% 98.4%,0 99%)}
.riff2-fx-torn:before{inset:auto 0 0;height:3%;background:var(--riff2-paper,#f5f1e9);clip-path:polygon(0 40%,8% 30%,16% 58%,24% 32%,32% 55%,40% 35%,48% 57%,56% 30%,64% 55%,72% 34%,80% 58%,88% 35%,96% 57%,100% 40%,100% 100%,0 100%);filter:drop-shadow(0 -1px 1px #0004)}
/* Halftone: opposing graphic corner fields of tiny red ink dots. */
.riff2-fx-halftone>img{filter:contrast(1.18) saturate(.8)}
.riff2-fx-halftone:before{inset:0;background:radial-gradient(circle,var(--riff2-red,#ed322e) 1.6px,transparent 2px) 0 0/8px 8px;clip-path:polygon(72% 0,100% 0,100% 49%,89% 41%,80% 23%,0 100%,0 83%,21% 91%,34% 100%);opacity:.84;mix-blend-mode:multiply}
/* Photocopied punk flyers: high-contrast monochrome with misregistered scan lines. */
.riff2-fx-photocopy>img{filter:grayscale(1) contrast(1.8) brightness(.93)}
.riff2-fx-photocopy:before{background:repeating-linear-gradient(0deg,transparent 0 3px,#0505052e 4px 5px,transparent 6px 9px),linear-gradient(125deg,#ee302a55 0,transparent 45%);mix-blend-mode:multiply;opacity:.72}
/* Red-ink print run: dramatic duotone without modifying the actual photograph. */
.riff2-fx-duotone>img{filter:grayscale(1) contrast(1.38) brightness(.86)}
.riff2-fx-duotone:before{background:linear-gradient(125deg,#f02d2dcc 0%,#f02d2d66 42%,#1818182e 90%);mix-blend-mode:screen;opacity:.6}
/* Film-negative edge detail is confined to the sides. */
.riff2-fx-film>img{filter:contrast(1.16) saturate(.65) sepia(.18)}
.riff2-fx-film:before{inset:0 0 0 auto;width:20px;border-left:4px solid #0d0d0d;border-right:4px solid #0d0d0d;background:repeating-linear-gradient(to bottom,#101010 0 8px,transparent 9px 19px,#101010 20px 29px);opacity:.9}
/* Worn gig posters: rough screenprinted corner ink and horizontal abrasions. */
.riff2-fx-poster>img{filter:contrast(1.24) saturate(.68) sepia(.14)}
.riff2-fx-poster:before{background:repeating-linear-gradient(110deg,transparent 0 13px,#f4edd01a 14px,transparent 16px 24px),radial-gradient(circle at 85% 15%,#ec332b8c,transparent 36%),repeating-linear-gradient(0deg,transparent 0 39px,#f6edd02c 40px 42px,transparent 43px 70px);mix-blend-mode:screen;opacity:.8}
/* Vinyl: curved record grooves and centre-label motif on the edge. */
.riff2-fx-vinyl>img{filter:contrast(1.13) saturate(.85)}
.riff2-fx-vinyl:before{inset:-65% -42% -65% auto;width:90%;border-radius:50%;border:3px solid #fff5;background:repeating-radial-gradient(circle at center,transparent 0 14px,#ffffff5c 15px 16px,transparent 17px 22px);opacity:.4;mix-blend-mode:screen;transform:rotate(16deg)}
/* Festival poster collage: small angled translucent paper tape at corner. */
.riff2-fx-tape>img{filter:contrast(1.09) saturate(.82)}
.riff2-fx-tape:before{inset:8% auto auto -7%;width:48%;height:32px;background:repeating-linear-gradient(104deg,#f6e9ccbb 0 2px,#d8cab0aa 3px 5px);transform:rotate(-12deg);opacity:.77;box-shadow:0 1px 4px #0003;mix-blend-mode:screen}
/* Small silk-screen stamp frame, with a red print-misregistration stripe. */
.riff2-fx-stamp>img{filter:contrast(1.22) saturate(.72)}
.riff2-fx-stamp:before{inset:10px;border:3px double #e8322bd6;box-shadow:inset 0 0 0 4px #1113;clip-path:polygon(0 0,100% 0,100% 27%,94% 27%,94% 96%,36% 96%,36% 100%,0 100%);opacity:.72}
/* Cards with overlaid copy retain clickable headlines and legibility. */
.riff2-tile .riff2-photo.riff2-fx:before,.riff2-tile .riff2-photo.riff2-fx:after{pointer-events:none}
.riff2-tile-copy{z-index:5}
.riff2-photo.riff2-fx-torn:before{inset:auto 0 0;width:auto;height:9%;border:0;border-radius:0;opacity:1;mix-blend-mode:normal;transform:none}
.riff-archive-spotlight-image.riff2-fx,.riff-archive-editorial-image.riff2-fx,.riff-card-image.riff2-fx,.riff-artist-feature-photo.riff2-fx,.riff-artist-mini-image.riff2-fx,.riff-story-visual.riff2-fx{display:block;overflow:hidden}
.riff-article-hero.riff2-fx{isolation:isolate;overflow:hidden}
.riff-article-hero.riff2-fx figcaption{position:relative;z-index:4;background:var(--riff2-paper,#f5f1e9)}
.riff-article-hero.riff2-fx:before,.riff-article-hero.riff2-fx:after{pointer-events:none}
.riff-article-hero.riff2-fx-torn:before{inset:auto 0 35px!important;height:14px!important}
@media(prefers-reduced-motion:reduce){.riff2-fx>img{transition:none!important}}
