.fm-textures{background:#fff;color:#111;text-align:center;padding:clamp(36px,6vw,88px) clamp(16px,5vw,80px) 64px}
.fm-textures__shapes{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:clamp(12px,3vw,44px);max-width:1120px;margin:0 auto}
.fm-textures__shape{position:relative;aspect-ratio:1;overflow:hidden;background:#aa9059;isolation:isolate}
.fm-textures__shape--circle{border-radius:50%}
.fm-textures__shape--triangle{clip-path:polygon(50% 0,100% 100%,0 100%)}
.fm-textures__shape img{position:absolute;inset:-35%;width:170%;height:170%;max-width:none;object-fit:cover;animation:fm-texture-pan 11s ease-in-out infinite alternate;will-change:transform}
.fm-textures__shape--triangle img{animation-name:fm-texture-rise}
.fm-textures__shape--square img{animation-direction:alternate-reverse}
.fm-textures__wash{position:absolute;inset:0;animation:fm-texture-fade 24s ease-in-out infinite;opacity:0}
.fm-textures[data-paused=true] *{animation-play-state:paused!important}
.fm-textures__toggle{display:block;margin:24px auto 0;padding:10px 4px;min-height:44px;background:none;border:0;border-bottom:1px solid currentColor;color:inherit;font:inherit;font-size:15px;cursor:pointer}
.fm-textures__toggle[hidden]{display:none}
.fm-textures__copy{max-width:730px;margin:clamp(38px,5vw,70px) auto 0}
.fm-textures__eyebrow{font-size:13px;letter-spacing:.15em;text-transform:uppercase;margin:0 0 20px}
.fm-designed .fm-textures h1{font-family:var(--fm-display,Georgia,serif);font-size:clamp(42px,6vw,84px);line-height:1.02;letter-spacing:-.045em;margin:0;color:#111}
.fm-textures__intro{font-size:clamp(17px,1.5vw,21px);line-height:1.6;margin:22px auto 0;max-width:46ch}
.fm-textures__links{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:22px 32px;margin-top:30px}
.fm-textures__links a{color:#111;text-underline-offset:6px;font-size:16px;padding:12px 0}
.fm-textures__links a:first-child{background:#111;color:#fff;text-decoration:none;padding:16px 26px}
@keyframes fm-texture-pan{from{transform:translate(-19%,-7%) scale(1.02)}to{transform:translate(19%,7%) scale(1.02)}}
@keyframes fm-texture-rise{from{transform:translate(7%,19%) scale(1.02)}to{transform:translate(-7%,-19%) scale(1.02)}}
@keyframes fm-texture-fade{0%,35%,100%{opacity:0}50%,85%{opacity:1}}
@media(max-width:599px){.fm-textures{padding-bottom:44px}.fm-textures__toggle{margin-top:18px}.fm-textures__copy{margin-top:36px}}
@media(prefers-reduced-motion:reduce){.fm-textures *{animation:none!important}.fm-textures__wash{opacity:0}}


.fm-textures__textile{position:absolute;inset:0;opacity:0;animation:fm-textile-fade 27s ease-in-out infinite}
@keyframes fm-textile-fade{0%,25%,75%,100%{opacity:0}33.333%,66.667%{opacity:1}}
@media(prefers-reduced-motion:reduce){.fm-textures__textile{opacity:0}.fm-textures__shape--triangle .fm-textures__textile{opacity:1}}

.fm-textures__pattern{position:absolute;inset:0;opacity:0;animation:fm-pattern-fade 27s ease-in-out infinite}
@keyframes fm-pattern-fade{0%,58.333%,100%{opacity:0}66.667%,91.667%{opacity:1}}
@media(prefers-reduced-motion:reduce){.fm-textures__pattern{opacity:0}.fm-textures__shape--square .fm-textures__pattern{opacity:1}}

.fm-textures__shape--triangle :is(.fm-textures__textile,.fm-textures__pattern){animation-delay:0s}
.fm-textures__shape--square :is(.fm-textures__textile,.fm-textures__pattern){animation-delay:0s}

/* Keep the opening materials visible when reduced motion is enabled. */
@media(prefers-reduced-motion:reduce){.fm-textures__shape--triangle .fm-textures__textile,.fm-textures__shape--square .fm-textures__pattern{opacity:0}}
