/* Brand asset utility classes: URLs relative to this file, so they resolve for consumers too */
.twf-asset-lockup{background:url(../assets/brand/twf-lockup.svg) left center/contain no-repeat}
.twf-asset-brandmark{background:url(../assets/brand/twf-brandmark.svg) center/contain no-repeat}
.twf-asset-wordmark{background:url(../assets/brand/twf-wordmark.svg) center/contain no-repeat}
/* NOTE: the imagery/ photo pack was not in the brand upload. Until it lands,
   these utilities point at real TWF brand-water photos already in the system
   (assets/deck, assets/social) as placeholders; replace the src with the true
   imagery/ file when supplied. See readme.md imagery note. */
.twf-bg-water-topo{background:url(../assets/deck/bg-contour-left.jpg) center/cover no-repeat}
.twf-bg-water-surface{background:url(../assets/social/wash.jpg) center/cover no-repeat}
.twf-bg-deck-cover{background:url(../assets/deck/bg-contour-glow.png) center/cover no-repeat}
.twf-bg-deck-closing{background:url(../assets/deck/closing-bg.jpg) center/cover no-repeat}
.twf-icon-calendar{background-color:#D8E8FF;-webkit-mask:url(../assets/icons/icon-calendar-part.svg) center/contain no-repeat;mask:url(../assets/icons/icon-calendar-part.svg) center/contain no-repeat}
.twf-icon-location{background-color:#D8E8FF;-webkit-mask:url(../assets/icons/icon-location.svg) center/contain no-repeat;mask:url(../assets/icons/icon-location.svg) center/contain no-repeat}
.twf-asset-esg-atom{background:url(../assets/brand/twf-esg-atom.svg) center/contain no-repeat}
.twf-asset-tardigrade{background:url(../assets/brand/twf-tardigrade.svg) center/contain no-repeat}
.twf-asset-orbit-rings{background:url(../assets/brand/twf-orbit-rings.png) center/contain no-repeat}

/* The Artesians (private circle): rosette sized contain and bled off the edge
   at opacity 0.2, QR never inverted or cropped. See assets/artesians/README.md */
.twf-asset-artesians-rosette{background:url(../assets/artesians/artesians-rosette.svg) center/contain no-repeat}
.twf-asset-artesians-qr{background:url(../assets/artesians/artesians-qr.svg) center/contain no-repeat}

/* Truthful deck backgrounds and motifs (extracted from the FoF I source deck) */
.twf-bg-glow-right{background:url(../assets/deck/bg-glow-right.jpg) center/cover no-repeat}
.twf-bg-glow-top{background:url(../assets/deck/bg-glow-top.jpg) center/cover no-repeat}
.twf-bg-contour-left{background:url(../assets/deck/bg-contour-left.jpg) center/cover no-repeat}
.twf-bg-world-map{background:url(../assets/deck/bg-world-map.png) center/cover no-repeat}
.twf-asset-h2o-molecule{background:url(../assets/deck/h2o-molecule.svg) center/contain no-repeat}

/* Deck icon set (white line icons, truthful rasters from the FoF I deck).
   Mask-based so consumers can tint via background-color. */
.twf-icon-deck{background-color:var(--twf-ice)}
.twf-icon-deck.twf-icon-climate{-webkit-mask:url(../assets/icons/deck/icon-climate.png) center/contain no-repeat;mask:url(../assets/icons/deck/icon-climate.png) center/contain no-repeat}
.twf-icon-deck.twf-icon-data-centres{-webkit-mask:url(../assets/icons/deck/icon-data-centres.png) center/contain no-repeat;mask:url(../assets/icons/deck/icon-data-centres.png) center/contain no-repeat}
.twf-icon-deck.twf-icon-industry{-webkit-mask:url(../assets/icons/deck/icon-industry.png) center/contain no-repeat;mask:url(../assets/icons/deck/icon-industry.png) center/contain no-repeat}
.twf-icon-deck.twf-icon-energy{-webkit-mask:url(../assets/icons/deck/icon-energy.png) center/contain no-repeat;mask:url(../assets/icons/deck/icon-energy.png) center/contain no-repeat}
.twf-icon-deck.twf-icon-agriculture{-webkit-mask:url(../assets/icons/deck/icon-agriculture.png) center/contain no-repeat;mask:url(../assets/icons/deck/icon-agriculture.png) center/contain no-repeat}
.twf-icon-deck.twf-icon-cities{-webkit-mask:url(../assets/icons/deck/icon-cities.png) center/contain no-repeat;mask:url(../assets/icons/deck/icon-cities.png) center/contain no-repeat}
.twf-icon-deck.twf-icon-water-waves{-webkit-mask:url(../assets/icons/deck/icon-water-waves.png) center/contain no-repeat;mask:url(../assets/icons/deck/icon-water-waves.png) center/contain no-repeat}
.twf-icon-deck.twf-icon-governance{-webkit-mask:url(../assets/icons/deck/icon-governance.png) center/contain no-repeat;mask:url(../assets/icons/deck/icon-governance.png) center/contain no-repeat}
.twf-icon-deck.twf-icon-esg-cycle{-webkit-mask:url(../assets/icons/deck/icon-esg-cycle.png) center/contain no-repeat;mask:url(../assets/icons/deck/icon-esg-cycle.png) center/contain no-repeat}
.twf-icon-deck.twf-icon-network{-webkit-mask:url(../assets/icons/deck/icon-network.png) center/contain no-repeat;mask:url(../assets/icons/deck/icon-network.png) center/contain no-repeat}
.twf-icon-deck.twf-icon-institutions{-webkit-mask:url(../assets/icons/deck/icon-institutions.png) center/contain no-repeat;mask:url(../assets/icons/deck/icon-institutions.png) center/contain no-repeat}

/* Manager marks (assets/trademarks/managers/): mixed transparency, render on
   plate or dark tiles per file. jpg and opaque png files need a plate. */
.twf-logo-burnt-island-ventures{background:url(../assets/trademarks/managers/burnt-island-ventures.jpg) center/contain no-repeat}
.twf-logo-emerald-technology-ventures{background:url(../assets/trademarks/managers/emerald-technology-ventures.png) center/contain no-repeat}
.twf-logo-echo-river-capital{background:url(../assets/trademarks/managers/echo-river-capital.jpg) center/contain no-repeat}
.twf-logo-ocean-14-capital{background:url(../assets/trademarks/managers/ocean-14-capital.png) center/contain no-repeat}
.twf-logo-reocean-fund{background:url(../assets/trademarks/managers/reocean-fund.png) center/contain no-repeat}
.twf-logo-incofin{background:url(../assets/trademarks/managers/incofin.png) center/contain no-repeat}
.twf-logo-katapult-ocean{background:url(../assets/trademarks/managers/katapult-ocean.png) center/contain no-repeat}
.twf-logo-propeller{background:url(../assets/trademarks/managers/propeller.png) center/contain no-repeat}
.twf-logo-xpv-water-partners{background:url(../assets/trademarks/managers/xpv-water-partners.png) center/contain no-repeat}
.twf-logo-climate-edge{background:url(../assets/trademarks/managers/climate-edge.png) center/contain no-repeat}
.twf-logo-pureterra-ventures{background:url(../assets/trademarks/managers/pureterra-ventures.png) center/contain no-repeat}
.twf-logo-waterequity{background:url(../assets/trademarks/managers/waterequity.png) center/contain no-repeat}
.twf-logo-climate-fund-managers{background:url(../assets/trademarks/managers/climate-fund-managers.png) center/contain no-repeat}

/* People headshots (assets/people/): circle-crop at the consumption site */
.twf-person-christoph-schwager{background:url(../assets/people/christoph-schwager.png) center/cover no-repeat}
.twf-person-eltonjohn-dsouza{background:url(../assets/people/eltonjohn-dsouza.png) center/cover no-repeat}
.twf-person-felix-famira{background:url(../assets/people/felix-famira.png) center/cover no-repeat}
.twf-person-ineeling-molete{background:url(../assets/people/ineeling-molete.png) center/cover no-repeat}
.twf-person-laura-wasserson{background:url(../assets/people/laura-wasserson.png) center/cover no-repeat}
.twf-person-lukas-andre{background:url(../assets/people/lukas-andre.webp) center/cover no-repeat}
.twf-person-max-scheichnost{background:url(../assets/people/max-scheichnost.png) center/cover no-repeat}
.twf-person-michael-brehm{background:url(../assets/people/michael-brehm.webp) center/cover no-repeat}
.twf-person-michael-jackson{background:url(../assets/people/michael-jackson.png) center/cover no-repeat}
.twf-person-michael-staton{background:url(../assets/people/michael-staton.png) center/cover no-repeat}
.twf-person-mohamed-foulser{background:url(../assets/people/mohamed-foulser.png) center/cover no-repeat}
.twf-person-onchinsuren-dendevsambuu{background:url(../assets/people/onchinsuren-dendevsambuu.png) center/cover no-repeat}
.twf-person-rahman-wynberg{background:url(../assets/people/rahman-wynberg.png) center/cover no-repeat}
.twf-person-robert-schiele{background:url(../assets/people/robert-schiele.png) center/cover no-repeat}
.twf-person-sarabeth-brockley{background:url(../assets/people/sarabeth-brockley.png) center/cover no-repeat}
.twf-person-thomas-bella{background:url(../assets/people/thomas-bella.png) center/cover no-repeat}
.twf-person-tilman-griesel{background:url(../assets/people/tilman-griesel.png) center/cover no-repeat}
.twf-person-verena-sturm{background:url(../assets/people/verena-sturm.png) center/cover no-repeat}
/* Imagery pack */
.twf-bg-whale-hero{background:url(../assets/social/photo-brand-water.png) center/cover no-repeat}
.twf-bg-whale-mom-calf{background:url(../assets/deck/closing-bg.jpg) center/cover no-repeat}
.twf-bg-whale-pair{background:url(../assets/social/photo-brand-water.png) center/cover no-repeat}
.twf-bg-coastal{background:url(../assets/social/wash.jpg) center/cover no-repeat}
.twf-bg-ocean-horizon{background:url(../assets/deck/closing-bg.jpg) center/cover no-repeat}
.twf-bg-river-aerial{background:url(../assets/deck/bg-world-map.png) center/cover no-repeat}
.twf-bg-earth-drying{background:url(../assets/deck/bg-world-map.png) center/cover no-repeat}

/* Social decoration assets */
.twf-social-wash{background:url(../assets/social/wash.jpg) center/cover no-repeat}
.twf-social-wash--outer{background:url(../assets/social/wash.jpg) center/cover no-repeat}
.twf-social-topo-bl{background:url(../assets/social/topographic-bl.svg) center/contain no-repeat;mix-blend-mode:soft-light}
.twf-social-topo-tr{background:url(../assets/social/topographic-tr.svg) center/contain no-repeat;mix-blend-mode:overlay}
.twf-social-topo-tr--soft{mix-blend-mode:soft-light} /* photo theme */

/* Social wash fills, one class per theme family and canvas. The wash vector is
   measured per canvas, not one vector scaled, so each canvas carries its own
   angle: square and tall are Figma-measured, portrait and story come from the
   fitted model documented in templates/social-post/SocialPost.dc.html. Classes
   rather than a holed style attribute, so the post paints on the first byte
   and the four gradients can be swapped for bakes in one place. */
.twf-social-grad-navy-square{background:linear-gradient(136.2638deg,var(--grad-social-a) 26.19%,var(--grad-social-b) 102.82%)}
.twf-social-grad-navy-portrait{background:linear-gradient(129.9236deg,var(--grad-social-a) 26.19%,var(--grad-social-b) 102.82%)}
.twf-social-grad-navy-tall{background:linear-gradient(131.4064deg,var(--grad-social-a) 26.19%,var(--grad-social-b) 102.82%)}
.twf-social-grad-navy-story{background:linear-gradient(120.6216deg,var(--grad-social-a) 26.19%,var(--grad-social-b) 102.82%)}
.twf-social-grad-ink-square{background:linear-gradient(136.2638deg,var(--grad-social-ink-a) 26.19%,var(--grad-social-ink-b) 102.82%)}
.twf-social-grad-ink-portrait{background:linear-gradient(129.9236deg,var(--grad-social-ink-a) 26.19%,var(--grad-social-ink-b) 102.82%)}
.twf-social-grad-ink-tall{background:linear-gradient(131.4064deg,var(--grad-social-ink-a) 26.19%,var(--grad-social-ink-b) 102.82%)}
.twf-social-grad-ink-story{background:linear-gradient(120.6216deg,var(--grad-social-ink-a) 26.19%,var(--grad-social-ink-b) 102.82%)}
/* Glow stacks the navy wash at half alpha over an opaque black base */
.twf-social-wash-half{opacity:0.5}
/* Left-edge accent tick: white by default, ice-cyan variant. Colour lives here
   so the post's style attributes carry geometry only. */
.twf-social-tick{background:var(--twf-white)}
.twf-social-tick--cyan{background:var(--twf-ice-cyan)}
.twf-social-glow-cop30{background:url(../assets/social/glow-cop30.png) center/contain no-repeat}
/* glow-diagnosis fix wave (visual-truth pass): glow-g20-ocean.png is the raw,
   pre-blur, pre-mask raster (no Figma-composited pre-blurred export of this
   asset exists, unlike glow-cop30.png, see assets/social/README.md), so
   rendering it plain reproduces a sharp aerial beach photo where truth shows
   a smooth, heavily-blurred haze. transform/filter here are truth-fit
   directly against TWF_LinkedIn_G20SA25@2x.png (background-only region mse,
   corner+centre samples): a vertical flip alone moves the render's sandy
   highlight from the top-left corner to the bottom-left corner, matching
   truth's own warm tint location (confirmed against four flip/no-flip
   combinations, vertical-only lowest by a wide margin); the blur radius was
   then swept 0-300px against the same background-only mse, which bottoms
   out at 110-150px (essentially flat there) and rises again either side, so
   120px is used as a representative value inside that plateau. */
.twf-social-glow-g20-ocean{background:url(../assets/social/glow-g20-ocean.png) center/contain no-repeat;transform:scaleY(-1);filter:blur(120px)}
.twf-social-photo{background:url(../assets/social/photo-brand-water.png) center/cover no-repeat}
